PageSourceSearch

https://www.jbjs.org/js/layout_engine.js?v=8e1ba80c0c

js jbjs.org collected 2026-10-02 04:08:10 UTC 299,544 bytes, 7,208 lines download raw bytes

1var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this;
2var $estr = function() { return js_Boot.__string_rec(this,''); },$hxEnums = $hxEnums || {},$_;
3function $extend(from, fields) {
4	var proto = Object.create(from);
5	for (var name in fields) proto[name] = fields[name];
6	if( fields.toString !== Object.prototype.toString ) proto.toString = fields.toString;
7	return proto;
8}
9var Assert = function() { };
10Assert.__name__ = true;
11Assert.check = function(cond,message) {
12	if(!cond) {
13		var message1 = "Assertion" + (message != null ? ": " + message : "");
14		Assert.printStack("Failure: " + message1);
15		throw haxe_Exception.thrown(message1);
16	}
17};
18Assert.fail = function(message) {
19	Assert.printStack("Failure: " + message);
20	throw haxe_Exception.thrown(message);
21};
22Assert.printStack = function(message) {
23	if(message != null) {
24		Errors.print(message);
25	}
26	Errors.print(Assert.callStackToString(haxe_CallStack.callStack()));
27};
28Assert.printExnStack = function(message) {
29	if(message != null) {
30		Errors.print(message);
31	}
32	Errors.print(Assert.callStackToString(haxe_CallStack.exceptionStack()));
33};
34Assert.callStackToString = function(stack) {
35	return haxe_CallStack.toString(stack);
36};
37Assert.trace = function(s) {
38	var stack = haxe_CallStack.callStack();
39	var loc = "<unknown>";
40	var i = 2;
41	var _g = 0;
42	while(_g < stack.length) {
43		var s1 = stack[_g];
44		++_g;
45		if(s1._hx_index == 2) {
46			var _g1 = s1.column;
47			var item = s1.s;
48			var file = s1.file;
49			var pos = s1.line;
50			if(--i == 0) {
51				loc = file + ": " + pos;
52				break;
53			}
54		}
55	}
56	Errors.print("TRACE: at " + loc + ": " + s);
57};
58Assert.memStat = function(message) {
59	var msg = message != null ? message + ": " : "";
60};
61Assert.println = function(message) {
62	Errors.print(message);
63};
64var Crypto = function() { };
65Crypto.__name__ = true;
66Crypto.encodeSHA256 = function(input,callback) {
67	try {
68		var crypto = window.crypto;
69		if(crypto == null || crypto.subtle == null) {
70			callback("Error: Web Crypto API not available");
71			return;
72		}
73		var encoder = new TextEncoder();
74		var data = encoder.encode(input);
75		var promise = crypto.subtle.digest("SHA-256",data);
76		
77				promise.then(function(hashBuffer) {
78					// Convert ArrayBuffer to hex string
79					var hashArray = new Uint8Array(hashBuffer);
80					var hashHex = '';
81
82					for (var i = 0; i < hashArray.length; i++) {
83						var hex = hashArray[i].toString(16).padStart(2, '0');
84						hashHex += hex;
85					}
86
87					callback(hashHex);
88				}).catch(function(error) {
89					callback('Error: ' + error.toString());
90				});
91			;
92	} catch( _g ) {
93		haxe_NativeStackTrace.lastError = _g;
94		var e = haxe_Exception.caught(_g).unwrap();
95		callback("Error: " + Std.string(e));
96	}
97};
98Crypto.randomUUID = function() {
99	var crypto = window.crypto;
100	try {
101		return crypto.randomUUID();
102	} catch( _g ) {
103		haxe_NativeStackTrace.lastError = _g;
104		var e = haxe_Exception.caught(_g).unwrap();
105		console.warn("Crypto.randomUUID() not supported : " + Std.string(e));
106		return "";
107	}
108};
109var EReg = function(r,opt) {
110	this.r = new RegExp(r,opt.split("u").join(""));
111};
112EReg.__name__ = true;
113EReg.prototype = {
114	match: function(s) {
115		if(this.r.global) {
116			this.r.lastIndex = 0;
117		}
118		this.r.m = this.r.exec(s);
119		this.r.s = s;
120		return this.r.m != null;
121	}
122	,matched: function(n) {
123		if(this.r.m != null && n >= 0 && n < this.r.m.length) {
124			return this.r.m[n];
125		} else {
126			throw haxe_Exception.thrown("EReg::matched");
127		}
128	}
129	,__class__: EReg
130};
131var Errors = function() {
132	this.callBack = null;
133	this.doTrace = true;
134	this.count = 0;
135};
136Errors.__name__ = true;
137Errors.get = function() {
138	if(Errors.instance == null) {
139		Errors.instance = new Errors();
140	}
141	return Errors.instance;
142};
143Errors.report = function(text) {
144	Errors.get().add(text);
145	var fh = Errors.get();
146	fh.count++;
147	console.error("Error: " + text);
148	Errors.addToLog(text);
149};
150Errors.warning = function(text) {
151	Errors.get().add(text);
152	console.warn("Warning: " + text);
153};
154Errors.print = function(text) {
155	if(!Errors.get().doTrace) {
156		return;
157	}
158	console.log(text);
159};
160Errors.getCount = function() {
161	return Errors.get().count;
162};
163Errors.resetCount = function() {
164	Errors.get().count = 0;
165};
166Errors.addToLog = function(m) {
167	if(Errors.dontlog) {
168		return;
169	}
170};
171Errors.closeErrorLog = function() {
172};
173Errors.prototype = {
174	add: function(text) {
175		if(this.callBack != null) {
176			this.callBack(text);
177		}
178	}
179	,__class__: Errors
180};
181var haxe_ds_IntMap = function() {
182	this.h = { };
183};
184haxe_ds_IntMap.__name__ = true;
185haxe_ds_IntMap.prototype = {
186	remove: function(key) {
187		if(!this.h.hasOwnProperty(key)) {
188			return false;
189		}
190		delete(this.h[key]);
191		return true;
192	}
193	,__class__: haxe_ds_IntMap
194};
195var HaxeRuntime = function() { };
196HaxeRuntime.__name__ = true;
197HaxeRuntime.ref__ = function(val) {
198	return new FlowRefObject(val);
199};
200HaxeRuntime.deref__ = function(val) {
201	return val.__v;
202};
203HaxeRuntime.setref__ = function(r,v) {
204	r.__v = v;
205};
206HaxeRuntime._s_ = function(v) {
207	return v;
208};
209HaxeRuntime.initStruct = function(id,name,args,atypes) {
210	var j='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';var l=j.length;function f(i){var c=j[i%l|0];var r=i/l|0;return r>0?c+f(r-1):c;}
211	if(args!=[]){var a='';for(var i=0;i<args.length;i++)a+=(args[i]+':'+args[i]+ ','); a=a.substring(0, a.length -1);var c='c$'+f(id);
212	(new Function('g', 'g.'+c + '=function(' + args.join(',') + '){return {_id:'+id.toString()+',' + a + '};}'))($global);
213	HaxeRuntime._structconstruct_.h[id]=$global[c]}
214	HaxeRuntime._structnames_.h[id] = name;
215	HaxeRuntime._structids_.h[name] = id;
216	HaxeRuntime._structargs_.h[id] = args;
217	HaxeRuntime._structargtypes_.h[id] = atypes;
218};
219HaxeRuntime.compareEqual = function(a,b) {
220	
221	if (a === b) return true;
222
223	var isArray = Array.isArray;
224	var keyList = Object.keys;
225	var hasProp = Object.prototype.hasOwnProperty;
226
227	if (a && b && typeof a == 'object' && typeof b == 'object') {
228		var arrA = isArray(a)
229		  , arrB = isArray(b)
230		  , i
231		  , length
232		  , key;
233
234	if (arrA && arrB) {
235	  length = a.length;
236	  if (length != b.length) return false;
237	  for (i = length; i-- !== 0;)
238		if (!HaxeRuntime.compareEqual(a[i], b[i])) return false;
239	  return true;
240	}
241
242	if (arrA != arrB) return false;
243
244	var result = false;
245;
246	
247	if (hasProp.call(a, '_id') && hasProp.call(b, '_id')) {
248		if (a._id !== b._id) {
249			return false;
250		} else {
251			result = true;
252		}
253;
254	
255		var keys = keyList(a);
256		length = keys.length;
257
258		for (i = 1; i < length; i++) {
259			key = keys[i];
260			if (!HaxeRuntime.compareEqual(a[key], b[key])) return false;
261		}
262	}
263
264	if (hasProp.call(a, '__v') && hasProp.call(b, '__v')) {
265		return false;
266	}
267
268	return result;
269}
270;
271	return false;
272};
273HaxeRuntime.compareByValue = function(o1,o2) {
274	if (o1 === o2) return 0;
275			if(o1 == null || o2 == null) {
276				return 1;
277			}
278			if(Array.isArray(o1)) {
279				if(!Array.isArray(o2)) {
280					return 1;
281				}
282				var l1 = o1.length;
283				var l2 = o2.length;
284				var l = l1 < l2 ? l1 : l2;
285				var _g = 0;
286				var _g1 = l;
287				while(_g < _g1) {
288					var i = _g++;
289					var c = HaxeRuntime.compareByValue(o1[i],o2[i]);
290					if(c != 0) {
291						return c;
292					}
293				}
294				if(l1 == l2) {
295					return 0;
296				} else if(l1 < l2) {
297					return -1;
298				} else {
299					return 1;
300				}
301			}
302	
303			var i1 = o1._id;
304			if(i1 !== undefined) {
305				var i2 = o2._id;
306			;
307	
308				if(i2 === undefined) {
309					return 1;
310				}
311				if(i1 < i2) {
312					return -1;
313				}
314				if(i1 > i2) {
315					return 1;
316				}
317				var args = HaxeRuntime._structargs_.h[i1];
318				var _g = 0;
319				while(_g < args.length) {
320					var f = args[_g];
321					++_g;
322					var c = HaxeRuntime.compareByValue(o1[f],o2[f]);
323					if(c != 0) {
324						return c;
325					}
326				}
327				return 0;
328			}
329			if(o1 < o2) {
330				return -1;
331			} else {
332				return 1;
333			}
334			;
335	return 0;
336};
337HaxeRuntime.extractStructArguments = function(value) {
338	if(!Object.prototype.hasOwnProperty.call(value,"_id")) {
339		return [];
340	}
341	var i = value._id;
342	var sargs = HaxeRuntime._structargs_.h[i];
343	var n = sargs.length;
344	var result = Array(n);
345	var _g = 0;
346	var _g1 = n;
347	while(_g < _g1) {
348		var i = _g++;
349		result[i] = Reflect.field(value,sargs[i]);
350	}
351	return result;
352};
353HaxeRuntime.isArray = function(o1) {
354	return Array.isArray(o1);
355};
356HaxeRuntime.nop___ = function() {
357};
358HaxeRuntime.isSameStructType = function(o1,o2) {
359	if(!Array.isArray(o1) && !Array.isArray(o2) && Object.prototype.hasOwnProperty.call(o1,"_id") && Object.prototype.hasOwnProperty.call(o2,"_id")) {
360		return o1._id == o2._id;
361	} else {
362		return false;
363	}
364};
365HaxeRuntime.toStringCommon = function(value,keepStringEscapes,additionalEscapingFn) {
366	if(keepStringEscapes == null) {
367		keepStringEscapes = false;
368	}
369	if(value == null) {
370		return "{}";
371	}
372	if(!Reflect.isObject(value)) {
373		return Std.string(value);
374	}
375	if(Array.isArray(value)) {
376		var a = value;
377		var r = "[";
378		var s = "";
379		var _g = 0;
380		while(_g < a.length) {
381			var v = a[_g];
382			++_g;
383			var vc = HaxeRuntime.toStringCommon(v,false,additionalEscapingFn);
384			r += s + vc;
385			s = ", ";
386		}
387		return r + "]";
388	}
389	if(Object.prototype.hasOwnProperty.call(value,"__v")) {
390		return "ref " + HaxeRuntime.toStringCommon(value.__v,false,additionalEscapingFn);
391	}
392	if(Object.prototype.hasOwnProperty.call(value,"_id")) {
393		var id = value._id;
394		var structname = HaxeRuntime._structnames_.h[id];
395		var r = structname + "(";
396		if(structname == "DLink") {
397			return r + "...)";
398		}
399		var s = "";
400		var args = HaxeRuntime._structargs_.h[id];
401		var argTypes = HaxeRuntime._structargtypes_.h[id];
402		var _g = 0;
403		var _g1 = args.length;
404		while(_g < _g1) {
405			var i = _g++;
406			var f = args[i];
407			var t = argTypes[i];
408			var v = Reflect.field(value,f);
409			switch(t._hx_index) {
410			case 3:
411				r += s + Std.string(v) + ((v | 0) == v ? ".0" : "");
412				break;
413			case 5:
414				var arrtype = t.type;
415				if(!Array.isArray(v) || arrtype != RuntimeType.RTDouble) {
416					r += s + HaxeRuntime.toStringCommon(v,false,additionalEscapingFn);
417				} else {
418					r += s + "[";
419					var _g2 = 0;
420					var _g3 = v.length;
421					while(_g2 < _g3) {
422						var j = _g2++;
423						r += (j > 0 ? ", " : "") + v[j] + ((v[j] | 0) == v[j] ? ".0" : "");
424					}
425					r += "]";
426				}
427				break;
428			default:
429				r += s + HaxeRuntime.toStringCommon(v,false,additionalEscapingFn);
430			}
431			s = ", ";
432		}
433		r += ")";
434		return r;
435	}
436	if(Reflect.isFunction(value)) {
437		return "<function>";
438	}
439	try {
440		var s = value;
441		if(!keepStringEscapes) {
442			return additionalEscapingFn(value,s);
443		} else {
444			StringTools.replace(s,"\\","\\\\");
445			return s;
446		}
447	} catch( _g ) {
448		haxe_NativeStackTrace.lastError = _g;
449		return "<native>";
450	}
451};
452HaxeRuntime.toString = function(value,keepStringEscapes) {
453	if(keepStringEscapes == null) {
454		keepStringEscapes = false;
455	}
456	return HaxeRuntime.toStringCommon(value,keepStringEscapes,function(val,s) {
457		
458					return '"' + val.replace(HaxeRuntime.regexCharsToReplaceForString, function (c) {
459						if (c==='\\') {
460							return '\\\\';
461						} else if (c==='\"') {
462							return '\\"';
463						} else if (c === '\n') {
464							return '\\n';
465						} else if (c==='\t') {
466							return '\\t';
467						} else {
468							return c;
469						}
470					}) + '"';
471				;
472		return "\"" + s + "\"";
473	});
474};
475HaxeRuntime.toStringForJson = function(value) {
476	return HaxeRuntime.toStringCommon(value,false,function(val,s) {
477		
478					return '"' + val.replace(HaxeRuntime.regexCharsToReplaceForJson, function (c) {
479						if (c==='\\') {
480							return '\\\\';
481						} else if (c==='\"') {
482							return '\\"';
483						} else if (c === '\n') {
484							return '\\n';
485						} else if (c==='\t') {
486							return '\\t';
487						} else if (c.length===1 && c.charCodeAt(0)<0x20) {
488							return "\\u" + c.charCodeAt(0).toString(16).padStart(4, "0");
489						} else {
490							return c;
491						}
492					}) + '"';
493				;
494		return "\"" + s + "\"";
495	});
496};
497HaxeRuntime.isValueFitInType = function(type,value) {
498	switch(type._hx_index) {
499	case 2:
500		return HaxeRuntime.typeOf(value) == RuntimeType.RTDouble;
501	case 5:
502		var arrtype = type.type;
503		if(!Array.isArray(value)) {
504			return false;
505		}
506		if(arrtype != RuntimeType.RTUnknown) {
507			var _g = 0;
508			var _g1 = value.length;
509			while(_g < _g1) {
510				var i = _g++;
511				if(!HaxeRuntime.isValueFitInType(arrtype,value[i])) {
512					return false;
513				}
514			}
515		}
516		return true;
517	case 6:
518		var name = type.name;
519		var _g = HaxeRuntime.typeOf(value);
520		if(_g._hx_index == 6) {
521			var n = _g.name;
522			if(name != "") {
523				return n == name;
524			} else {
525				return true;
526			}
527		} else {
528			return false;
529		}
530		break;
531	case 7:
532		var reftype = type.type;
533		var _g = HaxeRuntime.typeOf(value);
534		if(_g._hx_index == 7) {
535			var t = _g.type;
536			return HaxeRuntime.isValueFitInType(reftype,value.__v);
537		} else {
538			return false;
539		}
540		break;
541	case 8:
542		return true;
543	default:
544		return HaxeRuntime.typeOf(value) == type;
545	}
546};
547HaxeRuntime.makeStructValue = function(name,args,default_value) {
548	try {
549		var sid = HaxeRuntime._structids_.h[name];
550		if(sid == null) {
551			return default_value;
552		}
553		var types = HaxeRuntime._structargtypes_.h[sid];
554		if(types.length != args.length) {
555			return default_value;
556		}
557		var _g = 0;
558		var _g1 = args.length;
559		while(_g < _g1) {
560			var i = _g++;
561			if(!HaxeRuntime.isValueFitInType(types[i],args[i])) {
562				return default_value;
563			}
564		}
565		var sargs = HaxeRuntime._structargs_.h[sid];
566		var o = HaxeRuntime.makeEmptyStruct(sid);
567		var _g = 0;
568		var _g1 = args.length;
569		while(_g < _g1) {
570			var i = _g++;
571			o[sargs[i]] = args[i];
572		}
573		return o;
574	} catch( _g ) {
575		haxe_NativeStackTrace.lastError = _g;
576		return default_value;
577	}
578};
579HaxeRuntime.fastMakeStructValue = function(n,a1) {
580	var sid = HaxeRuntime._structids_.h[n];
581	var o = { _id : sid};
582	o[HaxeRuntime._structargs_.h[sid][0]] = a1;
583	return o;
584};
585HaxeRuntime.fastMakeStructValue2 = function(n,a1,a2) {
586	var sid = HaxeRuntime._structids_.h[n];
587	var o = { _id : sid};
588	o[HaxeRuntime._structargs_.h[sid][0]] = a1;
589	o[HaxeRuntime._structargs_.h[sid][1]] = a2;
590	return o;
591};
592HaxeRuntime.makeEmptyStruct = function(sid) {
593	if(HaxeRuntime._structtemplates_ != null) {
594		var ff = HaxeRuntime._structtemplates_.h[sid];
595		if(ff != null) {
596			return ff._copy();
597		}
598	}
599	return { _id : sid};
600};
601HaxeRuntime.typeOf = function(value) {
602	if(value == null) {
603		return RuntimeType.RTVoid;
604	}
605	var t = typeof(value);
606	switch(t) {
607	case "boolean":
608		return RuntimeType.RTBool;
609	case "number":
610		return RuntimeType.RTDouble;
611	case "object":
612		if(Array.isArray(value)) {
613			return RuntimeType.RTArray(RuntimeType.RTUnknown);
614		}
615		if(Object.prototype.hasOwnProperty.call(value,"_id")) {
616			return RuntimeType.RTStruct(HaxeRuntime._structnames_.h[value._id]);
617		}
618		if(Object.prototype.hasOwnProperty.call(value,"__v")) {
619			return RuntimeType.RTRefTo(HaxeRuntime.typeOf(value.__v));
620		}
621		break;
622	case "string":
623		return RuntimeType.RTString;
624	default:
625	}
626	return RuntimeType.RTUnknown;
627};
628HaxeRuntime.mul_32 = function(a,b) {
629	var ah = a >> 16 & 65535;
630	var al = a & 65535;
631	var bh = b >> 16 & 65535;
632	var bl = b & 65535;
633	var high = ah * bl + al * bh & 65535;
634	return -1 & (high << 16) + al * bl;
635};
636HaxeRuntime.getStructName = function(id) {
637	return HaxeRuntime._structnames_.h[id];
638};
639HaxeRuntime.wideStringSafe = function(str) {
640	var _g = 0;
641	var _g1 = str.length;
642	while(_g < _g1) {
643		var i = _g++;
644		var c = HxOverrides.cca(str,i);
645		if(55296 <= c && c < 57344) {
646			return false;
647		}
648	}
649	return true;
650};
651HaxeRuntime.instanceof = function(v1,v2) {
652	return ((v1) instanceof v2);
653};
654HaxeRuntime.typeof = function(v) {
655	return typeof(v);
656};
657HaxeRuntime.strictEq = function(v1,v2) {
658	return ((v1) === v2);
659};
660HaxeRuntime.getArray = function(a,i) {
661	if(i < 0 || i >= a.length) {
662		if(a.length == 0) {
663			throw haxe_Exception.thrown("array index " + i + " is out of bounds: array is empty " + haxe_CallStack.toString(haxe_CallStack.callStack()));
664		} else {
665			throw haxe_Exception.thrown("array index " + i + " is out of bounds: 0 <= i < " + a.length + " " + haxe_CallStack.toString(haxe_CallStack.callStack()));
666		}
667	}
668	return a[i];
669};
670var haxe_ds_StringMap = function() {
671	this.h = Object.create(null);
672};
673haxe_ds_StringMap.__name__ = true;
674haxe_ds_StringMap.prototype = {
675	__class__: haxe_ds_StringMap
676};
677var FlowJsProgram = function() { };
678FlowJsProgram.__name__ = true;
679var RuntimeType = $hxEnums["RuntimeType"] = { __ename__:true,__constructs__:null
680	,RTVoid: {_hx_name:"RTVoid",_hx_index:0,__enum__:"RuntimeType",toString:$estr}
681	,RTBool: {_hx_name:"RTBool",_hx_index:1,__enum__:"RuntimeType",toString:$estr}
682	,RTInt: {_hx_name:"RTInt",_hx_index:2,__enum__:"RuntimeType",toString:$estr}
683	,RTDouble: {_hx_name:"RTDouble",_hx_index:3,__enum__:"RuntimeType",toString:$estr}
684	,RTString: {_hx_name:"RTString",_hx_index:4,__enum__:"RuntimeType",toString:$estr}
685	,RTArray: ($_=function(type) { return {_hx_index:5,type:type,__enum__:"RuntimeType",toString:$estr}; },$_._hx_name="RTArray",$_.__params__ = ["type"],$_)
686	,RTStruct: ($_=function(name) { return {_hx_index:6,name:name,__enum__:"RuntimeType",toString:$estr}; },$_._hx_name="RTStruct",$_.__params__ = ["name"],$_)
687	,RTRefTo: ($_=function(type) { return {_hx_index:7,type:type,__enum__:"RuntimeType",toString:$estr}; },$_._hx_name="RTRefTo",$_.__params__ = ["type"],$_)
688	,RTUnknown: {_hx_name:"RTUnknown",_hx_index:8,__enum__:"RuntimeType",toString:$estr}
689};
690RuntimeType.__constructs__ = [RuntimeType.RTVoid,RuntimeType.RTBool,RuntimeType.RTInt,RuntimeType.RTDouble,RuntimeType.RTString,RuntimeType.RTArray,RuntimeType.RTStruct,RuntimeType.RTRefTo,RuntimeType.RTUnknown];
691var FlowRefObject = function(v) {
692	this.__v = v;
693};
694FlowRefObject.__name__ = true;
695FlowRefObject.prototype = {
696	__class__: FlowRefObject
697};
698var HxOverrides = function() { };
699HxOverrides.__name__ = true;
700HxOverrides.dateStr = function(date) {
701	var m = date.getMonth() + 1;
702	var d = date.getDate();
703	var h = date.getHours();
704	var mi = date.getMinutes();
705	var s = date.getSeconds();
706	return date.getFullYear() + "-" + (m < 10 ? "0" + m : "" + m) + "-" + (d < 10 ? "0" + d : "" + d) + " " + (h < 10 ? "0" + h : "" + h) + ":" + (mi < 10 ? "0" + mi : "" + mi) + ":" + (s < 10 ? "0" + s : "" + s);
707};
708HxOverrides.strDate = function(s) {
709	switch(s.length) {
710	case 8:
711		var k = s.split(":");
712		var d = new Date();
713		d["setTime"](0);
714		d["setUTCHours"](k[0]);
715		d["setUTCMinutes"](k[1]);
716		d["setUTCSeconds"](k[2]);
717		return d;
718	case 10:
719		var k = s.split("-");
720		return new Date(k[0],k[1] - 1,k[2],0,0,0);
721	case 19:
722		var k = s.split(" ");
723		var y = k[0].split("-");
724		var t = k[1].split(":");
725		return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]);
726	default:
727		throw haxe_Exception.thrown("Invalid date format : " + s);
728	}
729};
730HxOverrides.cca = function(s,index) {
731	var x = s.charCodeAt(index);
732	if(x != x) {
733		return undefined;
734	}
735	return x;
736};
737HxOverrides.substr = function(s,pos,len) {
738	if(len == null) {
739		len = s.length;
740	} else if(len < 0) {
741		if(pos == 0) {
742			len = s.length + len;
743		} else {
744			return "";
745		}
746	}
747	return s.substr(pos,len);
748};
749HxOverrides.remove = function(a,obj) {
750	var i = a.indexOf(obj);
751	if(i == -1) {
752		return false;
753	}
754	a.splice(i,1);
755	return true;
756};
757HxOverrides.now = function() {
758	return Date.now();
759};
760var JSBinflowBuffer = function(buffer,byte_offset,byte_length,little_endian) {
761	this.StructFixupCache = new haxe_ds_StringMap();
762	this.StructDefs = [];
763	this.arrayBuffer = buffer;
764	this.byteOffset = byte_offset;
765	this.byteLength = byte_length;
766	this.littleEndian = little_endian;
767	this.dataView = new DataView(buffer,this.byteOffset,this.byteLength);
768	this.length = this.byteLength / 2 | 0;
769};
770JSBinflowBuffer.__name__ = true;
771JSBinflowBuffer.prototype = {
772	getWord: function(idx) {
773		return this.dataView.getUint16(idx * 2,this.littleEndian);
774	}
775	,getInt: function(idx) {
776		return this.dataView.getUint16(idx * 2,this.littleEndian) | this.dataView.getUint16((idx + 1) * 2,this.littleEndian) << 16;
777	}
778	,getDouble: function(idx) {
779		if(this.littleEndian) {
780			return this.dataView.getFloat64(idx * 2,true);
781		} else {
782			JSBinflowBuffer.DoubleSwapBuffer.setUint16(0,this.dataView.getUint16(idx * 2,this.littleEndian),true);
783			JSBinflowBuffer.DoubleSwapBuffer.setUint16(2,this.dataView.getUint16((idx + 1) * 2,this.littleEndian),true);
784			JSBinflowBuffer.DoubleSwapBuffer.setUint16(4,this.dataView.getUint16((idx + 2) * 2,this.littleEndian),true);
785			JSBinflowBuffer.DoubleSwapBuffer.setUint16(6,this.dataView.getUint16((idx + 3) * 2,this.littleEndian),true);
786			return JSBinflowBuffer.DoubleSwapBuffer.getFloat64(0,true);
787		}
788	}
789	,substr: function(idx,l) {
790		var s_b = "";
791		var _g = idx;
792		var _g1 = idx + l;
793		while(_g < _g1) {
794			var i = _g++;
795			var c = this.dataView.getUint16(i * 2,this.littleEndian);
796			s_b += String.fromCodePoint(c);
797		}
798		return s_b;
799	}
800	,charAt: function(idx) {
801		var s_b = "";
802		var _g = idx;
803		var _g1 = idx + 1;
804		while(_g < _g1) {
805			var i = _g++;
806			var c = this.dataView.getUint16(i * 2,this.littleEndian);
807			s_b += String.fromCodePoint(c);
808		}
809		return s_b;
810	}
811	,getFooterOffset: function() {
812		var footer_offset = this.dataView.getUint16(0,this.littleEndian) | this.dataView.getUint16(2,this.littleEndian) << 16;
813		if(footer_offset != 1) {
814			return [footer_offset,2];
815		} else {
816			return [this.dataView.getUint16(4,this.littleEndian) | this.dataView.getUint16(6,this.littleEndian) << 16 | (this.dataView.getUint16(8,this.littleEndian) | this.dataView.getUint16(10,this.littleEndian) << 16),6];
817		}
818	}
819	,getFixup: function(name) {
820		var chached_fixup = this.StructFixupCache.h[name];
821		if(chached_fixup === undefined) {
822			var fixup = this.Fixups(name);
823			chached_fixup = HaxeRuntime._structnames_.h[fixup._id] == "None" ? null : Reflect.field(fixup,HaxeRuntime._structargs_.h[fixup._id][0]);
824			this.StructFixupCache.h[name] = chached_fixup;
825		}
826		return chached_fixup;
827	}
828	,doArray: function(index,n) {
829		var ni = index;
830		var ar = [];
831		var _g = 0;
832		var _g1 = n;
833		while(_g < _g1) {
834			var i = _g++;
835			var v = this.doBinary(ni);
836			ni = v[1];
837			ar.push(v[0]);
838		}
839		return [ar,ni];
840	}
841	,doBinary: function(index) {
842		if(index < this.endIndex) {
843			var word = this.dataView.getUint16(index * 2,this.littleEndian);
844			var ni = index + 1;
845			if(word == 65524) {
846				var def = this.StructDefs[this.dataView.getUint16(ni * 2,this.littleEndian)];
847				var name = def[1];
848				var ni1 = ni + 1;
849				var ar = [];
850				var _g = 0;
851				var _g1 = def[0];
852				while(_g < _g1) {
853					var i = _g++;
854					var v = this.doBinary(ni1);
855					ni1 = v[1];
856					ar.push(v[0]);
857				}
858				var args = [ar,ni1];
859				var chached_fixup = this.StructFixupCache.h[name];
860				if(chached_fixup === undefined) {
861					var fixup = this.Fixups(name);
862					chached_fixup = HaxeRuntime._structnames_.h[fixup._id] == "None" ? null : Reflect.field(fixup,HaxeRuntime._structargs_.h[fixup._id][0]);
863					this.StructFixupCache.h[name] = chached_fixup;
864				}
865				var fixup = chached_fixup;
866				var val = fixup == null ? HaxeRuntime.makeStructValue(name,args[0],JSBinflowBuffer.FlowIllegalStruct) : fixup(args[0]);
867				return [val,args[1]];
868			} else if(word == 65526) {
869				var v = this.doBinary(ni);
870				return [new FlowRefObject(v[0]),v[1]];
871			} else if(word == 65530) {
872				var l = this.dataView.getUint16(ni * 2,this.littleEndian);
873				var idx = ni + 1;
874				var s_b = "";
875				var _g = idx;
876				var _g1 = idx + l;
877				while(_g < _g1) {
878					var i = _g++;
879					var c = this.dataView.getUint16(i * 2,this.littleEndian);
880					s_b += String.fromCodePoint(c);
881				}
882				return [s_b,ni + 1 + l];
883			} else if(word == 65532) {
884				var d;
885				if(this.littleEndian) {
886					d = this.dataView.getFloat64(ni * 2,true);
887				} else {
888					JSBinflowBuffer.DoubleSwapBuffer.setUint16(0,this.dataView.getUint16(ni * 2,this.littleEndian),true);
889					JSBinflowBuffer.DoubleSwapBuffer.setUint16(2,this.dataView.getUint16((ni + 1) * 2,this.littleEndian),true);
890					JSBinflowBuffer.DoubleSwapBuffer.setUint16(4,this.dataView.getUint16((ni + 2) * 2,this.littleEndian),true);
891					JSBinflowBuffer.DoubleSwapBuffer.setUint16(6,this.dataView.getUint16((ni + 3) * 2,this.littleEndian),true);
892					d = JSBinflowBuffer.DoubleSwapBuffer.getFloat64(0,true);
893				}
894				return [d,ni + 4];
895			} else if(word == 65525) {
896				var i = this.dataView.getUint16(ni * 2,this.littleEndian) | this.dataView.getUint16((ni + 1) * 2,this.littleEndian) << 16;
897				return [i,ni + 2];
898			} else if(word < 65523) {
899				return [word,ni];
900			} else if(word == 65523) {
901				var idx = ni + 2;
902				return [this.dataView.getUint16(ni * 2,this.littleEndian) | this.dataView.getUint16((ni + 1) * 2,this.littleEndian) << 16 | (this.dataView.getUint16(idx * 2,this.littleEndian) | this.dataView.getUint16((idx + 1) * 2,this.littleEndian) << 16),ni + 4];
903			} else if(word == 65533) {
904				return [false,ni];
905			} else if(word == 65534) {
906				return [true,ni];
907			} else if(word == 65528) {
908				var l = this.dataView.getUint16(ni * 2,this.littleEndian);
909				var ni1 = ni + 1;
910				var ar = [];
911				var _g = 0;
912				var _g1 = l;
913				while(_g < _g1) {
914					var i = _g++;
915					var v = this.doBinary(ni1);
916					ni1 = v[1];
917					ar.push(v[0]);
918				}
919				var result = [ar,ni1];
920				return result;
921			} else if(word == 65527) {
922				return [[],ni];
923			} else if(word == 65531) {
924				var l = this.dataView.getUint16(ni * 2,this.littleEndian) | this.dataView.getUint16((ni + 1) * 2,this.littleEndian) << 16;
925				var idx = ni + 2;
926				var s_b = "";
927				var _g = idx;
928				var _g1 = idx + l;
929				while(_g < _g1) {
930					var i = _g++;
931					var c = this.dataView.getUint16(i * 2,this.littleEndian);
932					s_b += String.fromCodePoint(c);
933				}
934				return [s_b,ni + 2 + l];
935			} else if(word == 65529) {
936				var l = this.dataView.getUint16(ni * 2,this.littleEndian) | this.dataView.getUint16((ni + 1) * 2,this.littleEndian) << 16;
937				var ni1 = ni + 2;
938				var ar = [];
939				var _g = 0;
940				var _g1 = l;
941				while(_g < _g1) {
942					var i = _g++;
943					var v = this.doBinary(ni1);
944					ni1 = v[1];
945					ar.push(v[0]);
946				}
947				var result = [ar,ni1];
948				return result;
949			} else if(word == 65535) {
950				return [null,ni];
951			} else {
952				return [word,ni];
953			}
954		} else {
955			return [this.DefValue,index];
956		}
957	}
958	,deserialise: function(defvalue,fixups) {
959		if(JSBinflowBuffer.FlowIllegalStruct == null) {
960			JSBinflowBuffer.FlowIllegalStruct = HaxeRuntime.makeStructValue("IllegalStruct",[],null);
961		}
962		var footer_offset = this.getFooterOffset();
963		this.endIndex = this.length;
964		this.StructDefs = this.doBinary(footer_offset[0])[0];
965		this.DefValue = defvalue;
966		this.Fixups = fixups;
967		this.endIndex = footer_offset[0];
968		var r = this.doBinary(footer_offset[1]);
969		if(r[1] < footer_offset[0]) {
970			Errors.print("Did not understand all!");
971		}
972		return r[0];
973	}
974	,__class__: JSBinflowBuffer
975};
976var JsMd5 = function(s) {
977	this.input = s;
978	this.inputBytes = 0;
979	this.nextCharIndex = 0;
980	this.bytesStorage = 0;
981	this.bytesInStorage = 0;
982	var i = 0;
983	while(i < s.length) {
984		var c = s.charCodeAt(i++);
985		if(55296 <= c && c <= 56319) {
986			c = c - 55232 << 10 | s.charCodeAt(i++) & 1023;
987		}
988		if(c <= 127) {
989			this.inputBytes++;
990		} else if(c <= 2047) {
991			this.inputBytes += 2;
992		} else if(c <= 65535) {
993			this.inputBytes += 3;
994		} else {
995			this.inputBytes += 4;
996		}
997	}
998};
999JsMd5.__name__ = true;
1000JsMd5.encode = function(s) {
1001	var m = new JsMd5(s);
1002	var h = m.doEncode();
1003	return m.hex(h);
1004};
1005JsMd5.prototype = {
1006	bitOR: function(a,b) {
1007		var lsb = a & 1 | b & 1;
1008		var msb31 = a >>> 1 | b >>> 1;
1009		return msb31 << 1 | lsb;
1010	}
1011	,bitXOR: function(a,b) {
1012		var lsb = a & 1 ^ b & 1;
1013		var msb31 = a >>> 1 ^ b >>> 1;
1014		return msb31 << 1 | lsb;
1015	}
1016	,bitAND: function(a,b) {
1017		var lsb = a & 1 & (b & 1);
1018		var msb31 = a >>> 1 & b >>> 1;
1019		return msb31 << 1 | lsb;
1020	}
1021	,addme: function(x,y) {
1022		var lsw = (x & 65535) + (y & 65535);
1023		var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
1024		return msw << 16 | lsw & 65535;
1025	}
1026	,hex: function(a) {
1027		var str = "";
1028		var hex_chr = "0123456789abcdef";
1029		var _g = 0;
1030		while(_g < a.length) {
1031			var num = a[_g];
1032			++_g;
1033			str += hex_chr.charAt(num >> 4 & 15) + hex_chr.charAt(num & 15);
1034			str += hex_chr.charAt(num >> 12 & 15) + hex_chr.charAt(num >> 8 & 15);
1035			str += hex_chr.charAt(num >> 20 & 15) + hex_chr.charAt(num >> 16 & 15);
1036			str += hex_chr.charAt(num >> 28 & 15) + hex_chr.charAt(num >> 24 & 15);
1037		}
1038		return str;
1039	}
1040	,rol: function(num,cnt) {
1041		return num << cnt | num >>> 32 - cnt;
1042	}
1043	,cmn: function(q,a,b,x,s,t) {
1044		return this.addme(this.rol(this.addme(this.addme(a,q),this.addme(x,t)),s),b);
1045	}
1046	,ff: function(a,b,c,d,x,s,t) {
1047		return this.cmn(this.bitOR(this.bitAND(b,c),this.bitAND(~b,d)),a,b,x,s,t);
1048	}
1049	,gg: function(a,b,c,d,x,s,t) {
1050		return this.cmn(this.bitOR(this.bitAND(b,d),this.bitAND(c,~d)),a,b,x,s,t);
1051	}
1052	,hh: function(a,b,c,d,x,s,t) {
1053		return this.cmn(this.bitXOR(this.bitXOR(b,c),d),a,b,x,s,t);
1054	}
1055	,ii: function(a,b,c,d,x,s,t) {
1056		return this.cmn(this.bitXOR(c,this.bitOR(b,~d)),a,b,x,s,t);
1057	}
1058	,getNextByte: function() {
1059		if(this.bytesInStorage != 0) {
1060			this.bytesInStorage--;
1061			var result = this.bytesStorage & 255;
1062			this.bytesStorage >>= 8;
1063			return result;
1064		}
1065		var result = 0;
1066		if(this.nextCharIndex >= this.input.length) {
1067			return result;
1068		}
1069		var c = this.input.charCodeAt(this.nextCharIndex++);
1070		if(55296 <= c && c <= 56319) {
1071			c = c - 55232 << 10 | this.input.charCodeAt(this.nextCharIndex++) & 1023;
1072		}
1073		if(c <= 127) {
1074			result = c;
1075		} else if(c <= 2047) {
1076			result = 192 | c >> 6;
1077			this.bytesInStorage = 1;
1078			this.bytesStorage = 128 | c & 63;
1079		} else if(c <= 65535) {
1080			result = 224 | c >> 12;
1081			this.bytesInStorage = 2;
1082			this.bytesStorage = 128 | c >> 6 & 63 | (128 | c & 63) << 8;
1083		} else {
1084			result = 240 | c >> 18;
1085			this.bytesInStorage = 3;
1086			this.bytesStorage = 128 | c >> 12 & 63 | (128 | c >> 6 & 63) << 8 | (128 | c & 63) << 16;
1087		}
1088		return result;
1089	}
1090	,setBlockData: function(x,blockNumber,numberOfBlocks) {
1091		var _gthis = this;
1092		var i = 0;
1093		var byteOffset = blockNumber << 6;
1094		var getByte = function(idx) {
1095			if(idx < _gthis.inputBytes) {
1096				return _gthis.getNextByte();
1097			} else if(idx == _gthis.inputBytes) {
1098				return 128;
1099			} else {
1100				return 0;
1101			}
1102		};
1103		var _g = 0;
1104		while(_g < 16) {
1105			var i = _g++;
1106			if(blockNumber + 1 == numberOfBlocks && i == 14) {
1107				x[i] = this.inputBytes << 3;
1108			} else {
1109				x[i] = getByte(byteOffset) | getByte(byteOffset + 1) << 8 | getByte(byteOffset + 2) << 16 | getByte(byteOffset + 3) << 24;
1110			}
1111			byteOffset += 4;
1112		}
1113	}
1114	,doEncode: function() {
1115		var a = 1732584193;
1116		var b = -271733879;
1117		var c = -1732584194;
1118		var d = 271733878;
1119		var step;
1120		this.nextCharIndex = 0;
1121		this.bytesStorage = 0;
1122		this.bytesInStorage = 0;
1123		var numberOfBlocks = (this.inputBytes + 8 >> 6) + 1;
1124		var x = new Array(16);
1125		var blockNumber = 0;
1126		while(blockNumber < numberOfBlocks) {
1127			var olda = a;
1128			var oldb = b;
1129			var oldc = c;
1130			var oldd = d;
1131			this.setBlockData(x,blockNumber,numberOfBlocks);
1132			step = 0;
1133			a = this.ff(a,b,c,d,x[0],7,-680876936);
1134			d = this.ff(d,a,b,c,x[1],12,-389564586);
1135			c = this.ff(c,d,a,b,x[2],17,606105819);
1136			b = this.ff(b,c,d,a,x[3],22,-1044525330);
1137			a = this.ff(a,b,c,d,x[4],7,-176418897);
1138			d = this.ff(d,a,b,c,x[5],12,1200080426);
1139			c = this.ff(c,d,a,b,x[6],17,-1473231341);
1140			b = this.ff(b,c,d,a,x[7],22,-45705983);
1141			a = this.ff(a,b,c,d,x[8],7,1770035416);
1142			d = this.ff(d,a,b,c,x[9],12,-1958414417);
1143			c = this.ff(c,d,a,b,x[10],17,-42063);
1144			b = this.ff(b,c,d,a,x[11],22,-1990404162);
1145			a = this.ff(a,b,c,d,x[12],7,1804603682);
1146			d = this.ff(d,a,b,c,x[13],12,-40341101);
1147			c = this.ff(c,d,a,b,x[14],17,-1502002290);
1148			b = this.ff(b,c,d,a,x[15],22,1236535329);
1149			a = this.gg(a,b,c,d,x[1],5,-165796510);
1150			d = this.gg(d,a,b,c,x[6],9,-1069501632);
1151			c = this.gg(c,d,a,b,x[11],14,643717713);
1152			b = this.gg(b,c,d,a,x[0],20,-373897302);
1153			a = this.gg(a,b,c,d,x[5],5,-701558691);
1154			d = this.gg(d,a,b,c,x[10],9,38016083);
1155			c = this.gg(c,d,a,b,x[15],14,-660478335);
1156			b = this.gg(b,c,d,a,x[4],20,-405537848);
1157			a = this.gg(a,b,c,d,x[9],5,568446438);
1158			d = this.gg(d,a,b,c,x[14],9,-1019803690);
1159			c = this.gg(c,d,a,b,x[3],14,-187363961);
1160			b = this.gg(b,c,d,a,x[8],20,1163531501);
1161			a = this.gg(a,b,c,d,x[13],5,-1444681467);
1162			d = this.gg(d,a,b,c,x[2],9,-51403784);
1163			c = this.gg(c,d,a,b,x[7],14,1735328473);
1164			b = this.gg(b,c,d,a,x[12],20,-1926607734);
1165			a = this.hh(a,b,c,d,x[5],4,-378558);
1166			d = this.hh(d,a,b,c,x[8],11,-2022574463);
1167			c = this.hh(c,d,a,b,x[11],16,1839030562);
1168			b = this.hh(b,c,d,a,x[14],23,-35309556);
1169			a = this.hh(a,b,c,d,x[1],4,-1530992060);
1170			d = this.hh(d,a,b,c,x[4],11,1272893353);
1171			c = this.hh(c,d,a,b,x[7],16,-155497632);
1172			b = this.hh(b,c,d,a,x[10],23,-1094730640);
1173			a = this.hh(a,b,c,d,x[13],4,681279174);
1174			d = this.hh(d,a,b,c,x[0],11,-358537222);
1175			c = this.hh(c,d,a,b,x[3],16,-722521979);
1176			b = this.hh(b,c,d,a,x[6],23,76029189);
1177			a = this.hh(a,b,c,d,x[9],4,-640364487);
1178			d = this.hh(d,a,b,c,x[12],11,-421815835);
1179			c = this.hh(c,d,a,b,x[15],16,530742520);
1180			b = this.hh(b,c,d,a,x[2],23,-995338651);
1181			a = this.ii(a,b,c,d,x[0],6,-198630844);
1182			d = this.ii(d,a,b,c,x[7],10,1126891415);
1183			c = this.ii(c,d,a,b,x[14],15,-1416354905);
1184			b = this.ii(b,c,d,a,x[5],21,-57434055);
1185			a = this.ii(a,b,c,d,x[12],6,1700485571);
1186			d = this.ii(d,a,b,c,x[3],10,-1894986606);
1187			c = this.ii(c,d,a,b,x[10],15,-1051523);
1188			b = this.ii(b,c,d,a,x[1],21,-2054922799);
1189			a = this.ii(a,b,c,d,x[8],6,1873313359);
1190			d = this.ii(d,a,b,c,x[15],10,-30611744);
1191			c = this.ii(c,d,a,b,x[6],15,-1560198380);
1192			b = this.ii(b,c,d,a,x[13],21,1309151649);
1193			a = this.ii(a,b,c,d,x[4],6,-145523070);
1194			d = this.ii(d,a,b,c,x[11],10,-1120210379);
1195			c = this.ii(c,d,a,b,x[2],15,718787259);
1196			b = this.ii(b,c,d,a,x[9],21,-343485551);
1197			a = this.addme(a,olda);
1198			b = this.addme(b,oldb);
1199			c = this.addme(c,oldc);
1200			d = this.addme(d,oldd);
1201			++blockNumber;
1202		}
1203		return [a,b,c,d];
1204	}
1205	,__class__: JsMd5
1206};
1207Math.__name__ = true;
1208var Md5 = function() {
1209};
1210Md5.__name__ = true;
1211Md5.encode = function(s) {
1212	return Md5.inst.doEncode(s);
1213};
1214Md5.bitOR = function(a,b) {
1215	var lsb = a & 1 | b & 1;
1216	var msb31 = a >>> 1 | b >>> 1;
1217	return msb31 << 1 | lsb;
1218};
1219Md5.bitXOR = function(a,b) {
1220	var lsb = a & 1 ^ b & 1;
1221	var msb31 = a >>> 1 ^ b >>> 1;
1222	return msb31 << 1 | lsb;
1223};
1224Md5.bitAND = function(a,b) {
1225	var lsb = a & 1 & (b & 1);
1226	var msb31 = a >>> 1 & b >>> 1;
1227	return msb31 << 1 | lsb;
1228};
1229Md5.addme = function(x,y) {
1230	var lsw = (x & 65535) + (y & 65535);
1231	var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
1232	return msw << 16 | lsw & 65535;
1233};
1234Md5.rhex = function(num) {
1235	var str = "";
1236	var hex_chr = "0123456789abcdef";
1237	str += hex_chr.charAt(num >> 4 & 15) + hex_chr.charAt(num & 15);
1238	str += hex_chr.charAt(num >> 12 & 15) + hex_chr.charAt(num >> 8 & 15);
1239	str += hex_chr.charAt(num >> 20 & 15) + hex_chr.charAt(num >> 16 & 15);
1240	str += hex_chr.charAt(num >> 28 & 15) + hex_chr.charAt(num >> 24 & 15);
1241	return str;
1242};
1243Md5.rol = function(num,cnt) {
1244	return num << cnt | num >>> 32 - cnt;
1245};
1246Md5.cmn = function(q,a,b,x,s,t) {
1247	var lsw = (a & 65535) + (q & 65535);
1248	var msw = (a >> 16) + (q >> 16) + (lsw >> 16);
1249	var x1 = msw << 16 | lsw & 65535;
1250	var lsw = (x & 65535) + (t & 65535);
1251	var msw = (x >> 16) + (t >> 16) + (lsw >> 16);
1252	var y = msw << 16 | lsw & 65535;
1253	var lsw = (x1 & 65535) + (y & 65535);
1254	var msw = (x1 >> 16) + (y >> 16) + (lsw >> 16);
1255	var num = msw << 16 | lsw & 65535;
1256	var x = num << s | num >>> 32 - s;
1257	var lsw = (x & 65535) + (b & 65535);
1258	var msw = (x >> 16) + (b >> 16) + (lsw >> 16);
1259	return msw << 16 | lsw & 65535;
1260};
1261Md5.ff = function(a,b,c,d,x,s,t) {
1262	var lsb = b & 1 & (c & 1);
1263	var msb31 = b >>> 1 & c >>> 1;
1264	var a1 = msb31 << 1 | lsb;
1265	var a2 = ~b;
1266	var lsb = a2 & 1 & (d & 1);
1267	var msb31 = a2 >>
1267> 1 & d >>> 1;
1268	var b1 = msb31 << 1 | lsb;
1269	var lsb = a1 & 1 | b1 & 1;
1270	var msb31 = a1 >>> 1 | b1 >>> 1;
1271	var q = msb31 << 1 | lsb;
1272	var lsw = (a & 65535) + (q & 65535);
1273	var msw = (a >> 16) + (q >> 16) + (lsw >> 16);
1274	var x1 = msw << 16 | lsw & 65535;
1275	var lsw = (x & 65535) + (t & 65535);
1276	var msw = (x >> 16) + (t >> 16) + (lsw >> 16);
1277	var y = msw << 16 | lsw & 65535;
1278	var lsw = (x1 & 65535) + (y & 65535);
1279	var msw = (x1 >> 16) + (y >> 16) + (lsw >> 16);
1280	var num = msw << 16 | lsw & 65535;
1281	var x = num << s | num >>> 32 - s;
1282	var lsw = (x & 65535) + (b & 65535);
1283	var msw = (x >> 16) + (b >> 16) + (lsw >> 16);
1284	return msw << 16 | lsw & 65535;
1285};
1286Md5.gg = function(a,b,c,d,x,s,t) {
1287	var lsb = b & 1 & (d & 1);
1288	var msb31 = b >>> 1 & d >>> 1;
1289	var a1 = msb31 << 1 | lsb;
1290	var b1 = ~d;
1291	var lsb = c & 1 & (b1 & 1);
1292	var msb31 = c >>> 1 & b1 >>> 1;
1293	var b1 = msb31 << 1 | lsb;
1294	var lsb = a1 & 1 | b1 & 1;
1295	var msb31 = a1 >>> 1 | b1 >>> 1;
1296	var q = msb31 << 1 | lsb;
1297	var lsw = (a & 65535) + (q & 65535);
1298	var msw = (a >> 16) + (q >> 16) + (lsw >> 16);
1299	var x1 = msw << 16 | lsw & 65535;
1300	var lsw = (x & 65535) + (t & 65535);
1301	var msw = (x >> 16) + (t >> 16) + (lsw >> 16);
1302	var y = msw << 16 | lsw & 65535;
1303	var lsw = (x1 & 65535) + (y & 65535);
1304	var msw = (x1 >> 16) + (y >> 16) + (lsw >> 16);
1305	var num = msw << 16 | lsw & 65535;
1306	var x = num << s | num >>> 32 - s;
1307	var lsw = (x & 65535) + (b & 65535);
1308	var msw = (x >> 16) + (b >> 16) + (lsw >> 16);
1309	return msw << 16 | lsw & 65535;
1310};
1311Md5.hh = function(a,b,c,d,x,s,t) {
1312	var lsb = b & 1 ^ c & 1;
1313	var msb31 = b >>> 1 ^ c >>> 1;
1314	var a1 = msb31 << 1 | lsb;
1315	var lsb = a1 & 1 ^ d & 1;
1316	var msb31 = a1 >>> 1 ^ d >>> 1;
1317	var q = msb31 << 1 | lsb;
1318	var lsw = (a & 65535) + (q & 65535);
1319	var msw = (a >> 16) + (q >> 16) + (lsw >> 16);
1320	var x1 = msw << 16 | lsw & 65535;
1321	var lsw = (x & 65535) + (t & 65535);
1322	var msw = (x >> 16) + (t >> 16) + (lsw >> 16);
1323	var y = msw << 16 | lsw & 65535;
1324	var lsw = (x1 & 65535) + (y & 65535);
1325	var msw = (x1 >> 16) + (y >> 16) + (lsw >> 16);
1326	var num = msw << 16 | lsw & 65535;
1327	var x = num << s | num >>> 32 - s;
1328	var lsw = (x & 65535) + (b & 65535);
1329	var msw = (x >> 16) + (b >> 16) + (lsw >> 16);
1330	return msw << 16 | lsw & 65535;
1331};
1332Md5.ii = function(a,b,c,d,x,s,t) {
1333	var b1 = ~d;
1334	var lsb = b & 1 | b1 & 1;
1335	var msb31 = b >>> 1 | b1 >>> 1;
1336	var b1 = msb31 << 1 | lsb;
1337	var lsb = c & 1 ^ b1 & 1;
1338	var msb31 = c >>> 1 ^ b1 >>> 1;
1339	var q = msb31 << 1 | lsb;
1340	var lsw = (a & 65535) + (q & 65535);
1341	var msw = (a >> 16) + (q >> 16) + (lsw >> 16);
1342	var x1 = msw << 16 | lsw & 65535;
1343	var lsw = (x & 65535) + (t & 65535);
1344	var msw = (x >> 16) + (t >> 16) + (lsw >> 16);
1345	var y = msw << 16 | lsw & 65535;
1346	var lsw = (x1 & 65535) + (y & 65535);
1347	var msw = (x1 >> 16) + (y >> 16) + (lsw >> 16);
1348	var num = msw << 16 | lsw & 65535;
1349	var x = num << s | num >>> 32 - s;
1350	var lsw = (x & 65535) + (b & 65535);
1351	var msw = (x >> 16) + (b >> 16) + (lsw >> 16);
1352	return msw << 16 | lsw & 65535;
1353};
1354Md5.prototype = {
1355	str2blks: function(str) {
1356		var nblk = (str.length + 8 >> 6) + 1;
1357		var blks = [];
1358		var _g = 0;
1359		var _g1 = nblk * 16;
1360		while(_g < _g1) {
1361			var i = _g++;
1362			blks[i] = 0;
1363		}
1364		var i = 0;
1365		while(i < str.length) {
1366			blks[i >> 2] |= HxOverrides.cca(str,i) << (str.length * 8 + i) % 4 * 8;
1367			++i;
1368		}
1369		blks[i >> 2] |= 128 << (str.length * 8 + i) % 4 * 8;
1370		var l = str.length * 8;
1371		var k = nblk * 16 - 2;
1372		blks[k] = l & 255;
1373		blks[k] |= (l >>> 8 & 255) << 8;
1374		blks[k] |= (l >>> 16 & 255) << 16;
1375		blks[k] |= (l >>> 24 & 255) << 24;
1376		return blks;
1377	}
1378	,charCodeAt: function(str,i) {
1379		return HxOverrides.cca(str,i);
1380	}
1381	,doEncode: function(str) {
1382		var x = this.str2blks(str);
1383		var a = 1732584193;
1384		var b = -271733879;
1385		var c = -1732584194;
1386		var d = 271733878;
1387		var step;
1388		var i = 0;
1389		while(i < x.length) {
1390			var olda = a;
1391			var oldb = b;
1392			var oldc = c;
1393			var oldd = d;
1394			step = 0;
1395			var x1 = x[i];
1396			var lsb = b & 1 & (c & 1);
1397			var msb31 = b >>> 1 & c >>> 1;
1398			var a1 = msb31 << 1 | lsb;
1399			var a2 = ~b;
1400			var lsb1 = a2 & 1 & (d & 1);
1401			var msb311 = a2 >>> 1 & d >>> 1;
1402			var b1 = msb311 << 1 | lsb1;
1403			var lsb2 = a1 & 1 | b1 & 1;
1404			var msb312 = a1 >>> 1 | b1 >>> 1;
1405			var q = msb312 << 1 | lsb2;
1406			var lsw = (a & 65535) + (q & 65535);
1407			var msw = (a >> 16) + (q >> 16) + (lsw >> 16);
1408			var x2 = msw << 16 | lsw & 65535;
1409			var lsw1 = (x1 & 65535) + 42104;
1410			var msw1 = (x1 >> 16) + (-10390) + (lsw1 >> 16);
1411			var y = msw1 << 16 | lsw1 & 65535;
1412			var lsw2 = (x2 & 65535) + (y & 65535);
1413			var msw2 = (x2 >> 16) + (y >> 16) + (lsw2 >> 16);
1414			var num = msw2 << 16 | lsw2 & 65535;
1415			var x3 = num << 7 | num >>> 25;
1416			var lsw3 = (x3 & 65535) + (b & 65535);
1417			var msw3 = (x3 >> 16) + (b >> 16) + (lsw3 >> 16);
1418			a = msw3 << 16 | lsw3 & 65535;
1419			var x4 = x[i + 1];
1420			var lsb3 = a & 1 & (b & 1);
1421			var msb313 = a >>> 1 & b >>> 1;
1422			var a3 = msb313 << 1 | lsb3;
1423			var a4 = ~a;
1424			var lsb4 = a4 & 1 & (c & 1);
1425			var msb314 = a4 >>> 1 & c >>> 1;
1426			var b2 = msb314 << 1 | lsb4;
1427			var lsb5 = a3 & 1 | b2 & 1;
1428			var msb315 = a3 >>> 1 | b2 >>> 1;
1429			var q1 = msb315 << 1 | lsb5;
1430			var lsw4 = (d & 65535) + (q1 & 65535);
1431			var msw4 = (d >> 16) + (q1 >> 16) + (lsw4 >> 16);
1432			var x5 = msw4 << 16 | lsw4 & 65535;
1433			var lsw5 = (x4 & 65535) + 46934;
1434			var msw5 = (x4 >> 16) + (-5945) + (lsw5 >> 16);
1435			var y1 = msw5 << 16 | lsw5 & 65535;
1436			var lsw6 = (x5 & 65535) + (y1 & 65535);
1437			var msw6 = (x5 >> 16) + (y1 >> 16) + (lsw6 >> 16);
1438			var num1 = msw6 << 16 | lsw6 & 65535;
1439			var x6 = num1 << 12 | num1 >>> 20;
1440			var lsw7 = (x6 & 65535) + (a & 65535);
1441			var msw7 = (x6 >> 16) + (a >> 16) + (lsw7 >> 16);
1442			d = msw7 << 16 | lsw7 & 65535;
1443			var x7 = x[i + 2];
1444			var lsb6 = d & 1 & (a & 1);
1445			var msb316 = d >>> 1 & a >>> 1;
1446			var a5 = msb316 << 1 | lsb6;
1447			var a6 = ~d;
1448			var lsb7 = a6 & 1 & (b & 1);
1449			var msb317 = a6 >>> 1 & b >>> 1;
1450			var b3 = msb317 << 1 | lsb7;
1451			var lsb8 = a5 & 1 | b3 & 1;
1452			var msb318 = a5 >>> 1 | b3 >>> 1;
1453			var q2 = msb318 << 1 | lsb8;
1454			var lsw8 = (c & 65535) + (q2 & 65535);
1455			var msw8 = (c >> 16) + (q2 >> 16) + (lsw8 >> 16);
1456			var x8 = msw8 << 16 | lsw8 & 65535;
1457			var lsw9 = (x7 & 65535) + 28891;
1458			var msw9 = (x7 >> 16) + 9248 + (lsw9 >> 16);
1459			var y2 = msw9 << 16 | lsw9 & 65535;
1460			var lsw10 = (x8 & 65535) + (y2 & 65535);
1461			var msw10 = (x8 >> 16) + (y2 >> 16) + (lsw10 >> 16);
1462			var num2 = msw10 << 16 | lsw10 & 65535;
1463			var x9 = num2 << 17 | num2 >>> 15;
1464			var lsw11 = (x9 & 65535) + (d & 65535);
1465			var msw11 = (x9 >> 16) + (d >> 16) + (lsw11 >> 16);
1466			c = msw11 << 16 | lsw11 & 65535;
1467			var x10 = x[i + 3];
1468			var lsb9 = c & 1 & (d & 1);
1469			var msb319 = c >>> 1 & d >>> 1;
1470			var a7 = msb319 << 1 | lsb9;
1471			var a8 = ~c;
1472			var lsb10 = a8 & 1 & (a & 1);
1473			var msb3110 = a8 >>> 1 & a >>> 1;
1474			var b4 = msb3110 << 1 | lsb10;
1475			var lsb11 = a7 & 1 | b4 & 1;
1476			var msb3111 = a7 >>> 1 | b4 >>> 1;
1477			var q3 = msb3111 << 1 | lsb11;
1478			var lsw12 = (b & 65535) + (q3 & 65535);
1479			var msw12 = (b >> 16) + (q3 >> 16) + (lsw12 >> 16);
1480			var x11 = msw12 << 16 | lsw12 & 65535;
1481			var lsw13 = (x10 & 65535) + 52974;
1482			var msw13 = (x10 >> 16) + (-15939) + (lsw13 >> 16);
1483			var y3 = msw13 << 16 | lsw13 & 65535;
1484			var lsw14 = (x11 & 65535) + (y3 & 65535);
1485			var msw14 = (x11 >> 16) + (y3 >> 16) + (lsw14 >> 16);
1486			var num3 = msw14 << 16 | lsw14 & 65535;
1487			var x12 = num3 << 22 | num3 >>> 10;
1488			var lsw15 = (x12 & 65535) + (c & 65535);
1489			var msw15 = (x12 >> 16) + (c >> 16) + (lsw15 >> 16);
1490			b = msw15 << 16 | lsw15 & 65535;
1491			var x13 = x[i + 4];
1492			var lsb12 = b & 1 & (c & 1);
1493			var msb3112 = b >>> 1 & c >>> 1;
1494			var a9 = msb3112 << 1 | lsb12;
1495			var a10 = ~b;
1496			var lsb13 = a10 & 1 & (d & 1);
1497			var msb3113 = a10 >>> 1 & d >>> 1;
1498			var b5 = msb3113 << 1 | lsb13;
1499			var lsb14 = a9 & 1 | b5 & 1;
1500			var msb3114 = a9 >>> 1 | b5 >>> 1;
1501			var q4 = msb3114 << 1 | lsb14;
1502			var lsw16 = (a & 65535) + (q4 & 65535);
1503			var msw16 = (a >> 16) + (q4 >> 16) + (lsw16 >> 16);
1504			var x14 = msw16 << 16 | lsw16 & 65535;
1505			var lsw17 = (x13 & 65535) + 4015;
1506			var msw17 = (x13 >> 16) + (-2692) + (lsw17 >> 16);
1507			var y4 = msw17 << 16 | lsw17 & 65535;
1508			var lsw18 = (x14 & 65535) + (y4 & 65535);
1509			var msw18 = (x14 >> 16) + (y4 >> 16) + (lsw18 >> 16);
1510			var num4 = msw18 << 16 | lsw18 & 65535;
1511			var x15 = num4 << 7 | num4 >>> 25;
1512			var lsw19 = (x15 & 65535) + (b & 65535);
1513			var msw19 = (x15 >> 16) + (b >> 16) + (lsw19 >> 16);
1514			a = msw19 << 16 | lsw19 & 65535;
1515			var x16 = x[i + 5];
1516			var lsb15 = a & 1 & (b & 1);
1517			var msb3115 = a >>> 1 & b >>> 1;
1518			var a11 = msb3115 << 1 | lsb15;
1519			var a12 = ~a;
1520			var lsb16 = a12 & 1 & (c & 1);
1521			var msb3116 = a12 >>> 1 & c >>> 1;
1522			var b6 = msb3116 << 1 | lsb16;
1523			var lsb17 = a11 & 1 | b6 & 1;
1524			var msb3117 = a11 >>> 1 | b6 >>> 1;
1525			var q5 = msb3117 << 1 | lsb17;
1526			var lsw20 = (d & 65535) + (q5 & 65535);
1527			var msw20 = (d >> 16) + (q5 >> 16) + (lsw20 >> 16);
1528			var x17 = msw20 << 16 | lsw20 & 65535;
1529			var lsw21 = (x16 & 65535) + 50730;
1530			var msw21 = (x16 >> 16) + 18311 + (lsw21 >> 16);
1531			var y5 = msw21 << 16 | lsw21 & 65535;
1532			var lsw22 = (x17 & 65535) + (y5 & 65535);
1533			var msw22 = (x17 >> 16) + (y5 >> 16) + (lsw22 >> 16);
1534			var num5 = msw22 << 16 | lsw22 & 65535;
1535			var x18 = num5 << 12 | num5 >>> 20;
1536			var lsw23 = (x18 & 65535) + (a & 65535);
1537			var msw23 = (x18 >> 16) + (a >> 16) + (lsw23 >> 16);
1538			d = msw23 << 16 | lsw23 & 65535;
1539			var x19 = x[i + 6];
1540			var lsb18 = d & 1 & (a & 1);
1541			var msb3118 = d >>> 1 & a >>> 1;
1542			var a13 = msb3118 << 1 | lsb18;
1543			var a14 = ~d;
1544			var lsb19 = a14 & 1 & (b & 1);
1545			var msb3119 = a14 >>> 1 & b >>> 1;
1546			var b7 = msb3119 << 1 | lsb19;
1547			var lsb20 = a13 & 1 | b7 & 1;
1548			var msb3120 = a13 >>> 1 | b7 >>> 1;
1549			var q6 = msb3120 << 1 | lsb20;
1550			var lsw24 = (c & 65535) + (q6 & 65535);
1551			var msw24 = (c >> 16) + (q6 >> 16) + (lsw24 >> 16);
1552			var x20 = msw24 << 16 | lsw24 & 65535;
1553			var lsw25 = (x19 & 65535) + 17939;
1554			var msw25 = (x19 >> 16) + (-22480) + (lsw25 >> 16);
1555			var y6 = msw25 << 16 | lsw25 & 65535;
1556			var lsw26 = (x20 & 65535) + (y6 & 65535);
1557			var msw26 = (x20 >> 16) + (y6 >> 16) + (lsw26 >> 16);
1558			var num6 = msw26 << 16 | lsw26 & 65535;
1559			var x21 = num6 << 17 | num6 >>> 15;
1560			var lsw27 = (x21 & 65535) + (d & 65535);
1561			var msw27 = (x21 >> 16) + (d >> 16) + (lsw27 >> 16);
1562			c = msw27 << 16 | lsw27 & 65535;
1563			var x22 = x[i + 7];
1564			var lsb21 = c & 1 & (d & 1);
1565			var msb3121 = c >>> 1 & d >>> 1;
1566			var a15 = msb3121 << 1 | lsb21;
1567			var a16 = ~c;
1568			var lsb22 = a16 & 1 & (a & 1);
1569			var msb3122 = a16 >>> 1 & a >>> 1;
1570			var b8 = msb3122 << 1 | lsb22;
1571			var lsb23 = a15 & 1 | b8 & 1;
1572			var msb3123 = a15 >>> 1 | b8 >>> 1;
1573			var q7 = msb3123 << 1 | lsb23;
1574			var lsw28 = (b & 65535) + (q7 & 65535);
1575			var msw28 = (b >> 16) + (q7 >> 16) + (lsw28 >> 16);
1576			var x23 = msw28 << 16 | lsw28 & 65535;
1577			var lsw29 = (x22 & 65535) + 38145;
1578			var msw29 = (x22 >> 16) + (-698) + (lsw29 >> 16);
1579			var y7 = msw29 << 16 | lsw29 & 65535;
1580			var lsw30 = (x23 & 65535) + (y7 & 65535);
1581			var msw30 = (x23 >> 16) + (y7 >> 16) + (lsw30 >> 16);
1582			var num7 = msw30 << 16 | lsw30 & 65535;
1583			var x24 = num7 << 22 | num7 >>> 10;
1584			var lsw31 = (x24 & 65535) + (c & 65535);
1585			var msw31 = (x24 >> 16) + (c >> 16) + (lsw31 >> 16);
1586			b = msw31 << 16 | lsw31 & 65535;
1587			var x25 = x[i + 8];
1588			var lsb24 = b & 1 & (c & 1);
1589			var msb3124 = b >>> 1 & c >>> 1;
1590			var a17 = msb3124 << 1 | lsb24;
1591			var a18 = ~b;
1592			var lsb25 = a18 & 1 & (d & 1);
1593			var msb3125 = a18 >>> 1 & d >>> 1;
1594			var b9 = msb3125 << 1 | lsb25;
1595			var lsb26 = a17 & 1 | b9 & 1;
1596			var msb3126 = a17 >>> 1 | b9 >>> 1;
1597			var q8 = msb3126 << 1 | lsb26;
1598			var lsw32 = (a & 65535) + (q8 & 65535);
1599			var msw32 = (a >> 16) + (q8 >> 16) + (lsw32 >> 16);
1600			var x26 = msw32 << 16 | lsw32 & 65535;
1601			var lsw33 = (x25 & 65535) + 39128;
1602			var msw33 = (x25 >> 16) + 27008 + (lsw33 >> 16);
1603			var y8 = msw33 << 16 | lsw33 & 65535;
1604			var lsw34 = (x26 & 65535) + (y8 & 65535);
1605			var msw34 = (x26 >> 16) + (y8 >> 16) + (lsw34 >> 16);
1606			var num8 = msw34 << 16 | lsw34 & 65535;
1607			var x27 = num8 << 7 | num8 >>> 25;
1608			var lsw35 = (x27 & 65535) + (b & 65535);
1609			var msw35 = (x27 >> 16) + (b >> 16) + (lsw35 >> 16);
1610			a = msw35 << 16 | lsw35 & 65535;
1611			var x28 = x[i + 9];
1612			var lsb27 = a & 1 & (b & 1);
1613			var msb3127 = a >>> 1 & b >>> 1;
1614			var a19 = msb3127 << 1 | lsb27;
1615			var a20 = ~a;
1616			var lsb28 = a20 & 1 & (c & 1);
1617			var msb3128 = a20 >>> 1 & c >>> 1;
1618			var b10 = msb3128 << 1 | lsb28;
1619			var lsb29 = a19 & 1 | b10 & 1;
1620			var msb3129 = a19 >>> 1 | b10 >>> 1;
1621			var q9 = msb3129 << 1 | lsb29;
1622			var lsw36 = (d & 65535) + (q9 & 65535);
1623			var msw36 = (d >> 16) + (q9 >> 16) + (lsw36 >> 16);
1624			var x29 = msw36 << 16 | lsw36 & 65535;
1625			var lsw37 = (x28 & 65535) + 63407;
1626			var msw37 = (x28 >> 16) + (-29884) + (lsw37 >> 16);
1627			var y9 = msw37 << 16 | lsw37 & 65535;
1628			var lsw38 = (x29 & 65535) + (y9 & 65535);
1629			var msw38 = (x29 >> 16) + (y9 >> 16) + (lsw38 >> 16);
1630			var num9 = msw38 << 16 | lsw38 & 65535;
1631			var x30 = num9 << 12 | num9 >>> 20;
1632			var lsw39 = (x30 & 65535) + (a & 65535);
1633			var msw39 = (x30 >> 16) + (a >> 16) + (lsw39 >> 16);
1634			d = msw39 << 16 | lsw39 & 65535;
1635			var x31 = x[i + 10];
1636			var lsb30 = d & 1 & (a & 1);
1637			var msb3130 = d >>> 1 & a >>> 1;
1638			var a21 = msb3130 << 1 | lsb30;
1639			var a22 = ~d;
1640			var lsb31 = a22 & 1 & (b & 1);
1641			var msb3131 = a22 >>> 1 & b >>> 1;
1642			var b11 = msb3131 << 1 | lsb31;
1643			var lsb32 = a21 & 1 | b11 & 1;
1644			var msb3132 = a21 >>> 1 | b11 >>> 1;
1645			var q10 = msb3132 << 1 | lsb32;
1646			var lsw40 = (c & 65535) + (q10 & 65535);
1647			var msw40 = (c >> 16) + (q10 >> 16) + (lsw40 >> 16);
1648			var x32 = msw40 << 16 | lsw40 & 65535;
1649			var lsw41 = (x31 & 65535) + 23473;
1650			var msw41 = (x31 >> 16) + (-1) + (lsw41 >> 16);
1651			var y10 = msw41 << 16 | lsw41 & 65535;
1652			var lsw42 = (x32 & 65535) + (y10 & 65535);
1653			var msw42 = (x32 >> 16) + (y10 >> 16) + (lsw42 >> 16);
1654			var num10 = msw42 << 16 | lsw42 & 65535;
1655			var x33 = num10 << 17 | num10 >>> 15;
1656			var lsw43 = (x33 & 65535) + (d & 65535);
1657			var msw43 = (x33 >> 16) + (d >> 16) + (lsw43 >> 16);
1658			c = msw43 << 16 | lsw43 & 65535;
1659			var x34 = x[i + 11];
1660			var lsb33 = c & 1 & (d & 1);
1661			var msb3133 = c >>> 1 & d >>> 1;
1662			var a23 = msb3133 << 1 | lsb33;
1663			var a24 = ~c;
1664			var lsb34 = a24 & 1 & (a & 1);
1665			var msb3134 = a24 >>> 1 & a >>> 1;
1666			var b12 = msb3134 << 1 | lsb34;
1667			var lsb35 = a23 & 1 | b12 & 1;
1668			var msb3135 = a23 >>> 1 | b12 >>> 1;
1669			var q11 = msb3135 << 1 | lsb35;
1670			var lsw44 = (b & 65535) + (q11 & 65535);
1671			var msw44 = (b >> 16) + (q11 >> 16) + (lsw44 >> 16);
1672			var x35 = msw44 << 16 | lsw44 & 65535;
1673			var lsw45 = (x34 & 65535) + 55230;
1674			var msw45 = (x34 >> 16) + (-30372) + (lsw45 >> 16);
1675			var y11 = msw45 << 16 | lsw45 & 65535;
1676			var lsw46 = (x35 & 65535) + (y11 & 65535);
1677			var msw46 = (x35 >> 16) + (y11 >> 16) + (lsw46 >> 16);
1678			var num11 = msw46 << 16 | lsw46 & 65535;
1679			var x36 = num11 << 22 | num11 >>> 10;
1680			var lsw47 = (x36 & 65535) + (c & 65535);
1681			var msw47 = (x36 >> 16) + (c >> 16) + (lsw47 >> 16);
1682			b = msw47 << 16 | lsw47 & 65535;
1683			var x37 = x[i + 12];
1684			var lsb36 = b & 1 & (c & 1);
1685			var msb3136 = b >>> 1 & c >>> 1;
1686			var a25 = msb3136 << 1 | lsb36;
1687			var a26 = ~b;
1688			var lsb37 = a26 & 1 & (d & 1);
1689			var msb3137 = a26 >>> 1 & d >>> 1;
1690			var b13 = msb3137 << 1 | lsb37;
1691			var lsb38 = a25 & 1 | b13 & 1;
1692			var msb3138 = a25 >>> 1 | b13 >>> 1;
1693			var q12 = msb3138 << 1 | lsb38;
1694			var lsw48 = (a & 65535) + (q12 & 65535);
1695			var msw48 = (a >> 16) + (q12 >> 16) + (lsw48 >> 16);
1696			var x38 = msw48 << 16 | lsw48 & 65535;
1697			var lsw49 = (x37 & 65535) + 4386;
1698			var msw49 = (x37 >> 16) + 27536 + (lsw49 >> 16);
1699			var y12 = msw49 << 16 | lsw49 & 65535;
1700			var lsw50 = (x38 & 65535) + (y12 & 65535);
1701			var msw50 = (x38 >> 16) + (y12 >> 16) + (lsw50 >> 16);
1702			var num12 = msw50 << 16 | lsw50 & 65535;
1703			var x39 = num12 << 7 | num12 >>> 25;
1704			var lsw51 = (x39 & 65535) + (b & 65535);
1705			var msw51 = (x39 >> 16) + (b >> 16) + (lsw51 >> 16);
1706			a = msw51 << 16 | lsw51 & 65535;
1707			var x40 = x[i + 13];
1708			var lsb39 = a & 1 & (b & 1);
1709			var msb3139 = a >>> 1 & b >>> 1;
1710			var a27 = msb3139 << 1 | lsb39;
1711			var a28 = ~a;
1712			var lsb40 = a28 & 1 & (c & 1);
1713			var msb3140 = a28 >>> 1 & c >>> 1;
1714			var b14 = msb3140 << 1 | lsb40;
1715			var lsb41 = a27 & 1 | b14 & 1;
1716			var msb3141 = a27 >>> 1 | b14 >>> 1;
1717			var q13 = msb3141 << 1 | lsb41;
1718			var lsw52 = (d & 65535) + (q13 & 65535);
1719			var msw52 = (d >> 16) + (q13 >> 16) + (lsw52 >> 16);
1720			var x41 = msw52 << 16 | lsw52 & 65535;
1721			var lsw53 = (x40 & 65535) + 29075;
1722			var msw53 = (x40 >> 16) + (-616) + (lsw53 >> 16);
1723			var y13 = msw53 << 16 | lsw53 & 65535;
1724			var lsw54 = (x41 & 65535) + (y13 & 65535);
1725			var msw54 = (x41 >> 16) + (y13 >> 16) + (lsw54 >> 16);
1726			var num13 = msw54 << 16 | lsw54 & 65535;
1727			var x42 = num13 << 12 | num13 >>> 20;
1728			var lsw55 = (x42 & 65535) + (a & 65535);
1729			var msw55 = (x42 >> 16) + (a >> 16) + (lsw55 >> 16);
1730			d = msw55 << 16 | lsw55 & 65535;
1731			var x43 = x[i + 14];
1732			var lsb42 = d & 1 & (a & 1);
1733			var msb3142 = d >>> 1 & a >>> 1;
1734			var a29 = msb3142 << 1 | lsb42;
1735			var a30 = ~d;
1736			var lsb43 = a30 & 1 & (b & 1);
1737			var msb3143 = a30 >>> 1 & b >>> 1;
1738			var b15 = msb3143 << 1 | lsb43;
1739			var lsb44 = a29 & 1 | b15 & 1;
1740			var msb3144 = a29 >>> 1 | b15 >>> 1;
1741			var q14 = msb3144 << 1 | lsb44;
1742			var lsw56 = (c & 65535) + (q14 & 65535);
1743			var msw56 = (c >> 16) + (q14 >> 16) + (lsw56 >> 16);
1744			var x44 = msw56 << 16 | lsw56 & 65535;
1745			var lsw57 = (x43 & 65535) + 17294;
1746			var msw57 = (x43 >> 16) + (-22919) + (lsw57 >> 16);
1747			var y14 = msw57 << 16 | lsw57 & 65535;
1748			var lsw58 = (x44 & 65535) + (y14 & 65535);
1749			var msw58 = (x44 >> 16) + (y14 >> 16) + (lsw58 >> 16);
1750			var num14 = msw58 << 16 | lsw58 & 65535;
1751			var x45 = num14 << 17 | num14 >>> 15;
1752			var lsw59 = (x45 & 65535) + (d & 65535);
1753			var msw59 = (x45 >> 16) + (d >> 16) + (lsw59 >> 16);
1754			c = msw59 << 16 | lsw59 & 65535;
1755			var x46 = x[i + 15];
1756			var lsb45 = c & 1 & (d & 1);
1757			var msb3145 = c >>> 1 & d >>> 1;
1758			var a31 = msb3145 << 1 | lsb45;
1759			var a32 = ~c;
1760			var lsb46 = a32 & 1 & (a & 1);
1761			var msb3146 = a32 >>> 1 & a >>> 1;
1762			var b16 = msb3146 << 1 | lsb46;
1763			var lsb47 = a31 & 1 | b16 & 1;
1764			var msb3147 = a31 >>> 1 | b16 >>> 1;
1765			var q15 = msb3147 << 1 | lsb47;
1766			var lsw60 = (b & 65535) + (q15 & 65535);
1767			var msw60 = (b >> 16) + (q15 >> 16) + (lsw60 >> 16);
1768			var x47 = msw60 << 16 | lsw60 & 65535;
1769			var lsw61 = (x46 & 65535) + 2081;
1770			var msw61 = (x46 >> 16) + 18868 + (lsw61 >> 16);
1771			var y15 = msw61 << 16 | lsw61 & 65535;
1772			var lsw62 = (x47 & 65535) + (y15 & 65535);
1773			var msw62 = (x47 >> 16) + (y15 >> 16) + (lsw62 >> 16);
1774			var num15 = msw62 << 16 | lsw62 & 65535;
1775			var x48 = num15 << 22 | num15 >>> 10;
1776			var lsw63 = (x48 & 65535) + (c & 65535);
1777			var msw63 = (x48 >> 16) + (c >> 16) + (lsw63 >> 16);
1778			b = msw63 << 16 | lsw63 & 65535;
1779			var x49 = x[i + 1];
1780			var lsb48 = b & 1 & (d & 1);
1781			var msb3148 = b >>> 1 & d >>> 1;
1782			var a33 = msb3148 << 1 | lsb48;
1783			var b17 = ~d;
1784			var lsb49 = c & 1 & (b17 & 1);
1785			var msb3149 = c >>> 1 & b17 >>> 1;
1786			var b18 = msb3149 << 1 | lsb49;
1787			var lsb50 = a33 & 1 | b18 & 1;
1788			var msb3150 = a33 >>> 1 | b18 >>> 1;
1789			var q16 = msb3150 << 1 | lsb50;
1790			var lsw64 = (a & 65535) + (q16 & 65535);
1791			var msw64 = (a >> 16) + (q16 >> 16) + (lsw64 >> 16);
1792			var x50 = msw64 << 16 | lsw64 & 65535;
1793			var lsw65 = (x49 & 65535) + 9570;
1794			var msw65 = (x49 >> 16) + (-2530) + (lsw65 >> 16);
1795			var y16 = msw65 << 16 | lsw65 & 65535;
1796			var lsw66 = (x50 & 65535) + (y16 & 65535);
1797			var msw66 = (x50 >> 16) + (y16 >> 16) + (lsw66 >> 16);
1798			var num16 = msw66 << 16 | lsw66 & 65535;
1799			var x51 = num16 << 5 | num16 >>> 27;
1800			var lsw67 = (x51 & 65535) + (b & 65535);
1801			var msw67 = (x51 >> 16) + (b >> 16) + (lsw67 >> 16);
1802			a = msw67 << 16 | lsw67 & 65535;
1803			var x52 = x[i + 6];
1804			var lsb51 = a & 1 & (c & 1);
1805			var msb3151 = a >>> 1 & c >>> 1;
1806			var a34 = msb3151 << 1 | lsb51;
1807			var b19 = ~c;
1808			var lsb52 = b & 1 & (b19 & 1);
1809			var msb3152 = b >>> 1 & b19 >>> 1;
1810			var b20 = msb3152 << 1 | lsb52;
1811			var lsb53 = a34 & 1 | b20 & 1;
1812			var msb3153 = a34 >>> 1 | b20 >>> 1;
1813			var q17 = msb3153 << 1 | lsb53;
1814			var lsw68 = (d & 65535) + (q17 & 65535);
1815			var msw68 = (d >> 16) + (q17 >> 16) + (lsw68 >> 16);
1816			var x53 = msw68 << 16 | lsw68 & 65535;
1817			var lsw69 = (x52 & 65535) + 45888;
1818			var msw69 = (x52 >> 16) + (-16320) + (lsw69 >> 16);
1819			var y17 = msw69 << 16 | lsw69 & 65535;
1820			var lsw70 = (x53 & 65535) + (y17 & 65535);
1821			var msw70 = (x53 >> 16) + (y17 >> 16) + (lsw70 >> 16);
1822			var num17 = msw70 << 16 | lsw70 & 65535;
1823			var x54 = num17 << 9 | num17 >>> 23;
1824			var lsw71 = (x54 & 65535) + (a & 65535);
1825			var msw71 = (x54 >>
1825 16) + (a >> 16) + (lsw71 >> 16);
1826			d = msw71 << 16 | lsw71 & 65535;
1827			var x55 = x[i + 11];
1828			var lsb54 = d & 1 & (b & 1);
1829			var msb3154 = d >>> 1 & b >>> 1;
1830			var a35 = msb3154 << 1 | lsb54;
1831			var b21 = ~b;
1832			var lsb55 = a & 1 & (b21 & 1);
1833			var msb3155 = a >>> 1 & b21 >>> 1;
1834			var b22 = msb3155 << 1 | lsb55;
1835			var lsb56 = a35 & 1 | b22 & 1;
1836			var msb3156 = a35 >>> 1 | b22 >>> 1;
1837			var q18 = msb3156 << 1 | lsb56;
1838			var lsw72 = (c & 65535) + (q18 & 65535);
1839			var msw72 = (c >> 16) + (q18 >> 16) + (lsw72 >> 16);
1840			var x56 = msw72 << 16 | lsw72 & 65535;
1841			var lsw73 = (x55 & 65535) + 23121;
1842			var msw73 = (x55 >> 16) + 9822 + (lsw73 >> 16);
1843			var y18 = msw73 << 16 | lsw73 & 65535;
1844			var lsw74 = (x56 & 65535) + (y18 & 65535);
1845			var msw74 = (x56 >> 16) + (y18 >> 16) + (lsw74 >> 16);
1846			var num18 = msw74 << 16 | lsw74 & 65535;
1847			var x57 = num18 << 14 | num18 >>> 18;
1848			var lsw75 = (x57 & 65535) + (d & 65535);
1849			var msw75 = (x57 >> 16) + (d >> 16) + (lsw75 >> 16);
1850			c = msw75 << 16 | lsw75 & 65535;
1851			var x58 = x[i];
1852			var lsb57 = c & 1 & (a & 1);
1853			var msb3157 = c >>> 1 & a >>> 1;
1854			var a36 = msb3157 << 1 | lsb57;
1855			var b23 = ~a;
1856			var lsb58 = d & 1 & (b23 & 1);
1857			var msb3158 = d >>> 1 & b23 >>> 1;
1858			var b24 = msb3158 << 1 | lsb58;
1859			var lsb59 = a36 & 1 | b24 & 1;
1860			var msb3159 = a36 >>> 1 | b24 >>> 1;
1861			var q19 = msb3159 << 1 | lsb59;
1862			var lsw76 = (b & 65535) + (q19 & 65535);
1863			var msw76 = (b >> 16) + (q19 >> 16) + (lsw76 >> 16);
1864			var x59 = msw76 << 16 | lsw76 & 65535;
1865			var lsw77 = (x58 & 65535) + 51114;
1866			var msw77 = (x58 >> 16) + (-5706) + (lsw77 >> 16);
1867			var y19 = msw77 << 16 | lsw77 & 65535;
1868			var lsw78 = (x59 & 65535) + (y19 & 65535);
1869			var msw78 = (x59 >> 16) + (y19 >> 16) + (lsw78 >> 16);
1870			var num19 = msw78 << 16 | lsw78 & 65535;
1871			var x60 = num19 << 20 | num19 >>> 12;
1872			var lsw79 = (x60 & 65535) + (c & 65535);
1873			var msw79 = (x60 >> 16) + (c >> 16) + (lsw79 >> 16);
1874			b = msw79 << 16 | lsw79 & 65535;
1875			var x61 = x[i + 5];
1876			var lsb60 = b & 1 & (d & 1);
1877			var msb3160 = b >>> 1 & d >>> 1;
1878			var a37 = msb3160 << 1 | lsb60;
1879			var b25 = ~d;
1880			var lsb61 = c & 1 & (b25 & 1);
1881			var msb3161 = c >>> 1 & b25 >>> 1;
1882			var b26 = msb3161 << 1 | lsb61;
1883			var lsb62 = a37 & 1 | b26 & 1;
1884			var msb3162 = a37 >>> 1 | b26 >>> 1;
1885			var q20 = msb3162 << 1 | lsb62;
1886			var lsw80 = (a & 65535) + (q20 & 65535);
1887			var msw80 = (a >> 16) + (q20 >> 16) + (lsw80 >> 16);
1888			var x62 = msw80 << 16 | lsw80 & 65535;
1889			var lsw81 = (x61 & 65535) + 4189;
1890			var msw81 = (x61 >> 16) + (-10705) + (lsw81 >> 16);
1891			var y20 = msw81 << 16 | lsw81 & 65535;
1892			var lsw82 = (x62 & 65535) + (y20 & 65535);
1893			var msw82 = (x62 >> 16) + (y20 >> 16) + (lsw82 >> 16);
1894			var num20 = msw82 << 16 | lsw82 & 65535;
1895			var x63 = num20 << 5 | num20 >>> 27;
1896			var lsw83 = (x63 & 65535) + (b & 65535);
1897			var msw83 = (x63 >> 16) + (b >> 16) + (lsw83 >> 16);
1898			a = msw83 << 16 | lsw83 & 65535;
1899			var x64 = x[i + 10];
1900			var lsb63 = a & 1 & (c & 1);
1901			var msb3163 = a >>> 1 & c >>> 1;
1902			var a38 = msb3163 << 1 | lsb63;
1903			var b27 = ~c;
1904			var lsb64 = b & 1 & (b27 & 1);
1905			var msb3164 = b >>> 1 & b27 >>> 1;
1906			var b28 = msb3164 << 1 | lsb64;
1907			var lsb65 = a38 & 1 | b28 & 1;
1908			var msb3165 = a38 >>> 1 | b28 >>> 1;
1909			var q21 = msb3165 << 1 | lsb65;
1910			var lsw84 = (d & 65535) + (q21 & 65535);
1911			var msw84 = (d >> 16) + (q21 >> 16) + (lsw84 >> 16);
1912			var x65 = msw84 << 16 | lsw84 & 65535;
1913			var lsw85 = (x64 & 65535) + 5203;
1914			var msw85 = (x64 >> 16) + 580 + (lsw85 >> 16);
1915			var y21 = msw85 << 16 | lsw85 & 65535;
1916			var lsw86 = (x65 & 65535) + (y21 & 65535);
1917			var msw86 = (x65 >> 16) + (y21 >> 16) + (lsw86 >> 16);
1918			var num21 = msw86 << 16 | lsw86 & 65535;
1919			var x66 = num21 << 9 | num21 >>> 23;
1920			var lsw87 = (x66 & 65535) + (a & 65535);
1921			var msw87 = (x66 >> 16) + (a >> 16) + (lsw87 >> 16);
1922			d = msw87 << 16 | lsw87 & 65535;
1923			var x67 = x[i + 15];
1924			var lsb66 = d & 1 & (b & 1);
1925			var msb3166 = d >>> 1 & b >>> 1;
1926			var a39 = msb3166 << 1 | lsb66;
1927			var b29 = ~b;
1928			var lsb67 = a & 1 & (b29 & 1);
1929			var msb3167 = a >>> 1 & b29 >>> 1;
1930			var b30 = msb3167 << 1 | lsb67;
1931			var lsb68 = a39 & 1 | b30 & 1;
1932			var msb3168 = a39 >>> 1 | b30 >>> 1;
1933			var q22 = msb3168 << 1 | lsb68;
1934			var lsw88 = (c & 65535) + (q22 & 65535);
1935			var msw88 = (c >> 16) + (q22 >> 16) + (lsw88 >> 16);
1936			var x68 = msw88 << 16 | lsw88 & 65535;
1937			var lsw89 = (x67 & 65535) + 59009;
1938			var msw89 = (x67 >> 16) + (-10079) + (lsw89 >> 16);
1939			var y22 = msw89 << 16 | lsw89 & 65535;
1940			var lsw90 = (x68 & 65535) + (y22 & 65535);
1941			var msw90 = (x68 >> 16) + (y22 >> 16) + (lsw90 >> 16);
1942			var num22 = msw90 << 16 | lsw90 & 65535;
1943			var x69 = num22 << 14 | num22 >>> 18;
1944			var lsw91 = (x69 & 65535) + (d & 65535);
1945			var msw91 = (x69 >> 16) + (d >> 16) + (lsw91 >> 16);
1946			c = msw91 << 16 | lsw91 & 65535;
1947			var x70 = x[i + 4];
1948			var lsb69 = c & 1 & (a & 1);
1949			var msb3169 = c >>> 1 & a >>> 1;
1950			var a40 = msb3169 << 1 | lsb69;
1951			var b31 = ~a;
1952			var lsb70 = d & 1 & (b31 & 1);
1953			var msb3170 = d >>> 1 & b31 >>> 1;
1954			var b32 = msb3170 << 1 | lsb70;
1955			var lsb71 = a40 & 1 | b32 & 1;
1956			var msb3171 = a40 >>> 1 | b32 >>> 1;
1957			var q23 = msb3171 << 1 | lsb71;
1958			var lsw92 = (b & 65535) + (q23 & 65535);
1959			var msw92 = (b >> 16) + (q23 >> 16) + (lsw92 >> 16);
1960			var x71 = msw92 << 16 | lsw92 & 65535;
1961			var lsw93 = (x70 & 65535) + 64456;
1962			var msw93 = (x70 >> 16) + (-6189) + (lsw93 >> 16);
1963			var y23 = msw93 << 16 | lsw93 & 65535;
1964			var lsw94 = (x71 & 65535) + (y23 & 65535);
1965			var msw94 = (x71 >> 16) + (y23 >> 16) + (lsw94 >> 16);
1966			var num23 = msw94 << 16 | lsw94 & 65535;
1967			var x72 = num23 << 20 | num23 >>> 12;
1968			var lsw95 = (x72 & 65535) + (c & 65535);
1969			var msw95 = (x72 >> 16) + (c >> 16) + (lsw95 >> 16);
1970			b = msw95 << 16 | lsw95 & 65535;
1971			var x73 = x[i + 9];
1972			var lsb72 = b & 1 & (d & 1);
1973			var msb3172 = b >>> 1 & d >>> 1;
1974			var a41 = msb3172 << 1 | lsb72;
1975			var b33 = ~d;
1976			var lsb73 = c & 1 & (b33 & 1);
1977			var msb3173 = c >>> 1 & b33 >>> 1;
1978			var b34 = msb3173 << 1 | lsb73;
1979			var lsb74 = a41 & 1 | b34 & 1;
1980			var msb3174 = a41 >>> 1 | b34 >>> 1;
1981			var q24 = msb3174 << 1 | lsb74;
1982			var lsw96 = (a & 65535) + (q24 & 65535);
1983			var msw96 = (a >> 16) + (q24 >> 16) + (lsw96 >> 16);
1984			var x74 = msw96 << 16 | lsw96 & 65535;
1985			var lsw97 = (x73 & 65535) + 52710;
1986			var msw97 = (x73 >> 16) + 8673 + (lsw97 >> 16);
1987			var y24 = msw97 << 16 | lsw97 & 65535;
1988			var lsw98 = (x74 & 65535) + (y24 & 65535);
1989			var msw98 = (x74 >> 16) + (y24 >> 16) + (lsw98 >> 16);
1990			var num24 = msw98 << 16 | lsw98 & 65535;
1991			var x75 = num24 << 5 | num24 >>> 27;
1992			var lsw99 = (x75 & 65535) + (b & 65535);
1993			var msw99 = (x75 >> 16) + (b >> 16) + (lsw99 >> 16);
1994			a = msw99 << 16 | lsw99 & 65535;
1995			var x76 = x[i + 14];
1996			var lsb75 = a & 1 & (c & 1);
1997			var msb3175 = a >>> 1 & c >>> 1;
1998			var a42 = msb3175 << 1 | lsb75;
1999			var b35 = ~c;
2000			var lsb76 = b & 1 & (b35 & 1);
2001			var msb3176 = b >>> 1 & b35 >>> 1;
2002			var b36 = msb3176 << 1 | lsb76;
2003			var lsb77 = a42 & 1 | b36 & 1;
2004			var msb3177 = a42 >>> 1 | b36 >>> 1;
2005			var q25 = msb3177 << 1 | lsb77;
2006			var lsw100 = (d & 65535) + (q25 & 65535);
2007			var msw100 = (d >> 16) + (q25 >> 16) + (lsw100 >> 16);
2008			var x77 = msw100 << 16 | lsw100 & 65535;
2009			var lsw101 = (x76 & 65535) + 2006;
2010			var msw101 = (x76 >> 16) + (-15561) + (lsw101 >> 16);
2011			var y25 = msw101 << 16 | lsw101 & 65535;
2012			var lsw102 = (x77 & 65535) + (y25 & 65535);
2013			var msw102 = (x77 >> 16) + (y25 >> 16) + (lsw102 >> 16);
2014			var num25 = msw102 << 16 | lsw102 & 65535;
2015			var x78 = num25 << 9 | num25 >>> 23;
2016			var lsw103 = (x78 & 65535) + (a & 65535);
2017			var msw103 = (x78 >> 16) + (a >> 16) + (lsw103 >> 16);
2018			d = msw103 << 16 | lsw103 & 65535;
2019			var x79 = x[i + 3];
2020			var lsb78 = d & 1 & (b & 1);
2021			var msb3178 = d >>> 1 & b >>> 1;
2022			var a43 = msb3178 << 1 | lsb78;
2023			var b37 = ~b;
2024			var lsb79 = a & 1 & (b37 & 1);
2025			var msb3179 = a >>> 1 & b37 >>> 1;
2026			var b38 = msb3179 << 1 | lsb79;
2027			var lsb80 = a43 & 1 | b38 & 1;
2028			var msb3180 = a43 >>> 1 | b38 >>> 1;
2029			var q26 = msb3180 << 1 | lsb80;
2030			var lsw104 = (c & 65535) + (q26 & 65535);
2031			var msw104 = (c >> 16) + (q26 >> 16) + (lsw104 >> 16);
2032			var x80 = msw104 << 16 | lsw104 & 65535;
2033			var lsw105 = (x79 & 65535) + 3463;
2034			var msw105 = (x79 >> 16) + (-2859) + (lsw105 >> 16);
2035			var y26 = msw105 << 16 | lsw105 & 65535;
2036			var lsw106 = (x80 & 65535) + (y26 & 65535);
2037			var msw106 = (x80 >> 16) + (y26 >> 16) + (lsw106 >> 16);
2038			var num26 = msw106 << 16 | lsw106 & 65535;
2039			var x81 = num26 << 14 | num26 >>> 18;
2040			var lsw107 = (x81 & 65535) + (d & 65535);
2041			var msw107 = (x81 >> 16) + (d >> 16) + (lsw107 >> 16);
2042			c = msw107 << 16 | lsw107 & 65535;
2043			var x82 = x[i + 8];
2044			var lsb81 = c & 1 & (a & 1);
2045			var msb3181 = c >>> 1 & a >>> 1;
2046			var a44 = msb3181 << 1 | lsb81;
2047			var b39 = ~a;
2048			var lsb82 = d & 1 & (b39 & 1);
2049			var msb3182 = d >>> 1 & b39 >>> 1;
2050			var b40 = msb3182 << 1 | lsb82;
2051			var lsb83 = a44 & 1 | b40 & 1;
2052			var msb3183 = a44 >>> 1 | b40 >>> 1;
2053			var q27 = msb3183 << 1 | lsb83;
2054			var lsw108 = (b & 65535) + (q27 & 65535);
2055			var msw108 = (b >> 16) + (q27 >> 16) + (lsw108 >> 16);
2056			var x83 = msw108 << 16 | lsw108 & 65535;
2057			var lsw109 = (x82 & 65535) + 5357;
2058			var msw109 = (x82 >> 16) + 17754 + (lsw109 >> 16);
2059			var y27 = msw109 << 16 | lsw109 & 65535;
2060			var lsw110 = (x83 & 65535) + (y27 & 65535);
2061			var msw110 = (x83 >> 16) + (y27 >> 16) + (lsw110 >> 16);
2062			var num27 = msw110 << 16 | lsw110 & 65535;
2063			var x84 = num27 << 20 | num27 >>> 12;
2064			var lsw111 = (x84 & 65535) + (c & 65535);
2065			var msw111 = (x84 >> 16) + (c >> 16) + (lsw111 >> 16);
2066			b = msw111 << 16 | lsw111 & 65535;
2067			var x85 = x[i + 13];
2068			var lsb84 = b & 1 & (d & 1);
2069			var msb3184 = b >>> 1 & d >>> 1;
2070			var a45 = msb3184 << 1 | lsb84;
2071			var b41 = ~d;
2072			var lsb85 = c & 1 & (b41 & 1);
2073			var msb3185 = c >>> 1 & b41 >>> 1;
2074			var b42 = msb3185 << 1 | lsb85;
2075			var lsb86 = a45 & 1 | b42 & 1;
2076			var msb3186 = a45 >>> 1 | b42 >>> 1;
2077			var q28 = msb3186 << 1 | lsb86;
2078			var lsw112 = (a & 65535) + (q28 & 65535);
2079			var msw112 = (a >> 16) + (q28 >> 16) + (lsw112 >> 16);
2080			var x86 = msw112 << 16 | lsw112 & 65535;
2081			var lsw113 = (x85 & 65535) + 59653;
2082			var msw113 = (x85 >> 16) + (-22045) + (lsw113 >> 16);
2083			var y28 = msw113 << 16 | lsw113 & 65535;
2084			var lsw114 = (x86 & 65535) + (y28 & 65535);
2085			var msw114 = (x86 >> 16) + (y28 >> 16) + (lsw114 >> 16);
2086			var num28 = msw114 << 16 | lsw114 & 65535;
2087			var x87 = num28 << 5 | num28 >>> 27;
2088			var lsw115 = (x87 & 65535) + (b & 65535);
2089			var msw115 = (x87 >> 16) + (b >> 16) + (lsw115 >> 16);
2090			a = msw115 << 16 | lsw115 & 65535;
2091			var x88 = x[i + 2];
2092			var lsb87 = a & 1 & (c & 1);
2093			var msb3187 = a >>> 1 & c >>> 1;
2094			var a46 = msb3187 << 1 | lsb87;
2095			var b43 = ~c;
2096			var lsb88 = b & 1 & (b43 & 1);
2097			var msb3188 = b >>> 1 & b43 >>> 1;
2098			var b44 = msb3188 << 1 | lsb88;
2099			var lsb89 = a46 & 1 | b44 & 1;
2100			var msb3189 = a46 >>> 1 | b44 >>> 1;
2101			var q29 = msb3189 << 1 | lsb89;
2102			var lsw116 = (d & 65535) + (q29 & 65535);
2103			var msw116 = (d >> 16) + (q29 >> 16) + (lsw116 >> 16);
2104			var x89 = msw116 << 16 | lsw116 & 65535;
2105			var lsw117 = (x88 & 65535) + 41976;
2106			var msw117 = (x88 >> 16) + (-785) + (lsw117 >> 16);
2107			var y29 = msw117 << 16 | lsw117 & 65535;
2108			var lsw118 = (x89 & 65535) + (y29 & 65535);
2109			var msw118 = (x89 >> 16) + (y29 >> 16) + (lsw118 >> 16);
2110			var num29 = msw118 << 16 | lsw118 & 65535;
2111			var x90 = num29 << 9 | num29 >>> 23;
2112			var lsw119 = (x90 & 65535) + (a & 65535);
2113			var msw119 = (x90 >> 16) + (a >> 16) + (lsw119 >> 16);
2114			d = msw119 << 16 | lsw119 & 65535;
2115			var x91 = x[i + 7];
2116			var lsb90 = d & 1 & (b & 1);
2117			var msb3190 = d >>> 1 & b >>> 1;
2118			var a47 = msb3190 << 1 | lsb90;
2119			var b45 = ~b;
2120			var lsb91 = a & 1 & (b45 & 1);
2121			var msb3191 = a >>> 1 & b45 >>> 1;
2122			var b46 = msb3191 << 1 | lsb91;
2123			var lsb92 = a47 & 1 | b46 & 1;
2124			var msb3192 = a47 >>> 1 | b46 >>> 1;
2125			var q30 = msb3192 << 1 | lsb92;
2126			var lsw120 = (c & 65535) + (q30 & 65535);
2127			var msw120 = (c >> 16) + (q30 >> 16) + (lsw120 >> 16);
2128			var x92 = msw120 << 16 | lsw120 & 65535;
2129			var lsw121 = (x91 & 65535) + 729;
2130			var msw121 = (x91 >> 16) + 26479 + (lsw121 >> 16);
2131			var y30 = msw121 << 16 | lsw121 & 65535;
2132			var lsw122 = (x92 & 65535) + (y30 & 65535);
2133			var msw122 = (x92 >> 16) + (y30 >> 16) + (lsw122 >> 16);
2134			var num30 = msw122 << 16 | lsw122 & 65535;
2135			var x93 = num30 << 14 | num30 >>> 18;
2136			var lsw123 = (x93 & 65535) + (d & 65535);
2137			var msw123 = (x93 >> 16) + (d >> 16) + (lsw123 >> 16);
2138			c = msw123 << 16 | lsw123 & 65535;
2139			var x94 = x[i + 12];
2140			var lsb93 = c & 1 & (a & 1);
2141			var msb3193 = c >>> 1 & a >>> 1;
2142			var a48 = msb3193 << 1 | lsb93;
2143			var b47 = ~a;
2144			var lsb94 = d & 1 & (b47 & 1);
2145			var msb3194 = d >>> 1 & b47 >>> 1;
2146			var b48 = msb3194 << 1 | lsb94;
2147			var lsb95 = a48 & 1 | b48 & 1;
2148			var msb3195 = a48 >>> 1 | b48 >>> 1;
2149			var q31 = msb3195 << 1 | lsb95;
2150			var lsw124 = (b & 65535) + (q31 & 65535);
2151			var msw124 = (b >> 16) + (q31 >> 16) + (lsw124 >> 16);
2152			var x95 = msw124 << 16 | lsw124 & 65535;
2153			var lsw125 = (x94 & 65535) + 19594;
2154			var msw125 = (x94 >> 16) + (-29398) + (lsw125 >> 16);
2155			var y31 = msw125 << 16 | lsw125 & 65535;
2156			var lsw126 = (x95 & 65535) + (y31 & 65535);
2157			var msw126 = (x95 >> 16) + (y31 >> 16) + (lsw126 >> 16);
2158			var num31 = msw126 << 16 | lsw126 & 65535;
2159			var x96 = num31 << 20 | num31 >>> 12;
2160			var lsw127 = (x96 & 65535) + (c & 65535);
2161			var msw127 = (x96 >> 16) + (c >> 16) + (lsw127 >> 16);
2162			b = msw127 << 16 | lsw127 & 65535;
2163			var x97 = x[i + 5];
2164			var lsb96 = b & 1 ^ c & 1;
2165			var msb3196 = b >>> 1 ^ c >>> 1;
2166			var a49 = msb3196 << 1 | lsb96;
2167			var lsb97 = a49 & 1 ^ d & 1;
2168			var msb3197 = a49 >>> 1 ^ d >>> 1;
2169			var q32 = msb3197 << 1 | lsb97;
2170			var lsw128 = (a & 65535) + (q32 & 65535);
2171			var msw128 = (a >> 16) + (q32 >> 16) + (lsw128 >> 16);
2172			var x98 = msw128 << 16 | lsw128 & 65535;
2173			var lsw129 = (x97 & 65535) + 14658;
2174			var msw129 = (x97 >> 16) + (-6) + (lsw129 >> 16);
2175			var y32 = msw129 << 16 | lsw129 & 65535;
2176			var lsw130 = (x98 & 65535) + (y32 & 65535);
2177			var msw130 = (x98 >> 16) + (y32 >> 16) + (lsw130 >> 16);
2178			var num32 = msw130 << 16 | lsw130 & 65535;
2179			var x99 = num32 << 4 | num32 >>> 28;
2180			var lsw131 = (x99 & 65535) + (b & 65535);
2181			var msw131 = (x99 >> 16) + (b >> 16) + (lsw131 >> 16);
2182			a = msw131 << 16 | lsw131 & 65535;
2183			var x100 = x[i + 8];
2184			var lsb98 = a & 1 ^ b & 1;
2185			var msb3198 = a >>> 1 ^ b >>> 1;
2186			var a50 = msb3198 << 1 | lsb98;
2187			var lsb99 = a50 & 1 ^ c & 1;
2188			var msb3199 = a50 >>> 1 ^ c >>> 1;
2189			var q33 = msb3199 << 1 | lsb99;
2190			var lsw132 = (d & 65535) + (q33 & 65535);
2191			var msw132 = (d >> 16) + (q33 >> 16) + (lsw132 >> 16);
2192			var x101 = msw132 << 16 | lsw132 & 65535;
2193			var lsw133 = (x100 & 65535) + 63105;
2194			var msw133 = (x100 >> 16) + (-30863) + (lsw133 >> 16);
2195			var y33 = msw133 << 16 | lsw133 & 65535;
2196			var lsw134 = (x101 & 65535) + (y33 & 65535);
2197			var msw134 = (x101 >> 16) + (y33 >> 16) + (lsw134 >> 16);
2198			var num33 = msw134 << 16 | lsw134 & 65535;
2199			var x102 = num33 << 11 | num33 >>> 21;
2200			var lsw135 = (x102 & 65535) + (a & 65535);
2201			var msw135 = (x102 >> 16) + (a >> 16) + (lsw135 >> 16);
2202			d = msw135 << 16 | lsw135 & 65535;
2203			var x103 = x[i + 11];
2204			var lsb100 = d & 1 ^ a & 1;
2205			var msb31100 = d >>> 1 ^ a >>> 1;
2206			var a51 = msb31100 << 1 | lsb100;
2207			var lsb101 = a51 & 1 ^ b & 1;
2208			var msb31101 = a51 >>> 1 ^ b >>> 1;
2209			var q34 = msb31101 << 1 | lsb101;
2210			var lsw136 = (c & 65535) + (q34 & 65535);
2211			var msw136 = (c >> 16) + (q34 >> 16) + (lsw136 >> 16);
2212			var x104 = msw136 << 16 | lsw136 & 65535;
2213			var lsw137 = (x103 & 65535) + 24866;
2214			var msw137 = (x103 >> 16) + 28061 + (lsw137 >> 16);
2215			var y34 = msw137 << 16 | lsw137 & 65535;
2216			var lsw138 = (x104 & 65535) + (y34 & 65535);
2217			var msw138 = (x104 >> 16) + (y34 >> 16) + (lsw138 >> 16);
2218			var num34 = msw138 << 16 | lsw138 & 65535;
2219			var x105 = num34 << 16 | num34 >>> 16;
2220			var lsw139 = (x105 & 65535) + (d & 65535);
2221			var msw139 = (x105 >> 16) + (d >> 16) + (lsw139 >> 16);
2222			c = msw139 << 16 | lsw139 & 65535;
2223			var x106 = x[i + 14];
2224			var lsb102 = c & 1 ^ d & 1;
2225			var msb31102 = c >>> 1 ^ d >>> 1;
2226			var a52 = msb31102 << 1 | lsb102;
2227			var lsb103 = a52 & 1 ^ a & 1;
2228			var msb31103 = a52 >>> 1 ^ a >>> 1;
2229			var q35 = msb31103 << 1 | lsb103;
2230			var lsw140 = (b & 65535) + (q35 & 65535);
2231			var msw140 = (b >> 16) + (q35 >> 16) + (lsw140 >> 16);
2232			var x107 = msw140 << 16 | lsw140 & 65535;
2233			var lsw141 = (x106 & 65535) + 14348;
2234			var msw141 = (x106 >> 16) + (-539) + (lsw141 >> 16);
2235			var y35 = msw141 << 16 | lsw141 & 65535;
2236			var lsw142 = (x107 & 65535) + (y35 & 65535);
2237			var msw142 = (x107 >> 16) + (y35 >> 16) + (lsw142 >> 16);
2238			var num35 = msw142 << 16 | lsw142 & 65535;
2239			var x108 = num35 << 23 | num35 >>> 9;
2240			var lsw143 = (x108 & 65535) + (c & 65535);
2241			var msw143 = (x108 >> 16) + (c >> 16) + (lsw143 >> 16);
2242			b = msw143 << 16 | lsw143 & 65535;
2243			var x109 = x[i + 1];
2244			var lsb104 = b & 1 ^ c & 1;
2245			var msb31104 = b >>> 1 ^ c >>> 1;
2246			var a53 = msb31104 << 1 | lsb104;
2247			var lsb105 = a53 & 1 ^ d & 1;
2248			var msb31105 = a53 >>> 1 ^ d >>> 1;
2249			var q36 = msb31105 << 1 | lsb105;
2250			var lsw144 = (a & 65535) + (q36 & 65535);
2251			var msw144 = (a >> 16) + (q36 >> 16) + (lsw144 >> 16);
2252			var x110 = msw144 << 16 | lsw144 & 65535;
2253			var lsw145 = (x109 & 65535) + 59972;
2254			var msw145 = (x109 >> 16) + (-23362) + (lsw145 >> 16);
2255			var y36 = msw145 << 16 | lsw145 & 65535;
2256			var lsw146 = (x110 & 65535) + (y36 & 65535);
2257			var msw146 = (x110 >> 16) + (y36 >> 16) + (lsw146 >> 16);
2258			var num36 = msw146 << 16 | lsw146 & 65535;
2259			var x111 = num36 << 4 | num36 >>> 28;
2260			var lsw147 = (x111 & 65535) + (b & 65535);
2261			var msw147 = (x111 >> 16) + (b >> 16) + (lsw147 >> 16);
2262			a = msw147 << 16 | lsw147 & 65535;
2263			var x112 = x[i + 4];
2264			var lsb106 = a & 1 ^ b & 1;
2265			var msb31106 = a >>> 1 ^ b >>> 1;
2266			var a54 = msb31106 << 1 | lsb106;
2267			var lsb107 = a54 & 1 ^ c & 1;
2268			var msb31107 = a54 >>> 1 ^ c >>> 1;
2269			var q37 = msb31107 << 1 | lsb107;
2270			var lsw148 = (d & 65535) + (q37 & 65535);
2271			var msw148 = (d >> 16) + (q37 >> 16) + (lsw148 >> 16);
2272			var x113 = msw148 << 16 | lsw148 & 65535;
2273			var lsw149 = (x112 & 65535) + 53161;
2274			var msw149 = (x112 >> 16) + 19422 + (lsw149 >> 16);
2275			var y37 = msw149 << 16 | lsw149 & 65535;
2276			var lsw150 = (x113 & 65535) + (y37 & 65535);
2277			var msw150 = (x113 >> 16) + (y37 >> 16) + (lsw150 >> 16);
2278			var num37 = msw150 << 16 | lsw150 & 65535;
2279			var x114 = num37 << 11 | num37 >>> 21;
2280			var lsw151 = (x114 & 65535) + (a & 65535);
2281			var msw151 = (x114 >> 16) + (a >> 16) + (lsw151 >> 16);
2282			d = msw151 << 16 | lsw151 & 65535;
2283			var x115 = x[i + 7];
2284			var lsb108 = d & 1 ^ a & 1;
2285			var msb31108 = d >>> 1 ^ a >>> 1;
2286			var a55 = msb31108 << 1 | lsb108;
2287			var lsb109 = a55 & 1 ^ b & 1;
2288			var msb31109 = a55 >>> 1 ^ b >>> 1;
2289			var q38 = msb31109 << 1 | lsb109;
2290			var lsw152 = (c & 65535) + (q38 & 65535);
2291			var msw152 = (c >> 16) + (q38 >> 16) + (lsw152 >> 16);
2292			var x116 = msw152 << 16 | lsw152 & 65535;
2293			var lsw153 = (x115 & 65535) + 19296;
2294			var msw153 = (x115 >> 16) + (-2373) + (lsw153 >> 16);
2295			var y38 = msw153 << 16 | lsw153 & 65535;
2296			var lsw154 = (x116 & 65535) + (y38 & 65535);
2297			var msw154 = (x116 >> 16) + (y38 >> 16) + (lsw154 >> 16);
2298			var num38 = msw154 << 16 | lsw154 & 65535;
2299			var x117 = num38 << 16 | num38 >>> 16;
2300			var lsw155 = (x117 & 65535) + (d & 65535);
2301			var msw155 = (x117 >> 16) + (d >> 16) + (lsw155 >> 16);
2302			c = msw155 << 16 | lsw155 & 65535;
2303			var x118 = x[i + 10];
2304			var lsb110 = c & 1 ^ d & 1;
2305			var msb31110 = c >>> 1 ^ d >>> 1;
2306			var a56 = msb31110 << 1 | lsb110;
2307			var lsb111 = a56 & 1 ^ a & 1;
2308			var msb31111 = a56 >>> 1 ^ a >>> 1;
2309			var q39 = msb31111 << 1 | lsb111;
2310			var lsw156 = (b & 65535) + (q39 & 65535);
2311			var msw156 = (b >> 16) + (q39 >> 16) + (lsw156 >> 16);
2312			var x119 = msw156 << 16 | lsw156 & 65535;
2313			var lsw157 = (x118 & 65535) + 48240;
2314			var msw157 = (x118 >> 16) + (-16705) + (lsw157 >> 16);
2315			var y39 = msw157 << 16 | lsw157 & 65535;
2316			var lsw158 = (x119 & 65535) + (y39 & 65535);
2317			var msw158 = (x119 >> 16) + (y39 >> 16) + (lsw158 >> 16);
2318			var num39 = msw158 << 16 | lsw158 & 65535;
2319			var x120 = num39 << 23 | num39 >>> 9;
2320			var lsw159 = (x120 & 65535) + (c & 65535);
2321			var msw159 = (x120 >> 16) + (c >> 16) + (lsw159 >> 16);
2322			b = msw159 << 16 | lsw159 & 65535;
2323			var x121 = x[i + 13];
2324			var lsb112 = b & 1 ^ c & 1;
2325			var msb31112 = b >>> 1 ^ c >>> 1;
2326			var a57 = msb31112 << 1 | lsb112;
2327			var lsb113 = a57 & 1 ^ d & 1;
2328			var msb31113 = a57 >>> 1 ^ d >>> 1;
2329			var q40 = msb31113 << 1 | lsb113;
2330			var lsw160 = (a & 65535) + (q40 & 65535);
2331			var msw160 = (a >> 16) + (q40 >> 16) + (lsw160 >> 16);
2332			var x122 = msw160 << 16 | lsw160 & 65535;
2333			var lsw161 = (x121 & 65535) + 32454;
2334			var msw161 = (x121 >> 16) + 10395 + (lsw161 >> 16);
2335			var y40 = msw161 << 16 | lsw161 & 65535;
2336			var lsw162 = (x122 & 65535) + (y40 & 65535);
2337			var msw162 = (x122 >> 16) + (y40 >> 16) + (lsw162 >> 16);
2338			var num40 = msw162 << 16 | lsw162 & 65535;
2339			var x123 = num40 << 4 | num40 >>> 28;
2340			var lsw163 = (x123 & 65535) + (b & 65535);
2341			var msw163 = (x123 >> 16) + (b >> 16) + (lsw163 >> 16);
2342			a = msw163 << 16 | lsw163 & 65535;
2343			var x124 = x[i];
2344			var lsb114 = a & 1 ^ b & 1;
2345			var msb31114 = a >>> 1 ^ b >>> 1;
2346			var a58 = msb31114 << 1 | lsb114;
2347			var lsb115 = a58 & 1 ^ c & 1;
2348			var msb31115 = a58 >>> 1 ^ c >>> 1;
2349			var q41 = msb31115 << 1 | lsb115;
2350			var lsw164 = (d & 65535) + (q41 & 65535);
2351			var msw164 = (d >> 16) + (q41 >> 16) + (lsw164 >> 16);
2352			var x125 = msw164 << 16 | lsw164 & 65535;
2353			var lsw165 = (x124 & 65535) + 10234;
2354			var msw165 = (x124 >> 16) + (-5471) + (lsw165 >> 16);
2355			var y41 = msw165 << 16 | lsw165 & 65535;
2356			var lsw166 = (x125 & 65535) + (y41 & 65535);
2357			var msw166 = (x125 >> 16) + (y41 >> 16) + (lsw166 >> 16);
2358			var num41 = msw166 << 16 | lsw166 & 65535;
2359			var x126 = num41 << 11 | num41 >>> 21;
2360			var lsw167 = (x126 & 65535) + (a & 65535);
2361			var msw167 = (x126 >> 16) + (a >> 16) + (lsw167 >> 16);
2362			d = msw167 << 16 | lsw167 & 65535;
2363			var x127 = x[i + 3];
2364			var lsb116 = d & 1 ^ a & 1;
2365			var msb31116 = d >>> 1 ^ a >>> 1;
2366			var a59 = msb31116 << 1 | lsb116;
2367			var lsb117 = a59 & 1 ^ b & 1;
2368			var msb31117 = a59 >>> 1 ^ b >>> 1;
2369			var q42 = msb31117 << 1 | lsb117;
2370			var lsw168 = (c & 65535) + (q42 & 65535);
2371			var msw168 = (c >> 16) + (q42 >> 16) + (lsw168 >> 16);
2372			var x128 = msw168 << 16 | lsw168 & 65535;
2373			var lsw169 = (x127 & 65535) + 12421;
2374			var msw169 = (x127 >> 16) + (-11025) + (lsw169 >> 16);
2375			var y42 = msw169 << 16 | lsw169 & 65535;
2376			var lsw170 = (x128 & 65535) + (y42 & 65535);
2377			var msw170 = (x128 >> 16) + (y42 >> 16) + (lsw170 >> 16);
2378			var num42 = msw170 << 16 | lsw170 & 65535;
2379			var x129 = num42 << 16 | num42 >>> 16;
2380			var lsw171 = (x129 & 65535) + (d & 65535);
2381			var msw171 = (x129 >> 16) + (d >> 16) + (lsw171 >> 16);
2382			c = msw171 << 16 | lsw171 & 65535;
2383			var x130 = x[i + 6];
2384			var lsb118 = c & 1 ^ d & 1;
2385			var msb31118 = c >>> 1 ^ d >>> 1;
2386			var a60 = msb31118 << 1 | lsb118;
2387			var lsb119 = a60 & 1 ^ a & 1;
2388			var msb31119 = a60 >>> 1 ^ a >>> 1;
2389			var q43 = msb31119 << 1 | lsb119;
2390			var lsw172 = (b & 65535) + (q43 & 65535);
2391			var msw172 = (b >> 16) + (q43 >> 16) + (lsw172 >> 16);
2392			var x131 = msw172 << 16 | lsw172 & 65535;
2393			var lsw173 = (x130 & 65535) + 7429;
2394			var msw173 = (x130 >> 16) + 1160 + (lsw173 >> 16);
2395			var y43 = msw173 << 16 | lsw173 & 65535;
2396			var lsw174 = (x131 & 65535) + (y43 & 65535);
2397			var msw174 = (x131 >> 16) + (y43 >> 16) + (lsw174 >> 16);
2398			var num43 = msw174 << 16 | lsw174 & 65535;
2399			var x132 = num43 << 23 | num43 >>> 9;
2400			var lsw175 = (x132 & 65535) + (c & 65535);
2401			var msw175 = (x132 >> 16) + (c >> 16) + (lsw175 >> 16);
2402			b = msw175 << 16 | lsw175 & 65535;
2403			var x133 = x[i + 9];
2404			var lsb120 = b & 1 ^ c & 1;
2405			var msb31120 = b >>> 1 ^ c >>> 1;
2406			var a61 = msb31120 << 1 | lsb120;
2407			var lsb121 = a61 & 1 ^ d & 1;
2408			var msb31121 = a61 >>> 1 ^ d >>> 1;
2409			var q44 = msb31121 << 1 | lsb121;
2410			var lsw176 = (a & 65535) + (q44 & 65535);
2411			var msw176 = (a >> 16) + (q44 >> 16) + (lsw176 >> 16);
2412			var x134 = msw176 << 16 | lsw176 & 65535;
2413			var lsw177 = (x133 & 65535) + 53305;
2414			var msw177 = (x133 >> 16) + (-9772) + (lsw177 >> 16);
2415			var y44 = msw177 << 16 | lsw177 & 65535;
2416			var lsw178 = (x134 & 65535) + (y44 & 65535);
2417			var msw178 = (x134 >> 16) + (y44 >> 16) + (lsw178 >> 16);
2418			var num44 = msw178 << 16 | lsw178 & 65535;
2419			var x135 = num44 << 4 | num44 >>> 28;
2420			var lsw179 = (x135 & 65535) + (b & 65535);
2421			var msw179 = (x135 >> 16) + (b >> 16) + (lsw179 >> 16);
2422			a = msw179 << 16 | lsw179 & 65535;
2423			var x136 = x[i + 12];
2424			var lsb122 = a & 1 ^ b & 1;
2425			var msb31122 = a >>> 1 ^ b >>> 1;
2426			var a62 = msb31122 << 1 | lsb122;
2427			var lsb123 = a62 & 1 ^ c & 1;
2428			var msb31123 = a62 >>> 1 ^ c >>> 1;
2429			var q45 = msb31123 << 1 | lsb123;
2430			var lsw180 = (d & 65535) + (q45 & 65535);
2431			var msw180 = (d >> 16) + (q45 >> 16) + (lsw180 >> 16);
2432			var x137 = msw180 << 16 | lsw180 & 65535;
2433			var lsw181 = (x136 & 65535) + 39397;
2434			var msw181 = (x136 >> 16) + (-6437) + (lsw181 >> 16);
2435			var y45 = msw181 << 16 | lsw181 & 65535;
2436			var lsw182 = (x137 & 65535) + (y45 & 65535);
2437			var msw182 = (x137 >> 16) + (y45 >> 16) + (lsw182 >> 16);
2438			var num45 = msw182 << 16 | lsw182 & 65535;
2439			var x138 = num45 << 11 | num45 >>> 21;
2440			var lsw183 = (x138 & 65535) + (a & 65535);
2441			var msw183 = (x138 >> 16) + (a >> 16) + (lsw183 >> 16);
2442			d = msw183 << 16 | lsw183 & 65535;
2443			var x139 = x[i + 15];
2444			var lsb124 = d & 1 ^ a & 1;
2445			var msb31124 = d >>> 1 ^ a >>> 1;
2446			var a63 = msb31124 << 1 | lsb124;
2447			var lsb125 = a63 & 1 ^ b & 1;
2448			var msb31125 = a63 >>> 1 ^ b >>> 1;
2449			var q46 = msb31125 << 1 | lsb125;
2450			var lsw184 = (c & 65535) + (q46 & 65535);
2451			var msw184 = (c >> 16) + (q46 >> 16) + (lsw184 >> 16);
2452			var x140 = msw184 << 16 | lsw184 & 65535;
2453			var lsw185 = (x139 & 65535) + 31992;
2454			var msw185 = (x139 >> 16) + 8098 + (lsw185 >> 16);
2455			var y46 = msw185 << 16 | lsw185 & 65535;
2456			var lsw186 = (x140 & 65535) + (y46 & 65535);
2457			var msw186 = (x140 >> 16) + (y46 >> 16) + (lsw186 >> 16);
2458			var num46 = msw186 << 16 | lsw186 & 65535;
2459			var x141 = num46 << 16 | num46 >>> 16;
2460			var lsw187 = (x141 & 65535) + (d & 65535);
2461			var msw187 = (x141 >> 16) + (d >> 16) + (lsw187 >> 16);
2462			c = msw187 << 16 | lsw187 & 65535;
2463			var x142 = x[i + 2];
2464			var lsb126 = c & 1 ^ d & 1;
2465			var msb31126 = c >>> 1 ^ d >>> 1;
2466			var a64 = msb31126 << 1 | lsb126;
2467			var lsb127 = a64 & 1 ^ a & 1;
2468			var msb31127 = a64 >>> 1 ^ a >>> 1;
2469			var q47 = msb31127 << 1 | lsb127;
2470			var lsw188 = (b & 65535) + (q47 & 65535);
2471			var msw188 = (b >> 16) + (q47 >> 16) + (lsw188 >> 16);
2472			var x143 = msw188 << 16 | lsw188 & 65535;
2473			var lsw189 = (x142 & 65535) + 22117;
2474			var msw189 = (x142 >> 16) + (-15188) + (lsw189 >> 16);
2475			var y47 = msw189 << 16 | lsw189 & 65535;
2476			var lsw190 = (x143 & 65535) + (y47 & 65535);
2477			var msw190 = (x143 >> 16) + (y47 >> 16) + (lsw190 >> 16);
2478			var num47 = msw190 << 16 | lsw190 & 65535;
2479			var x144 = num47 << 23 | num47 >>> 9;
2480			var lsw191 = (x144 & 65535) + (c & 65535);
2481			var msw191 = (x144 >> 16) + (c >> 16) + (lsw191 >> 16);
2482			b = msw191 << 16 | lsw191 & 65535;
2483			var x145 = x[i];
2484			var b49 = ~d;
2485			var lsb128 = b & 1 | b49 & 1;
2486			var msb31128 = b >>> 1 | b49 >>> 1;
2487			var b50 = msb31128 << 1 | lsb128;
2488			var lsb129 = c & 1 ^ b50 & 1;
2489			var msb31129 = c >>> 1 ^ b50 >>> 1;
2490			var q48 = msb31129 << 1 | lsb129;
2491			var lsw192 = (a & 65535) + (q48 & 65535);
2492			var msw192 = (a >> 16) + (q48 >> 16) + (lsw192 >> 16);
2493			var x146 = msw192 << 16 | lsw192 & 65535;
2494			var lsw193 = (x145 & 65535) + 8772;
2495			var msw193 = (x145 >> 16) + (-3031) + (lsw193 >> 16);
2496			var y48 = msw193 << 16 | lsw193 & 65535;
2497			var lsw194 = (x146 & 65535) + (y48 & 65535);
2498			var msw194 = (x146 >> 16) + (y48 >> 16) + (lsw194 >> 16);
2499			var num48 = msw194 << 16 | lsw194 & 65535;
2500			var x147 = num48 << 6 | num48 >>> 26;
2501			var lsw195 = (x147 & 65535) + (b & 65535);
2502			var msw195 = (x147 >> 16) + (b >> 16) + (lsw195 >> 16);
2503			a = msw195 << 16 | lsw195 & 65535;
2504			var x148 = x[i + 7];
2505			var b51 = ~c;
2506			var lsb130 = a & 1 | b51 & 1;
2507			var msb31130 = a >>> 1 | b51 >>> 1;
2508			var b52 = msb31130 << 1 | lsb130;
2509			var lsb131 = b & 1 ^ b52 & 1;
2510			var msb31131 = b >>> 1 ^ b52 >>> 1;
2511			var q49 = msb31131 << 1 | lsb131;
2512			var lsw196 = (d & 65535) + (q49 & 65535);
2513			var msw196 = (d >> 16) + (q49 >> 16) + (lsw196 >> 16);
2514			var x149 = msw196 << 16 | lsw196 & 65535;
2515			var lsw197 = (x148 & 65535) + 65431;
2516			var msw197 = (x148 >> 16) + 17194 + (lsw197 >> 16);
2517			var y49 = msw197 << 16 | lsw197 & 65535;
2518			var lsw198 = (x149 & 65535) + (y49 & 65535);
2519			var msw198 = (x149 >> 16) + (y49 >> 16) + (lsw198 >> 16);
2520			var num49 = msw198 << 16 | lsw198 & 65535;
2521			var x150 = num49 << 10 | num49 >>> 22;
2522			var lsw199 = (x150 & 65535) + (a & 65535);
2523			var msw199 = (x150 >> 16) + (a >> 16) + (lsw199 >> 16);
2524			d = msw199 << 16 | lsw199 & 65535;
2525			var x151 = x[i + 14];
2526			var b53 = ~b;
2527			var lsb132 = d & 1 | b53 & 1;
2528			var msb31132 = d >>> 1 | b53 >>> 1;
2529			var b54 = msb31132 << 1 | lsb132;
2530			var lsb133 = a & 1 ^ b54 & 1;
2531			var msb31133 = a >>> 1 ^ b54 >>> 1;
2532			var q50 = msb31133 << 1 | lsb133;
2533			var lsw200 = (c & 65535) + (q50 & 65535);
2534			var msw200 = (c >> 16) + (q50 >> 16) + (lsw200 >> 16);
2535			var x152 = msw200 << 16 | lsw200 & 65535;
2536			var lsw201 = (x151 & 65535) + 9127;
2537			var msw201 = (x151 >> 16) + (-21612) + (lsw201 >> 16);
2538			var y50 = msw201 << 16 | lsw201 & 65535;
2539			var lsw202 = (x152 & 65535) + (y50 & 65535);
2540			var msw202 = (x152 >> 16) + (y50 >> 16) + (lsw202 >> 16);
2541			var num50 = msw202 << 16 | lsw202 & 65535;
2542			var x153 = num50 << 15 | num50 >>> 17;
2543			var lsw203 = (x153 & 65535) + (d & 65535);
2544			var msw203 = (x153 >> 16) + (d >> 16) + (lsw203 >> 16);
2545			c = msw203 << 16 | lsw203 & 65535;
2546			var x154 = x[i + 5];
2547			var b55 = ~a;
2548			var lsb134 = c & 1 | b55 & 1;
2549			var msb31134 = c >>> 1 | b55 >>> 1;
2550			var b56 = msb31134 << 1 | lsb134;
2551			var lsb135 = d & 1 ^ b56 & 1;
2552			var msb31135 = d >>> 1 ^ b56 >>> 1;
2553			var q51 = msb31135 << 1 | lsb135;
2554			var lsw204 = (b & 65535) + (q51 & 65535);
2555			var msw204 = (b >> 16) + (q51 >> 16) + (lsw204 >> 16);
2556			var x155 = msw204 << 16 | lsw204 & 65535;
2557			var lsw205 = (x154 & 65535) + 41017;
2558			var msw205 = (x154 >> 16) + (-877) + (lsw205 >> 16);
2559			var y51 = msw205 << 16 | lsw205 & 65535;
2560			var lsw206 = (x155 & 65535) + (y51 & 65535);
2561			var msw206 = (x155 >> 16) + (y51 >> 16) + (lsw206 >> 16);
2562			var num51 = msw206 << 16 | lsw206 & 65535;
2563			var x156 = num51 << 21 | num51 >>> 11;
2564			var lsw207 = (x156 & 65535) + (c & 65535);
2565			var msw207 = (x156 >> 16) + (c >> 16) + (lsw207 >> 16);
2566			b = msw207 << 16 | lsw207 & 65535;
2567			var x157 = x[i + 12];
2568			var b57 = ~d;
2569			var lsb136 = b & 1 | b57 & 1;
2570			var msb31136 = b >>> 1 | b57 >>> 1;
2571			var b58 = msb31136 << 1 | lsb136;
2572			var lsb137 = c & 1 ^ b58 & 1;
2573			var msb31137 = c >>> 1 ^ b58 >>> 1;
2574			var q52 = msb31137 << 1 | lsb137;
2575			var lsw208 = (a & 65535) + (q52 & 65535);
2576			var msw208 = (a >> 16) + (q52 >> 16) + (lsw208 >> 16);
2577			var x158 = msw208 << 16 | lsw208 & 65535;
2578			var lsw209 = (x157 & 65535) + 22979;
2579			var msw209 = (x157 >> 16) + 25947 + (lsw209 >> 16);
2580			var y52 = msw209 << 16 | lsw209 & 65535;
2581			var lsw210 = (x158 & 65535) + (y52 & 65535);
2582			var msw210 = (x158 >> 16) + (y52 >> 16) + (lsw210 >> 16);
2583			var num52 = msw210 << 16 | lsw210 & 65535;
2584			var x159 = num52 << 6 | num52 >>> 26;
2585			var lsw211 = (x159 & 65535) + (b & 65535);
2586			var msw211 = (x159 >> 16) + (b >> 16) + (lsw211 >> 16);
2587			a = msw211 << 16 | lsw211 & 65535;
2588			var x160 = x[i + 3];
2589			var b59 = ~c;
2590			var lsb138 = a & 1 | b59 & 1;
2591			var msb31138 = a >>> 1 | b59 >>> 1;
2592			var b60 = msb31138 << 1 | lsb138;
2593			var lsb139 = b & 1 ^ b60 & 1;
2594			var msb31139 = b >>> 1 ^ b60 >>> 1;
2595			var q53 = msb31139 << 1 | lsb139;
2596			var lsw212 = (d & 65535) + (q53 & 65535);
2597			var msw212 = (d >> 16) + (q53 >> 16) + (lsw212 >> 16);
2598			var x161 = msw212 << 16 | lsw212 & 65535;
2599			var lsw213 = (x160 & 65535) + 52370;
2600			var msw213 = (x160 >> 16) + (-28916) + (lsw213 >> 16);
2601			var y53 = msw213 << 16 | lsw213 & 65535;
2602			var lsw214 = (x161 & 65535) + (y53 & 65535);
2603			var msw214 = (x161 >> 16) + (y53 >> 16) + (lsw214 >> 16);
2604			var num53 = msw214 << 16 | lsw214 & 65535;
2605			var x162 = num53 << 10 | num53 >>> 22;
2606			var lsw215 = (x162 & 65535) + (a & 65535);
2607			var msw215 = (x162 >> 16) + (a >> 16) + (lsw215 >> 16);
2608			d = msw215 << 16 | lsw215 & 65535;
2609			var x163 = x[i + 10];
2610			var b61 = ~b;
2611			var lsb140 = d & 1 | b61 & 1;
2612			var msb31140 = d >>> 1 | b61 >>> 1;
2613			var b62 = msb31140 << 1 | lsb140;
2614			var lsb141 = a & 1 ^ b62 & 1;
2615			var msb31141 = a >>> 1 ^ b62 >>> 1;
2616			var q54 = msb31141 << 1 | lsb141;
2617			var lsw216 = (c & 65535) + (q54 & 65535);
2618			var msw216 = (c >> 16) + (q54 >> 16) + (lsw216 >> 16);
2619			var x164 = msw216 << 16 | lsw216 & 65535;
2620			var lsw217 = (x163 & 65535) + 62589;
2621			var msw217 = (x163 >> 16) + (-17) + (lsw217 >> 16);
2622			var y54 = msw217 << 16 | lsw217 & 65535;
2623			var lsw218 = (x164 & 65535) + (y54 & 65535);
2624			var msw218 = (x164 >> 16) + (y54 >> 16) + (lsw218 >> 16);
2625			var num54 = msw218 << 16 | lsw218 & 65535;
2626			var x165 = num54 << 15 | num54 >>> 17;
2627			var lsw219 = (x165 & 65535) + (d & 65535);
2628			var msw219 = (x165 >> 16) + (d >> 16) + (lsw219 >> 16);
2629			c = msw219 << 16 | lsw219 & 65535;
2630			var x166 = x[i + 1];
2631			var b63 = ~a;
2632			var lsb142 = c & 1 | b63 & 1;
2633			var msb31142 = c >>> 1 | b63 >>> 1;
2634			var b64 = msb31142 << 1 | lsb142;
2635			var lsb143 = d & 1 ^ b64 & 1;
2636			var msb31143 = d >>> 1 ^ b64 >>> 1;
2637			var q55 = msb31143 << 1 | lsb143;
2638			var lsw220 = (b & 65535) + (q55 & 65535);
2639			var msw220 = (b >> 16) + (q55 >> 16) + (lsw220 >> 16);
2640			var x167 = msw220 << 16 | lsw220 & 65535;
2641			var lsw221 = (x166 & 65535) + 24017;
2642			var msw221 = (x166 >> 16) + (-31356) + (lsw221 >> 16);
2643			var y55 = msw221 << 16 | lsw221 & 65535;
2644			var lsw222 = (x167 & 65535) + (y55 & 65535);
2645			var msw222 = (x167 >> 16) + (y55 >> 16) + (lsw222 >> 16);
2646			var num55 = msw222 << 16 | lsw222 & 65535;
2647			var x168 = num55 << 21 | num55 >>> 11;
2648			var lsw223 = (x168 & 65535) + (c & 65535);
2649			var msw223 = (x168 >> 16) + (c >> 16) + (lsw223 >> 16);
2650			b = msw223 << 16 | lsw223 & 65535;
2651			var x169 = x[i + 8];
2652			var b65 = ~d;
2653			var lsb144 = b & 1 | b65 & 1;
2654			var msb31144 = b >>> 1 | b65 >>> 1;
2655			var b66 = msb31144 << 1 | lsb144;
2656			var lsb145 = c & 1 ^ b66 & 1;
2657			var msb31145 = c >>> 1 ^ b66 >>> 1;
2658			var q56 = msb31145 << 1 | lsb145;
2659			var lsw224 = (a & 65535) + (q56 & 65535);
2660			var msw224 = (a >> 16) + (q56 >> 16) + (lsw224 >> 16);
2661			var x170 = msw224 << 16 | lsw224 & 65535;
2662			var lsw225 = (x169 & 65535) + 32335;
2663			var msw225 = (x169 >> 16) + 28584 + (lsw225 >> 16);
2664			var y56 = msw225 << 16 | lsw225 & 65535;
2665			var lsw226 = (x170 & 65535) + (y56 & 65535);
2666			var msw226 = (x170 >> 16) + (y56 >> 16) + (lsw226 >> 16);
2667			var num56 = msw226 << 16 | lsw226 & 65535;
2668			var x171 = num56 << 6 | num56 >>> 26;
2669			var lsw227 = (x171 & 65535) + (b & 65535);
2670			var msw227 = (x171 >> 16) + (b >> 16) + (lsw227 >> 16);
2671			a = msw227 << 16 | lsw227 & 65535;
2672			var x172 = x[i + 15];
2673			var b67 = ~c;
2674			var lsb146 = a & 1 | b67 & 1;
2675			var msb31146 = a >>> 1 | b67 >>> 1;
2676			var b68 = msb31146 << 1 | lsb146;
2677			var lsb147 = b & 1 ^ b68 & 1;
2678			var msb31147 = b >>> 1 ^ b68 >>> 1;
2679			var q57 = msb31147 << 1 | lsb147;
2680			var lsw228 = (d & 65535) + (q57 & 65535);
2681			var msw228 = (d >> 16) + (q57 >> 16) + (lsw228 >> 16);
2682			var x173 = msw228 << 16 | lsw228 & 65535;
2683			var lsw229 = (x172 & 65535) + 59104;
2684			var msw229 = (x172 >> 16) + (-468) + (lsw229 >> 16);
2685			var y57 = msw229 << 16 | lsw229 & 65535;
2686			var lsw230 = (x173 & 65535) + (y57 & 65535);
2687			var msw230 = (x173 >> 16) + (y57 >> 16) + (lsw230 >> 16);
2688			var num57 = msw230 << 16 | lsw230 & 65535;
2689			var x174 = num57 << 10 | num57 >>> 22;
2690			var lsw231 = (x174 & 65535) + (a & 65535);
2691			var msw231 = (x174 >> 16) + (a >> 16) + (lsw231 >> 16);
2692			d = msw231 << 16 | lsw231 & 65535;
2693			var x175 = x[i + 6];
2694			var b69 = ~b;
2695			var lsb148 = d & 1 | b69 & 1;
2696			var msb31148 = d >>> 1 | b69 >>> 1;
2697			var b70 = msb31148 << 1 | lsb148;
2698			var lsb149 = a & 1 ^ b70 & 1;
2699			var msb31149 = a >>> 1 ^ b70 >>> 1;
2700			var q58 = msb31149 << 1 | lsb149;
2701			var lsw232 = (c & 65535) + (q58 & 65535);
2702			var msw232 = (c >> 16) + (q58 >> 16) + (lsw232 >> 16);
2703			var x176 = msw232 << 16 | lsw232 & 65535;
2704			var lsw233 = (x175 & 65535) + 17172;
2705			var msw233 = (x175 >> 16) + (-23807) + (lsw233 >> 16);
2706			var y58 = msw233 << 16 | lsw233 & 65535;
2707			var lsw234 = (x176 & 65535) + (y58 & 65535);
2708			var msw234 = (x176 >> 16) + (y58 >> 16) + (lsw234 >> 16);
2709			var num58 = msw234 << 16 | lsw234 & 65535;
2710			var x177 = num58 << 15 | num58 >>> 17;
2711			var lsw235 = (x177 & 65535) + (d & 65535);
2712			var msw235 = (x177 >> 16) + (d >> 16) + (lsw235 >> 16);
2713			c = msw235 << 16 | lsw235 & 65535;
2714			var x178 = x[i + 13];
2715			var b71 = ~a;
2716			var lsb150 = c & 1 | b71 & 1;
2717			var msb31150 = c >>> 1 | b71 >>> 1;
2718			var b72 = msb31150 << 1 | lsb150;
2719			var lsb151 = d & 1 ^ b72 & 1;
2720			var msb31151 = d >>> 1 ^ b72 >>> 1;
2721			var q59 = msb31151 << 1 | lsb151;
2722			var lsw236 = (b & 65535) + (q59 & 65535);
2723			var msw236 = (b >> 16) + (q59 >> 16) + (lsw236 >> 16);
2724			var x179 = msw236 << 16 | lsw236 & 65535;
2725			var lsw237 = (x178 & 65535) + 4513;
2726			var msw237 = (x178 >> 16) + 19976 + (lsw237 >> 16);
2727			var y59 = msw237 << 16 | lsw237 & 65535;
2728			var lsw238 = (x179 & 65535) + (y59 & 65535);
2729			var msw238 = (x179 >> 16) + (y59 >> 16) + (lsw238 >> 16);
2730			var num59 = msw238 << 16 | lsw238 & 65535;
2731			var x180 = num59 << 21 | num59 >>> 11;
2732			var lsw239 = (x180 & 65535) + (c & 65535);
2733			var msw239 = (x180 >> 16) + (c >> 16) + (lsw239 >> 16);
2734			b = msw239 << 16 | lsw239 & 65535;
2735			var x181 = x[i + 4];
2736			var b73 = ~d;
2737			var lsb152 = b & 1 | b73 & 1;
2738			var msb31152 = b >>> 1 | b73 >>> 1;
2739			var b74 = msb31152 << 1 | lsb152;
2740			var lsb153 = c & 1 ^ b74 & 1;
2741			var msb31153 = c >>> 1 ^ b74 >>> 1;
2742			var q60 = msb31153 << 1 | lsb153;
2743			var lsw240 = (a & 65535) + (q60 & 65535);
2744			var msw240 = (a >> 16) + (q60 >> 16) + (lsw240 >> 16);
2745			var x182 = msw240 << 16 | lsw240 & 65535;
2746			var lsw241 = (x181 & 65535) + 32386;
2747			var msw241 = (x181 >> 16) + (-2221) + (lsw241 >> 16);
2748			var y60 = msw241 << 16 | lsw241 & 65535;
2749			var lsw242 = (x182 & 65535) + (y60 & 65535);
2750			var msw242 = (x182 >> 16) + (y60 >> 16) + (lsw242 >> 16);
2751			var num60 = msw242 << 16 | lsw242 & 65535;
2752			var x183 = num60 << 6 | num60 >>> 26;
2753			var lsw243 = (x183 & 65535) + (b & 65535);
2754			var msw243 = (x183 >> 16) + (b >> 16) + (lsw243 >> 16);
2755			a = msw243 << 16 | lsw243 & 65535;
2756			var x184 = x[i + 11];
2757			var b75 = ~c;
2758			var lsb154 = a & 1 | b75 & 1;
2759			var msb31154 = a >>> 1 | b75 >>> 1;
2760			var b76 = msb31154 << 1 | lsb154;
2761			var lsb155 = b & 1 ^ b76 & 1;
2762			var msb31155 = b >>> 1 ^ b76 >>> 1;
2763			var q61 = msb31155 << 1 | lsb155;
2764			var lsw244 = (d & 65535) + (q61 & 65535);
2765			var msw244 = (d >> 16) + (q61 >> 16) + (lsw244 >> 16);
2766			var x185 = msw244 << 16 | lsw244 & 65535;
2767			var lsw245 = (x184 & 65535) + 62005;
2768			var msw245 = (x184 >> 16) + (-17094) + (lsw245 >> 16);
2769			var y61 = msw245 << 16 | lsw245 & 65535;
2770			var lsw246 = (x185 & 65535) + (y61 & 65535);
2771			var msw246 = (x185 >> 16) + (y61 >> 16) + (lsw246 >> 16);
2772			var num61 = msw246 << 16 | lsw246 & 65535;
2773			var x186 = num61 << 10 | num61 >>> 22;
2774			var lsw247 = (x186 & 65535) + (a & 65535);
2775			var msw247 = (x186 >> 16) + (a >> 16) + (lsw247 >> 16);
2776			d = msw247 << 16 | lsw247 & 65535;
2777			var x187 = x[i + 2];
2778			var b77 = ~b;
2779			var lsb156 = d & 1 | b77 & 1;
2780			var msb31156 = d >>> 1 | b77 >>> 1;
2781			var b78 = msb31156 << 1 | lsb156;
2782			var lsb157 = a & 1 ^ b78 & 1;
2783			var msb31157 = a >>> 1 ^ b78 >>> 1;
2784			var q62 = msb31157 << 1 | lsb157;
2785			var lsw248 = (c & 65535) + (q62 & 65535);
2786			var msw248 = (c >> 16) + (q62 >> 16) + (lsw248 >> 16);
2787			var x188 = msw248 << 16 | lsw248 & 65535;
2788			var lsw249 = (x187 & 65535) + 53947;
2789			var msw249 = (x187 >> 16) + 10967 + (lsw249 >> 16);
2790			var y62 = msw249 << 16 | lsw249 & 65535;
2791			var lsw250 = (x188 & 65535) + (y62 & 65535);
2792			var msw250 = (x188 >> 16) + (y62 >> 16) + (lsw250 >> 16);
2793			var num62 = msw250 << 16 | lsw250 & 65535;
2794			var x189 = num62 << 15 | num62 >>> 17;
2795			var lsw251 = (x189 & 65535) + (d & 65535);
2796			var msw251 = (x189 >> 16) + (d >> 16) + (lsw251 >> 16);
2797			c = msw251 << 16 | lsw251 & 65535;
2798			var x190 = x[i + 9];
2799			var b79 = ~a;
2800			var lsb158 = c & 1 | b79 & 1;
2801			var msb31158 = c >>> 1 | b79 >>> 1;
2802			var b80 = msb31158 << 1 | lsb158;
2803			var lsb159 = d & 1 ^ b80 & 1;
2804			var msb31159 = d >>> 1 ^ b80 >>> 1;
2805			var q63 = msb31159 << 1 | lsb159;
2806			var lsw252 = (b & 65535) + (q63 & 65535);
2807			var msw252 = (b >> 16) + (q63 >> 16) + (lsw252 >> 16);
2808			var x191 = msw252 << 16 | lsw252 & 65535;
2809			var lsw253 = (x190 & 65535) + 54161;
2810			var msw253 = (x190 >> 16) + (-5242) + (lsw253 >> 16);
2811			var y63 = msw253 << 16 | lsw253 & 65535;
2812			var lsw254 = (x191 & 65535) + (y63 & 65535);
2813			var msw254 = (x191 >> 16) + (y63 >> 16) + (lsw254 >> 16);
2814			var num63 = msw254 << 16 | lsw254 & 65535;
2815			var x192 = num63 << 21 | num63 >>> 11;
2816			var lsw255 = (x192 & 65535) + (c & 65535);
2817			var msw255 = (x192 >> 16) + (c >> 16) + (lsw255 >> 16);
2818			b = msw255 << 16 | lsw255 & 65535;
2819			var lsw256 = (a & 65535) + (olda & 65535);
2820			var msw256 = (a >> 16) + (olda >> 16) + (lsw256 >> 16);
2821			a = msw256 << 16 | lsw256 & 65535;
2822			var lsw257 = (b & 65535) + (oldb & 65535);
2823			var msw257 = (b >> 16) + (oldb >> 16) + (lsw257 >> 16);
2824			b = msw257 << 16 | lsw257 & 65535;
2825			var lsw258 = (c & 65535) + (oldc & 65535);
2826			var msw258 = (c >> 16) + (oldc >> 16) + (lsw258 >> 16);
2827			c = msw258 << 16 | lsw258 & 65535;
2828			var lsw259 = (d & 65535) + (oldd & 65535);
2829			var msw259 = (d >> 16) + (oldd >> 16) + (lsw259 >> 16);
2830			d = msw259 << 16 | lsw259 & 65535;
2831			i += 16;
2832		}
2833		return Md5.rhex(a) + Md5.rhex(b) + Md5.rhex(c) + Md5.rhex(d);
2834	}
2835	,__class__: Md5
2836};
2837var js_BinaryParser = function(bigEndian,allowExceptions) {
2838	this.bigEndian = bigEndian;
2839	this.allowExceptions = allowExceptions;
2840};
2841js_BinaryParser.__name__ = true;
2842js_BinaryParser.prototype = {
2843	encodeFloat: function(number,precisionBits,exponentBits) {
2844		
2845			var bias = Math.pow(2, exponentBits - 1) - 1, minExp = -bias + 1, maxExp = bias, minUnnormExp = minExp - precisionBits,
2846			status = isNaN(n = parseFloat(number)) || n == -Infinity || n == +Infinity ? n : 0,
2847			exp = 0, len = 2 * bias + 1 + precisionBits + 3, bin = new Array(len),
2848			signal = (n = status !== 0 ? 0 : n) < 0, n = Math.abs(n), intPart = Math.floor(n), floatPart = n - intPart,
2849			i, lastBit, rounded, j, result;
2850			for(i = len; i; bin[--i] = 0);
2851			for(i = bias + 2; intPart && i; bin[--i] = intPart % 2, intPart = Math.floor(intPart / 2));
2852			for(i = bias + 1; floatPart > 0 && i; (bin[++i] = ((floatPart *= 2) >= 1) - 0) && --floatPart);
2853			for(i = -1; ++i < len && !bin[i];);
2854			if(bin[(lastBit = precisionBits - 1 + (i = (exp = bias + 1 - i) >= minExp && exp <= maxExp ? i + 1 : bias + 1 - (exp = minExp - 1))) + 1]){
2855			    if(!(rounded = bin[lastBit]))
2856				for(j = lastBit + 2; !rounded && j < len; rounded = bin[j++]);
2857			    for(j = lastBit + 1; rounded && --j >= 0; (bin[j] = !bin[j] - 0) && (rounded = 0));
2858			}
2859			for(i = i - 2 < 0 ? -1 : i - 3; ++i < len && !bin[i];);
2860
2861			(exp = bias + 1 - i) >= minExp && exp <= maxExp ? ++i : exp < minExp &&
2862			    (exp != bias + 1 - len && exp < minUnnormExp && this.warn("encodeFloat::float underflow"), i = bias + 1 - (exp = minExp - 1));
2863			(intPart || status !== 0) && (this.warn(intPart ? "encodeFloat::float overflow" : "encodeFloat::" + status),
2864			    exp = maxExp + 1, i = bias + 2, status == -Infinity ? signal = 1 : isNaN(status) && (bin[i] = 1));
2865			for(n = Math.abs(exp + bias), j = exponentBits + 1, result = ""; --j; result = (n % 2) + result, n = n >>= 1);
2866			for(var n = 0, j = 0, i = (result = (signal ? "1" : "0") + result + bin.slice(i, i + precisionBits).join("")).length, r = [];
2867			    i; n += (1 << j) * result.charAt(--i), j == 7 && (r[r.length] = String.fromCharCode(n), n = 0), j = (j + 1) % 8);
2868			r[r.length] = n ? String.fromCharCode(n) : "";
2869			return (this.bigEndian ? r.reverse() : r).join("");
2870		;
2871		return "";
2872	}
2873	,decodeFloat: function(data,precisionBits,exponentBits) {
2874		
2875			var b = (((typeof js !== 'undefined' && js) ?
2876                                (b = new js.BinaryBuffer(this.bigEndian, data)) :
2877                                (b = new js_BinaryBuffer(this.bigEndian, data))).checkBuffer(precisionBits + exponentBits + 1), b),
2878			    bias = Math.pow(2, exponentBits - 1) - 1, signal = b.readBits(precisionBits + exponentBits, 1),
2879			    exponent = b.readBits(precisionBits, exponentBits), significand = 0,
2880			    divisor = 2, curByte = b.buffer.length + (-precisionBits >> 3) - 1,
2881			    byteValue, startBit, mask;
2882			do
2883			    for(byteValue = b.buffer[ ++curByte ], startBit = precisionBits % 8 || 8, mask = 1 << startBit;
2884				mask >>= 1; (byteValue & mask) && (significand += 1 / divisor), divisor *= 2);
2885			while(precisionBits -= startBit);
2886			return exponent == (bias << 1) + 1 ? significand ? NaN : signal ? -Infinity : +Infinity
2887			    : (1 + signal * -2) * (exponent || significand ? !exponent ? Math.pow(2, -bias + 1) * significand
2888			    : Math.pow(2, exponent - bias) * (1 + significand) : 0);
2889		;
2890		return 0.0;
2891	}
2892	,warn: function(msg) {
2893		if(this.allowExceptions) {
2894			throw new Error(msg);
2895		}
2896		return 1;
2897	}
2898	,toDouble: function(data) {
2899		return this.decodeFloat(data,52,11);
2900	}
2901	,fromDouble: function(number) {
2902		return this.encodeFloat(number,52,11);
2903	}
2904	,__class__: js_BinaryParser
2905};
2906var StringBuf = function() {
2907	this.b = "";
2908};
2909StringBuf.__name__ = true;
2910StringBuf.prototype = {
2911	__class__: StringBuf
2912};
2913var Util = function() { };
2914Util.__name__ = true;
2915Util.getParameter = function(name) {
2916	var href = window.location.href;
2917	var href2 = window.urlParameters ? window.urlParameters : "";
2918	var regexS = "[\\?&]" + name + "=([^&#]*)";
2919	var regex = new EReg(regexS,"");
2920	if(regex.match(href)) {
2921		var s = regex.matched(1);
2922		return decodeURIComponent(s.split("+").join(" "));
2923	} else if(regex.match(href2)) {
2924		var s = regex.matched(1);
2925		return decodeURIComponent(s.split("+").join(" "));
2926	} else {
2927		return null;
2928	}
2929};
2930Util.makePath = function(dir,name) {
2931	if(StringTools.endsWith(dir,"/")) {
2932		return dir + name;
2933	} else {
2934		return dir + "/" + name;
2935	}
2936};
2937Util.openFile = function(path,mode) {
2938	if(mode == null) {
2939		mode = true;
2940	}
2941	return null;
2942};
2943Util.createDir = function(dir) {
2944};
2945Util.println = function(s) {
2946};
2947Util.clearCache = function() {
2948	Util.filesCache = new haxe_ds_StringMap();
2949	Util.filesHashCache = new haxe_ds_StringMap();
2950};
2951Util.readFile = function(file) {
2952	var content = Util.filesCache.h[file];
2953	var tmp = content == null;
2954	return content;
2955};
2956Util.setFileContent = function(file,content) {
2957	Util.filesCache.h[file] = content;
2958	Util.filesHashCache.h[file] = null;
2959};
2960Util.getFileContent = function(file,content) {
2961	var this1 = Util.filesCache;
2962};
2963Util.fileMd5 = function(file) {
2964	var hash = Util.filesHashCache.h[file];
2965	if(hash == null) {
2966		var content = Util.readFile(file);
2967		if(content != null) {
2968			var this1 = Util.filesHashCache;
2969			var value = Md5.encode(content);
2970			this1.h[file] = value;
2971		}
2972	}
2973	return hash;
2974};
2975Util.writeFile = function(file,content) {
2976};
2977Util.compareStrings = function(a,b) {
2978	if(a < b) {
2979		return -1;
2980	}
2981	if(a > b) {
2982		return 1;
2983	}
2984	return 0;
2985};
2986Util.fromCharCode = function(code) {
2987	return String.fromCodePoint(code);
2988};
2989Util.determineCrossOrigin = function(url) {
2990	if(url.indexOf("data:") == 0) {
2991		return "";
2992	}
2993	var loc = window.location;
2994	var tempAnchor = window.document.createElement("a");
2995	tempAnchor.href = url;
2996	var samePort = !tempAnchor.port && loc.port == "" || tempAnchor.port == loc.port;
2997	if(tempAnchor.hostname != loc.hostname || !samePort || tempAnchor.protocol != loc.protocol) {
2998		return "anonymous";
2999	}
3000	return "";
3001};
3002Util.isMouseEventName = function(event) {
3003	if(!(event == "pointerdown" || event == "pointerup" || event == "pointermove" || event == "pointerover" || event == "pointerout" || event == "mouseout" || event == "mousedown" || event == "mousemove" || event == "mouseup" || event == "mousemiddledown" || event == "mousemiddleup" || event == "mousemiddledown" || event == "mousemiddleup" || event == "touchstart" || event == "touchmove")) {
3004		return event == "touchend";
3005	} else {
3006		return true;
3007	}
3008};
3009Util.loadJS = function(url,id) {
3010	if(id == null) {
3011		id = "";
3012	}
3013	return new Promise(function(resolve,reject) {
3014		var script = window.document.createElement("script");
3015		script.addEventListener("load",resolve);
3016		script.addEventListener("error",reject);
3017		script.addEventListener("abort",reject);
3018		script.src = url;
3019		if(id != "") {
3020			script.id = id;
3021		}
3022		window.document.head.appendChild(script);
3023	});
3024};
3025var Platform = function() { };
3026Platform.__name__ = true;
3027Platform.getIsRetinaDisplay = function() {
3028	if(Platform.isMacintosh && window.matchMedia != null) {
3029		if(!((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx), only screen and (min-resolution: 75.6dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min--moz-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2)').matches)) || (window.devicePixelRatio && window.devicePixelRatio >= 2)) && /(iPad|iPhone|iPod)/g.test(navigator.userAgent)) {
3030			return getIsHighDensity();
3031		} else {
3032			return true;
3033		}
3034	} else {
3035		return false;
3036	}
3037};
3038Platform.getIsHighDensityDisplay = function() {
3039	return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 1.3));
3040};
3041Platform.getIsWindows = function() {
3042	return Platform.isWindows;
3043};
3044Platform.getIsMacOS = function() {
3045	return Platform.isMacintosh;
3046};
3047Platform.getIsLinux = function() {
3048	return Platform.isLinux;
3049};
3050Platform.getIsAndroid = function() {
3051	return Platform.isAndroid;
3052};
3053Platform.getIsIos = function() {
3054	return Platform.isIOS;
3055};
3056var Native = function() { };
3057Native.__name__ = true;
3058Native.println = function(arg) {
3059	var keepStringEscapes = true;
3060	if(keepStringEscapes == null) {
3061		keepStringEscapes = false;
3062	}
3063	var s = HaxeRuntime.toString(arg,keepStringEscapes);
3064	console.log(s);
3065	return null;
3066};
3067Native.debugStopExecution = function() {
3068	debugger;
3069};
3070Native.genericCompare = function(a,b) {
3071	return HaxeRuntime.compareByValue(a,b);
3072};
3073Native.hostCall = function(name,args) {
3074	var result = null;
3075	try {
3076		var name_parts = name.split(".");
3077		var fun = window;
3078		var fun_nested_object = fun;
3079		var _g = 0;
3080		var _g1 = name_parts.length;
3081		while(_g < _g1) {
3082			var i = _g++;
3083			fun_nested_object = fun;
3084			fun = fun[name_parts[i]];
3085		}
3086		result = fun.call(fun_nested_object,args[0],args[1],args[2],args[3],args[4]);
3087	} catch( _g ) {
3088		haxe_NativeStackTrace.lastError = _g;
3089		var e = haxe_Exception.caught(_g).unwrap();
3090		Errors.report(e);
3091	}
3092	return result;
3093};
3094Native.importJSModule = function(arg,cb) {
3095	try {
3096		var module = arg + encodeURI('\nconst importJSModuleVersion =' + Math.random());
3097		eval("import(module).then((v) => { return v && v.default ? v.default : v; }).then((v) => { cb(v); }).catch((e) => { Errors.report(e); cb(null); })");
3098	} catch( _g ) {
3099		haxe_NativeStackTrace.lastError = _g;
3100		var e = haxe_Exception.caught(_g).unwrap();
3101		Errors.report(e);
3102		cb(null);
3103	}
3104};
3105Native.hostAddCallback = function(name,cb) {
3106	window[name] = cb;
3107	return null;
3108};
3109Native.createInvisibleTextArea = function() {
3110	var textArea = window.document.createElement("textarea");
3111	textArea.style.cssText = "position:fixed;top:0px;left:0px;width:2em;height:2em;padding:0px;border:none;outline:none;boxShadow:none;background:transparent;";
3112	window.document.body.appendChild(textArea);
3113	return textArea;
3114};
3115Native.evaluateObjectSize = function(object) {
3116	var bytes = 0;
3117	
3118			var objectList = [];
3119			var stack = [object];
3120
3121			while (stack.length) {
3122				var value = stack.pop();
3123
3124				if (typeof value === 'boolean') {
3125					bytes += 4;
3126				}
3127				else if ( typeof value === 'string' ) {
3128					bytes += value.length * 2;
3129				}
3130				else if ( typeof value === 'number' ) {
3131					bytes += 8;
3132				}
3133				else if
3134				(
3135					typeof value === 'object'
3136					&& objectList.indexOf( value ) === -1
3137				)
3138				{
3139					objectList.push( value );
3140
3141					if (Object.prototype.toString.call(value) != '[object Array]'){
3142					   for(var key in value) bytes += 2 * key.length;
3143					}
3144
3145					for( var i in value ) {
3146						stack.push( value[ i ] );
3147					}
3148				}
3149			}
3150		;
3151	return bytes;
3152};
3153Native.usedJSHeapSize = function() {
3154	try {
3155		return window.performance.memory.usedJSHeapSize;
3156	} catch( _g ) {
3157		haxe_NativeStackTrace.lastError = _g;
3158		console.log("Warning! performance.memory.usedJSHeapSize is not implemented in this target");
3159		return 0;
3160	}
3161};
3162Native.totalJSHeapSize = function() {
3163	try {
3164		return window.performance.memory.totalJSHeapSize;
3165	} catch( _g ) {
3166		haxe_NativeStackTrace.lastError = _g;
3167		console.log("Warning! performance.memory.totalJSHeapSize is not implemented in this target");
3168		return 0;
3169	}
3170};
3171Native.createWindowSnapshot = function() {
3172	var snapshot = {
3173			timestamp: Date.now(),
3174			properties: new Map(),
3175			objectCounts: {},
3176			totalSize: 0
3177		}
3178	
3179			// Capture all window properties
3180			for (var key in window) {
3181				try {
3182					var value = window[key];
3183					var type = typeof value;
3184					var size = Native.estimateObjectSize(value, new WeakSet(), 0, 2); // Limit depth to avoid infinite recursion
3185
3186					snapshot.properties.set(key, {
3187						type: type,
3188						size: size,
3189						constructor: value && value.constructor ? value.constructor.name : 'unknown',
3190						isArray: Array.isArray(value),
3191						length: value && value.length !== undefined ? value.length : -1
3192					});
3193
3194					snapshot.totalSize += size;
3195					snapshot.objectCounts[type] = (snapshot.objectCounts[type] || 0) + 1;
3196				} catch (e) {
3197					// Some properties might not be accessible
3198					snapshot.properties.set(key, { error: e.message });
3199				}
3200			}
3201		;
3202	return snapshot;
3203};
3204Native.estimateObjectSize = function(obj,visited,currentDepth,maxDepth) {
3205	var size = 0;
3206	
3207			if (currentDepth > maxDepth || visited.has(obj)) return 0;
3208
3209			var type = typeof obj;
3210
3211			if (type === 'boolean') return 4;
3212			if (type === 'number') return 8;
3213			if (type === 'string') return obj.length * 2;
3214			if (obj === null || obj === undefined) return 0;
3215
3216			if (type === 'object') {
3217				visited.add(obj);
3218
3219				// Count property names
3220				for (var key in obj) {
3221					size += key.length * 2; // Property name size
3222					try {
3223						size += Native.estimateObjectSize(obj[key], visited, currentDepth + 1, maxDepth);
3224					} catch (e) {
3225						// Skip inaccessible properties
3226					}
3227				}
3228			}
3229		;
3230	return size;
3231};
3232Native.compareWindowSnapshots = function(beforeSnapshot,afterSnapshot) {
3233	var diff = {
3234			newProperties: [],
3235			changedProperties: [],
3236			sizeDifferences: [],
3237			totalSizeChange: afterSnapshot.totalSize - beforeSnapshot.totalSize
3238		}
3239	
3240			// Find new properties and changed properties
3241			for (var entry of afterSnapshot.properties) {
3242				var key = entry[0];
3243				var afterValue = entry[1];
3244
3245				if (!beforeSnapshot.properties.has(key)) {
3246					diff.newProperties.push(Object.assign({ key: key }, afterValue));
3247				} else {
3248					var beforeValue = beforeSnapshot.properties.get(key);
3249					var sizeChange = afterValue.size - beforeValue.size;
3250
3251					if (sizeChange !== 0) {
3252						diff.changedProperties.push({
3253							key: key,
3254							sizeBefore: beforeValue.size,
3255							sizeAfter: afterValue.size,
3256							sizeChange: sizeChange,
3257							typeBefore: beforeValue.type,
3258							typeAfter: afterValue.type
3259						});
3260					}
3261				}
3262			}
3263
3264			// Sort by size change (largest first)
3265			diff.changedProperties.sort(function(a, b) { return Math.abs(b.sizeChange) - Math.abs(a.sizeChange); });
3266			diff.newProperties.sort(function(a, b) { return b.size - a.size; });
3267
3268			// Add summary information needed by printMemoryLeakReport
3269			diff.summary = {
3270				totalSizeChange: diff.totalSizeChange,
3271				newPropertiesCount: diff.newProperties.length,
3272				changedPropertiesCount: diff.changedProperties.length,
3273				significantChanges: diff.changedProperties.filter(function(p) {
3274					return Math.abs(p.sizeChange) > 1000; // Changes > 1KB
3275				}),
3276				topNewProperties: diff.newProperties.slice(0, 10),
3277				topChangedProperties: diff.changedProperties.slice(0, 10)
3278			};
3279		;
3280	return diff;
3281};
3282Native.detectWindowMemoryLeaks = function() {
3283	return 
3284			var snapshot1 = Native.createWindowSnapshot();
3285
3286			return {
3287				takeInitialSnapshot: function() {
3288					snapshot1 = Native.createWindowSnapshot();
3289					return snapshot1;
3290				},
3291
3292				compareCurrent: function() {
3293					var snapshot2 = Native.createWindowSnapshot();
3294					var diff = Native.compareWindowSnapshots(snapshot1, snapshot2);
3295
3296					// Add summary information
3297					diff.summary = {
3298						totalSizeChange: diff.totalSizeChange,
3299						newPropertiesCount: diff.newProperties.length,
3300						changedPropertiesCount: diff.changedProperties.length,
3301						significantChanges: diff.changedProperties.filter(function(p) {
3302							return Math.abs(p.sizeChange) > 1000; // Changes > 1KB
3303						}),
3304						topNewProperties: diff.newProperties.slice(0, 10),
3305						topChangedProperties: diff.changedProperties.slice(0, 10)
3306					};
3307
3308					return diff;
3309				},
3310
3311				getFlowSpecificChanges: function() {
3312					var snapshot2 = Native.createWindowSnapshot();
3313					var flowChanges = [];
3314					var flowPatterns = [
3315						/^(Flow|Haxe|Material|RenderSupport|Native)/,
3316						/Manager$/,
3317						/Behaviour$/,
3318						/Transform$/,
3319						/^M[A-Z]/, // Material components
3320						/_struct/,
3321						/_id$/
3322					];
3323
3324					for (var entry of snapshot2.properties) {
3325						var key = entry[0];
3326						var afterValue = entry[1];
3327						var isFlowRelated = flowPatterns.some(function(pattern) { return pattern.test(key); });
3328
3329						if (isFlowRelated) {
3330							var beforeValue = snapshot1.properties.get(key);
3331							if (!beforeValue) {
3332								flowChanges.push(Object.assign({
3333									type: 'NEW',
3334									key: key
3335								}, afterValue));
3336							} else if (beforeValue.size !== afterValue.size) {
3337								flowChanges.push({
3338									type: 'CHANGED',
3339									key: key,
3340									sizeBefore: beforeValue.size,
3341									sizeAfter: afterValue.size,
3342									sizeChange: afterValue.size - beforeValue.size
3343								});
3344							}
3345						}
3346					}
3347
3348					return flowChanges.sort(function(a, b) {
3349						var aSize = a.sizeChange || a.size || 0;
3350						var bSize = b.sizeChange || b.size || 0;
3351						return Math.abs(bSize) - Math.abs(aSize);
3352					});
3353				},
3354
3355				categorizeWindowObjects: function() {
3356					var snapshot = Native.createWindowSnapshot();
3357					var categories = {
3358						functions: [],
3359						objects: [],
3360						arrays: [],
3361						domElements: [],
3362						eventListeners: [],
3363						timers: [],
3364						flowObjects: [],
3365						other: []
3366					};
3367
3368					for (var entry of snapshot.properties) {
3369						var key = entry[0];
3370						var value = entry[1];
3371						var item = { key: key, size: value.size, type: value.type };
3372
3373						try {
3374							var actualValue = window[key];
3375							if (typeof actualValue === 'function') {
3376								categories.functions.push(item);
3377							} else if (actualValue && actualValue.nodeType) {
3378								categories.domElements.push(item);
3379							} else if (Array.isArray(actualValue)) {
3380								categories.arrays.push(Object.assign(item, { length: actualValue.length }));
3381							} else if (key.match(/^(Flow|Haxe|RenderSupport|MaterialManager)/)) {
3382								categories.flowObjects.push(item);
3383							} else if (key.includes('event') || key.includes('listener')) {
3384								categories.eventListeners.push(item);
3385							} else if (key.includes('timer') || key.includes('interval')) {
3386								categories.timers.push(item);
3387							} else if (typeof actualValue === 'object' && actualValue !== null) {
3388								categories.objects.push(item);
3389							} else {
3390								categories.other.push(item);
3391							}
3392						} catch (e) {
3393							categories.other.push(item);
3394						}
3395					}
3396
3397					// Sort each category by size
3398					for (var cat in categories) {
3399						categories[cat].sort(function(a, b) { return b.size - a.size; });
3400					}
3401
3402					return categories;
3403				}
3404			};
3405		;
3406};
3407Native.printMemoryLeakReport = function(diff) {
3408	
3409			if (!diff || !diff.summary) {
3410				console.log('No memory leak data available');
3411				return;
3412			}
3413
3414			console.group('🔍 Memory Leak Analysis Report');
3415
3416			console.log('📊 Summary:');
3417			console.log('  Total size change:', Math.round(diff.summary.totalSizeChange / 1024) + 'KB');
3418			console.log('  New properties:', diff.summary.newPropertiesCount);
3419			console.log('  Changed properties:', diff.summary.changedPropertiesCount);
3420			console.log('  Significant changes (>1KB):', diff.summary.significantChanges.length);
3421
3422			if (diff.summary.topNewProperties.length > 0) {
3423				console.group('🆕 Top New Properties:');
3424				diff.summary.topNewProperties.forEach(function(prop) {
3425					console.log('  ' + prop.key + ':', {
3426						type: prop.type,
3427						size: Math.round(prop.size / 1024) + 'KB',
3428						constructor: prop.constructor
3429					});
3430				});
3431				console.groupEnd();
3432			}
3433
3434			if (diff.summary.topChangedProperties.length > 0) {
3435				console.group('📈 Top Changed Properties:');
3436				diff.summary.topChangedProperties.forEach(function(prop) {
3437					console.log('  ' + prop.key + ':', {
3438						change: (prop.sizeChange > 0 ? '+' : '') + Math.round(prop.sizeChange / 1024) + 'KB',
3439						before: Math.round(prop.sizeBefore / 1024) + 'KB',
3440						after: Math.round(prop.sizeAfter / 1024) + 'KB'
3441					});
3442				});
3443				console.groupEnd();
3444			}
3445
3446			console.groupEnd();
3447		;
3448};
3449Native.createDeepPathSnapshot = function(rootObject,maxDepth) {
3450	var snapshot = {
3451			timestamp: Date.now(),
3452			paths: new Map(), // path -> size
3453			totalSize: 0
3454		}
3455	
3456			function traverseObject(obj, currentPath, depth, visited, globalVisited) {
3457				if (!obj) return 0;
3458
3459				var objType = typeof obj;
3460				var currentSize = 0;
3461
3462				// Base size for primitive types
3463				if (objType === 'boolean') return 4;
3464				if (objType === 'number') return 8;
3465				if (objType === 'string') return obj.length * 2;
3466				if (objType !== 'object' || obj === null) return 0;
3467
3468				// For objects, check if we've seen this exact object before (circular reference)
3469				if (globalVisited.has(obj)) {
3470					return 0; // Don't double-count, but this object's size was already counted
3471				}
3472
3473				globalVisited.add(obj);
3474
3475				// Count property names for this object
3476				for (var key in obj) {
3477					currentSize += key.length * 2; // Property name overhead
3478				}
3479
3480				// If we haven't hit max depth, recurse into properties and track paths
3481				if (depth < maxDepth) {
3482					for (var key in obj) {
3483						try {
3484							var childObj = obj[key];
3485							var childPath = currentPath ? currentPath + '.' + key : key;
3486							var childSize = traverseObject(childObj, childPath, depth + 1, visited, globalVisited);
3487							currentSize += childSize;
3488
3489							// Store significant paths for comparison
3490							if (childSize > 1000) {
3491								snapshot.paths.set(childPath, childSize);
3492							}
3493						} catch (e) {
3494							// Skip inaccessible properties
3495						}
3496					}
3497				} else {
3498					// At max depth - estimate remaining size without recursion (like original evaluateObjectSize)
3499					for (var key in obj) {
3500						try {
3501							var childObj = obj[key];
3502							var childType = typeof childObj;
3503
3504							if (childType === 'boolean') currentSize += 4;
3505							else if (childType === 'number') currentSize += 8;
3506							else if (childType === 'string') currentSize += childObj.length * 2;
3507							else if (childType === 'object' && childObj !== null && !globalVisited.has(childObj)) {
3508								// Rough estimate for unexplored objects
3509								currentSize += 100; // Base object overhead estimate
3510							}
3511						} catch (e) {
3512							// Skip inaccessible properties
3513						}
3514					}
3515				}
3516
3517				// Store this path's total size if significant
3518				if (currentSize > 1000 && currentPath) {
3519					snapshot.paths.set(currentPath, currentSize);
3520				}
3521
3522				return currentSize;
3523			}
3524
3525			// Start traversal - use the same approach as original evaluateObjectSize
3526			snapshot.totalSize = traverseObject(rootObject, '', 0, new WeakSet(), new WeakSet());
3527		;
3528	return snapshot;
3529};
3530Native.createAccuratePathSnapshot = function(rootObject,maxDepth) {
3531	var snapshot = {
3532			timestamp: Date.now(),
3533			paths: new Map(),
3534			totalSize: 0
3535		}
3536	
3537			// First get accurate total using the original method
3538			snapshot.totalSize = Native.evaluateObjectSize(rootObject);
3539
3540			// Then do path tracking with limited depth for comparison purposes
3541			function trackPaths(obj, currentPath, depth, visited) {
3542				if (depth > maxDepth || !obj || typeof obj !== 'object' || obj === null || visited.has(obj)) {
3543					return;
3544				}
3545
3546				visited.add(obj);
3547
3548				// Calculate size of this specific object path using limited recursion
3549				var pathSize = Native.estimateObjectSize(obj, new WeakSet(), 0, 2);
3550
3551				if (pathSize > 1000) {
3552					snapshot.paths.set(currentPath || 'root', pathSize);
3553				}
3554
3555				// Recurse into properties
3556				for (var key in obj) {
3557					try {
3558						var childPath = currentPath ? currentPath + '.' + key : key;
3559						trackPaths(obj[key], childPath, depth + 1, visited);
3560					} catch (e) {
3561						// Skip inaccessible properties
3562					}
3563				}
3564			}
3565
3566			// Track paths for comparison
3567			trackPaths(rootObject, '', 0, new WeakSet());
3568		;
3569	return snapshot;
3570};
3571Native.compareDeepPathSnapshots = function(beforeSnapshot,afterSnapshot) {
3572	var comparison = {
3573			timestamp: Date.now(),
3574			totalSizeChange: afterSnapshot.totalSize - beforeSnapshot.totalSize,
3575			pathChanges: [],
3576			newPaths: [],
3577			removedPaths: []
3578		}
3579	
3580			// Find all unique paths from both snapshots
3581			var allPaths = new Set();
3582			beforeSnapshot.paths.forEach((size, path) => allPaths.add(path));
3583			afterSnapshot.paths.forEach((size, path) => allPaths.add(path));
3584
3585			// Compare each path
3586			allPaths.forEach(path => {
3587				var beforeSize = beforeSnapshot.paths.get(path) || 0;
3588				var afterSize = afterSnapshot.paths.get(path) || 0;
3589				var sizeChange = afterSize - beforeSize;
3590
3591				if (beforeSize === 0 && afterSize > 0) {
3592					// New path
3593					comparison.newPaths.push({
3594						path: path,
3595						size: afterSize,
3596						sizeKB: Math.round(afterSize / 1024)
3597					});
3598				} else if (afterSize === 0 && beforeSize > 0) {
3599					// Removed path
3600					comparison.removedPaths.push({
3601						path: path,
3602						size: beforeSize,
3603						sizeKB: Math.round(beforeSize / 1024)
3604					});
3605				} else if (sizeChange !== 0) {
3606					// Changed path
3607					comparison.pathChanges.push({
3608						path: path,
3609						beforeSize: beforeSize,
3610						afterSize: afterSize,
3611						sizeChange: sizeChange,
3612						sizeChangeKB: Math.round(sizeChange / 1024),
3613						percentChange: beforeSize > 0 ? Math.round((sizeChange / beforeSize) * 100) : 0
3614					});
3615				}
3616			});
3617
3618			// Sort by absolute change
3619			comparison.pathChanges.sort((a, b) => Math.abs(b.sizeChange) - Math.abs(a.sizeChange));
3620			comparison.newPaths.sort((a, b) => b.size - a.size);
3621			comparison.removedPaths.sort((a, b) => b.size - a.size);
3622		;
3623	return comparison;
3624};
3625Native.printDeepPathComparison = function(comparison) {
3626	
3627			console.group('🔍 Deep Path Memory Analysis');
3628
3629			console.log('📊 Summary:');
3630			console.log('  Total size change: ' + Math.round(comparison.totalSizeChange / 1024) + 'KB');
3631			console.log('  Paths with changes: ' + comparison.pathChanges.length);
3632			console.log('  New paths: ' + comparison.newPaths.length);
3633			console.log('  Removed paths: ' + comparison.removedPaths.length);
3634
3635			if (comparison.pathChanges.length > 0) {
3636				console.group('📈 Top 15 Growing Paths:');
3637				comparison.pathChanges.slice(0, 15).forEach((change, i) => {
3638					var changeStr = (change.sizeChange > 0 ? '+' : '') + change.sizeChangeKB + 'KB';
3639					var percentStr = change.percentChange !== 0 ? ' (' + (change.percentChange > 0 ? '+' : '') + change.percentChange + '%)' : '';
3640					console.log((i + 1) + '. ' + change.path);
3641					console.log('    ' + changeStr + percentStr + ' [' + Math.round(change.beforeSize/1024) + 'KB → ' + Math.round(change.afterSize/1024) + 'KB]');
3642				});
3643				console.groupEnd();
3644			}
3645
3646			if (comparison.newPaths.length > 0) {
3647				console.group('🆕 Top 10 New Paths:');
3648				comparison.newPaths.slice(0, 10).forEach((newPath, i) => {
3649					console.log((i + 1) + '. ' + newPath.path + ': ' + newPath.sizeKB + 'KB');
3650				});
3651				console.groupEnd();
3652			}
3653
3654			if (comparison.removedPaths.length > 0) {
3655				console.group('🗑️ Top 10 Removed Paths:');
3656				comparison.removedPaths.slice(0, 10).forEach((removedPath, i) => {
3657					console.log((i + 1) + '. ' + removedPath.path + ': ' + removedPath.sizeKB + 'KB');
3658				});
3659				console.groupEnd();
3660			}
3661
3662			console.groupEnd();
3663		;
3664};
3665Native.analyzeFlowMemoryLeaks = function(beforeSnapshot,afterSnapshot) {
3666	var flowChanges = [];
3667	
3668			var flowPatterns = [
3669				/^(Flow|Haxe|Material|RenderSupport|Native)/,
3670				/Manager$/,
3671				/Behaviour$/,
3672				/Transform$/,
3673				/^M[A-Z]/, // Material components
3674				/_struct/,
3675				/_id$/
3676			];
3677
3678			// Check new properties
3679			for (var entry of afterSnapshot.properties) {
3680				var key = entry[0];
3681				var afterValue = entry[1];
3682				var isFlowRelated = flowPatterns.some(function(pattern) {
3683					return pattern.test(key);
3684				});
3685
3686				if (isFlowRelated) {
3687					var beforeValue = beforeSnapshot.properties.get(key);
3688					if (!beforeValue) {
3689						flowChanges.push({
3690							type: 'NEW',
3691							key: key,
3692							size: afterValue.size,
3693							constructor: afterValue.constructor
3694						});
3695					} else if (beforeValue.size !== afterValue.size) {
3696						flowChanges.push({
3697							type: 'CHANGED',
3698							key: key,
3699							sizeChange: afterValue.size - beforeValue.size,
3700							sizeBefore: beforeValue.size,
3701							sizeAfter: afterValue.size
3702						});
3703					}
3704				}
3705			}
3706
3707			// Sort by impact
3708			flowChanges.sort(function(a, b) {
3709				var aSize = a.sizeChange || a.size || 0;
3710				var bSize = b.sizeChange || b.size || 0;
3711				return Math.abs(bSize) - Math.abs(aSize);
3712			});
3713		;
3714	return flowChanges;
3715};
3716Native.createDeepWindowSnapshot = function() {
3717	var snapshot = {
3718			timestamp: Date.now(),
3719			properties: new Map(),
3720			objectCounts: {},
3721			totalSize: 0
3722		}
3723	
3724			// Capture all window properties with NO depth limit (like original evaluateObjectSize)
3725			for (var key in window) {
3726				try {
3727					var value = window[key];
3728					var type = typeof value;
3729					var size = Native.estimateObjectSize(value, new WeakSet(), 0, 20); // Much deeper traversal
3730
3731					snapshot.properties.set(key, {
3732						type: type,
3733						size: size,
3734						constructor: value && value.constructor ? value.constructor.name : 'unknown',
3735						isArray: Array.isArray(value),
3736						length: value && value.length !== undefined ? value.length : -1
3737					});
3738
3739					snapshot.totalSize += size;
3740					snapshot.objectCounts[type] = (snapshot.objectCounts[type] || 0) + 1;
3741				} catch (e) {
3742					// Some properties might not be accessible
3743					snapshot.properties.set(key, { error: e.message });
3744				}
3745			}
3746		;
3747	return snapshot;
3748};
3749Native.analyzeWindowPropertyGrowth = function(propertyName,beforeSnapshot,afterSnapshot) {
3750	var result = {
3751			propertyName: propertyName,
3752			beforeSize: 0,
3753			afterSize: 0,
3754			sizeChange: 0,
3755			subProperties: []
3756		}
3757	
3758			// Get the property size from snapshots
3759			var beforeProp = beforeSnapshot.properties.get(propertyName);
3760			var afterProp = afterSnapshot.properties.get(propertyName);
3761
3762			if (!beforeProp || !afterProp) {
3763				console.log('❌ Property ' + propertyName + ' not found in snapshots');
3764				return result;
3765			}
3766
3767			result.beforeSize = beforeProp.size;
3768			result.afterSize = afterProp.size;
3769			result.sizeChange = afterProp.size - beforeProp.size;
3770
3771			// Now analyze the actual object to see what's inside it
3772			try {
3773				var obj = window[propertyName];
3774				if (!obj || typeof obj !== 'object') {
3775					console.log('⚠️ Property ' + propertyName + ' is not an object, cannot drill down');
3776					return result;
3777				}
3778
3779				console.log('🔍 Analyzing sub-properties of ' + propertyName + ':');
3780				console.log('   Total change: ' + Math.round(result.sizeChange / 1024) + 'KB');
3781				console.log('');
3782
3783				// Get top-level properties of this object
3784				var subProps = [];
3785				for (var key in obj) {
3786					try {
3787						var subObj = obj[key];
3788						var subSize = Native.estimateObjectSize(subObj, new WeakSet(), 0, 3);
3789						subProps.push({
3790							key: key,
3791							size: subSize,
3792							type: typeof subObj,
3793							constructor: subObj && subObj.constructor ? subObj.constructor.name : 'unknown'
3794						});
3795					} catch (e) {
3796						// Skip inaccessible properties
3797					}
3798				}
3799
3800				// Sort by size (largest first)
3801				subProps.sort(function(a, b) { return b.size - a.size; });
3802
3803				// Show top 20 largest sub-properties
3804				console.log('📊 Top sub-properties by size:');
3805				subProps.slice(0, 20).forEach(function(prop, i) {
3806					console.log('  ' + (i+1) + '. ' + prop.key + ': ' +
3807							   Math.round(prop.size / 1024) + 'KB (' + prop.type + ', ' + prop.constructor + ')');
3808				});
3809
3810				result.subProperties = subProps;
3811
3812			} catch (e) {
3813				console.error('❌ Error analyzing sub-properties:', e);
3814			}
3815		;
3816	return result;
3817};
3818Native.findSpecificLeaks = function() {
3819	return {
3820			// Take before and after snapshots and analyze specific known leak sources
3821			before: null,
3822			after: null,
3823
3824			takeBeforeSnapshot: function() {
3825				this.before = Native.createDeepWindowSnapshot();
3826				console.log('📸 Before snapshot taken');
3827				return this.before;
3828			},
3829
3830			takeAfterSnapshot: function() {
3831				this.after = Native.createDeepWindowSnapshot();
3832				console.log('📸 After snapshot taken');
3833				return this.after;
3834			},
3835
3836			analyzeLeaks: function() {
3837				if (!this.before || !this.after) {
3838					console.log('❌ Need both before and after snapshots. Call takeBeforeSnapshot() first, then takeAfterSnapshot()');
3839					return;
3840				}
3841
3842				console.log('🔍 Analyzing specific leak sources...');
3843				console.log('');
3844
3845				// Analyze major properties that commonly leak
3846				var suspiciousProps = [
3847					'RenderSupport', 'PIXI', 'MaterialManager', 'FlowFontsManager',
3848					'Native', 'HaxeRuntime', 'Platform', 'Errors', 'document'
3849				];
3850
3851				suspiciousProps.forEach(function(propName) {
3852					try {
3853						var analysis = Native.analyzeWindowPropertyGrowth(propName, this.before, this.after);
3854						if (Math.abs(analysis.sizeChange) > 1000) { // Only show changes > 1KB
3855							console.log('');
3856							console.log('🎯 ' + propName + ' grew by ' + Math.round(analysis.sizeChange / 1024) + 'KB');
3857						}
3858					} catch (e) {
3859						// Skip properties that don't exist
3860					}
3861				}.bind(this));
3862			},
3863
3864			// Analyze DOM-specific leaks
3865			analyzeDOMLeaks: function() {
3866				console.log('🔍 Analyzing DOM-specific leaks...');
3867
3868				try {
3869					var beforeNodes = this.before ? this.before.properties.get('document') : null;
3870					var afterNodes = this.after ? this.after.properties.get('document') : null;
3871
3872					if (beforeNodes && afterNodes) {
3873						var domGrowth = afterNodes.size - beforeNodes.size;
3874						console.log('📄 DOM size change: ' + Math.round(domGrowth / 1024) + 'KB');
3875
3876						// Count actual DOM elements
3877						var elementCount = document.getElementsByTagName('*').length;
3878						console.log('🔢 Current DOM elements: ' + elementCount.toLocaleStr
3878ing());
3879
3880						// Look for common DOM leak patterns
3881						this.analyzeDOMElements();
3882					}
3883				} catch (e) {
3884					console.error('❌ Error analyzing DOM leaks:', e);
3885				}
3886			},
3887
3888			analyzeDOMElements: function() {
3889				var tagCounts = {};
3890				var elements = document.getElementsByTagName('*');
3891
3892				for (var i = 0; i < elements.length; i++) {
3893					var tag = elements[i].tagName.toLowerCase();
3894					tagCounts[tag] = (tagCounts[tag] || 0) + 1;
3895				}
3896
3897				// Sort by count
3898				var sortedTags = Object.keys(tagCounts)
3899					.map(function(tag) { return {tag: tag, count: tagCounts[tag]}; })
3900					.sort(function(a, b) { return b.count - a.count; });
3901
3902				console.log('🏷️ DOM elements by type:');
3903				sortedTags.slice(0, 10).forEach(function(item) {
3904					console.log('  ' + item.tag + ': ' + item.count.toLocaleString());
3905				});
3906			},
3907
3908			// Quick workflow: take both snapshots and analyze
3909			quickAnalysis: function() {
3910				if (!this.before) {
3911					console.log('❌ No before snapshot. Taking one now...');
3912					this.takeBeforeSnapshot();
3913					console.log('💡 Now perform your operations that cause leaks, then call quickAnalysis() again');
3914					return;
3915				}
3916
3917				this.takeAfterSnapshot();
3918				this.analyzeLeaks();
3919				this.analyzeDOMLeaks();
3920			},
3921
3922			// Drill deeper into specific objects that showed leaks
3923			drillDown: function(objectPath) {
3924				try {
3925					var obj = window;
3926					var pathParts = objectPath.split('.');
3927
3928					for (var i = 0; i < pathParts.length; i++) {
3929						obj = obj[pathParts[i]];
3930						if (!obj) {
3931							console.log('❌ Path not found:', objectPath);
3932							return;
3933						}
3934					}
3935
3936					console.log('🔍 Drilling down into: ' + objectPath);
3937					this.analyzeObjectContents(obj, objectPath, 2);
3938
3939				} catch (e) {
3940					console.error('❌ Error drilling down into', objectPath + ':', e);
3941				}
3942			},
3943
3944			analyzeObjectContents: function(obj, path, maxDepth) {
3945				if (maxDepth <= 0 || !obj || typeof obj !== 'object') return;
3946
3947				var props = [];
3948				for (var key in obj) {
3949					try {
3950						var subObj = obj[key];
3951						var size = Native.estimateObjectSize(subObj, new WeakSet(), 0, 2);
3952						props.push({
3953							key: key,
3954							size: size,
3955							type: typeof subObj,
3956							constructor: subObj && subObj.constructor ? subObj.constructor.name : 'unknown',
3957							isArray: Array.isArray(subObj),
3958							length: Array.isArray(subObj) ? subObj.length : -1
3959						});
3960					} catch (e) {
3961						// Skip inaccessible properties
3962					}
3963				}
3964
3965				// Sort by size
3966				props.sort(function(a, b) { return b.size - a.size; });
3967
3968				console.log('📊 Contents of ' + path + ':');
3969				props.slice(0, 15).forEach(function(prop, i) {
3970					var info = Math.round(prop.size / 1024) + 'KB (' + prop.type;
3971					if (prop.isArray) info += ', length: ' + prop.length;
3972					info += ')';
3973					console.log('  ' + (i+1) + '. ' + prop.key + ': ' + info);
3974				});
3975			}
3976		}
3977};
3978Native.memoryLeakStart = function() {
3979	
3980			console.log('🔍 MEMORY LEAK ANALYSIS - STARTING');
3981			console.log('=' + '='.repeat(35));
3982			console.log('📸 Taking initial snapshot...');
3983			console.log('⏳ Please wait (this may take 10-20 seconds)...');
3984
3985			try {
3986				// Take accurate snapshot
3987				window._memoryLeakBefore = Native.createAccuratePathSnapshot(window, 5);
3988
3989				console.log('✅ Initial snapshot completed!');
3990				console.log('📊 Paths captured:', window._memoryLeakBefore.paths.size);
3991				console.log('📏 Total memory size:', Math.round(window._memoryLeakBefore.totalSize / 1024 / 1024) + 'MB');
3992				console.log('🕐 Time:', new Date(window._memoryLeakBefore.timestamp).toLocaleTimeString());
3993				console.log('');
3994				console.log('🎯 NOW PERFORM OPERATIONS THAT CAUSE MEMORY LEAKS');
3995				console.log('   Then call: Native.memoryLeakAnalyze()');
3996
3997			} catch (e) {
3998				console.error('❌ Error taking snapshot:', e);
3999			}
4000		;
4001};
4002Native.memoryLeakAnalyze = function() {
4003	
4004			console.log('📈 MEMORY LEAK ANALYSIS - ANALYZING');
4005			console.log('=' + '='.repeat(35));
4006
4007			if (!window._memoryLeakBefore) {
4008				console.log('❌ No initial snapshot found!');
4009				console.log('💡 First run: Native.memoryLeakStart()');
4010				return;
4011			}
4012
4013			console.log('📸 Taking final snapshot and comparing...');
4014			console.log('⏳ Please wait...');
4015
4016			try {
4017				// Take after snapshot
4018				window._memoryLeakAfter = Native.createAccuratePathSnapshot(window, 5);
4019
4020				console.log('✅ Final snapshot completed!');
4021				console.log('📊 Paths captured:', window._memoryLeakAfter.paths.size);
4022				console.log('📏 Total memory size:', Math.round(window._memoryLeakAfter.totalSize / 1024 / 1024) + 'MB');
4023
4024				// Calculate accurate growth
4025				var actualGrowth = window._memoryLeakAfter.totalSize - window._memoryLeakBefore.totalSize;
4026				console.log('');
4027
4028				if (actualGrowth < 0) {
4029					console.log('✅ MEMORY DECREASED: ' + Math.round(Math.abs(actualGrowth) / 1024 / 1024) + 'MB');
4030					console.log('🎉 Memory was freed - this is GOOD news, not a leak!');
4031					console.log('📊 Freed bytes: ' + Math.abs(actualGrowth).toLocaleStr
4031ing());
4032					console.log('');
4033					console.log('💡 No analysis needed - memory is being cleaned up properly.');
4034					console.log('🔄 Call Native.memoryLeakReset() to start a new analysis.');
4035					return;
4036				} else if (actualGrowth < 1000000) { // Less than 1MB growth
4037					console.log('ℹ️  SMALL GROWTH DETECTED: ' + Math.round(actualGrowth / 1024 / 1024 * 100) / 100 + 'MB');
4038					console.log('📊 Growth in bytes: ' + actualGrowth.toLocaleString());
4039					console.log('');
4040					if (actualGrowth < 100000) { // Less than 100KB
4041						console.log('✅ This is very small and likely normal app usage.');
4042						console.log('💡 No detailed analysis needed - this is not a significant leak.');
4043						console.log('🔄 Call Native.memoryLeakReset() to start fresh if needed.');
4044						return;
4045					} else {
4046						console.log('ℹ️  Growth is small but measurable. Proceeding with light analysis...');
4047					}
4048				} else {
4049					console.log('🚨 SIGNIFICANT MEMORY GROWTH DETECTED: ' + Math.round(actualGrowth / 1024 / 1024) + 'MB');
4050					console.log('📊 Growth in bytes: ' + actualGrowth.toLocaleString());
4051					console.log('⚠️  This indicates a potential memory leak!');
4052				}
4053
4054				// Compare paths
4055				var comparison = Native.compareDeepPathSnapshots(window._memoryLeakBefore, window._memoryLeakAfter);
4056				comparison.totalSizeChange = actualGrowth;
4057				window._memoryLeakComparison = comparison;
4058
4059				// Print results
4060				Native.printDeepPathComparison(comparison);
4061
4062				console.log('');
4063				console.log('🎯 DETAILED PATH ANALYSIS:');
4064				console.log('💡 Call Native.memoryLeakDetails() for detailed investigation');
4065				console.log('📊 Call Native.memoryLeakMonitor() to monitor ongoing growth');
4066
4067			} catch (e) {
4068				console.error('❌ Error during analysis:', e);
4069			}
4070		;
4071};
4072Native.memoryLeakDetails = function() {
4073	
4074			console.log('🕵️ MEMORY LEAK - DETAILED PATH ANALYSIS');
4075			console.log('=' + '='.repeat(40));
4076
4077			if (!window._memoryLeakComparison) {
4078				console.log('❌ No analysis data found!');
4079				console.log('💡 Run Native.memoryLeakStart() then Native.memoryLeakAnalyze() first');
4080				return;
4081			}
4082
4083			var comparison = window._memoryLeakComparison;
4084
4085			if (comparison.pathChanges.length > 0) {
4086				console.log('🔥 TOP 10 MEMORY GROWTH LOCATIONS:');
4087
4088				comparison.pathChanges.slice(0, 10).forEach(function(change, i) {
4089					console.log('\n' + (i + 1) + '. 📍 PATH: ' + change.path);
4090					console.log('    📈 GROWTH: ' + (change.sizeChangeKB > 0 ? '+' : '') + change.sizeChangeKB + 'KB (' + change.percentChange + '%)');
4091					console.log('    📏 SIZE: ' + Math.round(change.beforeSize/1024) + 'KB → ' + Math.round(change.afterSize/1024) + 'KB');
4092
4093					// Try to inspect the actual object
4094					try {
4095						var pathParts = change.path.split('.');
4096						var obj = window;
4097
4098						for (var j = 0; j < pathParts.length; j++) {
4099							var part = pathParts[j];
4100							if (obj && typeof obj === 'object' && part in obj) {
4101								obj = obj[part];
4102							} else {
4103								obj = null;
4104								break;
4105							}
4106						}
4107
4108						if (obj !== null) {
4109							console.log('    🔍 TYPE: ' + typeof obj);
4110							if (obj.constructor) console.log('    🏗️  CONSTRUCTOR: ' + obj.constructor.name);
4111
4112							if (Array.isArray(obj)) {
4113								console.log('    📝 ARRAY LENGTH: ' + obj.length.toLocaleString());
4114								if (obj.length > 0) {
4115									var sampleTypes = obj.slice(0, 3).map(function(x) { return typeof x; });
4116									console.log('    🔬 SAMPLE TYPES: ' + sampleTypes.join(', '));
4117
4118									// Show sample content for small arrays
4119									if (obj.length <= 10) {
4120										console.log('    📄 CONTENT: ' + obj.slice(0, 5).map(function(x) {
4121											return typeof x === 'string' ? '"' + x.substring(0, 20) + '"' : String(x).substring(0, 20);
4122										}).join(', '));
4123									}
4124								}
4125							} else if (typeof obj === 'object' && obj !== null) {
4126								var keys = Object.keys(obj);
4127								console.log('    🔑 PROPERTIES: ' + keys.length.toLocaleString());
4128								if (keys.length > 0 && keys.length <= 10) {
4129									console.log('    🏷️  KEYS: ' + keys.join(', '));
4130								} else if (keys.length > 10) {
4131									console.log('    🏷️  SAMPLE KEYS: ' + keys.slice(0, 5).join(', ') + ', ...');
4132								}
4133							} else if (typeof obj === 'string') {
4134								console.log('    📄 STRING LENGTH: ' + obj.length.toLocaleString());
4135								console.log('    👀 PREVIEW: "' + obj.substring(0, 100) + (obj.length > 100 ? '...' : '') + '"');
4136							}
4137						}
4138					} catch (e) {
4139						console.log('    ❌ Cannot analyze: ' + e.message);
4140					}
4141				});
4142			}
4143
4144			if (comparison.newPaths.length > 0) {
4145				console.log('\n🆕 TOP 5 NEW OBJECTS:');
4146				comparison.newPaths.slice(0, 5).forEach(function(newPath, i) {
4147					console.log((i + 1) + '. ' + newPath.path + ': ' + newPath.sizeKB + 'KB');
4148				});
4149			}
4150
4151			console.log('\n💡 TIPS:');
4152			console.log('• Look for arrays that keep growing (length increasing)');
4153			console.log('• Check for objects with more properties over time');
4154			console.log('• Watch for caches that never get cleared');
4155			console.log('• Strings that keep getting longer indicate text accumulation');
4156		;
4157};
4158Native.memoryLeakMonitor = function() {
4159	
4160			console.log('⏱️ MEMORY LEAK - CONTINUOUS MONITORING');
4161			console.log('=' + '='.repeat(40));
4162
4163			if (!window._memoryLeakComparison || !window._memoryLeakComparison.pathChanges.length) {
4164				console.log('❌ No growth paths to monitor!');
4165				console.log('💡 Run Native.memoryLeakStart() and Native.memoryLeakAnalyze() first');
4166				return;
4167			}
4168
4169			// Get top growing paths to monitor
4170			var topPaths = window._memoryLeakComparison.pathChanges.slice(0, 5).map(function(c) { return c.path; });
4171
4172			console.log('🎯 Monitoring these paths for continued growth:');
4173			topPaths.forEach(function(path, i) {
4174				console.log((i + 1) + '. ' + path);
4175			});
4176
4177			// Store initial sizes for monitoring
4178			var initialSizes = new Map();
4179
4180			topPaths.forEach(function(path) {
4181				try {
4182					var pathParts = path.split('.');
4183					var obj = window;
4184
4185					for (var i = 0; i < pathParts.length; i++) {
4186						var part = pathParts[i];
4187						if (obj && typeof obj === 'object' && part in obj) {
4188							obj = obj[part];
4189						} else {
4190							obj = null;
4191							break;
4192						}
4193					}
4194
4195					if (obj !== null) {
4196						var size = Native.estimateObjectSize(obj, new WeakSet(), 0, 2);
4197						initialSizes.set(path, size);
4198					}
4199				} catch (e) {
4200					console.log('Cannot monitor ' + path + ': ' + e.message);
4201				}
4202			});
4203
4204			console.log('✅ Monitoring started - checking every 10 seconds');
4205			console.log('⏹️  Will stop automatically after 2 minutes');
4206			console.log('🛑 Or stop manually with: clearInterval(' + 'window._memoryMonitorId' + ')');
4207
4208			var checkCount = 0;
4209			var maxChecks = 12; // 2 minutes
4210
4211			window._memoryMonitorId = setInterval(function() {
4212				checkCount++;
4213				var anyChanges = false;
4214
4215				console.log('\n📊 Monitor Check #' + checkCount + ':');
4216
4217				initialSizes.forEach(function(initialSize, path) {
4218					try {
4219						var pathParts = path.split('.');
4220						var obj = window;
4221
4222						for (var i = 0; i < pathParts.length; i++) {
4223							var part = pathParts[i];
4224							if (obj && typeof obj === 'object' && part in obj) {
4225								obj = obj[part];
4226							} else {
4227								obj = null;
4228								break;
4229							}
4230						}
4231
4232						if (obj !== null) {
4233							var currentSize = Native.estimateObjectSize(obj, new WeakSet(), 0, 2);
4234							var growth = currentSize - initialSize;
4235
4236							if (Math.abs(growth) > 10000) { // Report changes > 10KB
4237								console.log('  📈 ' + path + ': ' + (growth > 0 ? '+' : '') + Math.round(growth/1024) + 'KB');
4238								anyChanges = true;
4239
4240								// Update initial size for next comparison
4241								initialSizes.set(path, currentSize);
4242							}
4243						}
4244					} catch (e) {
4245						// Skip errors
4246					}
4247				});
4248
4249				if (!anyChanges) {
4250					console.log('  ✅ No significant changes detected');
4251				}
4252
4253				if (checkCount >= maxChecks) {
4254					clearInterval(window._memoryMonitorId);
4255					console.log('\n⏹️ Monitoring stopped after 2 minutes');
4256					delete window._memoryMonitorId;
4257				}
4258			}, 10000);
4259		;
4260};
4261Native.memoryLeakReset = function() {
4262	
4263			console.log('🗑️ MEMORY LEAK ANALYSIS - RESET');
4264			console.log('=' + '='.repeat(30));
4265
4266			// Clear stored data
4267			delete window._memoryLeakBefore;
4268			delete window._memoryLeakAfter;
4269			delete window._memoryLeakComparison;
4270
4271			// Stop monitoring if running
4272			if (window._memoryMonitorId) {
4273				clearInterval(window._memoryMonitorId);
4274				delete window._memoryMonitorId;
4275				console.log('⏹️ Stopped monitoring');
4276			}
4277
4278			console.log('✅ Analysis data cleared');
4279			console.log('💡 Ready for new analysis - call Native.memoryLeakStart()');
4280		;
4281};
4282Native.memoryLeakHelp = function() {
4283	
4284			console.log('❓ MEMORY LEAK ANALYSIS - HELP & USAGE');
4285			console.log('=' + '='.repeat(40));
4286			console.log('');
4287			console.log('🎯 BASIC USAGE (4 simple steps):');
4288			console.log('  1. Native.memoryLeakStart()     - Take initial snapshot');
4289			console.log('  2. [Use your app - navigate, create UI, etc.]');
4290			console.log('  3. Native.memoryLeakAnalyze()   - Find what grew');
4291			console.log('  4. Native.memoryLeakDetails()   - See detailed analysis');
4292			console.log('');
4293			console.log('📊 AVAILABLE FUNCTIONS:');
4294			console.log('  Native.memoryLeakStart()        - Begin analysis (takes snapshot)');
4295			console.log('  Native.memoryLeakAnalyze()      - Compare & find memory growth');
4296			console.log('  Native.memoryLeakDetails()      - Detailed breakdown of growth');
4297			console.log('  Native.memoryLeakMonitor()      - Monitor ongoing growth (2 min)');
4298			console.log('  Native.memoryLeakReset()        - Clear data & start fresh');
4299			console.log('  Native.memoryLeakHelp()         - Show this help');
4300			console.log('');
4301			console.log('💡 EXAMPLE WORKFLOW:');
4302			console.log('  > Native.memoryLeakStart()');
4303			console.log('  📸 Initial snapshot taken...');
4304			console.log('  [Navigate your app, trigger suspected leak]');
4305			console.log('  > Native.memoryLeakAnalyze()');
4306			console.log('  📈 Shows: "PIXI.utils.TextureCache grew +45MB"');
4307			console.log('  > Native.memoryLeakDetails()');
4308			console.log('  🔍 Shows: "Array length: 1,234 textures"');
4309			console.log('');
4310			console.log('🎯 WHAT TO LOOK FOR:');
4311			console.log('  • Arrays that keep getting longer');
4312			console.log('  • Objects with more properties over time');
4313			console.log('  • Caches that never get cleared');
4314			console.log('  • Strings that keep growing');
4315			console.log('  • Texture/image data accumulating');
4316			console.log('');
4317			console.log('⚡ QUICK CHECK - Current memory:');
4318			console.log('  Total: ' + Math.round(Native.evaluateObjectSize(window) / 1024 / 1024) + 'MB');
4319			console.log('  PIXI textures: ' + Object.keys(PIXI.utils.TextureCache).length);
4320			console.log('  DOM elements: ' + document.querySelectorAll('*').length.toLocaleString());
4321		;
4322};
4323Native.analyzeStyleElementsLeak = function() {
4324	
4325			console.log('🎨 Analyzing Style Elements Leak:');
4326			console.log('');
4327
4328			var styleElements = document.querySelectorAll('style');
4329			console.log('📊 Total <style> elements: ' + styleElements.length);
4330
4331			if (styleElements.length > 20) {
4332				console.log('⚠️  WARNING: ' + styleElements.length + ' style elements is excessive!');
4333				console.log('   This suggests CSS is being added without cleanup.');
4334				console.log('');
4335			}
4336
4337			// Analyze style content
4338			var totalStyleContent = 0;
4339			var styleSources = {};
4340			var duplicateStyles = 0;
4341			var seenContent = new Set();
4342
4343			for (var i = 0; i < Math.min(styleElements.length, 50); i++) {
4344				var style = styleElements[i];
4345				var content = style.textContent || style.innerHTML || '';
4346				var contentLength = content.length;
4347				totalStyleContent += contentLength;
4348
4349				// Check for duplicates
4350				if (seenContent.has(content) && content.length > 10) {
4351					duplicateStyles++;
4352				}
4353				seenContent.add(content);
4354
4355				// Try to identify source
4356				var source = 'unknown';
4357				if (content.includes('pixi')) source = 'PIXI';
4358				else if (content.includes('material') || content.includes('Material')) source = 'Material';
4359				else if (content.includes('flow') || content.includes('Flow')) source = 'Flow';
4360				else if (content.includes('font')) source = 'Font';
4361				else if (content.length < 100) source = 'small';
4362				else source = 'large';
4363
4364				styleSources[source] = (styleSources[source] || 0) + 1;
4365
4366				// Show first few for inspection
4367				if (i < 5) {
4368					console.log('Style ' + (i+1) + ': ' + contentLength + ' chars, source: ' + source);
4369					if (contentLength < 200) {
4370						console.log('   Content: ' + content.substring(0, 100) + (content.length > 100 ? '...' : ''));
4371					}
4372				}
4373			}
4374
4375			console.log('');
4376			console.log('📈 Style Statistics:');
4377			console.log('   Total style content: ' + Math.round(totalStyleContent / 1024) + 'KB');
4378			console.log('   Duplicate styles: ' + duplicateStyles);
4379			console.log('   Average size per style: ' + Math.round(totalStyleContent / styleElements.length) + ' chars');
4380
4381			console.log('');
4382			console.log('🏷️  Style sources:');
4383			Object.keys(styleSources).forEach(function(source) {
4384				console.log('   ' + source + ': ' + styleSources[source] + ' elements');
4385			});
4386
4387			// Recommendations
4388			console.log('');
4389			console.log('💡 Recommendations:');
4390			if (styleElements.length > 50) {
4391				console.log('   🔴 CRITICAL: ' + styleElements.length + ' style elements indicates a severe CSS leak');
4392				console.log('   🔧 Check for: CSS being added on every render/update cycle');
4393			}
4394			if (duplicateStyles > 5) {
4395				console.log('   🟡 ' + duplicateStyles + ' duplicate styles - check for redundant CSS insertion');
4396			}
4397			if (styleSources.PIXI > 10) {
4398				console.log('   🎯 PIXI styles: ' + styleSources.PIXI + ' - check PIXI CSS generation');
4399			}
4400		;
4401};
4402Native.copyAction = function(textArea) {
4403	try {
4404		textArea.select();
4405		var successful = window.document.execCommand("copy");
4406		if(!successful) {
4407			Errors.warning("Browser \"copy\" command execution was unsuccessful");
4408		}
4409	} catch( _g ) {
4410		haxe_NativeStackTrace.lastError = _g;
4411		Errors.report("Oops, unable to copy");
4412	}
4413};
4414Native.setClipboard = function(text) {
4415	var focusedElement = window.document.activeElement;
4416	if(window.clipboardData && window.clipboardData.setData) {
4417		window.clipboardData.setData("Text",text);
4418	} else if($global.navigator.clipboard && ($_=$global.navigator.clipboard,$bind($_,$_.writeText))) {
4419		$global.navigator.clipboard.writeText(text);
4420	} else {
4421		var textArea = Native.createInvisibleTextArea();
4422		textArea.value = text;
4423		if(text.length < 10000) {
4424			Native.copyAction(textArea);
4425			window.document.body.removeChild(textArea);
4426		} else {
4427			setTimeout(function() {
4428				Native.copyAction(textArea);
4429				window.document.body.removeChild(textArea);
4430			},0);
4431		}
4432	}
4433	focusedElement.focus();
4434	Native.clipboardData = text;
4435};
4436Native.getClipboard = function() {
4437	if(window.clipboardData && window.clipboardData.getData) {
4438		return window.clipboardData.getData("Text");
4439	}
4440	if(Native.isNew) {
4441		return Native.clipboardData;
4442	}
4443	var focusedElement = window.document.activeElement;
4444	var result = Native.clipboardData;
4445	var textArea = Native.createInvisibleTextArea();
4446	textArea.value = "";
4447	textArea.select();
4448	try {
4449		
4450					if (typeof RenderSupport !== 'undefined') {
4451						RenderSupport.disablePasteEventListener();
4452					}
4453				;
4454		var successful = window.document.execCommand("paste");
4455		if(successful) {
4456			result = textArea.value;
4457		} else {
4458			Errors.warning("Browser \"paste\" command execution was unsuccessful");
4459		}
4460	} catch( _g ) {
4461		haxe_NativeStackTrace.lastError = _g;
4462		Errors.report("Oops, unable to paste");
4463	}
4464	
4465				if (typeof RenderSupport !== 'undefined') {
4466					RenderSupport.enablePasteEventListener();
4467				}
4468			;
4469	window.document.body.removeChild(textArea);
4470	
4471				if (typeof RenderSupport !== 'undefined') {
4472					RenderSupport.deferUntilRender(function() {
4473						focusedElement.focus();
4474					});
4475				} else {
4476					focusedElement.focus();
4477				}
4478			;
4479	return result;
4480};
4481Native.getClipboardToCB = function(callback) {
4482	if(window.clipboardData && window.clipboardData.getData) {
4483		callback(window.clipboardData.getData("Text"));
4484	} else if(navigator.clipboard && navigator.clipboard.readText) {
4485		navigator.clipboard.readText().then(callback,function(e) {
4486			Errors.print(e);
4487		});
4488	} else {
4489		callback(Native.clipboardData);
4490	}
4491};
4492Native.setCurrentDirectory = function(path) {
4493};
4494Native.getCurrentDirectory = function() {
4495	return "";
4496};
4497Native.getClipboardFormat = function(mimetype) {
4498	if(mimetype == "html" || mimetype == "text/html") {
4499		return Native.clipboardDataHtml;
4500	} else {
4501		return "";
4502	}
4503};
4504Native.getApplicationPath = function() {
4505	return "";
4506};
4507Native.getApplicationArguments = function() {
4508	return [];
4509};
4510Native.toString = function(value,keepStringEscapes) {
4511	if(keepStringEscapes == null) {
4512		keepStringEscapes = false;
4513	}
4514	return HaxeRuntime.toString(value,keepStringEscapes);
4515};
4516Native.toStringForJson = function(value) {
4517	return HaxeRuntime.toStringForJson(value);
4518};
4519Native.gc = function() {
4520};
4521Native.addHttpHeader = function(data) {
4522};
4523Native.getCgiParameter = function(name) {
4524	return "";
4525};
4526Native.subrange = function(arr,start,len) {
4527	if(start < 0 || len < 1) {
4528		return [];
4529	} else {
4530		return arr.slice(start,start + len);
4531	}
4532};
4533Native.removeIndex = function(src,index) {
4534	if(index >= 0 && index < src.length) {
4535		var dst = new Array(src.length - 1);
4536		var i = 0;
4537		while(i < index) {
4538			dst[i] = src[i];
4539			++i;
4540		}
4541		while(i < dst.length) {
4542			dst[i] = src[i + 1];
4543			++i;
4544		}
4545		return dst;
4546	} else {
4547		return src;
4548	}
4549};
4550Native.isArray = function(a) {
4551	return Array.isArray(a);
4552};
4553Native.isSameStructType = function(a,b) {
4554	if(!Array.isArray(a) && !Array.isArray(b) && Object.prototype.hasOwnProperty.call(a,"_id") && Object.prototype.hasOwnProperty.call(b,"_id")) {
4555		return a._id == b._id;
4556	} else {
4557		return false;
4558	}
4559};
4560Native.isSameObj = function(a,b) {
4561	if(a == b) {
4562		return true;
4563	}
4564	if(a != null && b != null && Object.prototype.hasOwnProperty.call(a,"_id") && a._id == b._id && HaxeRuntime._structargs_.h[a._id].length == 0) {
4565		return true;
4566	}
4567	return false;
4568};
4569Native.length__ = function(arr) {
4570	return arr.length;
4571};
4572Native.strSplit = function(str,separator) {
4573	return str.split(separator);
4574};
4575Native.strlen = function(s) {
4576	return s.length;
4577};
4578Native.strIndexOf = function(str,substr) {
4579	return str.indexOf(substr,0);
4580};
4581Native.strRangeIndexOf = function(str,substr,start,end) {
4582	if(str == "" || start < 0) {
4583		return -1;
4584	}
4585	var s = start;
4586	var e = end > str.length || end < 0 ? str.length : end;
4587	if(substr.length == 0) {
4588		return 0;
4589	} else if(substr.length > e - s) {
4590		return -1;
4591	}
4592	if(2 * (e - s) < str.length - s) {
4593		if(end >= str.length) {
4594			return str.indexOf(substr,start);
4595		}
4596		var rv = HxOverrides.substr(str,start,end - start).indexOf(substr,0);
4597		if(rv < 0) {
4598			return rv;
4599		} else {
4600			return start + rv;
4601		}
4602	} else {
4603		var pos = str.indexOf(substr,s);
4604		var finish = pos + substr.length - 1;
4605		if(pos < 0) {
4606			return -1;
4607		} else if(finish < e) {
4608			return pos;
4609		} else {
4610			return -1;
4611		}
4612	}
4613};
4614Native.substring = function(str,start,end) {
4615	var s = HxOverrides.substr(str,start,end);
4616	if(2 * s.length < str.length) {
4617		return (" " + s).slice(1);
4618	} else {
4619		return s;
4620	}
4621};
4622Native.cloneString = function(str) {
4623	return (" " + str).slice(1);
4624};
4625Native.toLowerCase = function(str) {
4626	return str.toLowerCase();
4627};
4628Native.toUpperCase = function(str) {
4629	return str.toUpperCase();
4630};
4631Native.strReplace = function(str,find,replace) {
4632	return StringTools.replace(str,find,replace);
4633};
4634Native.string2utf8 = function(str) {
4635	var bytes = haxe_io_Bytes.ofString(str);
4636	var _g = [];
4637	var _g1 = 0;
4638	var _g2 = bytes.length;
4639	while(_g1 < _g2) {
4640		var i = _g1++;
4641		_g.push(bytes.b[i]);
4642	}
4643	var a = _g;
4644	return a;
4645};
4646Native.s2a = function(str) {
4647	var arr = [];
4648	var _g = 0;
4649	var _g1 = str.length;
4650	while(_g < _g1) {
4651		var i = _g++;
4652		arr.push(HxOverrides.cca(str,i));
4653	}
4654	return arr;
4655};
4656Native.list2string = function(h) {
4657	var res = "";
4658	while(Object.prototype.hasOwnProperty.call(h,"head")) {
4659		var s = Std.string(h.head);
4660		res = s + res;
4661		h = h.tail;
4662	}
4663	return res;
4664};
4665Native.list2arrayMapi = function(h,clos) {
4666	var cnt = 0;
4667	var p = h;
4668	while(Object.prototype.hasOwnProperty.call(p,"head")) {
4669		++cnt;
4670		p = p.tail;
4671	}
4672	if(cnt == 0) {
4673		return Array(0);
4674	}
4675	var result = Array(cnt);
4676	p = h;
4677	--cnt;
4678	while(cnt >= 0) {
4679		result[cnt] = clos(cnt,p.head);
4680		--cnt;
4681		p = p.tail;
4682	}
4683	return result;
4684};
4685Native.list2array = function(h) {
4686	return Native.list2arrayMapi(h,function(i,li) {
4687		return li;
4688	});
4689};
4690Native.list2arrayByCount = function(h,count) {
4691	if(count <= 0) {
4692		return Array(0);
4693	}
4694	var result = Array(count);
4695	var cnt = count - 1;
4696	var p = h;
4697	while(cnt >= 0) {
4698		result[cnt] = p.head;
4699		--cnt;
4700		p = p.tail;
4701	}
4702	return result;
4703};
4704Native.bitXor = function(a,b) {
4705	return a ^ b;
4706};
4707Native.bitAnd = function(a,b) {
4708	return a & b;
4709};
4710Native.bitOr = function(a,b) {
4711	return a | b;
4712};
4713Native.bitUshr = function(a,b) {
4714	return a >>> b;
4715};
4716Native.bitShl = function(a,b) {
4717	return a << b;
4718};
4719Native.bitNot = function(a) {
4720	return ~a;
4721};
4722Native.concat = function(arr1,arr2) {
4723	return arr1.concat(arr2);
4724};
4725Native.replace = function(arr,i,v) {
4726	if(arr == null) {
4727		return [];
4728	} else if(i < 0 || i > arr.length) {
4729		Native.println("replace: array index is out of bounds: " + HaxeRuntime.toString(i,false) + " of " + HaxeRuntime.toString(arr.length,false));
4730		Native.println(haxe_CallStack.toString(haxe_CallStack.callStack()));
4731		return arr;
4732	} else if(i == arr.length && Native.useConcatForPush) {
4733		return arr.concat([v]);
4734	} else {
4735		var new_arr = arr.slice(0,arr.length);
4736		new_arr[i] = v;
4737		return new_arr;
4738	}
4739};
4740Native.map = function(values,clos) {
4741	var n = values.length;
4742	var result = Array(n);
4743	var _g = 0;
4744	var _g1 = n;
4745	while(_g < _g1) {
4746		var i = _g++;
4747		result[i] = clos(values[i]);
4748	}
4749	return result;
4750};
4751Native.iter = function(values,clos) {
4752	var _g = 0;
4753	while(_g < values.length) {
4754		var v = values[_g];
4755		++_g;
4756		clos(v);
4757	}
4758};
4759Native.mapi = function(values,clos) {
4760	var n = values.length;
4761	var result = Array(n);
4762	var _g = 0;
4763	var _g1 = n;
4764	while(_g < _g1) {
4765		var i = _g++;
4766		result[i] = clos(i,values[i]);
4767	}
4768	return result;
4769};
4770Native.iteri = function(values,clos) {
4771	var i = 0;
4772	var _g = 0;
4773	while(_g < values.length) {
4774		var v = values[_g];
4775		++_g;
4776		clos(i,v);
4777		++i;
4778	}
4779};
4780Native.iteriUntil = function(values,clos) {
4781	var i = 0;
4782	var _g = 0;
4783	while(_g < values.length) {
4784		var v = values[_g];
4785		++_g;
4786		if(clos(i,v)) {
4787			return i;
4788		}
4789		++i;
4790	}
4791	return i;
4792};
4793Native.fold = function(values,init,fn) {
4794	var _g = 0;
4795	while(_g < values.length) {
4796		var v = values[_g];
4797		++_g;
4798		init = fn(init,v);
4799	}
4800	return init;
4801};
4802Native.foldi = function(values,init,fn) {
4803	var i = 0;
4804	var _g = 0;
4805	while(_g < values.length) {
4806		var v = values[_g];
4807		++_g;
4808		init = fn(i,init,v);
4809		++i;
4810	}
4811	return init;
4812};
4813Native.filter = function(values,clos) {
4814	var result = [];
4815	var _g = 0;
4816	while(_g < values.length) {
4817		var v = values[_g];
4818		++_g;
4819		if(clos(v)) {
4820			result.push(v);
4821		}
4822	}
4823	return result;
4824};
4825Native.filtermapi = function(values,clos) {
4826	var result = [];
4827	var n = values.length;
4828	var _g = 0;
4829	var _g1 = n;
4830	while(_g < _g1) {
4831		var i = _g++;
4832		var v = values[i];
4833		var maybe = clos(i,v);
4834		var fields = Reflect.fields(maybe);
4835		if(fields.length == 2) {
4836			var _g2 = 0;
4837			while(_g2 < fields.length) {
4838				var f = fields[_g2];
4839				++_g2;
4840				if(f != "_id") {
4841					var val = Reflect.field(maybe,f);
4842					result.push(val);
4843				}
4844			}
4845		}
4846	}
4847	return result;
4848};
4849Native.mapiM = function(values,clos) {
4850	var result = [];
4851	var n = values.length;
4852	var _g = 0;
4853	var _g1 = n;
4854	while(_g < _g1) {
4855		var i = _g++;
4856		var v = values[i];
4857		var maybe = clos(i,v);
4858		var fields = Reflect.fields(maybe);
4859		if(fields.length == 2) {
4860			var _g2 = 0;
4861			while(_g2 < fields.length) {
4862				var f = fields[_g2];
4863				++_g2;
4864				if(f != "_id") {
4865					var val = Reflect.field(maybe,f);
4866					result.push(val);
4867				}
4868			}
4869		} else {
4870			return maybe;
4871		}
4872	}
4873	return HaxeRuntime.makeStructValue("Some",[result],HaxeRuntime.makeStructValue("IllegalStruct",[],null));
4874};
4875Native.random = function() {
4876	return Math.random();
4877};
4878Native.makeUuid = function() {
4879	return Crypto.randomUUID();
4880};
4881Native.deleteNative = function(clip) {
4882	if(clip != null && !clip.destroyed) {
4883		if(clip.destroy != null) {
4884			clip.destroy({ children : true, texture : true, baseTexture : true});
4885		}
4886		if(clip.parent != null && clip.parent.removeChild != null) {
4887			clip.parent.removeChild(clip);
4888		}
4889		if(!Platform.isIE && clip.nativeWidget != null) {
4890			clip.nativeWidget.style.display = "none";
4891		}
4892		
4893				if (typeof RenderSupport !== 'undefined' && (clip.nativeWidget != null || clip.accessWidget != null)) {
4894					RenderSupport.once('drawframe', function() {
4895						DisplayObjectHelper.deleteNativeWidget(clip);
4896					});
4897				}
4898			;
4899		clip.destroyed = true;
4900	}
4901};
4902Native.timestamp = function() {
4903	return NativeTime.timestamp();
4904};
4905Native.getLocalTimezoneId = function() {
4906	return new Intl.DateTimeFormat().resolvedOptions().timeZone;
4907};
4908Native.getTimezoneTimeString = function(utcStamp,timezoneId,language) {
4909	var date = new Date(utcStamp);
4910	var tzName = "short";
4911	if(timezoneId == "") {
4912		timezoneId = "UTC";
4913	}
4914	var tz = timezoneId;
4915	return date.toLocaleString(language,{ timeZone : tz, timeZoneName : tzName});
4916};
4917Native.getTimezoneOffset = function(utcStamp,timezoneId) {
4918	if(timezoneId == "") {
4919		return 0;
4920	}
4921	var tz = timezoneId;
4922	var stamp;
4923	try {
4924		var timeString = new Date(utcStamp).toLocaleString("en-us",{ timeZone : tz});
4925		stamp = new Date(timeString).getTime();
4926	} catch( _g ) {
4927		haxe_NativeStackTrace.lastError = _g;
4928		return 0;
4929	}
4930	var localOffset = new Date(utcStamp).getTimezoneOffset();
4931	return Math.round(Math.round((stamp - utcStamp) / 600) / 100 - localOffset) * 60 * 1000;
4932};
4933Native.getCurrentDate = function() {
4934	var date = new Date();
4935	return HaxeRuntime.makeStructValue("Date",[date.getFullYear(),date.getMonth() + 1,date.getDate()],HaxeRuntime.makeStructValue("IllegalStruct",[],null));
4936};
4937Native.defer = function(cb) {
4938	var fn = function() {
4939		var t0 = NativeTime.timestamp();
4940		while(NativeTime.timestamp() - t0 < Native.deferTolerance && Native.DeferQueue.length > 0) {
4941			var f = Native.DeferQueue.shift();
4942			f();
4943		}
4944		if(Native.DeferQueue.length > 0) {
4945			setTimeout(fn, 42);
4946		} else {
4947			Native.deferActive = false;
4948		}
4949	};
4950	if(Native.deferActive) {
4951		Native.DeferQueue.push(cb);
4952	} else {
4953		Native.deferActive = true;
4954		Native.DeferQueue.push(cb);
4955		setTimeout(fn, 0);
4956	}
4957};
4958Native.setInterval = function(ms,cb) {
4959	var fn = function() {
4960		try {
4961			cb();
4962		} catch( _g ) {
4963			haxe_NativeStackTrace.lastError = _g;
4964			var e = haxe_Exception.caught(_g).unwrap();
4965			var stackAsString = "n/a";
4966			var actualStack = Assert.callStackToString(haxe_CallStack.callStack());
4967			var crashInfo = Std.string(e) + "\nStack at timer creation:\n" + stackAsString + "\nStack:\n" + actualStack;
4968			Native.println("FATAL ERROR: timer callback: " + crashInfo);
4969			Assert.printStack(e);
4970			Native.callFlowCrashHandlers("[Timer Handler]: " + crashInfo);
4971		}
4972	};
4973	var t = setInterval(fn, ms);
4974	return function() {
4975		clearInterval(t);
4976	};
4977};
4978Native.interruptibleTimer = function(ms,cb) {
4979	var fn = function() {
4980		try {
4981			cb();
4982		} catch( _g ) {
4983			haxe_NativeStackTrace.lastError = _g;
4984			var e = haxe_Exception.caught(_g).unwrap();
4985			var stackAsString = "n/a";
4986			var actualStack = Assert.callStackToString(haxe_CallStack.callStack());
4987			var crashInfo = Std.string(e) + "\nStack at timer creation:\n" + stackAsString + "\nStack:\n" + actualStack;
4988			Native.println("FATAL ERROR: timer callback: " + crashInfo);
4989			Assert.printStack(e);
4990			Native.callFlowCrashHandlers("[Timer Handler]: " + crashInfo);
4991		}
4992	};
4993	if(ms == 0) {
4994		var alive = true;
4995		Native.defer(function() {
4996			if(alive) {
4997				fn();
4998			}
4999		});
5000		return function() {
5001			alive = false;
5002		};
5003	}
5004	var t = setTimeout(fn, ms);
5005	return function() {
5006		clearTimeout(t);
5007	};
5008};
5009Native.timer = function(ms,cb) {
5010	Native.interruptibleTimer(ms,cb);
5011};
5012Native.sin = function(a) {
5013	return Math.sin(a);
5014};
5015Native.asin = function(a) {
5016	return Math.asin(a);
5017};
5018Native.acos = function(a) {
5019	return Math.acos(a);
5020};
5021Native.atan = function(a) {
5022	return Math.atan(a);
5023};
5024Native.atan2 = function(a,b) {
5025	return Math.atan2(a,b);
5026};
5027Native.exp = function(a) {
5028	return Math.exp(a);
5029};
5030Native.log = function(a) {
5031	return Math.log(a);
5032};
5033Native.generate = function(from,to,fn) {
5034	var n = to - from;
5035	if(n <= 0) {
5036		return Array(0);
5037	}
5038	var result = Array(n);
5039	var _g = 0;
5040	var _g1 = n;
5041	while(_g < _g1) {
5042		var i = _g++;
5043		result[i] = fn(i + from);
5044	}
5045	return result;
5046};
5047Native.enumFromTo = function(from,to) {
5048	var n = to - from + 1;
5049	if(n <= 0) {
5050		return Array(0);
5051	}
5052	var result = Array(n);
5053	var _g = 0;
5054	var _g1 = n;
5055	while(_g < _g1) {
5056		var i = _g++;
5057		result[i] = i + from;
5058	}
5059	return result;
5060};
5061Native.getAllUrlParameters = function() {
5062	var parameters_h = Object.create(null);
5063	var paramString = window.location.search.substring(1);
5064	var params = paramString.split("&");
5065	var _g = 0;
5066	while(_g < params.length) {
5067		var keyvalue = params[_g];
5068		++_g;
5069		var pair = keyvalue.split("=");
5070		var value = pair.length > 1 ? decodeURIComponent(pair[1].split("+").join(" ")) : "";
5071		parameters_h[pair[0]] = value;
5072	}
5073	var i = 0;
5074	var result = [];
5075	var h = parameters_h;
5076	var key_h = h;
5077	var key_keys = Object.keys(h);
5078	var key_length = key_keys.length;
5079	var key_current = 0;
5080	while(key_current < key_length) {
5081		var key = key_keys[key_current++];
5082		var keyvalue = [];
5083		keyvalue[0] = key;
5084		keyvalue[1] = parameters_h[key];
5085		result[i] = keyvalue;
5086		++i;
5087	}
5088	if (typeof predefinedBundleParams != 'undefined') {result = mergePredefinedParams(result, predefinedBundleParams);}
5089	return result;
5090};
5091Native.getUrlParameter = function(name) {
5092	var value = "";
5093	value = Util.getParameter(name);
5094	if(value != null) {
5095		return value;
5096	} else {
5097		return "";
5098	}
5099};
5100Native.isTouchScreen = function() {
5101	if(!Platform.isMobile) {
5102		return (('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch) || window.matchMedia('(pointer: coarse)').matches);
5103	} else {
5104		return true;
5105	}
5106};
5107Native.getTargetName = function() {
5108	return "js,jslibrary";
5109};
5110Native.isIE = function() {
5111	return window.navigator.userAgent.indexOf("MSIE") >= 0;
5112};
5113Native.setKeyValue = function(k,v) {
5114	return Native.setKeyValueJS(k,v,false);
5115};
5116Native.getKeyValue = function(key,def) {
5117	return Native.getKeyValueJS(key,def,false);
5118};
5119Native.removeKeyValue = function(key) {
5120	var useMask = StringTools.endsWith(key,"*");
5121	var mask = "";
5122	if(useMask) {
5123		mask = HxOverrides.substr(key,0,key.length - 1);
5124	}
5125	Native.removeKeyValueJS(key,false);
5126};
5127Native.removeAllKeyValues = function() {
5128	Native.removeAllKeyValuesJS(false);
5129};
5130Native.getKeysList = function() {
5131	return Native.getKeysListJS(false);
5132};
5133Native.setSessionKeyValue = function(k,v) {
5134	return Native.setKeyValueJS(k,v,true);
5135};
5136Native.getSessionKeyValue = function(key,def) {
5137	return Native.getKeyValueJS(key,def,true);
5138};
5139Native.removeSessionKeyValue = function(key) {
5140	Native.removeKeyValueJS(key,true);
5141};
5142Native.setKeyValueJS = function(k,v,session) {
5143	try {
5144		var storage = session ? sessionStorage : localStorage;
5145		if(Native.isIE()) {
5146			var tmp = encodeURIComponent(v);
5147			storage.setItem(k,tmp);
5148		} else {
5149			storage.setItem(k,v);
5150		}
5151		return true;
5152	} catch( _g ) {
5153		haxe_NativeStackTrace.lastError = _g;
5154		var e = haxe_Exception.caught(_g).unwrap();
5155		Errors.report("Cannot set value for key \"" + k + "\": " + Std.string(e));
5156		return false;
5157	}
5158};
5159Native.getKeyValueJS = function(key,def,session) {
5160	try {
5161		var storage = session ? sessionStorage : localStorage;
5162		var value = storage.getItem(key);
5163		if(null == value) {
5164			return def;
5165		}
5166		if(Native.isIE()) {
5167			return decodeURIComponent(value.split("+").join(" "));
5168		} else {
5169			return value;
5170		}
5171	} catch( _g ) {
5172		haxe_NativeStackTrace.lastError = _g;
5173		var e = haxe_Exception.caught(_g).unwrap();
5174		Errors.report("Cannot get value for key \"" + key + "\": " + Std.string(e));
5175		return def;
5176	}
5177};
5178Native.removeKeyValueJS = function(key,session) {
5179	var useMask = StringTools.endsWith(key,"*");
5180	var mask = "";
5181	if(useMask) {
5182		mask = HxOverrides.substr(key,0,key.length - 1);
5183	}
5184	try {
5185		var storage = session ? sessionStorage : localStorage;
5186		if(storage.length == 0) {
5187			return;
5188		}
5189		if(useMask) {
5190			var nextKey;
5191			var _g = 0;
5192			var _g1 = storage.length;
5193			while(_g < _g1) {
5194				var i = _g++;
5195				nextKey = storage.key(i);
5196				if(StringTools.startsWith(nextKey,mask)) {
5197					storage.removeItem(nextKey);
5198				}
5199			}
5200		} else {
5201			storage.removeItem(key);
5202		}
5203	} catch( _g ) {
5204		haxe_NativeStackTrace.lastError = _g;
5205		var e = haxe_Exception.caught(_g).unwrap();
5206		Errors.report("Cannot remove key \"" + key + "\": " + Std.string(e));
5207	}
5208};
5209Native.removeAllKeyValuesJS = function(session) {
5210	try {
5211		var storage = session ? sessionStorage : localStorage;
5212		storage.clear();
5213	} catch( _g ) {
5214		haxe_NativeStackTrace.lastError = _g;
5215		var e = haxe_Exception.caught(_g).unwrap();
5216		Errors.report("Cannot clear storage: " + Std.string(e));
5217	}
5218};
5219Native.getKeysListJS = function(session) {
5220	try {
5221		var storage = session ? sessionStorage : localStorage;
5222		return Object.keys(storage);
5223	} catch( _g ) {
5224		haxe_NativeStackTrace.lastError = _g;
5225		var e = haxe_Exception.caught(_g).unwrap();
5226		Errors.report("Cannot get keys list: " + Std.string(e));
5227		return [];
5228	}
5229};
5230Native.clearTrace = function() {
5231};
5232Native.printCallstack = function() {
5233	console.trace();
5234};
5235Native.captureCallstack = function() {
5236	return null;
5237};
5238Native.callstack2string = function(c) {
5239	return "";
5240};
5241Native.captureStringCallstack = function() {
5242	return StringTools.replace(StringTools.replace(new Error().stack,"    at ",""),"Error\n","");
5243};
5244Native.captureCallstackItem = function(index) {
5245	return null;
5246};
5247Native.impersonateCallstackItem = function(item,index) {
5248};
5249Native.impersonateCallstackFn = function(fn,index) {
5250};
5251Native.impersonateCallstackNone = function(index) {
5252};
5253Native.failWithError = function(e) {
5254	throw haxe_Exception.thrown("Runtime failure: " + e);
5255};
5256Native.makeStructValue = function(name,args,default_value) {
5257	return HaxeRuntime.makeStructValue(name,args,default_value);
5258};
5259Native.extractStructArguments = function(value) {
5260	return HaxeRuntime.extractStructArguments(value);
5261};
5262Native.quit = function(c) {
5263	window.open("","_top").close();
5264};
5265Native.getFileContent = function(file) {
5266	return "";
5267};
5268Native.getFileContentBinary = function(file) {
5269	throw haxe_Exception.thrown("Not implemented for this target: getFileContentBinary");
5270};
5271Native.setFileContent = function(file,content) {
5272	Errors.print("setFileContent '" + file + "' does not work in this target. Use the C++ runner");
5273	return false;
5274};
5275Native.setFileContentUTF16 = function(file,content) {
5276	return false;
5277};
5278Native.setFileContentBinaryConvertToUTF8 = function(file,content) {
5279	return Native.setFileContentBinaryCommon(file,content,true);
5280};
5281Native.setFileContentBinary = function(file,content) {
5282	return Native.setFileContentBinaryCommon(file,content,false);
5283};
5284Native.setFileContentBinaryCommon = function(file,content,convertToUTF8) {
5285	try {
5286		var a = window.document.createElement("a");
5287		a.download = file;
5288		window.document.body.appendChild(a);
5289		if(convertToUTF8 || Util.getParameter("save_file_utf8") == "1") {
5290			var fileBlob = new Blob([content],{ type : "application/octet-stream"});
5291			var url = URL.createObjectURL(fileBlob);
5292			a.href = url;
5293			a.click();
5294			Native.defer(function() {
5295				URL.revokeObjectURL(url);
5296			});
5297		} else {
5298			if(content.startsWith(String.fromCodePoint(65279))) {
5299				content = content.substr(1);
5300			}
5301			var base64data = window.btoa(content);
5302			a.href = "data:application/octet-stream;base64," + base64data;
5303			a.click();
5304		}
5305		Native.defer(function() {
5306			window.document.body.removeChild(a);
5307		});
5308		return true;
5309	} catch( _g ) {
5310		haxe_NativeStackTrace.lastError = _g;
5311		if(convertToUTF8) {
5312			return false;
5313		} else {
5314			return Native.setFileContentBinaryCommon(file,content,true);
5315		}
5316	}
5317};
5318Native.setFileContentBytes = function(file,content) {
5319	return Native.setFileContentBinary(file,content);
5320};
5321Native.startProcess = function(command,args,cwd,stdIn,onExit) {
5322	return false;
5323};
5324Native.runProcess = function(command,args,cwd,onstdout,onstderr,onExit) {
5325	return false;
5326};
5327Native.startDetachedProcess = function(command,args,cwd) {
5328	return false;
5329};
5330Native.writeProcessStdin = function(process,arg) {
5331	return false;
5332};
5333Native.killProcess = function(process) {
5334	return false;
5335};
5336Native.fromCharCode = function(c) {
5337	return String.fromCodePoint(c);
5338};
5339Native.utc2local = function(stamp) {
5340	return NativeTime.utc2local(stamp);
5341};
5342Native.local2utc = function(stamp) {
5343	return NativeTime.local2utc(stamp);
5344};
5345Native.string2time = function(date) {
5346	return NativeTime.string2time(date);
5347};
5348Native.dayOfWeek = function(year,month,day) {
5349	return NativeTime.dayOfWeek(year,month,day);
5350};
5351Native.time2string = function(date) {
5352	return NativeTime.time2string(date);
5353};
5354Native.getUrl = function(u,t) {
5355	Native.getUrlBasic(u,t);
5356};
5357Native.getUrlAutoclose = function(u,t,delay) {
5358	Native.getUrlBasic(u,t,delay);
5359};
5360Native.getUrlBasic = function(u,t,autoCloseDelay) {
5361	if(autoCloseDelay == null) {
5362		autoCloseDelay = -1;
5363	}
5364	try {
5365		var needsRef = autoCloseDelay >= 0;
5366		var features = t == "_blank" && !needsRef ? "noopener" : "";
5367		var openedWindow = window.open(u,t,features);
5368		if(needsRef && openedWindow != null) {
5369			openedWindow.addEventListener("pageshow",function() {
5370				Native.timer(autoCloseDelay,function() {
5371					openedWindow.close();
5372				});
5373			});
5374		}
5375	} catch( _g ) {
5376		haxe_NativeStackTrace.lastError = _g;
5377		var e = haxe_Exception.caught(_g).unwrap();
5378		if(e != null && e.number != -2147467259) {
5379			throw haxe_Exception.thrown(e);
5380		}
5381	}
5382};
5383Native.getUrl2 = function(u,t) {
5384	try {
5385		if(t == "_blank") {
5386			window.open(u,t,"noopener");
5387			return true;
5388		}
5389		return window.open(u,t) != null;
5390	} catch( _g ) {
5391		haxe_NativeStackTrace.lastError = _g;
5392		var e = haxe_Exception.caught(_g).unwrap();
5393		if(e != null && e.number != -2147467259) {
5394			throw haxe_Exception.thrown(e);
5395		} else {
5396			Errors.report(e);
5397		}
5398		return false;
5399	}
5400};
5401Native.openBlankWindow = function() {
5402	try {
5403		var w = window.open("about:blank","_blank");
5404		if(w == null) {
5405			return 0;
5406		}
5407		var id = Native.openedWindowsNextId++;
5408		Native.openedWindows.h[id] = w;
5409		return id;
5410	} catch( _g ) {
5411		haxe_NativeStackTrace.lastError = _g;
5412		var e = haxe_Exception.caught(_g).unwrap();
5413		if(e != null && e.number != -2147467259) {
5414			throw haxe_Exception.thrown(e);
5415		}
5416		return 0;
5417	}
5418};
5419Native.setWindowUrlById = function(id,url) {
5420	try {
5421		var w = Native.openedWindows.h[id];
5422		if(w != null && !w.closed) {
5423			w.location.href = url;
5424			Native.openedWindows.remove(id);
5425			return true;
5426		} else {
5427			Native.openedWindows.remove(id);
5428			window.open(url,"_blank","noopener");
5429			return false;
5430		}
5431	} catch( _g ) {
5432		haxe_NativeStackTrace.lastError = _g;
5433		var e = haxe_Exception.caught(_g).unwrap();
5434		if(e != null && e.number != -2147467259) {
5435			throw haxe_Exception.thrown(e);
5436		}
5437		return false;
5438	}
5439};
5440Native.closeWindowById = function(id) {
5441	try {
5442		var w = Native.openedWindows.h[id];
5443		if(w != null && !w.closed) {
5444			w.close();
5445		}
5446		Native.openedWindows.remove(id);
5447	} catch( _g ) {
5448		haxe_NativeStackTrace.lastError = _g;
5449		var e = haxe_Exception.caught(_g).unwrap();
5450		if(e != null && e.number != -2147467259) {
5451			throw haxe_Exception.thrown(e);
5452		}
5453	}
5454};
5455Native.getCharCodeAt = function(s,i) {
5456	return HxOverrides.cca(s,i);
5457};
5458Native.loaderUrl = function() {
5459	return window.location.href;
5460};
5461Native.number2double = function(n) {
5462	return n;
5463};
5464Native.stringbytes2double = function(s) {
5465	return Native.stringToDouble(s);
5466};
5467Native.stringbytes2int = function(s) {
5468	return HxOverrides.cca(s,0) | HxOverrides.cca(s,1) << 16;
5469};
5470Native.initBinarySerialization = function() {
5471	if(typeof(ArrayBuffer) == "undefined" || typeof(Float64Array) == "undefined") {
5472		var binaryParser = new js_BinaryParser(false,false);
5473		Native.doubleToString = function(value) {
5474			return Native.packDoubleBytes(binaryParser.fromDouble(value));
5475		};
5476		Native.stringToDouble = function(str) {
5477			return binaryParser.toDouble(Native.unpackDoubleBytes(str));
5478		};
5479	} else {
5480		var arrayBuffer = new ArrayBuffer(16);
5481		var uint16Array = new Uint16Array(arrayBuffer);
5482		var float64Array = new Float64Array(arrayBuffer);
5483		Native.doubleToString = function(value) {
5484			float64Array[0] = value;
5485			var ret_b = "";
5486			ret_b += String.fromCodePoint(uint16Array[0]);
5487			ret_b += String.fromCodePoint(uint16Array[1]);
5488			ret_b += String.fromCodePoint(uint16Array[2]);
5489			ret_b += String.fromCodePoint(uint16Array[3]);
5490			return ret_b;
5491		};
5492		Native.stringToDouble = function(str) {
5493			uint16Array[0] = HxOverrides.cca(str,0);
5494			uint16Array[1] = HxOverrides.cca(str,1);
5495			uint16Array[2] = HxOverrides.cca(str,2);
5496			uint16Array[3] = HxOverrides.cca(str,3);
5497			return float64Array[0];
5498		};
5499	}
5500};
5501Native.packDoubleBytes = function(s) {
5502	var ret_b = "";
5503	var _g = 0;
5504	var _g1 = s.length / 2;
5505	while(_g < _g1) {
5506		var i = _g++;
5507		var c = HxOverrides.cca(s,i * 2) | HxOverrides.cca(s,i * 2 + 1) << 8;
5508		ret_b += String.fromCodePoint(c);
5509	}
5510	return ret_b;
5511};
5512Native.unpackDoubleBytes = function(s) {
5513	var ret_b = "";
5514	var _g = 0;
5515	var _g1 = s.length;
5516	while(_g < _g1) {
5517		var i = _g++;
5518		var c = HxOverrides.cca(s,i) & 255;
5519		ret_b += String.fromCodePoint(c);
5520		var c1 = HxOverrides.cca(s,i) >> 8;
5521		ret_b += String.fromCodePoint(c1);
5522	}
5523	return ret_b;
5524};
5525Native.writeBinaryInt32 = function(value,buf) {
5526	buf.b += String.fromCodePoint((value & 65535));
5527	buf.b += String.fromCodePoint((value >> 16));
5528};
5529Native.writeInt = function(value,buf) {
5530	if((value & -32768) != 0) {
5531		buf.b += String.fromCodePoint(65525);
5532		buf.b += String.fromCodePoint((value & 65535));
5533		buf.b += String.fromCodePoint((value >> 16));
5534	} else {
5535		buf.b += String.fromCodePoint(value);
5536	}
5537};
5538Native.writeStructDefs = function(buf) {
5539	Native.writeArrayLength(Native.structDefs.length,buf);
5540	var _g = 0;
5541	var _g1 = Native.structDefs;
5542	while(_g < _g1.length) {
5543		var struct_def = _g1[_g];
5544		++_g;
5545		buf.b += String.fromCodePoint(65528);
5546		buf.b += String.fromCodePoint(2);
5547		buf.b += String.fromCodePoint(struct_def[0]);
5548		buf.b += String.fromCodePoint(65530);
5549		var c = struct_def[1].length;
5550		buf.b += String.fromCodePoint(c);
5551		var s = struct_def[1];
5552		var len = null;
5553		buf.b += len == null ? HxOverrides.substr(s,0,null) : HxOverrides.substr(s,0,len);
5554	}
5555};
5556Native.writeArrayLength = function(arr_len,buf) {
5557	if(arr_len == 0) {
5558		buf.b += String.fromCodePoint(65527);
5559	} else if(arr_len > 65535) {
5560		buf.b += String.fromCodePoint(65529);
5561		buf.b += String.fromCodePoint((arr_len & 65535));
5562		buf.b += String.fromCodePoint((arr_len >> 16));
5563	} else {
5564		buf.b += String.fromCodePoint(65528);
5565		buf.b += String.fromCodePoint(arr_len);
5566	}
5567};
5568Native.writeBinaryValue = function(value,buf) {
5569	var _g = HaxeRuntime.typeOf(value);
5570	switch(_g._hx_index) {
5571	case 0:
5572		buf.b += String.fromCodePoint(65535);
5573		break;
5574	case 1:
5575		buf.b += String.fromCodePoint((value ? 65534 : 65533));
5576		break;
5577	case 3:
5578		buf.b += String.fromCodePoint(65532);
5579		var s = Native.doubleToString(value);
5580		var len = null;
5581		buf.b += len == null ? HxOverrides.substr(s,0,null) : HxOverrides.substr(s,0,len);
5582		break;
5583	case 4:
5584		var str_len = value.length;
5585		if(value.length > 65535) {
5586			buf.b += String.fromCodePoint(65531);
5587			buf.b += String.fromCodePoint((str_len & 65535));
5588			buf.b += String.fromCodePoint((str_len >> 16));
5589		} else {
5590			buf.b += String.fromCodePoint(65530);
5591			buf.b += String.fromCodePoint(str_len);
5592		}
5593		var s = value;
5594		var len = null;
5595		buf.b += len == null ? HxOverrides.substr(s,0,null) : HxOverrides.substr(s,0,len);
5596		break;
5597	case 5:
5598		var t = _g.type;
5599		var arr_len = value.length;
5600		Native.writeArrayLength(arr_len,buf);
5601		var _g1 = 0;
5602		var _g2 = arr_len;
5603		while(_g1 < _g2) {
5604			var i = _g1++;
5605			Native.writeBinaryValue(value[i],buf);
5606		}
5607		break;
5608	case 6:
5609		var n = _g.name;
5610		var struct_id = value._id;
5611		var struct_fields = HaxeRuntime._structargs_.h[struct_id];
5612		var field_types = HaxeRuntime._structargtypes_.h[struct_id];
5613		var fields_count = struct_fields.length;
5614		var struct_idx = 0;
5615		if(Native.structIdxs.h.hasOwnProperty(struct_id)) {
5616			struct_idx = Native.structIdxs.h[struct_id];
5617		} else {
5618			struct_idx = Native.structDefs.length;
5619			Native.structIdxs.h[struct_id] = struct_idx;
5620			Native.structDefs.push([fields_count,HaxeRuntime._structnames_.h[struct_id]]);
5621		}
5622		buf.b += String.fromCodePoint(65524);
5623		buf.b += String.fromCodePoint(struct_idx);
5624		var _g1 = 0;
5625		var _g2 = fields_count;
5626		while(_g1 < _g2) {
5627			var i = _g1++;
5628			var field = Reflect.field(value,struct_fields[i]);
5629			if(field_types[i] == RuntimeType.RTInt) {
5630				var value1 = field;
5631				if((value1 & -32768) != 0) {
5632					buf.b += String.fromCodePoint(65525);
5633					buf.b += String.fromCodePoint((value1 & 65535));
5634					buf.b += String.fromCodePoint((value1 >> 16));
5635				} else {
5636					buf.b += String.fromCodePoint(value1);
5637				}
5638			} else {
5639				Native.writeBinaryValue(field,buf);
5640			}
5641		}
5642		break;
5643	case 7:
5644		var t = _g.type;
5645		buf.b += String.fromCodePoint(65526);
5646		Native.writeBinaryValue(value.__v,buf);
5647		break;
5648	default:
5649		throw haxe_Exception.thrown("Cannot serialize " + Std.string(value));
5650	}
5651};
5652Native.toBinary = function(value) {
5653	var buf = new StringBuf();
5654	Native.structIdxs = new haxe_ds_IntMap();
5655	Native.structDefs = [];
5656	Native.writeBinaryValue(value,buf);
5657	var str = buf.b;
5658	var struct_defs_buf = new StringBuf();
5659	Native.writeStructDefs(struct_defs_buf);
5660	var code = str.length + 2 & 65535;
5661	var ret = String.fromCodePoint(code);
5662	var code = str.length + 2 >> 16;
5663	var ret1 = ret + String.fromCodePoint(code) + str + struct_defs_buf.b;
5664	return ret1;
5665};
5666Native.fromBinary = function(string,defvalue,fixups) {
5667	if(js_Boot.getClass(string) == JSBinflowBuffer) {
5668		return string.deserialise(defvalue,fixups);
5669	} else {
5670		return string;
5671	}
5672};
5673Native.getTotalMemoryUsed = function() {
5674	return 0.0;
5675};
5676Native.detectDedicatedGPU = function() {
5677	try {
5678		var canvas = window.document.createElement("canvas");
5679		var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
5680		if(gl == null) {
5681			return false;
5682		}
5683		var debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
5684		var vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
5685		var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
5686		if(!(renderer.toLowerCase().indexOf("nvidia") >= 0 || renderer.toLowerCase().indexOf("ati") >= 0)) {
5687			return renderer.toLowerCase().indexOf("radeon") >= 0;
5688		} else {
5689			return true;
5690		}
5691	} catch( _g ) {
5692		haxe_NativeStackTrace.lastError = _g;
5693		return false;
5694	}
5695};
5696Native.domCompleteTiming = function() {
5697	try {
5698		return window.performance.timing.domComplete - window.performance.timing.domLoading;
5699	} catch( _g ) {
5700		haxe_NativeStackTrace.lastError = _g;
5701		return -1;
5702	}
5703};
5704Native.estimateCPUSpeed = function() {
5705	
5706			var _speedconstant = 1.15600e-8;
5707			var d = new Date();
5708			var amount = 150000000;
5709			var estprocessor = 1.7;
5710			for (var i = amount; i > 0; i--) {}
5711			var newd = new Date();
5712			di = (newd.getTime() - d.getTime()) / 1000;
5713			spd = ((_speedconstant * amount) / di);
5714			return Math.round(spd * 1000) / 1000;
5715		;
5716	return -1;
5717};
5718Native.getDeviceMemory = function() {
5719	try {
5720		return window.navigator.deviceMemory || -1;
5721	} catch( _g ) {
5722		haxe_NativeStackTrace.lastError = _g;
5723		return -1;
5724	}
5725};
5726Native.getDevicePlatform = function() {
5727	try {
5728		return window.navigator.platform || '';
5729	} catch( _g ) {
5730		haxe_NativeStackTrace.lastError = _g;
5731		return -1;
5732	}
5733};
5734Native.addCrashHandler = function(cb) {
5735	Native.FlowCrashHandlers.push(cb);
5736	return function() {
5737		HxOverrides.remove(Native.FlowCrashHandlers,cb);
5738	};
5739};
5740Native.callFlowCrashHandlers = function(msg) {
5741	msg += "Call stack: " + Assert.callStackToString(haxe_CallStack.exceptionStack());
5742	var _g = 0;
5743	var _g1 = Native.FlowCrashHandlers.slice(0,Native.FlowCrashHandlers.length);
5744	while(_g < _g1.length) {
5745		var hdlr = _g1[_g];
5746		++_g;
5747		hdlr(msg);
5748	}
5749};
5750Native.addPlatformEventListener = function(event,cb) {
5751	if(event == "online" || event == "offline") {
5752		var w = window;
5753		if(w.addEventListener != null) {
5754			w.addEventListener(event,cb,false);
5755			return function() {
5756				var w = window;
5757				if(w.removeEventListener != null) {
5758					w.removeEventListener(event,cb);
5759				}
5760			};
5761		}
5762	} else if(event == "suspend") {
5763		window.addEventListener("blur",cb);
5764		window.addEventListener("pagehide",cb);
5765		return function() {
5766			window.removeEventListener("blur",cb);
5767			window.removeEventListener("pagehide",cb);
5768		};
5769	} else if(event == "resume") {
5770		window.addEventListener("focus",cb);
5771		window.addEventListener("pageshow",cb);
5772		return function() {
5773			window.removeEventListener("focus",cb);
5774			window.removeEventListener("pageshow",cb);
5775		};
5776	} else if(event == "active") {
5777		var timeoutActiveId = -1;
5778		var setTimeoutActiveFn = function() {
5779		};
5780		var activeCalled = false;
5781		setTimeoutActiveFn = function() {
5782			var timePassedActive = new Date().getTime() - Native.LastUserAction;
5783			if(timePassedActive >= Native.IdleLimit) {
5784				timeoutActiveId = -1;
5785				activeCalled = false;
5786			} else {
5787				timeoutActiveId = setTimeout(setTimeoutActiveFn, Native.IdleLimit - timePassedActive);
5788				if(!activeCalled) {
5789					activeCalled = true;
5790					cb();
5791				}
5792			}
5793		};
5794		var mouseMoveActiveFn = function() {
5795			Native.LastUserAction = new Date().getTime();
5796			if(timeoutActiveId == -1) {
5797				setTimeoutActiveFn();
5798			}
5799		};
5800		window.addEventListener("pointermove",mouseMoveActiveFn);
5801		window.addEventListener("videoplaying",mouseMoveActiveFn);
5802		window.addEventListener("focus",mouseMoveActiveFn);
5803		window.addEventListener("blur",mouseMoveActiveFn);
5804		window.addEventListener("click",mouseMoveActiveFn);
5805		window.addEventListener("touchstart",mouseMoveActiveFn);
5806		mouseMoveActiveFn();
5807		return function() {
5808			clearTimeout(timeoutActiveId);
5809			window.removeEventListener("pointermove",mouseMoveActiveFn);
5810			window.removeEventListener("videoplaying",mouseMoveActiveFn);
5811			window.removeEventListener("focus",mouseMoveActiveFn);
5812			window.removeEventListener("blur",mouseMoveActiveFn);
5813			window.removeEventListener("click",mouseMoveActiveFn);
5814			window.removeEventListener("touchstart",mouseMoveActiveFn);
5815		};
5816	} else if(event == "idle") {
5817		var timeoutIdleId = -1;
5818		var setTimeoutIdleFn = function() {
5819		};
5820		var idleCalled = false;
5821		setTimeoutIdleFn = function() {
5822			var timePassedIdle = new Date().getTime() - Native.LastUserAction;
5823			if(timePassedIdle >= Native.IdleLimit) {
5824				timeoutIdleId = -1;
5825				if(!idleCalled) {
5826					idleCalled = true;
5827					cb();
5828				}
5829			} else {
5830				timeoutIdleId = setTimeout(setTimeoutIdleFn, Native.IdleLimit - timePassedIdle);
5831				idleCalled = false;
5832			}
5833		};
5834		var mouseMoveIdleFn = function() {
5835			Native.LastUserAction = new Date().getTime();
5836			if(timeoutIdleId == -1) {
5837				setTimeoutIdleFn();
5838			}
5839		};
5840		mouseMoveIdleFn();
5841		window.addEventListener("pointermove",mouseMoveIdleFn);
5842		window.addEventListener("videoplaying",mouseMoveIdleFn);
5843		window.addEventListener("focus",mouseMoveIdleFn);
5844		window.addEventListener("blur",mouseMoveIdleFn);
5845		window.addEventListener("click",mouseMoveIdleFn);
5846		window.addEventListener("touchstart",mouseMoveIdleFn);
5847		return function() {
5848			clearTimeout(timeoutIdleId);
5849			window.removeEventListener("pointermove",mouseMoveIdleFn);
5850			window.removeEventListener("videoplaying",mouseMoveIdleFn);
5851			window.removeEventListener("focus",mouseMoveIdleFn);
5852			window.removeEventListener("blur",mouseMoveIdleFn);
5853			window.removeEventListener("click",mouseMoveIdleFn);
5854			window.removeEventListener("touchstart",mouseMoveIdleFn);
5855		};
5856	}
5857	if(!Object.prototype.hasOwnProperty.call(Native.PlatformEventListeners.h,event)) {
5858		var this1 = Native.PlatformEventListeners;
5859		var value = [];
5860		this1.h[event] = value;
5861	}
5862	Native.PlatformEventListeners.h[event].push(cb);
5863	return function() {
5864		HxOverrides.remove(Native.PlatformEventListeners.h[event],cb);
5865	};
5866};
5867Native.setUserIdleLimit = function(ms) {
5868	Native.IdleLimit = ms;
5869};
5870Native.notifyPlatformEvent = function(event) {
5871	var cancelled = false;
5872	if(Object.prototype.hasOwnProperty.call(Native.PlatformEventListeners.h,event)) {
5873		var _g = 0;
5874		var _g1 = Native.PlatformEventListeners.h[event];
5875		while(_g < _g1.length) {
5876			var cb = _g1[_g];
5877			++_g;
5878			if(cb()) {
5879				cancelled = true;
5880			}
5881		}
5882	}
5883	return cancelled;
5884};
5885Native.addCameraPhotoEventListener = function(cb) {
5886	return function() {
5887	};
5888};
5889Native.addCameraVideoEventListener = function(cb) {
5890	return function() {
5891	};
5892};
5893Native.md5 = function(content) {
5894	return JsMd5.encode(content);
5895};
5896Native.getCharAt = function(s,i) {
5897	return s.charAt(i);
5898};
5899Native.object2JsonStructsCompacting = function(o,sDict,jsDict,nDict) {
5900	
5901		if (Array.isArray(o)) {
5902			var n = o.length;
5903			var a1 = Array(n);
5904			for (var i=0; i<n; i++) {
5905				a1[i] = Native.object2JsonStructs(o[i], sDict, jsDict, nDict);
5906			}
5907			var obj = { _id : Native.sidJsonArray };
5908			obj[Native.sidJsonArrayVal] = a1;
5909			return obj;
5910		} else {
5911			var t = typeof o;
5912			switch (t) {
5913				case 'string':
5914					if (o === '') return Native.jsonStringEmpty;
5915					var obj = jsDict[o];
5916					if (obj == undefined) {
5917						var s = sDict[o];
5918						if (s === undefined) {
5919							s = o;
5920							sDict[o] = s;
5921						}
5922						obj = { _id : Native.sidJsonString };
5923						obj[Native.sidJsonStringVal] = s;
5924						jsDict[o] = obj;
5925					}
5926					return obj;
5927				case 'number':
5928					if (o === 0.0) return Native.jsonDoubleZero;
5929					var obj = nDict[o];
5930					if (obj === undefined) {
5931						obj = { _id : Native.sidJsonDouble };
5932						obj[Native.sidJsonDoubleVal] = o;
5933						nDict[o] = obj;
5934					}
5935					return obj;
5936				case 'boolean': return o ? Native.jsonBoolTrue : Native.jsonBoolFalse;
5937				default:
5938					if(o == null) {
5939						return Native.jsonNull;
5940					} else {
5941						var mappedFields = [];
5942						for(var f in o) {
5943							var a2 = Native.object2JsonStructs(o[f], sDict, jsDict, nDict);
5944							var obj = { _id : Native.sidPair };
5945							var cf = sDict[f];
5946							if (cf === undefined) {
5947								cf = f;
5948								sDict[f] = cf;
5949							}
5950							obj[Native.sidPairFirst] = cf;
5951							obj[Native.sidPairSecond] = a2;
5952							mappedFields.push(obj);
5953						}
5954						var obj = { _id : Native.sidJsonObject};
5955						obj[Native.sidJsonObjectFields] = mappedFields;
5956						return obj;
5957					}
5958			}
5959		}
5960	return "";
5961};
5962Native.object2JsonStructsCompacting_FF = function(o,sDict,jsDict,nDict) {
5963	
5964		if (Array.isArray(o)) {
5965			var n = o.length;
5966			var a1 = Array(n);
5967			for (var i=0; i<n; i++) {
5968				a1[i] = Native.object2JsonStructs_FF(o[i], sDict, jsDict, nDict);
5969			}
5970			var obj = { _id : Native.sidJsonArray };
5971			obj[Native.sidJsonArrayVal] = a1;
5972			return obj;
5973		} else {
5974			var t = typeof o;
5975			switch (t) {
5976				case 'string':
5977					if (o === '') return Native.jsonStringEmpty;
5978					var obj = jsDict[o];
5979					if (obj == undefined) {
5980						var s = sDict[o];
5981						if (s === undefined) {
5982							s = o;
5983							sDict[o] = s;
5984						}
5985						obj = { _id : Native.sidJsonString };
5986						obj[Native.sidJsonStringVal] = s;
5987						jsDict[o] = obj;
5988					}
5989					return obj;
5990				case 'number':
5991					if (o === 0.0) return Native.jsonDoubleZero;
5992					var obj = nDict[o];
5993					if (obj === undefined) {
5994						obj = { _id : Native.sidJsonDouble };
5995						obj[Native.sidJsonDoubleVal] = o;
5996						nDict[o] = obj;
5997					}
5998					return obj;
5999				case 'boolean': return o ? Native.jsonBoolTrue : Native.jsonBoolFalse;
6000				default:
6001					if(o == null) {
6002						return Native.jsonNull;
6003					} else {
6004						var mappedFields = Object.getOwnPropertyNames(o);
6005						for(var i=0; i< mappedFields.length; i++) {
6006							var f = mappedFields[i];
6007							var cf = sDict[f];
6008							if (cf === undefined) {
6009								cf = f;
6010								sDict[f] = cf;
6011							}
6012
6013							var a2 = Native.object2JsonStructs_FF(o[f], sDict, jsDict, nDict);
6014							var obj = { _id : Native.sidPair };
6015							obj[Native.sidPairFirst] = cf;
6016							obj[Native.sidPairSecond] = a2;
6017							mappedFields[i] = obj;
6018						}
6019						var obj = { _id : Native.sidJsonObject};
6020						obj[Native.sidJsonObjectFields] = mappedFields;
6021						return obj;
6022					}
6023			}
6024		}
6025	return "";
6026};
6027Native.object2JsonStructs = function(o) {
6028	
6029		if (Array.isArray(o)) {
6030			var a1 = Native.map(o,Native.object2JsonStructs);
6031			var obj = { _id : Native.sidJsonArray };
6032			obj[Native.sidJsonArrayVal] = a1;
6033			return obj;
6034		} else {
6035			var t = typeof o;
6036			switch (t) {
6037				case 'string':
6038					var obj = { _id : Native.sidJsonString };
6039					obj[Native.sidJsonStringVal] = o;
6040					return obj;
6041				case 'number':
6042					var obj = { _id : Native.sidJsonDouble };
6043					obj[Native.sidJsonDoubleVal] = o;
6044					return obj;
6045				case 'boolean': return o ? Native.jsonBoolTrue : Native.jsonBoolFalse;
6046				default:
6047					if(o == null) {
6048						return Native.jsonNull;
6049					} else {
6050						var mappedFields = [];
6051						for(var f in o) {
6052							var a2 = Native.object2JsonStructs(o[f]);
6053							var obj = { _id : Native.sidPair };
6054							obj[Native.sidPairFirst] = f;
6055							obj[Native.sidPairSecond] = a2;
6056							mappedFields.push(obj);
6057						}
6058						var obj = { _id : Native.sidJsonObject};
6059						obj[Native.sidJsonObjectFields] = mappedFields;
6060						return obj;
6061					}
6062			}
6063		}
6064	return "";
6065};
6066Native.object2JsonStructs_FF = function(o) {
6067	
6068		if (Array.isArray(o)) {
6069			var a1 = Native.map(o,Native.object2JsonStructs_FF);
6070			var obj = { _id : Native.sidJsonArray};
6071			obj[Native.sidJsonArrayVal] = a1;
6072			return obj;
6073		} else {
6074			var t = typeof o;
6075			switch (t) {
6076				case 'string':
6077					var obj = { _id : Native.sidJsonString };
6078					obj[Native.sidJsonStringVal] = o;
6079					return obj;
6080				case 'number':
6081					var obj = { _id : Native.sidJsonDouble };
6082					obj[Native.sidJsonDoubleVal] = o;
6083					return obj;
6084				case 'boolean': return o ? Native.jsonBoolTrue : Native.jsonBoolFalse;
6085				default:
6086					if(o == null) {
6087						return Native.jsonNull;
6088					} else {
6089						var mappedFields = Object.getOwnPropertyNames(o);
6090						for(var i=0; i< mappedFields.length; i++) {
6091							var f = mappedFields[i];
6092							var a2 = Native.object2JsonStructs_FF(o[f]);
6093							var obj = { _id : Native.sidPair };
6094							obj[Native.sidPairFirst] = f;
6095							obj[Native.sidPairSecond] = a2;
6096							mappedFields[i] = obj;
6097						}
6098						var obj = { _id : Native.sidJsonObject};
6099						obj[Native.sidJsonObjectFields] = mappedFields;
6100						return obj;
6101					}
6102			}
6103		}
6104	return "";
6105};
6106Native.ensureJsonParserInitialized = function() {
6107	if(Native.parseJsonFirstCall) {
6108		Native.sidJsonArray = HaxeRuntime._structids_.h["JsonArray"];
6109		Native.sidJsonArrayVal = HaxeRuntime._structargs_.h[Native.sidJsonArray][0];
6110		Native.sidJsonString = HaxeRuntime._structids_.h["JsonString"];
6111		Native.sidJsonStringVal = HaxeRuntime._structargs_.h[Native.sidJsonString][0];
6112		Native.sidJsonDouble = HaxeRuntime._structids_.h["JsonDouble"];
6113		Native.sidJsonDoubleVal = HaxeRuntime._structargs_.h[Native.sidJsonDouble][0];
6114		var sid = HaxeRuntime._structids_.h["JsonBool"];
6115		var o = { _id : sid};
6116		o[HaxeRuntime._structargs_.h[sid][0]] = true;
6117		Native.jsonBoolTrue = o;
6118		var sid = HaxeRuntime._structids_.h["JsonBool"];
6119		var o = { _id : sid};
6120		o[HaxeRuntime._structargs_.h[sid][0]] = false;
6121		Native.jsonBoolFalse = o;
6122		Native.sidPair = HaxeRuntime._structids_.h["Pair"];
6123		Native.sidPairFirst = HaxeRuntime._structargs_.h[Native.sidPair][0];
6124		Native.sidPairSecond = HaxeRuntime._structargs_.h[Native.sidPair][1];
6125		Native.sidJsonObject = HaxeRuntime._structids_.h["JsonObject"];
6126		Native.sidJsonObjectFields = HaxeRuntime._structargs_.h[Native.sidJsonObject][0];
6127		Native.jsonNull = HaxeRuntime.makeStructValue("JsonNull",[],null);
6128		Native.jsonDoubleZero = HaxeRuntime.makeStructValue("JsonDouble",[0.0],null);
6129		Native.jsonStringEmpty = HaxeRuntime.makeStructValue("JsonString",[""],null);
6130		Native.parseJsonFirstCall = false;
6131	}
6132};
6133Native.parseJson = function(json) {
6134	if(Native.parseJsonFirstCall) {
6135		Native.sidJsonArray = HaxeRuntime._structids_.h["JsonArray"];
6136		Native.sidJsonArrayVal = HaxeRuntime._structargs_.h[Native.sidJsonArray][0];
6137		Native.sidJsonString = HaxeRuntime._structids_.h["JsonString"];
6138		Native.sidJsonStringVal = HaxeRuntime._structargs_.h[Native.sidJsonString][0];
6139		Native.sidJsonDouble = HaxeRuntime._structids_.h["JsonDouble"];
6140		Native.sidJsonDoubleVal = HaxeRuntime._structargs_.h[Native.sidJsonDouble][0];
6141		var sid = HaxeRuntime._structids_.h["JsonBool"];
6142		var o = { _id : sid};
6143		o[HaxeRuntime._structargs_.h[sid][0]] = true;
6144		Native.jsonBoolTrue = o;
6145		var sid = HaxeRuntime._structids_.h["JsonBool"];
6146		var o = { _id : sid};
6147		o[HaxeRuntime._structargs_.h[sid][0]] = false;
6148		Native.jsonBoolFalse = o;
6149		Native.sidPair = HaxeRuntime._structids_.h["Pair"];
6150		Native.sidPairFirst = HaxeRuntime._structargs_.h[Native.sidPair][0];
6151		Native.sidPairSecond = HaxeRuntime._structargs_.h[Native.sidPair][1];
6152		Native.sidJsonObject = HaxeRuntime._structids_.h["JsonObject"];
6153		Native.sidJsonObjectFields = HaxeRuntime._structargs_.h[Native.sidJsonObject][0];
6154		Native.jsonNull = HaxeRuntime.makeStructValue("JsonNull",[],null);
6155		Native.jsonDoubleZero = HaxeRuntime.makeStructValue("JsonDouble",[0.0],null);
6156		Native.jsonStringEmpty = HaxeRuntime.makeStructValue("JsonString",[""],null);
6157		Native.parseJsonFirstCall = false;
6158	}
6159	if(json == "") {
6160		return Native.jsonDoubleZero;
6161	}
6162	
6163			try {
6164				if (Platform.isIOS && json.length > 1024) {
6165					// on IOS memory restriction is very tight so we try to not create duplicate strings if possible
6166					// it might have advantages for quite long parsed string only
6167					return Platform.isFirefox ?
6168					Native.object2JsonStructsCompacting_FF(JSON.parse(json), {}, {}, {}) :
6169					Native.object2JsonStructsCompacting(JSON.parse(json), {}, {}, {});
6170				} else {
6171					return Platform.isFirefox ?
6172					Native.object2JsonStructs_FF(JSON.parse(json)) :
6173					Native.object2JsonStructs(JSON.parse(json));
6174				}
6175			} catch (e) {
6176				return Native.jsonDoubleZero;
6177			}
6178		;
6179	return Native.jsonDoubleZero;
6180};
6181Native.parseJsonObject = function(obj) {
6182	if(Native.parseJsonFirstCall) {
6183		Native.sidJsonArray = HaxeRuntime._structids_.h["JsonArray"];
6184		Native.sidJsonArrayVal = HaxeRuntime._structargs_.h[Native.sidJsonArray][0];
6185		Native.sidJsonString = HaxeRuntime._structids_.h["JsonString"];
6186		Native.sidJsonStringVal = HaxeRuntime._structargs_.h[Native.sidJsonString][0];
6187		Native.sidJsonDouble = HaxeRuntime._structids_.h["JsonDouble"];
6188		Native.sidJsonDoubleVal = HaxeRuntime._structargs_.h[Native.sidJsonDouble][0];
6189		var sid = HaxeRuntime._structids_.h["JsonBool"];
6190		var o = { _id : sid};
6191		o[HaxeRuntime._structargs_.h[sid][0]] = true;
6192		Native.jsonBoolTrue = o;
6193		var sid = HaxeRuntime._structids_.h["JsonBool"];
6194		var o = { _id : sid};
6195		o[HaxeRuntime._structargs_.h[sid][0]] = false;
6196		Native.jsonBoolFalse = o;
6197		Native.sidPair = HaxeRuntime._structids_.h["Pair"];
6198		Native.sidPairFirst = HaxeRuntime._structargs_.h[Native.sidPair][0];
6199		Native.sidPairSecond = HaxeRuntime._structargs_.h[Native.sidPair][1];
6200		Native.sidJsonObject = HaxeRuntime._structids_.h["JsonObject"];
6201		Native.sidJsonObjectFields = HaxeRuntime._structargs_.h[Native.sidJsonObject][0];
6202		Native.jsonNull = HaxeRuntime.makeStructValue("JsonNull",[],null);
6203		Native.jsonDoubleZero = HaxeRuntime.makeStructValue("JsonDouble",[0.0],null);
6204		Native.jsonStringEmpty = HaxeRuntime.makeStructValue("JsonString",[""],null);
6205		Native.parseJsonFirstCall = false;
6206	}
6207	if(obj == null) {
6208		return Native.jsonNull;
6209	}
6210	
6211			try {
6212				return Platform.isFirefox ?
6213				Native.object2JsonStructs_FF(obj) :
6214				Native.object2JsonStructs(obj);
6215			} catch (e) {
6216				return Native.jsonNull;
6217			}
6218		;
6219	return Native.jsonNull;
6220};
6221Native.concurrentAsync = function(fine,tasks,cb) {
6222	
6223var fns = tasks.map(function(c, i, a) {
6224	var v = function v (callback) {
6225		var r = c.call();
6226		callback(null, r);
6227	}
6228	return v;
6229});
6230
6231async.parallel(fns, function(err, results) { cb(results) });
6232};
6233Native.preloadStaticResource = function(href,as) {
6234	var tag = window.document.createElement("link");
6235	tag.rel = "preload";
6236	tag.href = href;
6237	tag.as = as;
6238	window.document.head.appendChild(tag);
6239};
6240Native.isLeapYear = function(year) {
6241	if((year & 3) == 0) {
6242		if(year % 100 == 0) {
6243			return year % 400 == 0;
6244		} else {
6245			return true;
6246		}
6247	} else {
6248		return false;
6249	}
6250};
6251Native.getDaysInMonth = function(month,year) {
6252	if(month == 2 && ((year & 3) == 0 && (year % 100 != 0 || year % 400 == 0))) {
6253		return 29;
6254	}
6255	return Native.daysInMonth[month];
6256};
6257Native.db2time = function(s) {
6258	if(Native.nullTime == null) {
6259		var timeSId = HaxeRuntime._structids_.h["Time"];
6260		Native.makeTime = HaxeRuntime._structconstruct_.h[timeSId];
6261		Native.nullTime = Native.makeTime(0,0,0,0,0,0);
6262	}
6263	if(s == null) {
6264		return Native.nullTime;
6265	}
6266	var len = s.length;
6267	var pos = 0;
6268	var nextCode = null;
6269	var readNum = function() {
6270		var v = 0;
6271		var any = false;
6272		var c = null;
6273		nextCode = null;
6274		while(pos < len) {
6275			c = HxOverrides.cca(s,pos);
6276			pos += 1;
6277			if(!(c >= 48 && c <= 57)) {
6278				nextCode = c;
6279				break;
6280			}
6281			any = true;
6282			v = v * 10 + (c - 48);
6283		}
6284		if(any) {
6285			return v;
6286		} else {
6287			return null;
6288		}
6289	};
6290	var year = readNum();
6291	if(year == null || year < 1000 || year > 9999) {
6292		return Native.nullTime;
6293	}
6294	if(pos >= len || nextCode != 45) {
6295		return Native.nullTime;
6296	}
6297	var month = readNum();
6298	if(month == null || month < 1 || month > 12) {
6299		return Native.nullTime;
6300	}
6301	if(nextCode != 45) {
6302		return Native.nullTime;
6303	}
6304	var day = readNum();
6305	if(day == null || day < 1) {
6306		return Native.nullTime;
6307	}
6308	var maxDays = month == 2 && ((year & 3) == 0 && (year % 100 != 0 || year % 400 == 0)) ? 29 : Native.daysInMonth[month];
6309	if(day > maxDays) {
6310		return Native.nullTime;
6311	}
6312	if(pos >= len && nextCode == null) {
6313		return Native.makeTime(year,month,day,0,0,0);
6314	}
6315	if(nextCode != 32 && nextCode != 84) {
6316		return Native.nullTime;
6317	}
6318	var hour = readNum();
6319	if(hour == null) {
6320		return Native.nullTime;
6321	}
6322	if(pos >= len || nextCode != 58) {
6323		return Native.nullTime;
6324	}
6325	var min = readNum();
6326	if(min == null) {
6327		return Native.nullTime;
6328	}
6329	if(pos >= len || nextCode != 58) {
6330		return Native.nullTime;
6331	}
6332	var sec = readNum();
6333	if(sec == null) {
6334		return Native.nullTime;
6335	}
6336	if(hour < 0 || hour >= 24) {
6337		return Native.nullTime;
6338	}
6339	if(min < 0 || min >= 60) {
6340		return Native.nullTime;
6341	}
6342	if(sec < 0 || sec >= 60) {
6343		return Native.nullTime;
6344	}
6345	if(nextCode == 45 || nextCode == 58) {
6346		return Native.nullTime;
6347	}
6348	return Native.makeTime(year,month,day,hour,min,sec);
6349};
6350var NativeTime = function() { };
6351NativeTime.__name__ = true;
6352NativeTime.timestamp = function() {
6353	var t = new Date().getTime();
6354	return t;
6355};
6356NativeTime.utc2local = function(stamp) {
6357	var date = new Date(stamp);
6358	var offset = date.getTimezoneOffset() * 60000.;
6359	return stamp - offset;
6360};
6361NativeTime.local2utc = function(stamp) {
6362	var date = new Date(stamp);
6363	var offset = date.getTimezoneOffset() * 60000.;
6364	date = new Date(date.getTime() + offset);
6365	offset = date.getTimezoneOffset() * 60000.;
6366	return stamp + offset;
6367};
6368NativeTime.getTimeOffset = function() {
6369	var now = new Date();
6370	now = new Date(now.getFullYear(),now.getMonth(),now.getDate(),0,0,0);
6371	return now.getTime() - 86400000. * Math.round(now.getTime() / 24 / 3600 / 1000);
6372};
6373NativeTime.string2time = function(date) {
6374	return HxOverrides.strDate(date).getTime();
6375};
6376NativeTime.time2string = function(date) {
6377	return HxOverrides.dateStr(new Date(date));
6378};
6379NativeTime.dayOfWeek = function(year,month,day) {
6380	var d = new Date(year,month - 1,day,0,0,0);
6381	return (d.getDay() + 6) % 7;
6382};
6383var Reflect = function() { };
6384Reflect.__name__ = true;
6385Reflect.field = function(o,field) {
6386	try {
6387		return o[field];
6388	} catch( _g ) {
6389		haxe_NativeStackTrace.lastError = _g;
6390		return null;
6391	}
6392};
6393Reflect.fields = function(o) {
6394	var a = [];
6395	if(o != null) {
6396		var hasOwnProperty = Object.prototype.hasOwnProperty;
6397		for( var f in o ) {
6398		if(f != "__id__" && f != "hx__closures__" && hasOwnProperty.call(o,f)) {
6399			a.push(f);
6400		}
6401		}
6402	}
6403	return a;
6404};
6405Reflect.isFunction = function(f) {
6406	if(typeof(f) == "function") {
6407		return !(f.__name__ || f.__ename__);
6408	} else {
6409		return false;
6410	}
6411};
6412Reflect.isObject = function(v) {
6413	if(v == null) {
6414		return false;
6415	}
6416	var t = typeof(v);
6417	if(!(t == "string" || t == "object" && v.__enum__ == null)) {
6418		if(t == "function") {
6419			return (v.__name__ || v.__ename__) != null;
6420		} else {
6421			return false;
6422		}
6423	} else {
6424		return true;
6425	}
6426};
6427var Std = function() { };
6428Std.__name__ = true;
6429Std.string = function(s) {
6430	return js_Boot.__string_rec(s,"");
6431};
6432Std.parseInt = function(x) {
6433	var v = parseInt(x);
6434	if(isNaN(v)) {
6435		return null;
6436	}
6437	return v;
6438};
6439var StringTools = function() { };
6440StringTools.__name__ = true;
6441StringTools.startsWith = function(s,start) {
6442	if(s.length >= start.length) {
6443		return s.lastIndexOf(start,0) == 0;
6444	} else {
6445		return false;
6446	}
6447};
6448StringTools.endsWith = function(s,end) {
6449	var elen = end.length;
6450	var slen = s.length;
6451	if(slen >= elen) {
6452		return s.indexOf(end,slen - elen) == slen - elen;
6453	} else {
6454		return false;
6455	}
6456};
6457StringTools.isSpace = function(s,pos) {
6458	var c = HxOverrides.cca(s,pos);
6459	if(!(c > 8 && c < 14)) {
6460		return c == 32;
6461	} else {
6462		return true;
6463	}
6464};
6465StringTools.ltrim = function(s) {
6466	var l = s.length;
6467	var r = 0;
6468	while(r < l && StringTools.isSpace(s,r)) ++r;
6469	if(r > 0) {
6470		return HxOverrides.substr(s,r,l - r);
6471	} else {
6472		return s;
6473	}
6474};
6475StringTools.rtrim = function(s) {
6476	var l = s.length;
6477	var r = 0;
6478	while(r < l && StringTools.isSpace(s,l - r - 1)) ++r;
6479	if(r > 0) {
6480		return HxOverrides.substr(s,0,l - r);
6481	} else {
6482		return s;
6483	}
6484};
6485StringTools.trim = function(s) {
6486	return StringTools.ltrim(StringTools.rtrim(s));
6487};
6488StringTools.replace = function(s,sub,by) {
6489	return s.split(sub).join(by);
6490};
6491var haxe_StackItem = $hxEnums["haxe.StackItem"] = { __ename__:true,__constructs__:null
6492	,CFunction: {_hx_name:"CFunction",_hx_index:0,__enum__:"haxe.StackItem",toString:$estr}
6493	,Module: ($_=function(m) { return {_hx_index:1,m:m,__enum__:"haxe.StackItem",toString:$estr}; },$_._hx_name="Module",$_.__params__ = ["m"],$_)
6494	,FilePos: ($_=function(s,file,line,column) { return {_hx_index:2,s:s,file:file,line:line,column:column,__enum__:"haxe.StackItem",toString:$estr}; },$_._hx_name="FilePos",$_.__params__ = ["s","file","line","column"],$_)
6495	,Method: ($_=function(classname,method) { return {_hx_index:3,classname:classname,method:method,__enum__:"haxe.StackItem",toString:$estr}; },$_._hx_name="Method",$_.__params__ = ["classname","method"],$_)
6496	,LocalFunction: ($_=function(v) { return {_hx_index:4,v:v,__enum__:"haxe.StackItem",toString:$estr}; },$_._hx_name="LocalFunction",$_.__params__ = ["v"],$_)
6497};
6498haxe_StackItem.__constructs__ = [haxe_StackItem.CFunction,haxe_StackItem.Module,haxe_StackItem.FilePos,haxe_StackItem.Method,haxe_StackItem.LocalFunction];
6499var haxe_CallStack = {};
6500haxe_CallStack.callStack = function() {
6501	return haxe_NativeStackTrace.toHaxe(haxe_NativeStackTrace.callStack());
6502};
6503haxe_CallStack.exceptionStack = function(fullStack) {
6504	if(fullStack == null) {
6505		fullStack = false;
6506	}
6507	var eStack = haxe_NativeStackTrace.toHaxe(haxe_NativeStackTrace.exceptionStack());
6508	return fullStack ? eStack : haxe_CallStack.subtract(eStack,haxe_CallStack.callStack());
6509};
6510haxe_CallStack.toString = function(stack) {
6511	var b = new StringBuf();
6512	var _g = 0;
6513	var _g1 = stack;
6514	while(_g < _g1.length) {
6515		var s = _g1[_g];
6516		++_g;
6517		b.b += "\nCalled from ";
6518		haxe_CallStack.itemToString(b,s);
6519	}
6520	return b.b;
6521};
6522haxe_CallStack.subtract = function(this1,stack) {
6523	var startIndex = -1;
6524	var i = -1;
6525	while(++i < this1.length) {
6526		var _g = 0;
6527		var _g1 = stack.length;
6528		while(_g < _g1) {
6529			var j = _g++;
6530			if(haxe_CallStack.equalItems(this1[i],stack[j])) {
6531				if(startIndex < 0) {
6532					startIndex = i;
6533				}
6534				++i;
6535				if(i >= this1.length) {
6536					break;
6537				}
6538			} else {
6539				startIndex = -1;
6540			}
6541		}
6542		if(startIndex >= 0) {
6543			break;
6544		}
6545	}
6546	if(startIndex >= 0) {
6547		return this1.slice(0,startIndex);
6548	} else {
6549		return this1;
6550	}
6551};
6552haxe_CallStack.equalItems = function(item1,item2) {
6553	if(item1 == null) {
6554		if(item2 == null) {
6555			return true;
6556		} else {
6557			return false;
6558		}
6559	} else {
6560		switch(item1._hx_index) {
6561		case 0:
6562			if(item2 == null) {
6563				return false;
6564			} else if(item2._hx_index == 0) {
6565				return true;
6566			} else {
6567				return false;
6568			}
6569			break;
6570		case 1:
6571			if(item2 == null) {
6572				return false;
6573			} else if(item2._hx_index == 1) {
6574				var m2 = item2.m;
6575				var m1 = item1.m;
6576				return m1 == m2;
6577			} else {
6578				return false;
6579			}
6580			break;
6581		case 2:
6582			if(item2 == null) {
6583				return false;
6584			} else if(item2._hx_index == 2) {
6585				var item21 = item2.s;
6586				var file2 = item2.file;
6587				var line2 = item2.line;
6588				var col2 = item2.column;
6589				var col1 = item1.column;
6590				var line1 = item1.line;
6591				var file1 = item1.file;
6592				var item11 = item1.s;
6593				if(file1 == file2 && line1 == line2 && col1 == col2) {
6594					return haxe_CallStack.equalItems(item11,item21);
6595				} else {
6596					return false;
6597				}
6598			} else {
6599				return false;
6600			}
6601			break;
6602		case 3:
6603			if(item2 == null) {
6604				return false;
6605			} else if(item2._hx_index == 3) {
6606				var class2 = item2.classname;
6607				var method2 = item2.method;
6608				var method1 = item1.method;
6609				var class1 = item1.classname;
6610				if(class1 == class2) {
6611					return method1 == method2;
6612				} else {
6613					return false;
6614				}
6615			} else {
6616				return false;
6617			}
6618			break;
6619		case 4:
6620			if(item2 == null) {
6621				return false;
6622			} else if(item2._hx_index == 4) {
6623				var v2 = item2.v;
6624				var v1 = item1.v;
6625				return v1 == v2;
6626			} else {
6627				return false;
6628			}
6629			break;
6630		}
6631	}
6632};
6633haxe_CallStack.itemToString = function(b,s) {
6634	switch(s._hx_index) {
6635	case 0:
6636		b.b += "a C function";
6637		break;
6638	case 1:
6639		var m = s.m;
6640		b.b += "module ";
6641		b.b += m == null ? "null" : "" + m;
6642		break;
6643	case 2:
6644		var s1 = s.s;
6645		var file = s.file;
6646		var line = s.line;
6647		var col = s.column;
6648		if(s1 != null) {
6649			haxe_CallStack.itemToString(b,s1);
6650			b.b += " (";
6651		}
6652		b.b += file == null ? "null" : "" + file;
6653		b.b += " line ";
6654		b.b += line == null ? "null" : "" + line;
6655		if(col != null) {
6656			b.b += " column ";
6657			b.b += col == null ? "null" : "" + col;
6658		}
6659		if(s1 != null) {
6660			b.b += ")";
6661		}
6662		break;
6663	case 3:
6664		var cname = s.classname;
6665		var meth = s.method;
6666		b.b += Std.string(cname == null ? "<unknown>" : cname);
6667		b.b += ".";
6668		b.b += meth == null ? "null" : "" + meth;
6669		break;
6670	case 4:
6671		var n = s.v;
6672		b.b += "local function #";
6673		b.b += n == null ? "null" : "" + n;
6674		break;
6675	}
6676};
6677var haxe_Exception = function(message,previous,native) {
6678	Error.call(this,message);
6679	this.message = message;
6680	this.__previousException = previous;
6681	this.__nativeException = native != null ? native : this;
6682	this.__skipStack = 0;
6683	var old = Error.prepareStackTrace;
6684	Error.prepareStackTrace = function(e) { return e.stack; }
6685	if(((native) instanceof Error)) {
6686		this.stack = native.stack;
6687	} else {
6688		var e = null;
6689		if(Error.captureStackTrace) {
6690			Error.captureStackTrace(this,haxe_Exception);
6691			e = this;
6692		} else {
6693			e = new Error();
6694			if(typeof(e.stack) == "undefined") {
6695				try { throw e; } catch(_) {}
6696				this.__skipStack++;
6697			}
6698		}
6699		this.stack = e.stack;
6700	}
6701	Error.prepareStackTrace = old;
6702};
6703haxe_Exception.__name__ = true;
6704haxe_Exception.caught = function(value) {
6705	if(((value) instanceof haxe_Exception)) {
6706		return value;
6707	} else if(((value) instanceof Error)) {
6708		return new haxe_Exception(value.message,null,value);
6709	} else {
6710		return new haxe_ValueException(value,null,value);
6711	}
6712};
6713haxe_Exception.thrown = function(value) {
6714	if(((value) instanceof haxe_Exception)) {
6715		return value.get_native();
6716	} else if(((value) instanceof Error)) {
6717		return value;
6718	} else {
6719		var e = new haxe_ValueException(value);
6720		e.__skipStack++;
6721		return e;
6722	}
6723};
6724haxe_Exception.__super__ = Error;
6725haxe_Exception.prototype = $extend(Error.prototype,{
6726	unwrap: function() {
6727		return this.__nativeException;
6728	}
6729	,__shiftStack: function() {
6730		this.__skipStack++;
6731	}
6732	,get_native: function() {
6733		return this.__nativeException;
6734	}
6735	,get_stack: function() {
6736		var _g = this.__exceptionStack;
6737		if(_g == null) {
6738			var value = haxe_NativeStackTrace.toHaxe(haxe_NativeStackTrace.normalize(this.stack),this.__skipStack);
6739			this.setProperty("__exceptionStack",value);
6740			return value;
6741		} else {
6742			var s = _g;
6743			return s;
6744		}
6745	}
6746	,setProperty: function(name,value) {
6747		try {
6748			Object.defineProperty(this,name,{ value : value});
6749		} catch( _g ) {
6750			this[name] = value;
6751		}
6752	}
6753	,__class__: haxe_Exception
6754});
6755var haxe_NativeStackTrace = function() { };
6756haxe_NativeStackTrace.__name__ = true;
6757haxe_NativeStackTrace.saveStack = function(e) {
6758	haxe_NativeStackTrace.lastError = e;
6759};
6760haxe_NativeStackTrace.callStack = function() {
6761	var e = new Error("");
6762	var stack = haxe_NativeStackTrace.tryHaxeStack(e);
6763	if(typeof(stack) == "undefined") {
6764		try {
6765			throw e;
6766		} catch( _g ) {
6767		}
6768		stack = e.stack;
6769	}
6770	return haxe_NativeStackTrace.normalize(stack,2);
6771};
6772haxe_NativeStackTrace.exceptionStack = function() {
6773	return haxe_NativeStackTrace.normalize(haxe_NativeStackTrace.tryHaxeStack(haxe_NativeStackTrace.lastError));
6774};
6775haxe_NativeStackTrace.toHaxe = function(s,skip) {
6776	if(skip == null) {
6777		skip = 0;
6778	}
6779	if(s == null) {
6780		return [];
6781	} else if(typeof(s) == "string") {
6782		var stack = s.split("\n");
6783		if(stack[0] == "Error") {
6784			stack.shift();
6785		}
6786		var m = [];
6787		var _g = 0;
6788		var _g1 = stack.length;
6789		while(_g < _g1) {
6790			var i = _g++;
6791			if(skip > i) {
6792				continue;
6793			}
6794			var line = stack[i];
6795			var matched = line.match(/^    at ([$A-Za-z0-9_. ]+) \(([^)]+):([0-9]+):([0-9]+)\)$/);
6796			if(matched != null) {
6797				var path = matched[1].split(".");
6798				if(path[0] == "$hxClasses") {
6799					path.shift();
6800				}
6801				var meth = path.pop();
6802				var file = matched[2];
6803				var line1 = Std.parseInt(matched[3]);
6804				var column = Std.parseInt(matched[4]);
6805				m.push(haxe_StackItem.FilePos(meth == "Anonymous function" ? haxe_StackItem.LocalFunction() : meth == "Global code" ? null : haxe_StackItem.Method(path.join("."),meth),file,line1,column));
6806			} else {
6807				m.push(haxe_StackItem.Module(StringTools.trim(line)));
6808			}
6809		}
6810		return m;
6811	} else if(skip > 0 && Array.isArray(s)) {
6812		return s.slice(skip);
6813	} else {
6814		return s;
6815	}
6816};
6817haxe_NativeStackTrace.tryHaxeStack = function(e) {
6818	if(e == null) {
6819		return [];
6820	}
6821	var oldValue = Error.prepareStackTrace;
6822	Error.prepareStackTrace = haxe_NativeStackTrace.prepareHxStackTrace;
6823	var stack = e.stack;
6824	Error.prepareStackTrace = oldValue;
6825	return stack;
6826};
6827haxe_NativeStackTrace.prepareHxStackTrace = function(e,callsites) {
6828	var stack = [];
6829	var _g = 0;
6830	while(_g < callsites.length) {
6831		var site = callsites[_g];
6832		++_g;
6833		if(haxe_NativeStackTrace.wrapCallSite != null) {
6834			site = haxe_NativeStackTrace.wrapCallSite(site);
6835		}
6836		var method = null;
6837		var fullName = site.getFunctionName();
6838		if(fullName != null) {
6839			var idx = fullName.lastIndexOf(".");
6840			if(idx >= 0) {
6841				var className = fullName.substring(0,idx);
6842				var methodName = fullName.substring(idx + 1);
6843				method = haxe_StackItem.Method(className,methodName);
6844			} else {
6845				method = haxe_StackItem.Method(null,fullName);
6846			}
6847		}
6848		var fileName = site.getFileName();
6849		var fileAddr = fileName == null ? -1 : fileName.indexOf("file:");
6850		if(haxe_NativeStackTrace.wrapCallSite != null && fileAddr > 0) {
6851			fileName = fileName.substring(fileAddr + 6);
6852		}
6853		stack.push(haxe_StackItem.FilePos(method,fileName,site.getLineNumber(),site.getColumnNumber()));
6854	}
6855	return stack;
6856};
6857haxe_NativeStackTrace.normalize = function(stack,skipItems) {
6858	if(skipItems == null) {
6859		skipItems = 0;
6860	}
6861	if(Array.isArray(stack) && skipItems > 0) {
6862		return stack.slice(skipItems);
6863	} else if(typeof(stack) == "string") {
6864		switch(stack.substring(0,6)) {
6865		case "Error\n":case "Error:":
6866			++skipItems;
6867			break;
6868		default:
6869		}
6870		return haxe_NativeStackTrace.skipLines(stack,skipItems);
6871	} else {
6872		return stack;
6873	}
6874};
6875haxe_NativeStackTrace.skipLines = function(stack,skip,pos) {
6876	if(pos == null) {
6877		pos = 0;
6878	}
6879	if(skip > 0) {
6880		pos = stack.indexOf("\n",pos);
6881		if(pos < 0) {
6882			return "";
6883		} else {
6884			return haxe_NativeStackTrace.skipLines(stack,--skip,pos + 1);
6885		}
6886	} else {
6887		return stack.substring(pos);
6888	}
6889};
6890var haxe_ValueException = function(value,previous,native) {
6891	haxe_Exception.call(this,String(value),previous,native);
6892	this.value = value;
6893	this.__skipStack++;
6894};
6895haxe_ValueException.__name__ = true;
6896haxe_ValueException.__super__ = haxe_Exception;
6897haxe_ValueException.prototype = $extend(haxe_Exception.prototype,{
6898	unwrap: function() {
6899		return this.value;
6900	}
6901	,__class__: haxe_ValueException
6902});
6903var haxe_io_Bytes = function(data) {
6904	this.length = data.byteLength;
6905	this.b = new Uint8Array(data);
6906	this.b.bufferValue = data;
6907	data.hxBytes = this;
6908	data.bytes = this.b;
6909};
6910haxe_io_Bytes.__name__ = true;
6911haxe_io_Bytes.ofString = function(s,encoding) {
6912	if(encoding == haxe_io_Encoding.RawNative) {
6913		var buf = new Uint8Array(s.length << 1);
6914		var _g = 0;
6915		var _g1 = s.length;
6916		while(_g < _g1) {
6917			var i = _g++;
6918			var c = s.charCodeAt(i);
6919			buf[i << 1] = c & 255;
6920			buf[i << 1 | 1] = c >> 8;
6921		}
6922		return new haxe_io_Bytes(buf.buffer);
6923	}
6924	var a = [];
6925	var i = 0;
6926	while(i < s.length) {
6927		var c = s.charCodeAt(i++);
6928		if(55296 <= c && c <= 56319) {
6929			c = c - 55232 << 10 | s.charCodeAt(i++) & 1023;
6930		}
6931		if(c <= 127) {
6932			a.push(c);
6933		} else if(c <= 2047) {
6934			a.push(192 | c >> 6);
6935			a.push(128 | c & 63);
6936		} else if(c <= 65535) {
6937			a.push(224 | c >> 12);
6938			a.push(128 | c >> 6 & 63);
6939			a.push(128 | c & 63);
6940		} else {
6941			a.push(240 | c >> 18);
6942			a.push(128 | c >> 12 & 63);
6943			a.push(128 | c >> 6 & 63);
6944			a.push(128 | c & 63);
6945		}
6946	}
6947	return new haxe_io_Bytes(new Uint8Array(a).buffer);
6948};
6949haxe_io_Bytes.prototype = {
6950	__class__: haxe_io_Bytes
6951};
6952var haxe_io_Encoding = $hxEnums["haxe.io.Encoding"] = { __ename__:true,__constructs__:null
6953	,UTF8: {_hx_name:"UTF8",_hx_index:0,__enum__:"haxe.io.Encoding",toString:$estr}
6954	,RawNative: {_hx_name:"RawNative",_hx_index:1,__enum__:"haxe.io.Encoding",toString:$estr}
6955};
6956haxe_io_Encoding.__constructs__ = [haxe_io_Encoding.UTF8,haxe_io_Encoding.RawNative];
6957var haxe_iterators_ArrayIterator = function(array) {
6958	this.current = 0;
6959	this.array = array;
6960};
6961haxe_iterators_ArrayIterator.__name__ = true;
6962haxe_iterators_ArrayIterator.prototype = {
6963	hasNext: function() {
6964		return this.current < this.array.length;
6965	}
6966	,next: function() {
6967		return this.array[this.current++];
6968	}
6969	,__class__: haxe_iterators_ArrayIterator
6970};
6971var js_BinaryBuffer = function(bigEndian,buffer) {
6972	this.bigEndian = bigEndian;
6973	this.buffer = [];
6974	this.setBuffer(buffer);
6975};
6976js_BinaryBuffer.__name__ = true;
6977js_BinaryBuffer.prototype = {
6978	readBits: function(start,length) {
6979		//shl fix: Henri Torgemane ~1996 (compressed by Jonas Raoni)
6980			    function shl(a, b){
6981				for(++b; --b; a = ((a %= 0x7fffffff + 1) & 0x40000000) == 0x40000000 ? a * 2 : (a - 0x40000000) * 2 + 0x7fffffff + 1);
6982				return a;
6983			    }
6984			    if(start < 0 || length <= 0)
6985				return 0;
6986			    this.checkBuffer(start + length);
6987			    for(var offsetLeft, offsetRight = start % 8, curByte = this.buffer.length - (start >> 3) - 1,
6988				lastByte = this.buffer.length + (-(start + length) >> 3), diff = curByte - lastByte,
6989				sum = ((this.buffer[ curByte ] >> offsetRight) & ((1 << (diff ? 8 - offsetRight : length)) - 1))
6990				+ (diff && (offsetLeft = (start + length) % 8) ? (this.buffer[ lastByte++ ] & ((1 << offsetLeft) - 1))
6991				<< (diff-- << 3) - offsetRight : 0); diff; sum += shl(this.buffer[ lastByte++ ], (diff-- << 3) - offsetRight)
6992			    );
6993			    return sum;
6994		;
6995	}
6996	,setBuffer: function(data) {
6997		if(data){
6998			for(var l, i = l = data.length, b = this.buffer = new Array(l); i; b[l - i] = data.charCodeAt(--i));
6999			this.bigEndian && b.reverse();
7000		    }
7001	}
7002	,hasNeededBits: function(neededBits) {
7003		return this.buffer.length >= -(-neededBits >> 3);
7004	}
7005	,checkBuffer: function(neededBits) {
7006		if(!this.hasNeededBits(neededBits)) {
7007			throw new Error("checkBuffer::missing bytes");
7008		}
7009	}
7010	,__class__: js_BinaryBuffer
7011};
7012var js_Boot = function() { };
7013js_Boot.__name__ = true;
7014js_Boot.getClass = function(o) {
7015	if(o == null) {
7016		return null;
7017	} else if(((o) instanceof Array)) {
7018		return Array;
7019	} else {
7020		var cl = o.__class__;
7021		if(cl != null) {
7022			return cl;
7023		}
7024		var name = js_Boot.__nativeClassName(o);
7025		if(name != null) {
7026			return js_Boot.__resolveNativeClass(name);
7027		}
7028		return null;
7029	}
7030};
7031js_Boot.__string_rec = function(o,s) {
7032	if(o == null) {
7033		return "null";
7034	}
7035	if(s.length >= 5) {
7036		return "<...>";
7037	}
7038	var t = typeof(o);
7039	if(t == "function" && (o.__name__ || o.__ename__)) {
7040		t = "object";
7041	}
7042	switch(t) {
7043	case "function":
7044		return "<function>";
7045	case "object":
7046		if(o.__enum__) {
7047			var e = $hxEnums[o.__enum__];
7048			var con = e.__constructs__[o._hx_index];
7049			var n = con._hx_name;
7050			if(con.__params__) {
7051				s = s + "\t";
7052				return n + "(" + ((function($this) {
7053					var $r;
7054					var _g = [];
7055					{
7056						var _g1 = 0;
7057						var _g2 = con.__params__;
7058						while(true) {
7059							if(!(_g1 < _g2.length)) {
7060								break;
7061							}
7062							var p = _g2[_g1];
7063							_g1 = _g1 + 1;
7064							_g.push(js_Boot.__string_rec(o[p],s));
7065						}
7066					}
7067					$r = _g;
7068					return $r;
7069				}(this))).join(",") + ")";
7070			} else {
7071				return n;
7072			}
7073		}
7074		if(((o) instanceof Array)) {
7075			var str = "[";
7076			s += "\t";
7077			var _g = 0;
7078			var _g1 = o.length;
7079			while(_g < _g1) {
7080				var i = _g++;
7081				str += (i > 0 ? "," : "") + js_Boot.__string_rec(o[i],s);
7082			}
7083			str += "]";
7084			return str;
7085		}
7086		var tostr;
7087		try {
7088			tostr = o.toString;
7089		} catch( _g ) {
7090			haxe_NativeStackTrace.lastError = _g;
7091			return "???";
7092		}
7093		if(tostr != null && tostr != Object.toString && typeof(tostr) == "function") {
7094			var s2 = o.toString();
7095			if(s2 != "[object Object]") {
7096				return s2;
7097			}
7098		}
7099		var str = "{\n";
7100		s += "\t";
7101		var hasp = o.hasOwnProperty != null;
7102		var k = null;
7103		for( k in o ) {
7104		if(hasp && !o.hasOwnProperty(k)) {
7105			continue;
7106		}
7107		if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__" || k == "__properties__") {
7108			continue;
7109		}
7110		if(str.length != 2) {
7111			str += ", \n";
7112		}
7113		str += s + k + " : " + js_Boot.__string_rec(o[k],s);
7114		}
7115		s = s.substring(1);
7116		str += "\n" + s + "}";
7117		return str;
7118	case "string":
7119		return o;
7120	default:
7121		return String(o);
7122	}
7123};
7124js_Boot.__nativeClassName = function(o) {
7125	var name = js_Boot.__toStr.call(o).slice(8,-1);
7126	if(name == "Object" || name == "Function" || name == "Math" || name == "JSON") {
7127		return null;
7128	}
7129	return name;
7130};
7131js_Boot.__resolveNativeClass = function(name) {
7132	return $global[name];
7133};
7134function $bind(o,m) { if( m == null ) return null; if( m.__id__ == null ) m.__id__ = $global.$haxeUID++; var f; if( o.hx__closures__ == null ) o.hx__closures__ = {}; else f = o.hx__closures__[m.__id__]; if( f == null ) { f = m.bind(o); o.hx__closures__[m.__id__] = f; } return f; }
7135$global.$haxeUID |= 0;
7136if(typeof(performance) != "undefined" ? typeof(performance.now) == "function" : false) {
7137	HxOverrides.now = performance.now.bind(performance);
7138}
7139Native.initBinarySerialization();
7140if( String.fromCodePoint == null ) String.fromCodePoint = function(c) { return c < 0x10000 ? String.fromCharCode(c) : String.fromCharCode((c>>10)+0xD7C0)+String.fromCharCode((c&0x3FF)+0xDC00); }
7141Object.defineProperty(String.prototype,"__class__",{ value : String, enumerable : false, writable : true});
7142String.__name__ = true;
7143Array.__name__ = true;
7144Date.prototype.__class__ = Date;
7145Date.__name__ = "Date";
7146js_Boot.__toStr = ({ }).toString;
7147HaxeRuntime._structconstruct_ = new haxe_ds_IntMap();
7148HaxeRuntime.regexCharsToReplaceForString = /[\\\"\n\t]/g;
7149HaxeRuntime.regexCharsToReplaceForJson = /[\\\"\n\t\x00-\x08\x0B-\x1F]/g;
7150FlowJsProgram.globals__ = (function($this) {
7151	var $r;
7152	HaxeRuntime._structnames_ = new haxe_ds_IntMap();
7153	HaxeRuntime._structids_ = new haxe_ds_StringMap();
7154	HaxeRuntime._structargs_ = new haxe_ds_IntMap();
7155	$r = HaxeRuntime._structargtypes_ = new haxe_ds_IntMap();
7156	return $r;
7157}(this));
7158JSBinflowBuffer.DoubleSwapBuffer = new DataView(new ArrayBuffer(8));
7159Md5.inst = new Md5();
7160Util.filesCache = new haxe_ds_StringMap();
7161Util.filesHashCache = new haxe_ds_StringMap();
7162Platform.isChrome = new EReg("chrome|crios","i").match(window.navigator.userAgent);
7163Platform.isSafari = new EReg("safari","i").match(window.navigator.userAgent) ? !Platform.isChrome : false;
7164Platform.isIE = new EReg("MSIE|Trident","i").match(window.navigator.userAgent);
7165Platform.isEdge = new EReg("Edge","i").match(window.navigator.userAgent);
7166Platform.isFirefox = new EReg("firefox","i").match(window.navigator.userAgent);
7167Platform.isSamsung = new EReg("samsungbrowser","i").match(window.navigator.userAgent);
7168Platform.isIEMobile = new EReg("iemobile","i").match(window.navigator.userAgent);
7169Platform.isAndroid = new EReg("android","i").match(window.navigator.userAgent);
7170Platform.isIOS = !(new EReg("ipad|iphone|ipod","i").match(window.navigator.userAgent) || HaxeRuntime.typeof(navigator.standalone) != "undefined" && window.navigator.standalone) ? window.navigator.platform == "MacIntel" && window.navigator.maxTouchPoints > 1 ? !window.MSStream : false : true;
7171Platform.isMobile = !(new EReg("webOS|BlackBerry|Windows Phone","i").match(window.navigator.userAgent) || Platform.isIEMobile || Platform.isAndroid) ? Platform.isIOS : true;
7172Platform.isRetinaDisplay = Platform.getIsRetinaDisplay();
7173Platform.isHighDensityDisplay = !Platform.isRetinaDisplay ? Platform.getIsHighDensityDisplay() : true;
7174Platform.isWKWebView = Platform.isIOS ? window.webkit ? window.webkit.messageHandlers : false : false;
7175Platform.isMacintosh = new EReg("Mac","i").match(window.navigator.platform);
7176Platform.isWindows = new EReg("Win","i").match(window.navigator.platform);
7177Platform.isLinux = new EReg("Linux","i").match(window.navigator.platform);
7178Platform.isDarkMode = window.matchMedia("(prefers-color-scheme: dark)").matches;
7179Platform.isMouseSupported = window.matchMedia("(any-pointer: fine)").matches;
7180Platform.browserMajorVersion = function() {
7181		var version = window.navigator.userAgent.match(/version\/(\d+)/i);
7182		return version && version.length > 1 ? parseInt(version[1]) || 0 : 0;
7183	}();
7184Platform.SupportsVideoTexture = !Platform.isIEMobile;
7185Platform.AccessiblityAllowed = Util.getParameter("accessenabled") != "1" ? Platform.isFirefox || Platform.isChrome || Platform.isSafari ? !Platform.isEdge : false : true;
7186Native.isNew = Util.getParameter("new") == "1";
7187Native.complainedMissingExternal = false;
7188Native.clipboardData = "";
7189Native.clipboardDataHtml = "";
7190Native.useConcatForPush = !Platform.isChrome ? Platform.isSafari : true;
7191Native.DeferQueue = [];
7192Native.deferTolerance = 250;
7193Native.deferActive = false;
7194Native.openedWindows = new haxe_ds_IntMap();
7195Native.openedWindowsNextId = 1;
7196Native.FlowCrashHandlers = [];
7197Native.PlatformEventListeners = new haxe_ds_StringMap();
7198Native.LastUserAction = -1;
7199Native.IdleLimit = 60000.;
7200Native.parseJsonFirstCall = true;
7201Native.daysInMonth = [0,31,28,31,30,31,30,31,31,30,31,30,31];
7202
7203(function() {
7204var S = HaxeRuntime.initStruct;
7205var i=RuntimeType.RTArray(RuntimeType.RTInt);var h=RuntimeType.RTArray(RuntimeType.RTString);var g=RuntimeType.RTArray(RuntimeType.RTUnknown);var e=RuntimeType.RTBool;var b=RuntimeType.RTDouble;var a=RuntimeType.RTInt;var f=RuntimeType.RTRefTo(RuntimeType.RTUnknown);var c=RuntimeType.RTString;var d=RuntimeType.RTUnknown;S(0,"SAxisX",[],[]);st_0={_id:0};S(1,"SAxisY",[],[]);st_1={_id:1};S(2,"SSize",["J","K","L","M"],[a,a,a,a]);S(3,"SWidthHeight",["N","O"],[b,b]);S(4,"KeyValue",["P","Q"],[c,c]);S(5,"Pair",["R","S"],[d,d]);S(6,"Quadruple",["R","S","T","U"],[d,d,d,d]);S(7,"Triple",["R","S","T"],[d,d,d]);S(8,"IllegalStruct",[],[]);st_8={_id:8};S(9,"None",[],[]);st_9={_id:9};S(10,"Some",["Q"],[d]);S(11,"Cons",["head","tail"],[d,d]);S(12,"EmptyList",[],[]);st_12={_id:12};S(13,"DEnd",[],[]);st_13={_id:13};S(14,"DLink",["X","Y","Z","a0"],[d,d,d,e]);S(15,"DList",["R","b0"],[d,d]);S(16,"OWASP",["c0"],[a]);S(17,"VerboseOutput",["d0"],[d]);S(18,"SameStartLength",["e0","f0","g0","h0"],[a,a,a,e]);S(19,"Size2D",["i0","j0"],[a,a]);S(20,"EmptyPopResult",[],[]);st_20={_id:20};S(21,"PopResult",["g0","X","k0"],[d,d,d]);S(22,"TreeEmpty",[],[]);st_22={_id:22};S(23,"TreeNode",["P","Q","l0","m0","n0"],[d,d,d,d,a]);S(24,"ConstBehaviour",["o0"],[d]);S(25,"DebuggedSubscriber",["p0","d0","q0","r0","s0"],[d,d,d,d,d]);S(26,"Disposable",["Q","t0"],[d,d]);S(27,"DynamicBehaviour",["Q","u0"],[f,d]);S(28,"WidthHeight",["N","O"],[b,b]);S(29,"Promise",["v0"],[d]);S(30,"PopSetResult",["Q","k0"],[d,d]);S(31,"Set",["w0"],[d]);S(32,"Factor",["x0","y0"],[b,b]);S(33,"Point",["x0","y0"],[b,b]);S(34,"PositionScale",["z0","A0"],[d,d]);S(35,"Rect",["B0","C0","D0","E0"],[b,b,b,b]);S(36,"V2",["x0","y0"],[b,b]);S(37,"V2Circle",["F0","G0"],[d,b]);S(38,"SAll",[],[]);st_38={_id:38};S(39,"SAutoHeight",[],[]);st_39={_id:39};S(40,"SAutoWidth",[],[]);st_40={_id:40};S(41,"SBlock",["H0","I0"],[g,g]);S(42,"SBlockHtml",["J0","K0"],[h,c]);S(43,"SBlockMetrics",["L0","M0","N0","O0","P0","Q0","R0","S0","K0"],[c,d,d,e,d,c,c,d,c]);S(44,"SBlocks",["T0"],[g]);S(45,"SBorder",["l0","U0","m0","V0","W0"],[a,a,a,a,d]);S(46,"SBreakpointLandscapeW",["N"],[a]);S(47,"SBreakpointW",["N"],[a]);S(48,"SBreakpointWindowWH",["N","O"],[a,a]);S(49,"SCol",[],[]);st_49={_id:49};S(50,"SCols",["X0","I0"],[g,g]);S(51,"SDontKeepAspectRatio",[],[]);st_51={_id:51};S(52,"SDrop",[],[]);st_52={_id:52};S(53,"SExportFormat",["Y0"],[c]);S(54,"SFill",[],[]);st_54={_id:54};S(55,"SFixed",["M0"],[a]);S(56,"SFixedPosition",[],[]);st_56={_id:56};S(57,"SFrame",["Z0","I0"],[d,g]);S(58,"SGroup",["a1","I0"],[g,g]);S(59,"SLayoutName",["b1"],[c]);S(60,"SLine",[],[]);st_60={_id:60};S(61,"SLines",["c1","I0"],[g,g]);S(62,"SMaxHeight",["O"],[a]);S(63,"SMaxWidth",["N"],[a]);S(64,"SOverflowX",["d1"],[c]);S(65,"SOverflowY",["d1"],[c]);S(66,"SOverlap",[],[]);st_66={_id:66};S(67,"SPageContent",["e1","f1","K0"],[c,c,c]);S(68,"SPageLayout",["W0","I0"],[d,g]);S(69,"SPageOutput",["g1","T0","h1","i1","M0","j1","k1"],[g,d,d,d,d,a,c]);S(70,"SPanel",["b1","l1","m1","n1","d1"],[c,b,b,d,d]);S(71,"SPanelMetrics",["L0","M0","N0","o1","p1"],[c,d,d,d,e]);S(72,"SPanelOutput",["q1","T0","r1"],[d,d,g]);
7205S(73,"SSameSizeGroup",["s1"],[c]);S(74,"SScroll",[],[]);st_74={_id:74};S(75,"SStack",[],[]);st_75={_id:75};S(76,"SSubSizes",["t1","H0"],[d,g]);S(77,"SSubStructure",["t1","W0","I0"],[d,d,g]);S(78,"SUnlimitedHeight",[],[]);st_78={_id:78};S(79,"SUnlimitedWidth",[],[]);st_79={_id:79};S(80,"SViewportBasedSize",["N","O","u1","v1"],[b,b,a,a]);S(81,"SWrap",[],[]);st_81={_id:81};S(82,"SZIndex",["P0"],[a]);S(83,"JsonArray",["Q"],[g]);S(84,"JsonBool",["X"],[e]);S(85,"JsonDouble",["Q"],[b]);S(86,"JsonFieldIgnoreCase",[],[]);st_86={_id:86};S(87,"JsonFieldTreatAsPath",["w1"],[c]);S(88,"JsonNull",[],[]);st_88={_id:88};S(89,"JsonObject",["x1"],[g]);S(90,"JsonParseResult",["Q","y1","z1"],[d,a,a]);S(91,"JsonString",["A1"],[c]);S(92,"ParsingAcc",["B1","C1","D1","E1"],[d,a,a,a]);S(93,"BluePrintCondition",["F1","G1","H1"],[c,c,a]);S(94,"BluePrintElse",["G1","H1"],[c,a]);S(95,"BluePrintLines",["c1"],[d]);S(96,"BlueReplacement",["C1","I1","Q"],[a,a,c]);S(97,"SBlockTemplate",["b1","J1","J0","K0"],[c,d,h,c]);S(98,"SHtmlTemplate",["L0","M0","J0","K0"],[c,d,h,c]);S(99,"DeserializeOptionFailProc",["K1"],[d]);S(100,"DeserializeOptionFixups",["L1"],[d]);S(101,"DeserializeOptionFixupsEx",["L1"],[d]);S(102,"DeserializeOptionRootArray",["M1","N1"],[d,d]);S(103,"DeserializeOptionThrowErrors",["O1"],[e]);S(104,"SChoice",["P1","M0","Q1"],[d,d,i]);S(105,"SCombination",["H0"],[g]);S(106,"SLayoutResult",["R1","g1"],[d,d]);S(107,"SLayoutState",["S1","T1"],[f,c]);S(108,"SPanelLayout",["U1","H0","V1","Q1","p1"],[d,g,g,i,e]);}());
7206var t=true;var f=false;function CR_(v){this.__v=v}var CMP = HaxeRuntime.compareByValue;
7207var CME = HaxeRuntime.compareEqual;
7208var $0=c$2(0,0,0,0);var $1=c$3(0,0);$2=Native.genericCompare||function(_0,_1){if((CMP(_0,_1)<0)){return -1;}else{if(CME(_0,_1)){return 0;}else{return 1;}}};function $3(_0,_1){return $2(_1,_0);}function $4(_0){return (function(_1,_2){return $2(_0(_1),_0(_2));});}function $5(_0){return (function(_1,_2){return $3(_0(_1),_0(_2));});}function $6(_0){return _0.R;}function $7(_0){return _0.S;}function $8(_0,_1){return _1(_0.R,_0.S);}function $9(_0,_1){return _1(_0.R,_0.S,_0.T,_0.U);}function $a(_0,_1){return _1(_0.R,_0.S,_0.T);}$b=Native.isSameStructType;$c=Native.makeStructValue;$d=Native.toString;function $e(_0){return _0;}function $f(_0){return $d($e(_0));}function $g(_0,_1){if((_0)._id==9){return _1;}else{var _2=_0.Q;return _2;}}function $h(_0,_1,_2){if((_0)._id==9){return _2();}else{var _3=_0.Q;return _1(_3);}}function $i(_0,_1,_2){if((_0)._id==9){return _2;}else{var _3=_0.Q;return _1(_3);}}function $j(_0){if((_0)._id==9){return t;}else{return f;}}function $k(_0){if((_0)._id==9){return f;}else{return t;}}function $l(_0,_1){if((_0)._id==9){return null;}else{var _2=_0.Q;return _1(_2);}}function $m(_0,_1){if((_0)._id==9){return st_9;}else{var _2=_0.Q;return c$a(_1(_2));}}var $n=new CR_((function(_0,_1){return _1(_0);}));$o=Native.list2array;$p=Native.list2string;$q=Native.tailList||function(_0){if((_0)._id==12){return _0;}else{var _1=_0.tail;return _1;}};function $r(_0,_1){T:while(!0){if((_0)._id==12){return _1;}else{var _2=_0.head,_3=_0.tail,a_=_3;var b_=c$b(_2,_1);_0=a_;_1=b_;continue T}}}function $s(_0,_1,_2){T:while(!0){if((_0)._id==12){return _2;}else{var _3=_0.head,_4=_0.tail,a_=_4;var b_=c$b(_1(_3),_2);_0=a_;_2=b_;continue T}}}function $t(_0,_1){T:while(!0){if((_0)._id==12){return f;}else{var _2=_0.head,_3=_0.tail;if(_1(_2)){return t;}else{_0=_3;continue T}}}}function $u(_0,_1,_2){T:while(!0){if((_0)._id==12){return _1;}else{var _3=_0.head,_4=_0.tail,a_=_4;var b_=_2(_1,_3);_0=a_;_1=b_;continue T}}}function $v(_0,_1,_2){T:while(!0){if((_0)._id==12){return _1;}else{var _3=_0.head,_4=_0.tail,a_=_4;var b_=_2(_0,_1,_3);_0=a_;_1=b_;continue T}}}function $w(){return st_12;}function $x(_0){return c$b(_0,st_12);}function $y(_0,_1){T:while(!0){if((_0)._id==12){return _1;}else{var _2=_0.head,_3=_0.tail,a_=_3;var b_=c$b(_2,_1);_0=a_;_1=b_;continue T}}}function $z(_0,_1){return $t(_0,(function(_2){return CME(_2,_1);}));}function $A(_0){return $y(_0,$w());}function $B(_0,_1){if((_1)._id==12){return _0;}else{return $r($A(_0),_1);}}function $C(_0,_1){return $A($s(_0,_1,st_12));}$D=Native.concat;$E=Native.elemIndex||function(_0,_1,_2){var _3=$K(_0,(function(_4,_5){return CME(_5,_1);}));if(_3===$L(_0)){return _2;}else{return _3;}};$F=Native.enumFromTo;$G=Native.filter;$H=Native.find||function(_0,_1){var _2=$K(_0,(function(_3,_4){return _1(_4);}));if(_2===$L(_0)){return st_9;}else{return c$a(_0[_2]);}};$I=Native.fold;$J=Native.foldi;$K=Native.iteriUntil;$L=Native.length__;$M=Native.map;$N=Native.mapi;$O=Native.replace;$P=Native.subrange;function $Q(_0){return $I(_0,st_12,(function(_1,_2){return c$b(_2,_1);}));}function $R(_0,_1){return $O(_0,$L(_0),_1);}function $S(_0,_1,_2){if($L(_0)<$L(_2)){return $D($D(_0,_1),_2);}else{return $D(_0,$D(_1,_2));}}function $T(_0,_1){if($L(_0)>0){return _0[0];}else{return _1;}}function $U(_0,_1,_2,_3){T:while(!0){if(_0<=_1){var a_=((_0+1)|0);var b_=_3(_2,_0);_0=a_;_2=b_;continue T}else{return _2;}}}function $V(_0){return $P(_0,1,(($L(_0)-1)|0));}function $W(_0,_1){return $E(_0,_1,-1)!==-1;}function $X(_0,_1,_2){if(_2<=3){if(_2===1){return _0[_1];}else{if(_2===2){return $D(_0[_1],_0[((_1+1)|0)]);}else{if(_2===3){return $S(_0[_1],_0[((_1+1)|0)],_0[((_1+2)|0)]);}else{return [];}}}}else{var _3=((_2/2)|0);return $D($X(_0,_1,_3),$X(_0,((_1+_3)|0),((_2-_3)|0)));}}function $Y(_0,_1,_2){return $g($H(_0,_1),_2);}function $Z(_0){return $X(_0,0,$L(_0));}function $00(_0,_1){return $Z($M(_0,_1));}$10=Native.extractStruct||function(_0,_1){return $I(_0,_1,(function(_2,_3){if($b(_2,_3)){var _4=$e(_3);return _4;}else{return _2;}}));};function $20(_0,_1){return $G(_0,(function(_2){return $b(_1,_2);}));}function $30(_0,_1){return $D($G(_0,(function(_2){return !$b(_2,_1);})),[_1]);}function $40(){return c$f(st_13,st_13);}var $50=new CR_(t);var $60=new CR_([]);function $70(){return $10($60.__v,c$g(0)).c0>0;}function $80(){return $10($60.__v,c$h((function(){return t;}))).d0();}function $90(){return ((!$70())&&$80())&&$50.__v;}function $a0(_0,_1,_2){T:while(!0){if(_1(_0)){_0=_2(_0);continue T}else{return _0;}}}$b0=Native.hostCall;$c0=Native.fast_max||function(_0,_1){if((CMP(_0,_1)>0)){return _0;}else{return _1;}};$d0=Native.println;function $e0(_0){return $f(_0);}function $f0(_0,_1,_2){T:while(!0){if(_0>=_1){return _1;}else{if(_2(_0)){return _0;}else{_0=((_0+1)|0);continue T}}}}function $g0(_0){return _0;}var $h0=new CR_(t);function $i0(_0,_1){if((CMP(_0,_1)<=0)){return _0;}else{return _1;}}function $j0(_0,_1){return null;}function $k0(_0){if($90()){return $d0(_0);}else{return null;}}function $l0(_0,_1){return $J(_0,c$5([],0),(function(_2,_3,_4){return c$5($D(_3.R,[$N(_4,(function(_5,_6){return _1(_2,_5,((_3.S+_5)|0),_6);}))]),((_3.S+$L(_4))|0));})).R;}function $m0(_0,_1){T:while(!0){if((_0)._id==23){var _2=_0.P,_3=_0.Q,_4=_0.l0,_5=_0.m0,_6=$2(_1,_2);if(_6<0){_0=_4;continue T}else{if(_6===0){return c$a(_3);}else{_0=_5;continue T}}}else{return st_9;}}}$n0=Native.fast_setTree||function(_0,_1,_2){if((_0)._id==23){var _3=_0.P,_4=_0.Q,_5=_0.l0,_6=_0.m0,_7=_0.n0,_8=$2(_1,_3);if(_8<0){return $G0(_3,_4,$n0(_5,_1,_2),_6);}else{if(_8===0){return c$n(_3,_2,_5,_6,_7);}else{return $G0(_3,_4,_5,$n0(_6,_1,_2));}}}else{return c$n(_1,_2,st_22,st_22,1);}};function $o0(_0,_1){if((_0)._id==22){return st_9;}else{var _2=_0.P,_3=_0.Q,_4=_0.l0,_5=_0.m0;return $h($o0(_4,_1),(function(_6){return c$a(_6);}),(function(){return $h(_1(_2,_3),(function(_7){return c$a(_7);}),(function(){return $o0(_5,_1);}));}));}}function $p0(_0,_1,_2){T:while(!0){if((_0)._id==22){return _1;}else{var _3=_0.P,_4=_0.Q,_5=_0.l0,_6=_0.m0,_7=$p0(_5,_1,_2),_8=_2(_3,_4,_7),a_=_6;var b_=_8;_0=a_;_1=b_;continue T}}}function $q0(_0){return _0._id===22;}function $r0(){return st_22;}function $s0(_0,_1){return c$n(_0,_1,st_22,st_22,1);}function $t0(_0,_1){if((_0)._id==22){return st_22;}else{var _2=_0.P,_3=_0.Q,_4=_0.l0,_5=_0.m0,_6=_0.n0;
7208return c$n(_2,_1(_3),$t0(_4,_1),$t0(_5,_1),_6);}}function $u0(_0,_1){if((_0)._id==22){return st_22;}else{var _2=_0.P,_3=_0.Q,_4=_0.l0,_5=_0.m0,_6=_0.n0;return c$n(_2,_1(_2,_3),$u0(_4,_1),$u0(_5,_1),_6);}}function $v0(_0){if((_0)._id==22){return 0;}else{var _1=_0.l0,_2=_0.m0;return ((((1+$v0(_1))|0)+$v0(_2))|0);}}function $w0(_0){if((_0)._id==22){return 0;}else{var _1=_0.n0;return _1;}}function $x0(_0,_1){return $k($m0(_0,_1));}function $y0(_0){return $p0(_0,$w(),(function(_$0,_1,_2){return c$b(_1,_2);}));}function $z0(_0,_1,_2){return $g($m0(_0,_1),_2);}function $A0(_0,_1,_2,_3){return c$n(_0,_1,_2,_3,(($c0($w0(_2),$w0(_3))+1)|0));}function $B0(_0){return $o($y0(_0));}function $C0(_0){if((_0)._id==22){return st_20;}else{var _1=_0.P,_2=_0.Q,_3=_0.l0,_4=_0.m0;if((_4)._id==22){return c$l(_1,_2,_3);}else{var _5=$C0(_4);if((_5)._id==20){return _5;}else{var _6=_5.g0,_7=_5.X,_8=_5.k0;return c$l(_6,_7,$A0(_1,_2,_3,_8));}}}}function $D0(_0){if((_0)._id==22){return _0;}else{var _1=_0.P,_2=_0.Q,_3=_0.l0,_4=_0.m0;if((_4)._id==22){return _0;}else{var _5=_4.P,_6=_4.Q,_7=_4.l0,_8=_4.m0;return $A0(_5,_6,$A0(_1,_2,_3,_7),_8);}}}function $E0(_0){if((_0)._id==22){return _0;}else{var _1=_0.P,_2=_0.Q,_3=_0.l0,_4=_0.m0;if((_3)._id==22){return _0;}else{var _5=_3.P,_6=_3.Q,_7=_3.l0,_8=_3.m0;return $A0(_5,_6,_7,$A0(_1,_2,_8,_4));}}}function $F0(_0,_1){if((_0)._id==22){return _1;}else{if((_1)._id==22){return _0;}else{var _2=$C0(_0);if((_2)._id==20){return _0;}else{var _3=_2.g0,_4=_2.X,_5=_2.k0;return $A0(_3,_4,_5,_1);}}}}function $G0(_0,_1,_2,_3){var _4=$w0(_2),_5=$w0(_3),_6=((_4-_5)|0),_7=c$n(_0,_1,_2,_3,(($c0(_4,_5)+1)|0));if((_6===-1||_6===0)||_6===1){return _7;}else{if(_6<0){if((_3)._id==22){return _7;}else{var _8=_3.l0,_9=_3.m0;return $D0(($w0(_8)<$w0(_9)?_7:$A0(_0,_1,_2,$E0(_3))));}}else{if((_2)._id==22){return _7;}else{var _a=_2.l0,_b=_2.m0;return $E0(($w0(_a)<$w0(_b)?$A0(_0,_1,$D0(_2),_3):_7));}}}}function $H0(_0,_1){if((_0)._id==23){var _2=_0.P,_3=_0.Q,_4=_0.l0,_5=_0.m0,_6=$2(_1,_2);if(_6<0){return $A0(_2,_3,$H0(_4,_1),_5);}else{if(_6===0){return $F0(_4,_5);}else{return $A0(_2,_3,_4,$H0(_5,_1));}}}else{return _0;}}function $I0(_0,_1,_2){T:while(!0){if((_0)._id==22){return _1;}else{var _3=_0.P,_4=_0.Q,_5=_0.l0,_6=_0.m0,_7=$I0(_5,_1,_2),_8=(_2(_3,_4)?$n0(_7,_3,_4):_7),a_=_6;var b_=_8;_0=a_;_1=b_;continue T}}}function $J0(_0,_1){if(!$q0(_0)){return $p0(_1,_0,(function(_2,_3,_4){return $n0(_4,_2,_3);}));}else{return _1;}}function $K0(_0,_1,_2){return $p0(_1,_0,(function(_3,_4,_5){var _6=$i($m0(_5,_3),(function(_7){return _2(_3,_4,_7);}),_4);return $n0(_5,_3,_6);}));}function $L0(_0,_1){return $I0(_0,$r0(),_1);}var $M0=new CR_(st_9);var $N0=new CR_($e("no category"));var $O0=new CR_($e(""));var $P0=new CR_([]);var $Q0=new CR_(f);var $R0=new CR_($j0);var $S0=new CR_(50);var $T0=new CR_(f);var $U0=new CR_(300);var $V0=c$r(new CR_(0),$40());var $W0=c$r(new CR_($r0()),$40());var $X0=new CR_([]);var $Y0=c$r(new CR_(0),$40());var $Z0=new CR_($N0.__v);var $01=new CR_($Q0.__v);var $11=new CR_($O0.__v);$21=Native.cloneString||function(_0){return _0;};$31=Native.d2s||function(_0){return Std.string(_0);};$41=Native.fromCharCode;$51=Native.getCharAt||function(_0,_1){return $e1(_0,_1,1);};$61=Native.getCharCodeAt;$71=Native.i2s||function(_0){return Std.string(_0);};$81=Native.startsWith||function(_0,_1){var _2=$d1(_1);if(_2>$d1(_0)){return f;}else{return $e1(_0,0,_2)===_1;}};$91=Native.strIndexOf;$a1=Native.strRangeIndexOf||function(_0,_1,_2,_3){var _4=$91($e1(_0,_2,((_3-_2)|0)),_1);if(_4<0){return _4;}else{return ((_2+_4)|0);}};$b1=Native.strReplace||function(_0,_1,_2){if(_1===""){return _0;}else{if($d1(_0)>500){return $p($x1(_0,0,_1,_2,$w(),f));}else{return $j1("",_0,_1,_2,f);}}};$c1=Native.strSplit||function(_0,_1){if(_1===""){return [_0];}else{return $o($y1(_0,_1,0,$w()));}};$d1=Native.strlen;$e1=Native.substring;$f1=Native.toLowerCase;$g1=Native.toStringForJson||function(_0){var _1=(function(_2){if(_2<10){return $41(((48+_2)|0));}else{return $41(((((97+_2)|0)-10)|0));}}),_3=$v1(_0,$x("\""),(function(_4,_5){return c$b((_5<32?(_5===8?"\\b":(_5===9?"\\t":(_5===10?"\\n":(_5===12?"\\f":(_5<=16?("\\u000"+_1(_5)):("\\u001"+_1(((_5-16)|0)))))))):(_5===34?"\\\"":(_5===92?"\\\\":$41(_5)))),_4);}));return $p(c$b("\"",_3));};$h1=Native.trunc||function(_0){return (_0)|0;};function $i1(_0){var _1=$L(_0);if(_1===0){return "";}else{if(_1===1){return _0[0];}else{if(_1<35){return $I(_0,"",(function(_2,_3){return (_2+_3);}));}else{return $p($Q(_0));}}}}function $j1(_0,_1,_2,_3,_4){T:while(!0){var _5=$91((_4?$f1(_1):_1),_2);if(_5>=0){var _6=$d1(_1),_7=$d1(_2),a_=((_0+$e1(_1,0,_5))+_3);var b_=$e1(_1,((_5+_7)|0),((((_6-_5)|0)-_7)|0));_0=a_;_1=b_;continue T}else{return (_0+_1);}}}function $k1(_0){return $d1(_0)===1&&(_0>="0"&&_0<="9");}function $l1(_0){T:while(!0){var _1=$d1(_0);if(_1===0){return _0;}else{var _2=$61(_0,0);if(_2===32||_2===160){_0=$e1(_0,1,((_1-1)|0));continue T}else{return _0;}}}}function $m1(_0){T:while(!0){var _1=$d1(_0);if(_1===0){return _0;}else{var _2=$61(_0,((_1-1)|0));if(_2===32||_2===160){_0=$e1(_0,0,((_1-1)|0));continue T}else{return _0;}}}}function $n1(_0){return $f1(_0)==="true"||_0==="1";}function $o1(_0,_1){return $91(_0,_1)>=0;}function $p1(_0,_1){if(_0.length===0){return "";}else{if($L(_0)===1){return _0[0];}else{return $p($J(_0,$w(),(function(_2,_3,_4){if(_2===0){return c$b(_4,_3);}else{return c$b(_4,c$b(_1,_3));}})));}}}function $q1(_0,_1){var _2=$91(_0,_1);if(_2===-1){return -1;}else{var _3=$d1(_0),_4=$d1(_1);if(_4===0){return 0;}else{var _5=$f0(0,((((_3-_4)|0)+1)|0),(function(_6){return $e1(_0,((((_3-_4)|0)-_6)|0),_4)===_1;}));return ((((_3-_4)|0)-_5)|0);}}}function $r1(_0,_1){return $e1(_0,0,_1);}function $s1(_0,_1,_2){T:while(!0){if(_1<=0){return _2;}else{if(_1===1){return (_2+_0);}else{if(((_1%2)|0)===0){var a_=(_0+_0);var b_=((_1/2)|0);_0=a_;_1=b_;continue T}else{var a_=((_1-1)|0);var b_=(_2+_0);_1=a_;_2=b_;continue T}}}}}function $t1(_0,_1){var _2=$d1(_0);if(_1>=_2){return "";}else{return $e1(_0,_1,((_2-_1)|0));}}function $u1(_0,_1,_2){return $e1(_0,_1,((_2-_1)|0));}function $v1(_0,_1,_2){return $U(0,(($d1(_0)-1)|0),_1,(function(_3,_4){return _2(_3,$61(_0,_4));}));}function $w1(_0,_1,_2){return $U(0,(($d1(_0)-1)|0),_1,(function(_3,_4){return _2(_4,_3,$61(_0,_4));}));}function $x1(_0,_1,_2,_3,_4,_5){T:while(!0){var _6=$d1(_0);if(_1<_6){var _7=$a1((_5?$f1(_0):_0),_2,_1,_6);if(_7>=0){var _8=$e1(_0,_1,((_7-_1)|0)),_9=c$b(_3,c$b(_8,_4)),a_=((_7+$d1(_2))|0);var b_=_9;_1=a_;_4=b_;continue T}else{return c$b($t1(_0,_1),_4);}}else{return _4;}}}function $y1(_0,_1,_2,_3){T:while(!0){var _4=$d1(_0),_5=$a1(_0,_1,_2,_4);if(_5<0){return c$b($e1(_0,_2,_4),_3);}else{var _6=$e1(_0,_2,((_5-_2)|0)),_7=$d1(_1),a_=((_5+_7)|0);var b_=c$b(_6,_3);_2=a_;_3=b_;continue T}}}function $z1(_0,_1){if(_1===""){return _0;}else{var _2=$d1(_0),_3=$f0(0,_2,(function(_4){return $91(_1,(_0[_4]||""))===-1;}));if(_3===0){return _0;}else{return $t1(_0,_3);}}}function $A1(_0,_1,_2){if(_1===""){return [];}else{var _3=new CR_(st_12),_4=$d1(_1),_5=((_2&&$d1(_0)>_4)?(function(){var _6=$61(_1,0);var _7=$w1(_1,st_9,(function(_8,_9,_a){if((($j(_9)&&_a===_6)&&_8>0)&&$81(_1,$e1(_1,_8,((_4-_8)|0)))){return c$a(_8);}else{return _9;}}));return $g(_7,_4);}()):_4);$a0(0,(function(_8){return _8<$d1(_0);}),(function(_8){var _b=$a1(_0,_1,_8,$d1(_0));if(_b<0){return 0x7FFFFFFF;}else{_3.__v=c$b(_b,_3.__v);return ((_b+_5)|0);}}));return $o(_3.__v);}}function $B1(_0){return $v1(_0,0,(function(_1,_2){var _3=(function(_4){return ((HaxeRuntime.mul_32(_1,16)+((_2-_4)|0))|0);});if(48<=_2&&_2<=57){return _3(48);}else{if(65<=_2&&_2<=70){return _3(55);}else{if(97<=_2&&_2<=102){return _3(87);}else{return _1;}}}}));}function $C1(_0,_1){var _2=$d1(_0),_3=$f0(0,_2,(function(_4){var _5=(_0[((_2-((_4+1)|0))|0)]||"");return $91(_1,_5)===-1;}));if(_3===0){return _0;}else{return $r1(_0,((_2-_3)|0));}}function $D1(_0,_1){return $s1(_0,_1,"");}function $E1(_0,_1,_2){var _3=$91(_0,_1);if(_3===-1){return _2;}else{return $t1(_0,((_3+$d1(_1))|0));}}function $F1(_0,_1,_2){var _3=$91(_0,_1);if(_3===-1){return _2;}else{return $r1(_0,_3);}}function $G1(_0){return $m1($l1(_0));}function $H1(_0,_1){return $A1(_0,_1,f);}function $I1(_0,_1,_2,_3){var _4=$E1(_0,_1,_3);if(_4===_3){return _3;}else{return $F1(_4,_2,_3);}}function $J1(_0,_1){return $C1($z1(_0,_1),_1);}function $K1(_0,_1){return $x0(_0.w0,_1);}function $L1(_0,_1){return c$v($n0(_0.w0,_1,t));}function $M1(){return c$v($r0());}$N1=Native.exp;$O1=Native.i2d||function(_0){return _0;};$P1=Native.log;function $Q1(_0){if(_0<0){return -_0;}else{return _0;}}function $R1(_0){if(_0){return 1;}else{return 0;}}var $S1=0.000000000001;var $T1=0.0000000001;var $U1=17976931348623145000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;function $V1(_0){return $I(_0,0,(function(_1,_2){return (_1+_2);}));}function $W1(_0){return ((_0%2)|0)===0;}function $X1(_0){if(48<=_0&&_0<=57){return ((_0-48)|0);}else{return -1;}}function $Y1(_0){if(_0<0){return -(_0)|0;}else{return _0;}}var $Z1=0x7FFFFFFF;function $02(_0){return (_0===(2*_0)&&_0!==0)||_0!==_0;}
7208function $12(_0){if($L(_0)===0){return st_9;}else{return c$a($I(_0,_0[0],$c0));}}function $22(_0,_1,_2){if(_1===0){return 1;}else{var _3=$22(_0,((_1/2)|0),_2);if(((_1%2)|0)===0){return (_3*_3);}else{if(_2){return ((_0*_3)*_3);}else{return ((_3*_3)*_0);}}}}function $32(_0){return $I(_0,0,(function(_1,_2){return ((_1+_2)|0);}));}var $42=-$U1;function $52(_0,_1,_2){var _3=$Q1(_0),_4=$Q1(_1),_5=(_4>_3?($Q1((_1-_0))/_4):(_3!==0?($Q1((_0-_1))/_3):_4));return _5<=_2;}function $62(_0){return $h1((_0>=0?_0:((-_0-$O1($h1(-_0)))>0?(_0-1):_0)));}function $72(_0){return $Q1((_0%1));}function $82(_0){return !$W1(_0);}function $92(_0,_1){if(_0===0){if(_1<=0){return st_9;}else{return c$a(0);}}else{if(_1===0){return c$a(1);}else{if(_1>0){return c$a($22(_0,_1,t));}else{return c$a((1/$22(_0,(-(_1)|0),f)));}}}}function $a2(_0,_1,_2,_3){T:while(!0){if(_1<_2){var _4=$61(_0,_1),_5=$X1(_4);if(_5!==-1){var a_=((_1+1)|0);var b_=((HaxeRuntime.mul_32(10,_3)+_5)|0);_1=a_;_3=b_;continue T}else{return _3;}}else{return _3;}}}function $b2(_0,_1,_2,_3){if(_0===_1||$Q1((_0-_1))<_3){return t;}else{return $52(_0,_1,_2);}}function $c2(_0){return $62((_0+0.5));}function $d2(_0){var _1=$62(_0);if($O1(_1)===_0){return c$a(_1);}else{return st_9;}}function $e2(_0,_1){return $h($d2(_1),(function(_2){return $92(_0,_2);}),(function(){if(_0<0){var _3=(1/_1),_4=$h1(_3);if($O1(_4)===_3&&(($Y1(_4)%2)|0)===1){return c$a(($N1((_1*$P1($Q1(_0))))*(-1)));}else{return st_9;}}else{if(_0===0&&_1>0){return c$a(0);}else{if(_0===0&&_1<=0){return st_9;}else{return c$a($N1((_1*$P1(_0))));}}}}));}function $f2(_0,_1){return $b2(_0,_1,$T1,$S1);}function $g2(_0,_1){return $h($e2(_0,_1),$g0,(function(){return ($N1((_1*$P1($Q1(_0))))*((_0<0&&(($62($Q1(_1))%2)|0)===1)?(-1):1));}));}function $h2(_0,_1,_2,_3){if(_1<_2){var _4=$61(_0,_1),_5=_4===45,_6=_4===43,_7=$a2(_0,((_1+$R1((_5||_6)))|0),_2,0);if(_5){return (_3*$g2(10,$O1((-(_7)|0))));}else{return (_3*$g2(10,$O1(_7)));}}else{return _3;}}function $i2(_0,_1,_2,_3,_4){if(_1<_2){var _5=$61(_0,_1),_6=$X1(_5);if(_6!==-1){var _7=$i2(_0,((_1+1)|0),_2,((_3*10)+$O1(_6)),(_4*10));return c$5(_7.R,_7.S);}else{if(_5===69||_5===101){return c$5($h2(_0,((_1+1)|0),_2,(_3/_4)),1);}else{return c$5(_3,_4);}}}else{return c$5(_3,_4);}}function $j2(_0,_1,_2,_3,_4){T:while(!0){if(_1<_2){var _5=$61(_0,_1),_6=$X1(_5);if(_6!==-1){var a_=((_1+1)|0);var b_=((10*_3)+$O1(_6));_1=a_;_3=b_;continue T}else{if(_5===46){var _7=$i2(_0,((_1+1)|0),_2,_3,10),_8=(10*_7.R);if($02(_8)){return ((_7.R/_7.S)*10);}else{return (_8/_7.S);}}else{if(_5===69||_5===101){return $h2(_0,((_1+1)|0),_2,_3);}else{if($f2(_4,$42)){return _3;}else{return _4;}}}}}else{return _3;}}}function $k2(_0){var _1=$d1(_0);if(_1===0){return 0;}else{var _2=$61(_0,0)===45;if(_2){return -$j2(_0,1,_1,0,$42);}else{return $j2(_0,0,_1,0,$42);}}}function $l2(_0,_1,_2,_3){T:while(!0){var _4=$d1(_0),_5=(_2>_3?$a1(_0,"\"",_2,_4):_3),_6=$a1(_0,"\\",_2,_5);if(_6!==-1&&_6<_5){var _7=$e1(_0,_2,((_6-_2)|0)),_8=$61(_0,((_6+1)|0));if(_8===34){var a_=c$b("\"",c$b(_7,_1));var b_=((_6+2)|0);var c_=_5;_1=a_;_2=b_;_3=c_;continue T}else{if(_8===92){var a_=c$b("\\",c$b(_7,_1));var b_=((_6+2)|0);var c_=_5;_1=a_;_2=b_;_3=c_;continue T}else{if(_8===110){var a_=c$b("\n",c$b(_7,_1));var b_=((_6+2)|0);var c_=_5;_1=a_;_2=b_;_3=c_;continue T}else{if(_8===117){var _9=$e1(_0,((_6+2)|0),4),_a=$B1(_9),a_=c$b($41(_a),c$b(_7,_1));var b_=((_6+6)|0);var c_=_5;_1=a_;_2=b_;_3=c_;continue T}else{if(_8===120){var _9=$e1(_0,((_6+2)|0),2),_a=$B1(_9),a_=c$b($41(_a),c$b(_7,_1));var b_=((_6+4)|0);var c_=_5;_1=a_;_2=b_;_3=c_;continue T}else{var _b=(_8===116?"\t":(_8===114?"\r":$41(_8))),a_=c$b(_b,c$b(_7,_1));var b_=((_6+2)|0);var c_=_5;_1=a_;_2=b_;_3=c_;continue T}}}}}}else{if(_5===-1){return c$5(c$b((_2>=_4?"":$e1(_0,_2,((_4-_2)|0))),_1),_4);}else{return c$5(c$b($e1(_0,_2,((_5-_2)|0)),_1),((_5+1)|0));}}}}function $m2(_0,_1){var _2=$l2(_0,$w(),_1,-1);return c$5($21($p(_2.R)),_2.S);}function $n2(_0,_1){return $m2(_0,_1);}function $o2(_0,_1){if($e1(_0,_1,2)==="\"\""){return c$5("",((_1+2)|0));}else{if($61(_0,_1)===34){return $m2(_0,((_1+1)|0));}else{return $m2(_0,_1);}}}function $p2(_0){var _1=$L(_0);if(_1===0){return [];}else{if(_1===1){return $M(_0[0],(function(_2){return [_2];}));}else{var _3=$p2($P(_0,1,((_1-1)|0)));return $I(_0[0],[],(function(_4,_5){var _6=[_5];return $D(_4,$M(_3,(function(_7){return $D(_6,_7);})));}));}}}function $q2(_0,_1,_2,_3,_4){T:while(!0){if(_1>=$L(_0)){return c$5(_3,_4);}else{var _5=_0[_1],_6=_2(_5),a_=((_1+1)|0);var b_=(_6?c$b(_5,_3):_3);var c_=(_6?_4:c$b(_5,_4));_1=a_;_3=b_;_4=c_;continue T}}}function $r2(_0,_1,_2,_3,_4,_5){T:while(!0){var _6=$L(_0),_7=$L(_1);if(_3>=_6){if(_4>=_7){return $o(_5);}else{var a_=((_4+1)|0);var b_=c$b(_1[_4],_5);_4=a_;_5=b_;continue T}}else{if(_4>=_7||_2(_0[_3],_1[_4])<=0){var a_=((_3+1)|0);var b_=c$b(_0[_3],_5);_3=a_;_5=b_;continue T}else{var a_=((_4+1)|0);var b_=c$b(_1[_4],_5);_4=a_;_5=b_;continue T}}}}function $s2(_0,_1){if($L(_0)<50){return $I(_0,c$5([],[]),(function(_2,_3){var _4=_1(_3);if($W(_2.S,_4)){return _2;}else{return c$5($R(_2.R,_3),$R(_2.S,_4));}})).R;}else{return $o($6($I(_0,c$5($w(),$M1()),(function(_5,_3){var _2=_5.R,_6=_5.S,_4=_1(_3);if($K1(_6,_4)){return _5;}else{return c$5(c$b(_3,_2),$L1(_6,_4));}}))));}}function $t2(_0,_1){var _2=$L(_0);if(_2<=1){return _0;}else{if(_2===2){if(_1(_0[0],_0[1])<=0){return _0;}else{return [_0[1],_0[0]];}}else{var _3=((_2/2)|0),_4=$P(_0,0,_3),_5=$P(_0,_3,((_2-_3)|0));return $r2($t2(_4,_1),$t2(_5,_1),_1,0,0,st_12);}}}function $u2(_0,_1){var _2=$q2(_0,0,_1,$w(),$w());return c$5($o(_2.R),$o(_2.S));}function $v2(_0){return $s2(_0,$g0);}function $w2(_0,_1,_2){var _3=(_2?$4:$5);return $t2(_0,_3(_1));}var $x2=c$70([],$r0(),$1,$1,$1,0,"");var $y2=c$x((-1),(-1));function $z2(_0){switch((_0)._id){case 41:{var _1=_0.I0;return $10(_1,c$G([],"")).K0;}break;case 54:{return "";}break;case 55:{return "";}break;}}function $A2(_0,_1){var _2=(function(_3){var _4=$O1($10(_0.I0,c$10(-1)).N),_5=$O1($10(_0.I0,c$00(-1)).O);return c$3(((_4>
72080&&_4<_3.N)?_4:_3.N),((_5>0&&_5<_3.O)?_5:_3.O));});return c$5(_2(_1),_2(_1));}function $B2(_0){return _0.N>_0.O;}var $C2=c$90("",$1,$y2,$1,f);function $D2(_0,_1,_2){switch((_0)._id){case 47:{var _3=_0.N;return _3>0&&_1.N>=$O1(_3);}break;case 48:{var _3=_0.N,_4=_0.O;return ((_3>0&&_4>0)&&_2.N>=$O1(_3))&&_2.O>=$O1(_4);}break;case 46:{var _3=_0.N;return (_3>0&&_1.N>=$O1(_3))&&$B2(_1);}break;}}var $E2=c$a0($C2,$r0(),[]);function $F2(_0,_1,_2){return $I(_0.I0,_0.H0,(function(_3,_4){switch((_4)._id){case 76:{var _5=_4.t1,_6=_4.H0;if($D2(_5,_1,_2)){return _6;}else{return _3;}}break;case 80:{var _7=_4.N,_8=_4.O,_9=_4.u1,_a=_4.v1,_b=$c0((($c2((_2.N*(_7/100)))-_9)|0),0),_c=$c0((($c2((_2.O*(_8/100)))-_a)|0),0);return $R(_3,c$2(_b,_b,_c,_c));}break;default:{return _3;}break;}}));}function $G2(_0,_1,_2){return $J(_0.I0,c$7(_0.W0,0,$10(_0.I0,c$X("")).b1),(function(_3,_4,_5){if((_5)._id==77){var _6=_5.t1,_7=_5.W0,_8=_5.I0;if($D2(_6,_1,_2)){return c$7(_7,((_3+1)|0),$10(_8,c$X("")).b1);}else{return _4;}}else{return _4;}}));}function $H2(_0,_1){return $u0(_0,(function(_2,_3){return $M(_3,(function(_4){return _1(_2,_4);}));}));}function $I2(_0){var _1=$c2($V1(_0)),_2=$M(_0,$h1),_3=((_1-$32(_2))|0),_4=$M(_0,$72),_5=$w2($F(0,(($L(_4)-1)|0)),(function(_6){return _4[_6];}),f);return $I(_5,c$5(_2,_3),(function(_7,_8){if(_7.S>0){return c$5($O(_7.R,_8,((_2[_8]+1)|0)),((_7.S-1)|0));}else{return _7;}})).R;}function $J2(_0,_1){if(($L(_1)===0||$L(_0)<=_1[0])||_1[0]<0){return [_0];}else{return $D([$P(_0,0,_1[0])],$J2($P(_0,_1[0],(($L(_0)-_1[0])|0)),$V(_1)));}}function $K2(_0,_1,_2){return $J(_0,c$7(0,0,[]),(function(_3,_4,_5){var _6=_2(_5),_7=((_4.R+_6)|0);if(_7>_1){return c$7(_6,1,(_4.S>0?$D(_4.T,[_4.S]):_4.T));}else{return c$7(_7,((_4.S+1)|0),_4.T);}})).T;}function $L2(_0){return $M($I2(_0),$O1);}function $M2(_0,_1){return $J2($F(0,(($L(_0)-1)|0)),_1);}function $N2(_0,_1){return c$x((_0.x0+_1.x0),(_0.y0+_1.y0));}function $O2(_0,_1,_2,_3){return $J(_0,c$5(_1,_2),(function(_4,_5,_6){return _3(_4,_5.R,_5.S,_6);}));}var $P2=new CR_($r0());$Q2=Native.parseJson||function(_0){return $63(_0);};function $R2(_0,_1,_2,_3){var _4=(_2?$f1(_1):_1);return $Y(_0,(function(_5){var _6=(_2?$f1(_5.R):_5.R);return _6===_4;}),c$5(_4,_3)).S;}function $S2(_0,_1){if((_0)._id==83){var _2=_0.Q;return _2;}else{return _1;}}function $T2(_0,_1){if((_0)._id==89){var _2=_0.x1;return _2;}else{return _1;}}function $U2(_0){switch((_0)._id){case 91:{var _1=_0.A1;return c$a(_1);}break;case 85:{var _2=_0.Q;return c$a($31(_2));}break;case 84:{var _3=_0.X;return c$a($e0(_3));}break;default:{return st_9;}break;}}function $V2(_0){switch((_0)._id){case 88:{return "null";}break;case 84:{var _1=_0.X;return $e0(_1);}break;case 85:{var _2=_0.Q;return $31(_2);}break;case 91:{var _3=_0.A1;return $g1(_3);}break;case 83:{var _4=_0.Q;return (("["+$p1($M(_4,$V2),","))+"]");}break;case 89:{var _5=_0.x1;return (("{"+$p1($M(_5,(function(_6){return (($g1(_6.R)+":")+$V2(_6.S));})),","))+"}");}break;}}function $W2(_0,_1,_2){var _3=$f0(_2,_1,(function(_4){var _5=$61(_0,_4);return !((((((48<=_5&&_5<=57)||_5===46)||_5===45)||_5===101)||_5===69)||_5===43);}));return c$5(c$n0($k2($e1(_0,_2,((_3-_2)|0)))),_3);}function $X2(_0,_1,_2,_3){T:while(!0){if(_2>=_1){return c$5(-1,_2);}else{var _4=$61(_0,_2);if($41(_4)===_3){var _5=$X2(_0,_1,((_2+1)|0)," ");return c$5(_2,_5.S);}else{if(((_4===32||_4===9)||_4===10)||_4===13){_2=((_2+1)|0);continue T}else{return c$5(-1,_2);}}}}}function $Y2(_0,_1,_2){var _3=$T2(_0,[c$5(_1,_2)]);return $R2(_3,_1,f,_2);}function $Z2(_0,_1){var _2=$T2(_0,[]);return $m($H(_2,(function(_3){return _3.R===_1;})),$7);}function $03(_0,_1){return $g($U2(_0),_1);}function $13(_0,_1){var _2=$Z2(_0,_1);if((_2)._id==9){return [];}else{var _3=_2.Q;return $S2(_3,[]);}}function $23(_0,_1,_2){return $03($Y2(_0,_1,c$t0(_2)),_2);}function $33(_0,_1,_2){T:while(!0){var _3=$61(_0,_2);if(((_3===32||_3===9)||_3===10)||_3===13){_2=((_2+1)|0);continue T}else{if(_3===91){return $43(_0,_1,((_2+1)|0),$w());}else{if(_3===123){return $53(_0,_1,((_2+1)|0),$w());}else{if(_3===34){var _4=$n2(_0,((_2+1)|0));return c$u0(c$t0(_4.R),((_2+1)|0),_4.S,_4.S);}else{if(_3===110&&$e1(_0,_2,4)==="null"){return c$u0(st_88,_2,((_2+4)|0),((_2+4)|0));}else{if(_3===116&&$e1(_0,_2,4)==="true"){return c$u0(c$m0(t),_2,((_2+4)|0),((_2+4)|0));}else{if(_3===102&&$e1(_0,_2,5)==="false"){return c$u0(c$m0(f),_2,((_2+5)|0),((_2+5)|0));}else{var _4=$W2(_0,_1,_2);
7208return c$u0(_4.R,_2,_4.S,_4.S);}}}}}}}}}function $43(_0,_1,_2,_3){T:while(!0){var _4=$X2(_0,_1,_2," ").S,_5=(function(){var s$;if(_3._id==12){s$=c$5(_4,_4)}else{s$=(function(){var _$0=_3.tail;return $X2(_0,_1,_2,",");}())}return s$;}());if($61(_0,_4)===93||$61(_0,_5.S)===93){return c$u0(c$l0($o(_3)),_2,((_4+1)|0),((_4+1)|0));}else{if(_5.S>=_1||_5.R<0){return c$u0(c$l0($o(_3)),_2,_2,_4);}else{var _6=$33(_0,_1,_5.S);if(_6.C1===_6.D1){return c$u0(c$l0($o(_3)),_2,_2,_6.D1);}else{var a_=_6.D1;var b_=c$b(_6.B1,_3);_2=a_;_3=b_;continue T}}}}}function $53(_0,_1,_2,_3){T:while(!0){var _4=$X2(_0,_1,_2," ").S,_5=(function(){var s$;if(_3._id==12){s$=c$5(_4,_4)}else{s$=(function(){var _$0=_3.tail;return $X2(_0,_1,_2,",");}())}return s$;}()),_6=$61(_0,_5.S);if($61(_0,_4)===125){return c$u0(c$r0($o(_3)),_2,((_4+1)|0),((_4+1)|0));}else{if(_5.S>=_1||_5.R<0){return c$u0(c$r0($o(_3)),_2,_2,_4);}else{var _7=(_6===34?(function(){var _8=$n2(_0,((_5.S+1)|0));if(_8.S===((_5.S+1)|0)){return c$5("",((_5.S+1)|0));}else{return _8;}}()):c$5("",((_5.S+1)|0))),_9=$X2(_0,_1,_7.S,":"),_a=$33(_0,_1,_9.S),_b=c$b(c$5(_7.R,_a.B1),_3);if((_7.S===((_5.S+1)|0)||_9.R<0)||_a.C1===_a.D1){return c$u0(c$r0($o(_b)),_2,_2,_a.D1);}else{var a_=_a.D1;var b_=_b;_2=a_;_3=b_;continue T}}}}}function $63(_0){var _1=$33(_0,$d1(_0),0);if(_1.C1===_1.D1){return c$n0(0);}else{return _1.B1;}}function $73(_0,_1){return c$3((_0.N+_1.N),(_0.O+_1.O));}function $83(_0,_1,_2){var _3=$O1(_0.J),_4=$O1(_0.K),_5=$O1(_0.L),_6=$O1(_0.M),_7=(_4<=_3?1:$c0((($i0(_1.N,_4)-_3)/(_4-_3)),0)),_8=(_6<=_5?1:$c0((($i0(_1.O,_6)-_5)/(_6-_5)),0)),_9=$i0(_7,_8),_a=(_2?_9:_7),_b=(_2?_9:_8);return c$2(_0.J,((_0.J+$c2(((_4-_3)*_a)))|0),_0.L,((_0.L+$c2(((_6-_5)*_b)))|0));}function $93(_0,_1){return c$3($c0(_0.N,_1.N),$c0(_0.O,_1.O));}function $a3(_0,_1){if((_1)._id==0){return _0.N;}else{return _0.O;}}function $b3(_0){return HaxeRuntime.mul_32(_0.K,_0.M);}function $c3(_0,_1){if((_1)._id==0){return _0.K;}else{return _0.M;}}function $d3(_0){return HaxeRuntime.mul_32(_0.J,_0.L);}function $e3(_0,_1){if((_1)._id==0){return _0.J;}else{return _0.L;}}function $f3(_0){return $I(_0,c$2($Z1,0,$Z1,0),(function(_1,_2){return c$2($i0(_1.J,_2.J),$c0(_1.K,_2.K),$i0(_1.L,_2.L),$c0(_1.M,_2.M));}));}function $g3(_0){if(_0.length===0){return st_9;}else{var _1=$I(_0,c$2(0,$Z1,0,$Z1),(function(_2,_3){return c$2($c0(_2.J,_3.J),$i0(_2.K,_3.K),$c0(_2.L,_3.L),$i0(_2.M,_3.M));}));if(_1.K>=_1.J&&_1.M>=_1.L){return c$a(_1);}else{return st_9;}}}function $h3(_0,_1){if((_1)._id==0){return c$2(_0,_0,0,0);}else{return c$2(0,0,_0,_0);}}function $i3(_0,_1,_2){if((_2)._id==0){return c$3(_0,_1);}else{return c$3(_1,_0);}}function $j3(_0){return $I(_0,c$3(0,0),(function(_1,_2){return c$3($c0(_1.N,_2.N),$c0(_1.O,_2.O));}));}function $k3(_0,_1){return c$3($c0((_0.N-_1.N),0),$c0((_0.O-_1.O),0));}
7208function $l3(_0){if((_0)._id==0){return st_1;}else{return st_0;}}function $m3(_0){return c$3($O1(_0.J),$O1(_0.L));}function $n3(_0,_1,_2){return c$3((_0.N*_1),(_0.O*_2));}function $o3(_0,_1,_2){if((_2)._id==0){return c$3(_1,_0.O);}else{return c$3(_0.N,_1);}}function $p3(_0){return c$3($O1(_0.K),$O1(_0.M));}function $q3(_0,_1){if((_1)._id==0){return $I(_0,c$3(0,0),(function(_2,_3){return c$3((_2.N+_3.N),$c0(_2.O,_3.O));}));}else{return $I(_0,c$3(0,0),(function(_2,_3){return c$3($c0(_2.N,_3.N),(_2.O+_3.O));}));}}function $r3(_0,_1){if((_1)._id==0){return $I(_0,c$2(0,0,0,0),(function(_2,_3){return c$2(((_2.J+_3.J)|0),((_2.K+_3.K)|0),$c0(_2.L,_3.L),$c0(_2.M,_3.M));}));}else{return $I(_0,c$2(0,0,0,0),(function(_2,_3){return c$2($c0(_2.J,_3.J),$c0(_2.K,_3.K),((_2.L+_3.L)|0),((_2.M+_3.M)|0));}));}}function $s3(_0){return $I(_0,c$2(0,0,0,0),(function(_1,_2){return c$2($c0(_1.J,_2.J),$c0(_1.K,_2.K),$c0(_1.L,_2.L),$c0(_1.M,_2.M));}));}function $t3(_0,_1){return $K2(_0,$h1(_1),(function(_2){return _2.J;}));}function $u3(_0,_1){var _2=$4($b3)(_0,_1);if(_2!==0){return _2;}else{var _3=$4($d3)(_0,_1);if(_3!==0){return _3;}else{var _4=$4((function(_5){return _5.K;}))(_0,_1);if(_4!==0){return _4;}else{return $4((function(_5){return _5.J;}))(_0,_1);}}}}function $v3(_0,_1){return $O1($c3(_0,_1));}
7208function $w3(_0,_1){return $O1($e3(_0,_1));}function $x3(_0,_1){if($b3(_0)<=$b3(_1)){return _0;}else{return _1;}}function $y3(_0){return $r3(_0,st_0);}function $z3(_0){return $r3(_0,st_1);}function $A3(_0,_1,_2,_3){var _4=$M(_0,(function(_5){return $i0($O1((($c3(_5,_3)-$e3(_5,_3))|0)),_1);})),_6=$V1(_4);return $N(_0,(function(_7,_8){return ($w3(_8,_3)+((_2>0&&_6>0)?(_2*(_4[_7]/_6)):0));}));}function $B3(_0){return $z3($M(_0,$y3));}var $C3=["nl0","nl1","nl2","nl3"];function $D3(_0){return $D1("\t",_0);}function $E3(_0){var _1=$z1(_0," \t"),_2=$r1(_0,(($d1(_0)-$d1(_1))|0));return $d1($b1(_2," ",""));}function $F3(_0){return $z1(_0," \t")==="";}function $G3(_0,_1){var _2=$D1("\n",_1),_3=$c1(_0,(("%nl"+$71(_1))+"%")),_4=$L(_3),_5=$N(_3,(function(_6,_7){var _8=(_6===0?_7:$z1(_7,"\n"));if(_6===((_4-1)|0)){return _8;}else{return $C1(_8,"\n\t ");}}));return $p1(_5,_2);}function $H3(_0,_1){T:while(!0){if($F3(_0)){return "";}else{if(_1<0&&$81(_0,"\t")){var a_=$e1(_0,1,(($d1(_0)-1)|0));var b_=((_1+1)|0);_0=a_;_1=b_;continue T}else{return ($D3(_1)+_0);}}}}function $I3(_0,_1){var _2=$r1(_0,_1),_3=$q1(_2,"\n"),_4=(_3===-1?_2:$e1(_2,((_3+1)|0),((((_1-_3)|0)-1)|0)));return $E3(_4);}function $J3(_0){return $I([0,1,2,3],_0,(function(_1,_2){return $G3(_1,_2);}));}function $K3(_0,_1){T:while(!0){if($F3(_0)){return "";}else{if(_1<=0){return _0;}else{var _2=(_0[0]||"");if(_2===" "){_0=$t1(_0,1);continue T}else{if(_2==="\t"){var a_=$t1(_0,1);var b_=((_1-1)|0);_0=a_;_1=b_;continue T}else{return _0;}}}}}}function $L3(_0,_1,_2){return $8($O2(_0,$w(),$w(),(function(_3,_4,_5,_6){var _7=$G1($I1(_6,"% if "," %",""));if(_7!==""){return c$5(c$b(c$v0(_7,_6,_3),c$b(c$x0(_5),_4)),$w());}else{if($o1(_6,"% else %")){return c$5(c$b(c$w0(_6,_3),c$b(c$x0(_5),_4)),$w());}else{if($o1(_6,"% endif %")){return $9($v(c$b(c$x0(_5),_4),c$6(f,f,$w(),c$7($w(),"",$w())),(function(_8,_9,_a){return $9(_9,(function(_b,_c,_d,_e){if(_b){return _9;}else{switch((_a)._id){case 93:{var _f=_a.F1,_g=_a.G1,_h=_a.H1,_i=$81(_f,"!"),_j=$z1(_f,"!"),_k=$m0(_1,_j),_l=$m(_k,(function(_m){var _n=$n1(_m);if(_i){return !_n;}else{return _n;}}));return $a(_e,(function(_o,_p,_q){var _r=$h(_l,(function(_n){var _s=(_n?_o:_q),_t=$u(_s,_g,(function(_u,_v){if(_v!==""){return _v;}else{return _u;}})),_w=(($E3(_g)-$E3(_t))|0);if(_w===0){return _s;}else{if(_w<0){return $C(_s,(function(_v){return $K3(_v,(-(_w)|0));}));}else{return $C(_s,(function(_v){return $H3(_v,_w);}));}}}),(function(){(_2?$k0(((("Blueprint error: condition `"+_f)+"` can't be resolved, line: ")+$71(((_h+1)|0)))):null);var _x=(_p===""?_o:c$b(_p,_o));return $B($B(c$b(_6,_q),_x),$x(_g));}));return c$6(t,t,c$b(c$x0(_r),$q(_8)),_e);}));}break;case 94:{var _y=_a.G1,_z=_a.H1;return $a(_e,(function(_o,_p,_q){if(_p===""){return c$6(f,t,_d,c$7($w(),_y,_o));}else{$k0(((("Blueprint error: double ELSE statement, lines: "+$71(((_z+1)|0)))+", ")+$71(((_3+1)|0))));var _A=$B($B(c$b(_6,_q),c$b(_p,_o)),$x(_y));return c$6(t,t,c$b(c$x0(_A),$q(_8)),_e);}}));}break;case 95:{var _r=_a.c1,_B=$a(_e,(function(_o,_p,_q){return c$7($B(_o,_r),_p,_q);}));return c$6(f,_c,_d,_B);}break;}}}));})),(function(_C,_$0,_d,_$1){((!_C)?$k0(("Blueprint error: ENDIF statement without IF, line: "+$71(((_3+1)|0)))):null);return c$5(_d,$w());}));}else{return c$5(_4,c$b(_6,_5));}}}})),(function(_D,_E){return $o($I($o(c$b(c$x0(_E),_D)),$w(),(function(_9,_a){switch((_a)._id){case 93:{var _6=_a.G1,_3=_a.H1;$k0(((("Blueprint error: IF statement is not closed, line: "+$71(((_3+1)|0)))+", text: ")+_6));return c$b(_6,_9);}break;case 94:{var _6=_a.G1,_3=_a.H1;$k0(((("Blueprint error: ELSE statement is not closed, line: "+$71(((_3+1)|0)))+", text: ")+_6));return c$b(_6,_9);}break;case 95:{var _r=_a.c1;return $B(_r,_9);}break;}})));}));}function $M3(_0,_1){var _2=$p0(_1,[],(function(_3,_4,_5){var _6=$H1(_0,(("%"+_3)+"%")),_7=$c1(_4,"\n");return $I(_6,_5,(function(_8,_9){var _a=($L(_7)>1?(function(){var _b=$I3(_0,_9);var _c=$D3(_b);return $p1($N(_7,(function(_d,_e){if(_d===0){return _e;}else{return (_c+_e);}})),"\n");}()):_4);return $R(_8,c$y0(_9,((((_9+$d1(_3))|0)+2)|0),_a));}));})),_f=$t2(_2,(function(_g,_h){return $3(_g.C1,_h.C1);})),_i=$I(_f,_0,(function(_5,_h){var _j=$r1(_5,_h.C1),_k=$t1(_5,_h.I1);return ((_j+_h.Q)+_k);}));
7208return $p1($M($c1(_i,"\n"),(function(_l){if($F3(_l)){return "";}else{return _l;}})),"\n");}function $N3(_0){if(_0.length===0){return [];}else{var _1=$Y(_0,(function(_2){return _2!=="";}),""),_3=$E3(_1);return $M(_0,(function(_2){return $K3(_2,_3);}));}}function $O3(_0){if(_0===""){return [];}else{var _1=$c1(_0,"\n");if(_1.length===0){return [];}else{var _2=($J1(_1[0],"\t ")===""?$V(_1):_1);return $N3(_2);}}}function $P3(_0,_1,_2,_3){var _4=(function(_5,_6){var _7=$O3(_5),_8=$L3(_7,_6,_2),_9=$p1(_8,"\n");return $M3(_9,_6);}),_6=$J(_1,$r0(),(function(_a,_b,_c){if($82(_a)){var _d=_1[((_a-1)|0)];($W($C3,_c)?$k0((("Blueprint error: parameter name '"+_d)+"' is reserved")):null);var _e=($o1(_c,"%")?_4(_c,_b):_c);return $n0(_b,_d,_e);}else{return _b;}})),_f=_4(_0,_6);if(_3){return $J3(_f);}else{return _f;}}function $Q3(_0,_1){return $P3(_0,_1,t,t);}function $R3(_0,_1,_2){var _3=$I(_1,t,(function(_4,_5){return _4&&$Y2(_2,_5,st_88)._id!==88;}));if(_3){return $Q3(_0,$I(_1,[],(function(_4,_5){return $D(_4,[_5,$23(_2,_5,"")]);})));}else{return "";}}function $S3(_0,_1,_2,_3,_4){var _5=((_0>0||_2>0)?c$O($S((_0>0?[c$T(_0)]:[]),[_4],(_2>0?[c$T(_2)]:[])),[]):_4);if(_1>0||_3>0){return c$Z($S((_1>0?[c$T(_1)]:[]),[_5],(_3>0?[c$T(_3)]:[])),[]);}else{return _5;}}function $T3(_0,_1,_2){var _3=$d1(_0),_4=$f0(_1,_3,(function(_5){var _6=(_0[_5]||"");return !(("0"<=_6&&_6<="9")||_6===".");}));if(_4>_1){var _7=$u1(_0,_1,_4),_8=$k2(_7),_9=(_2?-_8:_8),_a=(_0[_4]||"");if(_a==="e"||_a==="E"){var _b=((_4+1)|0),_c=(_0[_b]||""),_d=_c==="-",_e=_c==="+",_f=((_d||_e)?((_b+1)|0):_b),_g=$f0(_f,_3,(function(_5){var _6=(_0[_5]||"");return !("0"<=_6&&_6<="9");}));if(_g>_f){var _h=((_d?(-1):1)*$k2($u1(_0,_f,_g))),_i=(_9*$N1(($P1(10)*_h))),_j=($e1(_0,_g,2)===".0"?((_g+2)|0):_g);return c$7($e(_i),_j,"");}else{return c$7($e(st_8),_b,"Invalid scientific format");}}else{var _i=($91(_7,".")===-1?(function(){var _5=$62(_9);if($O1(_5)===_9){return $e(_5);}else{return $e(_9);}}()):$e(_9));return c$7(_i,_4,"");}}else{return c$7($e(st_8),_4,"Not a number");}}function $U3(_0,_1){T:while(!0){if($d1(_0)>=_1){var _2=(_0[_1]||"");if((_2===" "||_2==="\n")||_2==="\t"){_1=((_1+1)|0);continue T}else{return _1;}}else{return _1;}}}function $V3(_0,_1){return $W3(_0,$r0(),_1);}function $W3(_0,_1,_2){if(_0===""){return _2;}else{var _3=$Z3(_0,0,[c$C0(_1)]);if(_3.T!==""){$k0((((((_3.T+" at character ")+$71(_3.S))+", got: \"")+$e1(_0,_3.S,80))+"\""));return _2;}else{return _3.R;}}}function $X3(_0,_1,_2){var _3=$Y3(_0,"]",_2,c$7($w(),((_1+1)|0),""));return c$7($o(_3.R),_3.S,_3.T);}function $Y3(_0,_1,_2,_3){T:while(!0){var _4=_3.S;if((_0[_4]||"")===_1){return c$7(_3.R,((_4+1)|0),"");}else{var _5=$Z3(_0,_4,_2);if(_5.T!==""){return c$7(_3.R,_5.S,_5.T);}else{var _6=$U3(_0,_5.S),_7=(_0[_6]||"");if(_7===_1){return c$7(c$b(_5.R,_3.R),((_6+1)|0),_5.T);}else{if(_7===","){_3=c$7(c$b(_5.R,_3.R),((_6+1)|0),_5.T);continue T}else{var _8=$e1(_0,_4,((((_6-_4)|0)+1)|0)),_9=$d1(_0),_a=("Expected , or "+_1);
7208$l($10(_2,c$B0(st_9)).K1,(function(_b){return _b(_0,_6,_a);}));return c$7(_3.R,_6,_a);}}}}}}function $Z3(_0,_1,_2){T:while(!0){var _3=$d1(_0);if(_1>=_3){return c$7($e(st_9),_1,"");}else{var _4=(_0[_1]||"");if((_4===" "||_4==="\n")||_4==="\t"){_1=((_1+1)|0);continue T}else{if($k1(_4)){return $T3(_0,_1,f);}else{if(_4==="\""){var _5=$o2(_0,_1);return c$7($e(_5.R),_5.S,"");}else{if(_4==="f"&&$e1(_0,_1,5)==="false"){return c$7($e(f),((_1+5)|0),"");}else{if(_4==="t"&&$e1(_0,_1,4)==="true"){return c$7($e(t),((_1+4)|0),"");}else{if(_4==="-"){return $T3(_0,((_1+1)|0),t);}else{if(_4==="["){return $X3(_0,_1,_2);}else{if(_4==="{"&&$e1(_0,_1,2)==="{}"){return c$7($e(st_9),((_1+2)|0),"");}else{if($e1(_0,_1,4)==="ref "){var _6=$Z3(_0,((_1+4)|0),_2);return c$7($e(new CR_(_6.R)),_6.S,_6.T);}else{var _6=$04(_0,_1,_2);if((_6.T===""&&(_6.R)._id===8)&&$10(_2,c$F0(f)).O1){return c$7(_6.R,_6.S,"Illegal struct deserialized.");}else{return _6;}}}}}}}}}}}}}function $04(_0,_1,_2){var _3=$a1(_0,"(",_1,$d1(_0));if(_3===-1){var _4="Expected (";$l($10(_2,c$B0(st_9)).K1,(function(_5){return _5(_0,_1,_4);}));return c$7($e(st_8),_1,_4);}else{var _6=$10(_2,c$F0(f)).O1,_7=$C1($u1(_0,_1,_3)," \n\t"),_8=$Y3(_0,")",_2,c$7($w(),((_3+1)|0),""));if(_8.T!==""){return c$7($e(st_8),_8.S,_8.T);}else{if(_6&&$z(_8.R,st_8)){return c$7($e(st_8),_8.S,"Struct member is IllegalStruct");}else{var _9=$I(_2,st_9,(function(_a,_b){switch((_b)._id){case 100:{var _c=_b.L1,_d=$m0(_c,_7);if((_d)._id==10){var _e=_d.Q;return c$a((function(_f){var _g=_e(_f),_h=((_6&&_g._id===8)?(("Fixup for \""+_7)+"\" error."):"");return c$7(_g,_8.S,_h);}));}else{return st_9;}}break;case 101:{var _c=_b.L1,_i=$m0(_c,_7);if((_i)._id==10){var _e=_i.Q;return c$a((function(_f){var _g=_e(_2,_f),_h=((_6&&_g._id===8)?(("Fixup for \""+_7)+"\" error."):"");return c$7(_g,_8.S,_h);}));}else{return st_9;}}break;default:{return _a;}break;}}));if((_9)._id==10){var _e=_9.Q;return _e($o(_8.R));}else{var _j=$c(_7,$o(_8.R),st_8);if(_j._id===8){$k0(((("Error: Could not make struct "+_7)+" when deserializing: ")+$e1(_0,_1,100)));if(_6){return c$7(_j,_8.S,("Could not make struct "+_7));}else{return c$7(_j,_8.S,"");}}else{return c$7(_j,_8.S,"");}}}}}}function $14(_0,_1,_2,_3){if(_2>0){var _4=($a3(_1,_3)-$v3(_0,_3));if(_4>0){return (_4/_2);}else{return 0;}}else{return 0;}}function $24(_0,_1){if($L(_1)===0){return [_0];}else{return $M(_1,(function(_2){return c$H0($D(_0.H0,_2.H0));}));}}function $34(_0,_1,_2,_3){T:while(!0){switch((_0)._id){case 61:{var _4=_0.c1;return $I(_4,0,(function(_5,_6){return (_5+$34(_6,_1,_2,st_1));}));}break;case 50:{var _7=_0.X0;return $I(_7,0,(function(_5,_8){return (_5+$34(_8,_1,_2,st_0));}));}break;case 58:{var _9=_0.a1;return $I(_9,0,(function(_5,_a){return (_5+$34(_a,_1,_2,_3));}));}break;case 57:{var _b=_0.Z0;_0=_b;continue T}break;case 45:{return 0;}break;case 54:{if($b(_2,_3)){return 1;}else{return 0;}}break;case 55:{return 0;}break;case 70:{var _c=_0.b1,_d=_0.n1,_e=$z0(_1,_c,c$I([]));if(_e.T0.length===0){return 0;}else{switch((_d)._id){case 60:{if((_2)._id==0){return 0;}else{return $I(_e.T0,0,(function(_5,_f){return (_5+(function(){var s$;if(_f._id==54){s$=1}else{s$=0}return s$;}()));}));}}break;case 49:{if((_2)._id==0){return $I(_e.T0,0,(function(_5,_f){return (_5+(function(){var s$;if(_f._id==54){s$=1}else{s$=0}return s$;}()));}));}else{return 0;}}break;case 81:{if((_2)._id==0){return $I(_e.T0,0,(function(_5,_f){return (_5+(function(){var s$;if(_f._id==54){s$=1}else{s$=0}return s$;}()));}));}else{return 0;}}break;case 75:{return 0;}break;}}}break;}}}var $44=c$K0($0,[],[],[],f);function $54(_0){switch((_0)._id){case 41:{var _1=_0.I0;return $G1($10(_1,c$b0("")).s1);}break;case 54:{return "";}break;case 55:{return "";}break;}}function $64(_0,_1,_2){var _3=$c0(_1.N,$O1(_0.R1.K)),_4=$c0(_1.O,$O1(_0.R1.M));return c$x((_3<_2.N?((_2.N-_3)/2):0),(_4<_2.O?((_2.O-_4)/2):0));}function $74(_0,_1){switch((_0)._id){case 41:{var _2=_0.H0,_3=_0.I0;if(_2.length===0){return c$F([$0],[]);}else{return c$F(_2,_3);}}break;case 54:{return c$F([$0],[]);}break;case 55:{var _4=_0.M0;switch((_1)._id){case 60:{return c$F([$h3(_4,st_1)],[]);}break;case 49:{return c$F([$h3(_4,st_0)],[]);}break;case 81:{return c$F([$h3(_4,st_0)],[]);}break;case 75:{return c$F([$h3(_4,st_1)],[]);}break;}}break;}}function $84(_0){return $M(_0,(function(_1){switch((_1)._id){case 41:{var _2=_1.I0;return _2;}break;case 54:{return [];}break;case 55:{return [];}break;}}));}function $94(_0,_1){return c$3(($W(_1,st_79)?$O1($Z1):_0.N),($W(_1,st_78)?$O1($Z1):_0.O));}function $a4(_0){switch((_0)._id){case 61:{var _1=_0.I0;return _1;}break;case 50:{var _1=_0.I0;return _1;}break;case 58:{var _1=_0.I0;return _1;}break;case 57:{var _1=_0.I0;return _1;}break;case 45:{return [];}break;case 54:{return [];}break;case 55:{return [];}break;case 70:{return [];}break;}}function $b4(_0,_1,_2){if(_2==="v2"){return ((("sblock_"+$b1(_0," ","$"))+"_")+$71(_1));}else{return ((_0+"_block_")+$71(_1));}}
7208function $c4(_0,_1){return $I(_1,_0,(function(_2,_3){switch((_3)._id){case 56:{return $30(_2,st_56);}break;case 82:{var _4=_3.P0;return $30(_2,c$k0(_4));}break;case 64:{return _2;}break;case 65:{return _2;}break;case 74:{return _2;}break;case 66:{return _2;}break;case 78:{return _2;}break;case 79:{return _2;}break;}}));}function $d4(_0,_1,_2){if(_2==="v2"){return (("spanel_"+(_1?"sscroll_":""))+$b1(_0," ","$"));}else{return ((_0+"_panel")+(_1?"_scroll":""));}}function $e4(_0,_1,_2){if(_2==="v2"){return (("sstruct_"+(_1?"sscroll_":""))+$p1($M(_0,$71),"_"));}else{return (("sstruct_"+$p1($M(_0,$71),"_"))+(_1?"_panel_scroll":""));}}function $f4(_0,_1){T:while(!0){switch((_0)._id){case 61:{var _2=_0.c1,_3=_0.I0;return c$Z($M(_2,(function(_4){return $f4(_4,($W(_3,st_74)?c$a(st_1):_1));})),(($W(_3,st_74)&&CME(_1,c$a(st_1)))?$G(_3,(function(_4){return !$b(_4,st_74);})):_3));}break;case 50:{var _2=_0.X0,_3=_0.I0;return c$O($M(_2,(function(_4){return $f4(_4,($W(_3,st_74)?c$a(st_0):_1));})),(($W(_3,st_74)&&CME(_1,c$a(st_0)))?$G(_3,(function(_4){return !$b(_4,st_74);})):_3));}break;case 58:{var _2=_0.a1,_3=_0.I0;return c$W($M(_2,(function(_4){return $f4(_4,_1);})),$G(_3,(function(_4){return !$b(_4,st_74);})));}break;case 57:{var _5=_0.Z0;_0=_5;continue T}break;case 45:{var _6=_0.l0,_7=_0.U0,_8=_0.m0,_9=_0.V0,_a=_0.W0;return $S3(_6,_7,_8,_9,$f4(_a,_1));}break;case 54:{return _0;}break;case 55:{return _0;}break;case 70:{var _b=_0.b1,_c=_0.l1,_d=_0.m1,_e=_0.n1,_f=_0.d1;if($b(_f,st_74)){if(($b(_e,st_60)&&CME(_1,c$a(st_1)))||($b(_e,st_49)&&CME(_1,c$a(st_0)))){return c$80(_b,_c,_d,_e,st_38);}else{return _0;}}else{return _0;}}break;}}}function $g4(_0){T:while(!0){switch((_0)._id){case 61:{var _1=_0.c1;return $I(_1,[],(function(_2,_3){return $D(_2,$g4(_3));}));}break;case 50:{var _4=_0.X0;return $I(_4,[],(function(_2,_5){return $D(_2,$g4(_5));}));}break;case 58:{var _6=_0.a1;return $I(_6,[],(function(_2,_7){return $D(_2,$g4(_7));}));}break;case 57:{var _8=_0.Z0;_0=_8;continue T}break;case 45:{var _7=_0.W0;_0=_7;continue T}break;case 54:{return [];}break;case 55:{return [];}break;case 70:{var _9=_0.b1;return [_9];}break;}}}function $h4(_0,_1,_2){switch((_1)._id){case 60:{return $z3(_0);}break;case 49:{return $y3(_0);}break;case 81:{return $B3($J2(_0,_2));}break;case 75:{return $s3(_0);}break;}}function $i4(_0,_1,_2){return c$H(_0.L0,_0.M0,c$x((_0.N0.x0+_1),(_0.N0.y0+_2)),_0.O0,_0.P0,_0.Q0,_0.R0,_0.S0,_0.K0);}function $j4(_0,_1,_2){return c$90(_0.L0,_0.M0,c$x((_0.N0.x0+_1),(_0.N0.y0+_2)),_0.o1,_0.p1);}function $k4(_0,_1,_2){return $t0(_0,(function(_3){return c$I($M(_3.T0,(function(_4){switch((_4)._id){case 41:{var _5=_4.I0;return c$F($t2($F2(_4,_1,_2),$u3),_5);}break;case 54:{return _4;}break;case 55:{return _4;}break;}})));}));}function $l4(_0){var _1=$g4(_0);if($L(_1)===$L($v2(_1))){return "";}else{return "Structure contains duplicate panel names.";}}function $m4(_0,_1,_2,_3,_4){var _5=$q3(_2,_4),_6=($a3(_3,_4)-$a3(_5,_4));if(_6>0){var _7=$M(_0,(function(_8){return $34(_8,_1,_4,_4);})),_9=$V1(_7);if(_9>0){var _a=(_6/_9);return $N(_2,(function(_b,_c){return $o3(_c,($a3(_c,_4)+(_7[_b]*_a)),_4);}));}else{return _2;}}else{return _2;}}function $n4(_0,_1,_2,_3,_4,_5){T:while(!0){var _6=(function(){var s$;if(_5._id==81){s$=$t3(_2[_3].H0,_4.N)}else{s$=[]}return s$;}()),_7=$h4(_2[_3].H0,_5,_6);if(_3>=(($L(_2)-1)|0)||(_7.J<=$h1(_4.N)&&_7.L<=$h1(_4.O))){return c$G0(_2[_3],_7,_6);}else{_3=((_3+1)|0);continue T}}}function $o4(_0,_1){var _2=$54(_1);if(_2!==""){var _3=$m0(_0.S1.__v,_2);if((_3)._id==10){var _4=_3.Q;return _4.S;}else{return st_9;}}else{return st_9;}}function $p4(_0,_1){var _2=$L0($p0(_0,$r0(),(function(_$0,_3,_4){return $I(_3.T0,_4,(function(_5,_6){switch((_6)._id){case 41:{var _7=_6.H0,_8=$54(_6);if(_8!==""){var _9=(function(){var _a=$m0(_5,_8);if((_a)._id==10){var _b=_a.Q;return $I($M($p2([_7,_b.R]),$g3),[],(function(_c,_d){if((_d)._id==10){var _e=_d.Q;return $R(_c,_e);}else{return _c;}}));}else{return _7;}}());return $n0(_5,_8,c$5(_9,st_9));}else{return _5;}}break;case 54:{return _5;}break;case 55:{return _5;}break;}}));})),(function(_$1,_9){return _9.R.length!==0;}));return c$J0(new CR_(_2),$10(_1,c$R("v1")).Y0);}function $q4(_0){var _1=(function(_2){return $W($a4(_2),st_66);});switch((_0)._id){case 61:{var _3=_0.c1,_4=_0.I0,_5=$u2(_3,_1);if(_5.R.length===0){return c$Z($M(_3,$q4),_4);}else{return c$W($D([c$Z($M(_5.S,$q4),[])],$M(_5.R,$q4)),_4);}}break;case 50:{var _3=_0.X0,_4=_0.I0,_5=$u2(_3,_1);if(_5.R.length===0){return c$O($M(_3,$q4),_4);}else{return c$W($D([c$O($M(_5.S,$q4),[])],$M(_5.R,$q4)),_4);}}break;case 58:{var _3=_0.a1,_4=_0.I0,_5=$u2(_3,_1);return c$W($M($D(_5.S,_5.R),$q4),_4);}break;case 57:{var _6=_0.Z0,_4=_0.I0;return c$V($q4(_6),_4);}break;case 45:{var _7=_0.l0,_8=_0.U0,_9=_0.m0,_a=_0.V0,_b=_0.W0;return c$J(_7,_8,_9,_a,$q4(_b));}break;case 54:{return _0;}break;case 55:{return _0;}break;case 70:{return _0;}break;}}function $r4(_0,_1,_2,_3){T:while(!0){switch((_0)._id){case 61:{var _4=_0.c1;return $z3($M(_4,(function(_5){return $r4(_5,_1,_2,st_1);})));}break;case 50:{var _6=_0.X0;return $y3($M(_6,(function(_7){return $r4(_7,_1,_2,st_0);})));}break;case 58:{var _8=_0.a1;return $s3($M(_8,(function(_9){return $r4(_9,_1,_2,_3);})));}break;case 57:{var _a=_0.Z0;_0=_a;continue T}break;case 45:{return $0;}break;case 54:{return $0;}break;case 55:{var _b=_0.M0;return $h3(_b,_3);}break;case 70:{var _c=_0.b1;return $z0(_2,_c,$44).U1;}break;}}}
7208function $s4(_0,_1){return $c4($c4([],_1),_0);}function $t4(_0,_1,_2,_3){T:while(!0){switch((_0)._id){case 61:{var _4=_0.c1,_5=_0.I0;return $q3($M(_4,(function(_6){return $t4(_6,_1,st_1,($W(_5,st_74)?c$a(st_1):_3));})),st_1);}break;case 50:{var _7=_0.X0,_5=_0.I0;return $q3($M(_7,(function(_8){return $t4(_8,_1,st_0,($W(_5,st_74)?c$a(st_0):_3));})),st_0);}break;case 58:{var _9=_0.a1;return $j3($M(_9,(function(_a){return $t4(_a,_1,_2,_3);})));}break;case 57:{var _b=_0.Z0;_0=_b;continue T}break;case 45:{return $1;}break;case 54:{return $1;}break;case 55:{var _c=_0.M0;if($k(_3)){return $p3($h3(_c,_2));}else{return $1;}}break;case 70:{var _d=_0.b1,_e=$z0(_1,_d,$44);if(_e.p1||$k(_3)){return $p3(_e.U1);}else{return $1;}}break;}}}function $u4(_0,_1,_2){var _3=$54(_1);if(_3!==""){var _4=$m0(_0.S1.__v,_3);if((_4)._id==10){var _5=_4.Q,_6=_5.S;if((_6)._id==10){return _0;}else{return c$J0(new CR_($n0(_0.S1.__v,_3,c$5(_5.R,c$a(_2)))),_0.T1);}}else{return _0;}}else{return _0;}}function $v4(_0,_1,_2,_3,_4,_5,_6){if(_2.K>$h1(_4.N)||_2.M>$h1(_4.O)){var _7=$84(_1),_8=$M(_1,(function(_9){return $o4(_0,_9);})),_a=(function(){var s$;switch(_5._id){case 60:{s$=(function(){var _b=(_4.O-$O1(_2.L));var _c=$L2($A3(_3,_4.O,_b,st_1));return $N(_3,(function(_d,_e){return $g(_8[_d],$83(_e,c$3(_4.N,_c[_d]),(!$W(_7[_d],st_51))));}));}());break;}case 49:{s$=(function(){var _f=(_4.N-$O1(_2.J));var _g=$L2($A3(_3,_4.N,_f,st_0));return $N(_3,(function(_d,_e){return $g(_8[_d],$83(_e,c$3(_g[_d],_4.O),(!$W(_7[_d],st_51))));}));}());break;}case 81:{s$=(function(){var _h=$J2(_3,_6);var _i=$J2(_8,_6),_j=$M(_h,(function(_k){return (_4.N-$O1($y3(_k).J));})),_b=(_4.O-$O1(_2.L)),_g=$N(_h,(function(_d,_k){return $L2($A3(_k,_4.N,_j[_d],st_0));})),_l=$M(_h,$s3),_c=$L2($A3(_l,_4.O,_b,st_1));return $Z($l0(_h,(function(_d,_m,_n,_e){return $g(_i[_d][_m],$83(_e,c$3(_g[_d][_m],_c[_d]),(!$W(_7[_n],st_51))));})));}());break;}case 75:{s$=(function(){var _b=(_4.O-$O1(_2.L));var _f=(_4.N-$O1(_2.J));return $N(_3,(function(_d,_e){var _o=$T($L2($A3(_3,_4.O,_b,st_1)),0),_p=$T($L2($A3(_3,_4.N,_f,st_0)),0);return $g(_8[_d],$83(_e,c$3(_p,_o),(!$W(_7[_d],st_51))));}));}());break;}}return s$;}()),_q=$M(_1,$54),_r=$J(_q,$r0(),(function(_d,_s,_t){if(_t===""||(!$x0(_0.S1.__v,_t))){return _s;}else{return $K0(_s,$s0(_t,_a[_d]),(function(_$0,_u,_v){return $x3(_u,_v);}));}}));return $N(_a,(function(_d,_w){return $g($m0(_r,_q[_d]),_w);}));}else{return _3;}}function $w4(_0,_1,_2,_3,_4,_5){var _6=$q3(_2,_4),_7=$k3(_6,_3);if(_7.N>0||_7.O>0){var _8=$M(_0,(function(_9){return $t4(_9,_1,_4,st_9);})),_a=$I(_8,$1,(function(_b,_c){return $73(_b,_c);}));if(_a.N>0||_a.O>0){return $N(_2,(function(_d,_c){return $k3(_c,$n3(_7,(_a.N>0?(_8[_d].N/_a.N):1),(_a.O>0?(_8[_d].O/_a.O):1)));}));}else{return _2;}}else{return _2;}}function $x4(_0,_1,_2){var _3=$74(_1,_2).H0,_4=$M(_3,(function(_5){return c$5(_5,_0);})),_6=$54(_1);if(_6!==""){var _7=$m0(_0.S1.__v,_6);if((_7)._id==10){var _8=_7.Q,_9=_8.S;if((_9)._id==10){var _a=_9.Q;return [c$5(_a,_0)];}else{return $M(_8.R,(function(_5){return c$5(_5,$u4(_0,_1,_5));}));}}else{return _4;}}else{return _4;}}function $y4(_0){return $f4($q4(_0),st_9);}function $z4(_0,_1,_2){return $J(_1,_0,(function(_3,_4,_5){return $u4(_4,_5,_2[_3]);}));}function $A4(_0,_1,_2){if($L(_1)===0){return [];}else{var _3=$x4(_0,_1[0],_2);return $I(_3,[],(function(_4,_5){var _6=_5.R,_7=_5.S,_8=$A4(_7,$V(_1),_2);return $D($24(c$H0([_6]),_8),_4);}));}}function $B4(_0,_1,_2,_3,_4,_5,_6,_7,_8,_9){T:while(!0){switch((_1)._id){case 61:{var _a=_1.c1,_b=_1.I0,_c=$s4(_b,_9),_d=($W(_b,st_74)?c$a(st_1):_8),_e=$M(_a,(function(_f){return $p3($r4(_f,_2,_3,st_1));})),_g=(function(_h){return $m4(_a,_2,_h,_6,st_1);})(_e),_i=$q3(_g,st_1),_j=(function(_h){return $w4(_a,_3,_h,_7,st_1,_d);})(_g),_k=$q3(_j,st_1),_l=$c0(_6.N,_k.N),_m=$i0(_7.N,_l),_n=$J(_a,c$5([],0),(function(_o,_p,_q){var _r=_j[_o].O,_s=(_o===(($L(_a)-1)|0)?$c0((_7.O-_p.S),0):$i0($c0((_7.O-_p.S),0),_r));return c$5($D(_p.R,$B4(_0,_q,_2,_3,$R(_4,_o),c$x(_5.x0,(_5.y0+_p.S)),c$3(_l,_r),c$3(_m,_s),_d,_c).R),(_p.S+_r));}));return c$5(($W(_b,st_74)?(function(){var _t=$93(c$3(_k.N,_i.O),_7);var _u=$I(_n.R,c$a0(c$90("",_t,_5,_7,t),$r0(),[]),(function(_p,_v){if(_v.q1.p1){return c$a0(_p.q1,_p.T0,$R(_p.r1,c$a0($j4(_v.q1,-_p.q1.N0.x0,-_p.q1.N0.y0),_v.T0,_v.r1)));}else{return c$a0(_p.q1,$J0(_p.T0,$H2(_v.T0,(function(_$0,_w){return $i4(_w,(_v.q1.N0.x0-_p.q1.N0.x0),(_v.q1.N0.y0-_p.q1.N0.y0));}))),$D(_p.r1,$M(_v.r1,(function(_x){return c$a0($j4(_x.q1,(_v.q1.N0.x0-_p.q1.N0.x0),(_v.q1.N0.x0-_p.q1.N0.y0)),_x.T0,_x.r1);}))));}}));return [c$a0(c$90($e4(_4,t,_0.T1),_u.q1.M0,_u.q1.N0,_u.q1.o1,_u.q1.p1),_u.T0,_u.r1)];}()):_n.R),c$3(_l,_n.S));}break;case 50:{var _y=_1.X0,_b=_1.I0,_c=$s4(_b,_9),_d=($W(_b,st_74)?c$a(st_0):_8),_e=$M(_y,(function(_x){return $p3($r4(_x,_2,_3,st_0));})),_g=(function(_h){return $m4(_y,_2,_h,_6,st_0);})(_e),_i=$q3(_g,st_0),_j=(function(_h){return $w4(_y,_3,_h,_7,st_0,_d);})(_g),_k=$q3(_j,st_0),_z=$c0(_6.O,_k.O),_A=$i0(_7.O,_z),_n=$J(_y,c$5([],0),(function(_o,_p,_B){var _C=_j[_o].N,_D=(_o===(($L(_y
7208)-1)|0)?$c0((_7.N-_p.S),0):$i0($c0((_7.N-_p.S),0),_C));return c$5($D(_p.R,$B4(_0,_B,_2,_3,$R(_4,_o),c$x((_5.x0+_p.S),_5.y0),c$3(_C,_z),c$3(_D,_A),_d,_c).R),(_p.S+_C));}));return c$5(($W(_b,st_74)?(function(){var _t=$93(c$3(_i.N,_k.O),_7);var _u=$I(_n.R,c$a0(c$90("",_t,_5,_7,t),$r0(),[]),(function(_p,_v){if(_v.q1.p1){return c$a0(_p.q1,_p.T0,$R(_p.r1,c$a0($j4(_v.q1,-_p.q1.N0.x0,-_p.q1.N0.y0),_v.T0,_v.r1)));}else{return c$a0(_p.q1,$J0(_p.T0,$H2(_v.T0,(function(_$1,_w){return $i4(_w,(_v.q1.N0.x0-_p.q1.N0.x0),(_v.q1.N0.y0-_p.q1.N0.y0));}))),$D(_p.r1,$M(_v.r1,(function(_x){return c$a0($j4(_x.q1,(_v.q1.N0.x0-_p.q1.N0.x0),(_v.q1.N0.x0-_p.q1.N0.y0)),_x.T0,_x.r1);}))));}}));return [c$a0(c$90($e4(_4,t,_0.T1),_u.q1.M0,_u.q1.N0,_u.q1.o1,_u.q1.p1),_u.T0,_u.r1)];}()):_n.R),c$3(_n.S,_z));}break;case 58:{var _E=_1.a1,_b=_1.I0,_c=$s4(_b,_9),_F=$N(_E,(function(_o,_G){var _H=$W($a4(_G),st_66),_I=(_H?_7:_6);return $B4(_0,_G,_2,_3,$R(_4,_o),_5,_I,_7,_8,_c);}));return c$5($00(_F,(function(_n){return _n.R;})),$j3($M(_F,(function(_n){return _n.S;}))));}break;case 57:{var _J=_1.Z0,_b=_1.I0,_c=$s4(_b,_9),a_=_J;var b_=$R(_4,0);var c_=_c;_1=a_;_4=b_;_9=c_;continue T}break;case 45:{return c$5([],$1);}break;case 54:{return c$5([],$1);}break;case 55:{return c$5([],$1);}break;case 70:{var _K=_1.b1,_L=_1.l1,_M=_1.m1,_N=_1.n1,_O=$z0(_2,_K,c$I([]));if(_O.T0.length===0){return c$5([$E2],$1);}else{var _P=$z0(_3,_K,$44),_Q=(function(){var s$;switch(_N._id){case 60:{s$=st_1;break;}case 49:{s$=st_0;break;}case 81:{s$=st_0;break;}case 75:{s$=st_1;break;}}return s$;}()),_R=$34(_1,_2,_Q,_Q),_S=$14(_P.U1,_6,_R,_Q),_T=(function(){var _U=(function(){var s$;switch(_N._id){case 60:{s$=$J(_O.T0,c$7([],0,0),(function(_o,_p,_V){return c$7($R(_p.R,c$x(0,_p.T)),$c0(_p.S,$O1(_P.H0[_o].K)),(_p.T+($b(_V,st_54)?_S:$O1(_P.H0[_o].M))));}));break;}case 49:{s$=$J(_O.T0,c$7([],0,0),(function(_o,_p,_V){return c$7($R(_p.R,c$x(_p.S,0)),(_p.S+($b(_V,st_54)?_S:$O1(_P.H0[_o].K))),$c0(_p.T,$O1(_P.H0[_o].M)));}));break;}case 81:{s$=(function(){var _W=$M2(_P.H0,_P.Q1);return $I(_W,c$7([],0,0),(function(_X,_Y){var _Z=$I(_Y,c$7([],0,0),(function(_00,_10){return c$7($R(_00.R,c$x(_00.S,_X.T)),(_00.S+($b(_O.T0[_10],st_54)?_S:$O1(_P.H0[_10].K))),$c0(_00.T,$O1(_P.H0[_10].M)));}));return c$7($D(_X.R,(_M===0?_Z.R:$N(_Y,(function(_20,_10){return c$x(_Z.R[_20].x0,(_Z.R[_20].y0+(_M*(_Z.T-$O1(_P.H0[_10].M)))));})))),$c0(_X.S,_Z.S),(_X.T+_Z.T));}));}());break;}case 75:{s$=c$7($M(_O.T0,(function(_w){return c$x(0,0);})),0,0);break;}}return s$;}());if(_L===0&&_M===0){return _U;}else{return c$7($N(_U.R,(function(_o,_30){switch((_N)._id){case 60:{return c$x((_L*(_U.S-$O1(_P.H0[_o].K))),_30.y0);}break;case 49:{return c$x(_30.x0,(_M*(_U.T-$O1(_P.H0[_o].M))));}break;case 81:{return _30;}break;case 75:{return c$x((_L*(_U.S-$O1(_P.H0[_o].K))),(_M*(_U.T-$O1(_P.H0[_o].M))));}break;}})),_U.S,_U.T);}}()),_40=$J(_O.T0,[],(function(_o,_p,_V){switch((_V)._id){case 41:{var _b=_V.I0,_50=($20(_b,c$k0(0)).length!==0?c$a($10(_b,c$k0(0)).P0):($20(_9,c$k0(0)).length!==0?c$a($10(_9,c$k0(0)).P0):st_9));return $R(_p,c$H($b4(_K,_o,_0.T1),c$3($O1(_P.H0[_o].K),$O1(_P.H0[_o].M)),_T.R[_o],$W(_9,st_56),_50,$10(_b,c$20("")).d1,$10(_b,c$30("")).d1,_P.V1[_o],$z2(_V)));}break;case 54:{return _p;}break;case 55:{return _p;}break;}})),_60=_P.p1,_t=c$3(_T.S,_T.T),_70=c$90($d4(_K,_60,_0.T1),_t,_5,_7,_60);return c$5([c$a0(_70,$s0(_K,_40),[])],_t);}}break;}}}function $C4(_0,_1,_2,_3,_4,_5){T:while(!0){switch((_1)._id){case 61:{var _6=_1.c1,_7=_1.I0,_8=$z3($M(_6,(function(_9){return $C4(_0,_9,_2,_3,st_1,($W(_7,st_74)?c$a(st_1):_5));})));if($W(_7,st_74)){return c$2(_8.J,_8.K,0,$i0(_8.M,$h1(_3.O)));}else{return _8;}}break;case 50:{var _a=_1.X0,_7=_1.I0,_8=$y3($M(_a,(function(_b){return $C4(_0,_b,_2,_3,st_0,($W(_7,st_74)?c$a(st_0):_5));})));if($W(_7,st_74)){return c$2(0,$i0(_8.K,$h1(_3.N)),_8.L,_8.M);}else{return _8;}}break;case 58:{var _c=_1.a1,_7=_1.I0;return $s3($M(_c,(function(_b){return $C4(_0,_b,_2,_3,_4,($W(_7,st_74)?c$a(_4):_5));})));}break;case 57:{var _d=_1.Z0;_1=_d;continue T}break;case 45:{return $0;}break;case 54:{return $0;}break;case 55:{var _e=_1.M0;return $h3(_e,_4);}break;case 70:{var _f=_1.b1,_g=_1.n1,_h=_1.d1,_i=$z0(_2,_f,c$I([]));if(_i.T0.length===0){return $0;}else{var _j=$M(_i.T0,(function(_k){var _l=$M($x4(_0,_k,_g),(function(_m){return _m.R;}));return $f3(_l);})),_n=$b(_h,st_74),_8=(function(){var s$;if(_g._id==81){s$=$f3($D([$y3(_j)],[$z3(_j)]))}else{s$=$h4(_j,_g,[])}return s$;}());if(_n&&$b(_g,st_60)){return c$2(_8.J,_8.K,0,$i0(_8.M,$h1(_3.O)));}else{if(_n&&$b(_g,st_49)){return c$2(0,$i0(_8.K,$h1(_3.N)),_8.L,_8.M);}else{return _8;}}}}break;}}}function $D4(_0,_1,_2){var _3=$A2(_0,_2),_4=_3.R,_5=_3.S,_6=$G2(_0,_2,_5),_7=$y4(_6.R),_8=$k4(_1,_4,_5),_9=$p4(_8,_0.I0),_a=$l4(_7);if(_a===""){var _b=$F4(_9,_7,_8,_4,st_0,st_9),_c=$64(_b,_4,_2),_d=$B4(_9,_7,_8,_b.g1,[_6.S],_c,_5,_5,st_9,[]);return c$5(c$70(_d.R,_8,_4,_5,_d.S,_6.S,_6.T),"");}else{return c$5(c$70([],_8,_4,_5,$1,_6.S,_6.T),_a);}}function $E4(_0,_1,_2,_3,_4,_5){if(_1.length===0){return [];}else{var _6=$M(_1,(function(_7){return $C4(_0,_7,_2,_3,_4,_5);})),_8=$M(_6,$m3),_9=$a3(_3,_4),_a=$c0((_9-$V1($M(_8,(function(_b){return $a3(_b,_4);})))),0),_c=$A3(_6,_9,_a,_4)[0],_d=$c0(($a3(_3,_4)-$v3($r3($V(_6),_4),_4)),0),_e=$l3(_4),_f=$c0($a3(_3,_e),$g($12($M(_8,(function(_b){return $a3(_b,_e);}))),0)),_g=$i3($i0($c0(_c,_d),_9),_f,_4),_h=$F4(_0,_1[0],_2,_g,_4,_5),_i=$i3($c0((_9-$v3(_h.R1,_4)),0),_f,_4),_j=$E4(_0,$V(_1),_2,_i,_4,_5);return $D([_h],_j);}}
7208function $F4(_0,_1,_2,_3,_4,_5){T:while(!0){switch((_1)._id){case 61:{var _6=_1.c1,_7=_1.I0,_8=$94(_3,_7),_9=$E4(_0,_6,_2,_8,st_1,($W(_7,st_74)?c$a(st_1):_5));return c$I0($z3($M(_9,(function(_a){return _a.R1;}))),$I(_9,$r0(),(function(_b,_a){return $J0(_b,_a.g1);})));}break;case 50:{var _c=_1.X0,_7=_1.I0,_8=$94(_3,_7),_9=$E4(_0,_c,_2,_8,st_0,($W(_7,st_74)?c$a(st_0):_5));return c$I0($y3($M(_9,(function(_a){return _a.R1;}))),$I(_9,$r0(),(function(_b,_a){return $J0(_b,_a.g1);})));}break;case 58:{var _d=_1.a1,_7=_1.I0,_8=$94(_3,_7),_9=$M(_d,(function(_e){return $F4(_0,_e,_2,_8,_4,_5);}));return c$I0($s3($M(_9,(function(_a){return _a.R1;}))),$I(_9,$r0(),(function(_b,_a){return $J0(_b,_a.g1);})));}break;case 57:{var _f=_1.Z0,_7=_1.I0,_8=$94(_3,_7),a_=_f;var b_=_8;_1=a_;_3=b_;continue T}break;case 45:{return c$I0($0,$r0());}break;case 54:{return c$I0($0,$r0());}break;case 55:{var _g=_1.M0;return c$I0($h3(_g,_4),$r0());}break;case 70:{var _h=_1.b1,_i=_1.n1,_j=_1.d1,_k=$z0(_2,_h,c$I([]));if(_k.T0.length===0){return c$I0($0,$s0(_h,$44));}else{var _l=$A4(_0,_k.T0,_i),_m=$b(_j,st_74),_n=(((_m&&$b(_i,st_60))||CME(_5,
7208c$a(st_1)))?c$3(_3.N,$O1($Z1)):(((_m&&$b(_i,st_49))||CME(_5,c$a(st_0)))?c$3($O1($Z1),_3.O):_3)),_o=$n4(_0,_k.T0,_l,0,_n,_i),_p=$v4(_0,_k.T0,_o.M0,_o.P1.H0,_n,_i,_o.Q1);_0.S1.__v=$z4(_0,_k.T0,_p).S1.__v;var _q=$h4(_p,_i,_o.Q1);return c$I0(_q,$s0(_h,c$K0(_q,_p,_o.P1.H0,_o.Q1,_m)));}}break;}}}var $G4=new CR_($r0());var $H4=new CR_($r0());function $I4(_0){var _1=(function(_2,_3){return (function(_4){return $b1(_4,_3,_2);});});return _1("&","&amp;")(_1("<"+"","&lt;")(_1(">","&gt;")(_1("\"","&quot;")(_1("'","&#39;")(_0)))));}var $J4=new CR_($r0());var $K4=new CR_($r0());var $L4=new CR_($x2);function $M4(_0,_1){var _2=(function(_3,_4){var _5=_3.L0,_6=(_3.O0?"fixed":"absolute"),_7=(_4.x0+_3.N0.x0),_8=(_4.y0+_3.N0.y0),_9=_3.M0.N,_a=_3.M0.O,_b=(function(){var _c=_3.P0;if((_c)._id==10){var _d=_c.Q;return $f(_d);}else{return "";}}()),_e=_3.K0,_f=_3.Q0,_g=_3.R0;return c$r0([c$5("id",c$t0(_5)),c$5("position",c$t0(_6)),c$5("x",c$n0(_7)),c$5("y",c$n0(_8)),c$5("w",c$n0(_9)),c$5("h",c$n0(_a)),c$5("zIndex",c$t0(_b)),c$5("html",c$t0(_e)),c$5("overflowX",c$t0(_f)),c$5("overflowY",c$t0(_g))]);}),_h=(function(_i){var _d=$23(_i,"zIndex",""),_j=$23(_i,"overflowX",""),_k=$23(_i,"overflowY","");return $Q3("<"+"div id=\"%id%\" style=\"position: %position%; left: %x%; top: %y%; width: %w%; height:%h%;%zindex%%overflowX%%overflowY%\">%html%<"+"/div>",["id",$23(_i,"id",""),"position",$23(_i,"position",""),"x",($23(_i,"x","")+"px"),"y",($23(_i,"y","")+"px"),"w",($23(_i,"w","")+"px"),"h",($23(_i,"h","")+"px"),"zIndex",($d1(_d)>0?((" z-index: "+_d)+";"):""),"overflowX",($d1(_j)>0?((" overflow-x: "+_j)+";"):""),"overflowY",($d1(_k)>0?((" overflow-y: "+_k)+";"):""),"html",$23(_i,"html","")]);});if(_0.q1.p1){var _l=$i1($M($Z($B0(_0.T0)),(function(_3){var _m=(_3.O0?$N2(_1,_0.q1.N0):c$x(0,0));return _h(_2(_3,_m));}))),_n=$i1($00(_0.r1,(function(_o){return $M($M4(_o,_0.q1.N0),_h);}))),_j=((_0.q1.M0.N-_0.q1.o1.N)>1?"auto":"hidden"),_k=((_0.q1.M0.O-_0.q1.o1.O)>1?"auto":"hidden");return [c$r0([c$5("id",c$t0(_0.q1.L0)),c$5("position",c$t0("absolute")),c$5("x",c$n0(_0.q1.N0.x0)),c$5("y",c$n0(_0.q1.N0.y0)),c$5("w",c$n0(_0.q1.o1.N)),c$5("h",c$n0(_0.q1.o1.O)),c$5("overflowX",c$t0(_j)),c$5("overflowY",c$t0(_k)),c$5("html",c$t0((_l+_n)))])];}else{return $D($M($Z($B0(_0.T0)),(function(_3){return _2(_3,_0.q1.N0);})),$00(_0.r1,(function(_p){return $M4(_p,_0.q1.N0);})));}}function $N4(_0,_1){var _2=(function(_3,_4){var _5=_3.L0,_6=(_3.O0?"fixed":"absolute"),_7=(_4.x0+_3.N0.x0),_8=(_4.y0+_3.N0.y0),_9=_3.M0.N,_a=_3.M0.O,_b=(function(){var _c=_3.P0;if((_c)._id==10){var _d=_c.Q;return $f(_d);}else{return "";}}());return c$r0([c$5("id",c$t0(_5)),c$5("position",c$t0(_6)),c$5("x",c$n0(_7)),c$5("y",c$n0(_8)),c$5("w",c$n0(_9)),c$5("h",c$n0(_a)),c$5("zIndex",c$t0(_b))]);});if(_0.q1.p1){var _e=$M($Z($B0(_0.T0)),(function(_3){var _f=(_3.O0?$N2(_1,_0.q1.N0):c$x(0,0));return _2(_3,_f);})),_g=$00(_0.r1,(function(_h){return $N4(_h,_0.q1.N0);})),_i=((_0.q1.M0.N-_0.q1.o1.N)>1?"auto":"hidden"),_j=((_0.q1.M0.O-_0.q1.o1.O)>1?"auto":"hidden");return [c$r0([c$5("id",c$t0(_0.q1.L0)),c$5("scrollable",c$t0("true")),c$5("position",c$t0("absolute")),c$5("x",c$n0(_0.q1.N0.x0)),c$5("y",c$n0(_0.q1.N0.y0)),c$5("w",c$n0(_0.q1.o1.N)),c$5("h",c$n0(_0.q1.o1.O)),c$5("overflowX",c$t0(_i)),c$5("overflowY",c$t0(_j)),c$5("children",c$l0($D(_e,_g)))])];}else{return $D($M($Z($B0(_0.T0)),(function(_3){return _2(_3,_0.q1.N0);})),$00(_0.r1,(function(_h){return $N4(_h,_0.q1.N0);})));}}function $O4(){var _0=$L4.__v.h1;return [$62(_0.N),$62(_0.O)];}var getLayoutAreaSize = $O4;function $P4(){return $L4.__v.j1===0;}var isMobileLayout = $P4;function $Q4(_0,_1,_2){if(_2==="v2"){return $N4(_0,_1);}else{return $M4(_0,_1);}}function $R4(_0,_1,_2){return $J4.__v=$n0($J4.__v,_0,c$3(_1,_2));}var setBlockSize = $R4;function $S4(_0,_1){if(_1!==""){return $K4.__v=$n0($K4.__v,_0,_1);}else{return $K4.__v=$H0($K4.__v,_0);}}var setExpandableBlockContent = $S4;function $T4(_0){return $L4.__v=_0;}function $U4(_0,_1,_2,_3,_4){var _5=(function(_6,_7,_8){var _9=$D4(_6,_7,_8);$T4(_9.R);if(_9.S===""){var _a=$v0($K4.__v)>0||$k($o0(_7,(function(_b,_c){return $H(_c.T0,(function(_d){switch((_d)._id){case 41:{var _e=_d.I0;return $W(_e,st_39);}break;case 54:{return f;}break;case 55:{return f;}break;}}));}))),_f=$k($o0(_7,(function(_b,_c){return $H(_c.T0,(function(_d){switch((_d)._id){case 41:{var _e=_d.I0;return $W(_e,st_40);}break;case 54:{return f;}break;case 55:{return f;}break;}}));})));if((_a||_f)||($J4.__v)._id!==22){var _g=_9.R.g1,_h=$u0(_9.R.T0,(function(_b,_c){var _i=$z0($Y(_g,(function(_j){return $x0(_j.T0,_b);}),$E2).T0,_b,[]);if(_i.length!==0){return c$I($J(_c.T0,c$5([],0),(function(_k,_l,_d){switch((_d)._id){case 41:{var _e=_d.I0,_m=_i[_l.S],_n=$z0($K4.__v,_m.L0,_m.K0),_o=$W(_e,st_39),_p=$W(_e,st_40),_q=!$W(_e,st_51),_r=$x0($K4.__v,_m.L0),_s=$x0($J4.__v,_m.L0),_t=(_s?(function(){var _u=$z0($J4.__v,_m.L0,c$3(0,0));$J4.__v=$H0($J4.__v,_m.L0);return c$2($h1(_u.N),$h1(_u.N),$h1(_u.O),$h1(_u.O));}()):(((_r||_o)||_p)?(function(){var _v=$h1(_m.M0.N);var _w=$h1(_m.M0.O),_x=(_p?$c0($b0("_getBlockWidth",[$e(_m.L0),_m.M0.N,_m.M0.O,_n]),_m.S0.J):_v),_y=((_r||_o)?$c0($b0("_getBlockHeight",[$e(_m.L0),_m.M0.N,_m.M0.O,_n]),_m.S0.L):_w);return c$2(_x,_x,_y,_y);}()):c$2(((_q||_f)?_m.S0.J:$h1(_m.M0.N)),((_q||_f)?_m.S0.K:$h1(_m.M0.N)),((_q||_a)?_m.S0.L:$h1(_m.M0.O)),((_q||_a)?_m.S0.M:$h1(_m.M0.O))))),_z=$10(_e,c$G([],""));return c$5($R(_l.R,c$F([_t],(function(_A){return $30(_A,c$G(_z.J0,_n));})((function(_A){return $30(_A,c$e0(c$L(-1),[]));})(_e)))),((_l.S+1)|0));}break;case 54:{return c$5($R(_l.R,_d),_l.S);}break;case 55:{return c$5($R(_l.R,_d),_l.S);}break;}})).R);}else{return _c;}}));return $D4(_6,_h,_8);}else{return _9;}}else{return _9;}}),_B=(function(_C){var _D=$10(_C.I0,c$R("v1")).Y0,_E=$T2($Q2(_3),[]),_F=$Q2(_4),_G=$I(_E,$r0(),(function(_l,_H){var _I=_H.R,_7=$S2(_H.S,[]),_c=$I(_7,[],(function(_J,_K){var _d=$23(_K,"block",""),_L=$I4($23(_K,"html","")),_M=$M($13(_K,"vars"),(function(_N
7208){return $03(_N,"");})),_O=$V3(_d,st_8);if(!$b(_O,st_8)){if(_L===""){return $R(_J,_O);}else{var _P=$R3(_L,_M,_F);if(_P!==""){var _e=$R(_O.I0,c$G([],_P));return $R(_J,c$F(_O.H0,_e));}else{return _J;}}}else{return _J;}}));return $n0(_l,_I,c$I(_c));})),_Q=_5(_C,_G,c$3($O1(_0),$O1(_1))),_R=_Q.S;if(_R===""){return $V2(c$l0($I(_Q.R.g1,[],(function(_l,_j){if((_j.T0)._id!==22){return $D(_l,$Q4(_j,c$x(0,0),_D));}else{return _l;}}))));}else{$k0(("Layout error: "+_R));return $V2(c$l0([]));}}),_C=$V3(_2,st_8);if($b(_C,st_8)){return "";}else{return _B(_C);}}var layoutEngine = $U4;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.