383 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			383 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Class: haxe.Unserializer
 | 
						|
 | 
						|
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
 | 
						|
 | 
						|
$global.Object.defineProperty(exports, "__esModule", {value: true});
 | 
						|
 | 
						|
var __map_reserved = {};
 | 
						|
 | 
						|
// Imports
 | 
						|
 | 
						|
var $hxClasses = require("./../hxClasses_stub").default;
 | 
						|
var $import = require("./../import_stub").default;
 | 
						|
function haxe__$Unserializer_NullResolver() {return require("./../haxe/_Unserializer/NullResolver");}
 | 
						|
function StringTools() {return require("./../StringTools");}
 | 
						|
function Std() {return require("./../Std");}
 | 
						|
function HxOverrides() {return require("./../HxOverrides");}
 | 
						|
function js__$Boot_HaxeError() {return require("./../js/_Boot/HaxeError");}
 | 
						|
function Reflect() {return require("./../Reflect");}
 | 
						|
function Type() {return require("./../Type");}
 | 
						|
function haxe_ds_ObjectMap() {return require("./../haxe/ds/ObjectMap");}
 | 
						|
function haxe_ds_StringMap() {return require("./../haxe/ds/StringMap");}
 | 
						|
function List() {return require("./../List");}
 | 
						|
function haxe_ds_IntMap() {return require("./../haxe/ds/IntMap");}
 | 
						|
function haxe_io_Bytes() {return require("./../haxe/io/Bytes");}
 | 
						|
function haxe__$Unserializer_DefaultResolver() {return require("./../haxe/_Unserializer/DefaultResolver");}
 | 
						|
 | 
						|
// Constructor
 | 
						|
 | 
						|
var Unserializer = function(buf) {
 | 
						|
	this.buf = buf;
 | 
						|
	this.length = buf.length;
 | 
						|
	this.pos = 0;
 | 
						|
	this.scache = [];
 | 
						|
	this.cache = [];
 | 
						|
	var r = Unserializer.DEFAULT_RESOLVER;
 | 
						|
	if(r == null) {
 | 
						|
		r = new (haxe__$Unserializer_DefaultResolver().default)();
 | 
						|
		Unserializer.DEFAULT_RESOLVER = r;
 | 
						|
	}
 | 
						|
	this.resolver = r;
 | 
						|
}
 | 
						|
 | 
						|
// Meta
 | 
						|
 | 
						|
Unserializer.__name__ = ["haxe","Unserializer"];
 | 
						|
Unserializer.prototype = {
 | 
						|
	setResolver: function(r) {
 | 
						|
		if(r == null) {
 | 
						|
			this.resolver = (haxe__$Unserializer_NullResolver().default).get_instance();
 | 
						|
		} else {
 | 
						|
			this.resolver = r;
 | 
						|
		}
 | 
						|
	},
 | 
						|
	get: function(p) {
 | 
						|
		return (StringTools().default).fastCodeAt(this.buf,p);
 | 
						|
	},
 | 
						|
	readDigits: function() {
 | 
						|
		var k = 0;
 | 
						|
		var s = false;
 | 
						|
		var fpos = this.pos;
 | 
						|
		while(true) {
 | 
						|
			var c = this.get(this.pos);
 | 
						|
			if((StringTools().default).isEof(c)) {
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			if(c == 45) {
 | 
						|
				if(this.pos != fpos) {
 | 
						|
					break;
 | 
						|
				}
 | 
						|
				s = true;
 | 
						|
				this.pos++;
 | 
						|
				continue;
 | 
						|
			}
 | 
						|
			if(c < 48 || c > 57) {
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			k = k * 10 + (c - 48);
 | 
						|
			this.pos++;
 | 
						|
		}
 | 
						|
		if(s) {
 | 
						|
			k *= -1;
 | 
						|
		}
 | 
						|
		return k;
 | 
						|
	},
 | 
						|
	readFloat: function() {
 | 
						|
		var p1 = this.pos;
 | 
						|
		while(true) {
 | 
						|
			var c = this.get(this.pos);
 | 
						|
			if((StringTools().default).isEof(c)) {
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			if(c >= 43 && c < 58 || c == 101 || c == 69) {
 | 
						|
				this.pos++;
 | 
						|
			} else {
 | 
						|
				break;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		return (Std().default).parseFloat((HxOverrides().default).substr(this.buf,p1,this.pos - p1));
 | 
						|
	},
 | 
						|
	unserializeObject: function(o) {
 | 
						|
		while(true) {
 | 
						|
			if(this.pos >= this.length) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid object");
 | 
						|
			}
 | 
						|
			if(this.get(this.pos) == 103) {
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			var k = this.unserialize();
 | 
						|
			if(typeof(k) != "string") {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid object key");
 | 
						|
			}
 | 
						|
			var v = this.unserialize();
 | 
						|
			(Reflect().default).setField(o,k,v);
 | 
						|
		}
 | 
						|
		this.pos++;
 | 
						|
	},
 | 
						|
	unserializeEnum: function(edecl,tag) {
 | 
						|
		if(this.get(this.pos++) != 58) {
 | 
						|
			throw new (js__$Boot_HaxeError().default)("Invalid enum format");
 | 
						|
		}
 | 
						|
		var nargs = this.readDigits();
 | 
						|
		if(nargs == 0) {
 | 
						|
			return (Type().default).createEnum(edecl,tag);
 | 
						|
		}
 | 
						|
		var args = [];
 | 
						|
		while(nargs-- > 0) args.push(this.unserialize());
 | 
						|
		return (Type().default).createEnum(edecl,tag,args);
 | 
						|
	},
 | 
						|
	unserialize: function() {
 | 
						|
		var _g = this.get(this.pos++);
 | 
						|
		switch(_g) {
 | 
						|
		case 65:
 | 
						|
			var name = this.unserialize();
 | 
						|
			var cl = this.resolver.resolveClass(name);
 | 
						|
			if(cl == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Class not found " + name);
 | 
						|
			}
 | 
						|
			return cl;
 | 
						|
		case 66:
 | 
						|
			var name1 = this.unserialize();
 | 
						|
			var e = this.resolver.resolveEnum(name1);
 | 
						|
			if(e == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Enum not found " + name1);
 | 
						|
			}
 | 
						|
			return e;
 | 
						|
		case 67:
 | 
						|
			var name2 = this.unserialize();
 | 
						|
			var cl1 = this.resolver.resolveClass(name2);
 | 
						|
			if(cl1 == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Class not found " + name2);
 | 
						|
			}
 | 
						|
			var o = (Type().default).createEmptyInstance(cl1);
 | 
						|
			this.cache.push(o);
 | 
						|
			o.hxUnserialize(this);
 | 
						|
			if(this.get(this.pos++) != 103) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid custom data");
 | 
						|
			}
 | 
						|
			return o;
 | 
						|
		case 77:
 | 
						|
			var h = new (haxe_ds_ObjectMap().default)();
 | 
						|
			this.cache.push(h);
 | 
						|
			var buf = this.buf;
 | 
						|
			while(this.get(this.pos) != 104) {
 | 
						|
				var s = this.unserialize();
 | 
						|
				h.set(s,this.unserialize());
 | 
						|
			}
 | 
						|
			this.pos++;
 | 
						|
			return h;
 | 
						|
		case 82:
 | 
						|
			var n = this.readDigits();
 | 
						|
			if(n < 0 || n >= this.scache.length) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid string reference");
 | 
						|
			}
 | 
						|
			return this.scache[n];
 | 
						|
		case 97:
 | 
						|
			var buf1 = this.buf;
 | 
						|
			var a = [];
 | 
						|
			this.cache.push(a);
 | 
						|
			while(true) {
 | 
						|
				var c = this.get(this.pos);
 | 
						|
				if(c == 104) {
 | 
						|
					this.pos++;
 | 
						|
					break;
 | 
						|
				}
 | 
						|
				if(c == 117) {
 | 
						|
					this.pos++;
 | 
						|
					var n1 = this.readDigits();
 | 
						|
					a[a.length + n1 - 1] = null;
 | 
						|
				} else {
 | 
						|
					a.push(this.unserialize());
 | 
						|
				}
 | 
						|
			}
 | 
						|
			return a;
 | 
						|
		case 98:
 | 
						|
			var h1 = new (haxe_ds_StringMap().default)();
 | 
						|
			this.cache.push(h1);
 | 
						|
			var buf2 = this.buf;
 | 
						|
			while(this.get(this.pos) != 104) {
 | 
						|
				var s1 = this.unserialize();
 | 
						|
				h1.set(s1,this.unserialize());
 | 
						|
			}
 | 
						|
			this.pos++;
 | 
						|
			return h1;
 | 
						|
		case 99:
 | 
						|
			var name3 = this.unserialize();
 | 
						|
			var cl2 = this.resolver.resolveClass(name3);
 | 
						|
			if(cl2 == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Class not found " + name3);
 | 
						|
			}
 | 
						|
			var o1 = (Type().default).createEmptyInstance(cl2);
 | 
						|
			this.cache.push(o1);
 | 
						|
			this.unserializeObject(o1);
 | 
						|
			return o1;
 | 
						|
		case 100:
 | 
						|
			return this.readFloat();
 | 
						|
		case 102:
 | 
						|
			return false;
 | 
						|
		case 105:
 | 
						|
			return this.readDigits();
 | 
						|
		case 106:
 | 
						|
			var name4 = this.unserialize();
 | 
						|
			var edecl = this.resolver.resolveEnum(name4);
 | 
						|
			if(edecl == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Enum not found " + name4);
 | 
						|
			}
 | 
						|
			this.pos++;
 | 
						|
			var index = this.readDigits();
 | 
						|
			var tag = (Type().default).getEnumConstructs(edecl)[index];
 | 
						|
			if(tag == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Unknown enum index " + name4 + "@" + index);
 | 
						|
			}
 | 
						|
			var e1 = this.unserializeEnum(edecl,tag);
 | 
						|
			this.cache.push(e1);
 | 
						|
			return e1;
 | 
						|
		case 107:
 | 
						|
			return NaN;
 | 
						|
		case 108:
 | 
						|
			var l = new (List().default)();
 | 
						|
			this.cache.push(l);
 | 
						|
			var buf3 = this.buf;
 | 
						|
			while(this.get(this.pos) != 104) l.add(this.unserialize());
 | 
						|
			this.pos++;
 | 
						|
			return l;
 | 
						|
		case 109:
 | 
						|
			return -Infinity;
 | 
						|
		case 110:
 | 
						|
			return null;
 | 
						|
		case 111:
 | 
						|
			var o2 = { };
 | 
						|
			this.cache.push(o2);
 | 
						|
			this.unserializeObject(o2);
 | 
						|
			return o2;
 | 
						|
		case 112:
 | 
						|
			return Infinity;
 | 
						|
		case 113:
 | 
						|
			var h2 = new (haxe_ds_IntMap().default)();
 | 
						|
			this.cache.push(h2);
 | 
						|
			var buf4 = this.buf;
 | 
						|
			var c1 = this.get(this.pos++);
 | 
						|
			while(c1 == 58) {
 | 
						|
				var i = this.readDigits();
 | 
						|
				h2.set(i,this.unserialize());
 | 
						|
				c1 = this.get(this.pos++);
 | 
						|
			}
 | 
						|
			if(c1 != 104) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid IntMap format");
 | 
						|
			}
 | 
						|
			return h2;
 | 
						|
		case 114:
 | 
						|
			var n2 = this.readDigits();
 | 
						|
			if(n2 < 0 || n2 >= this.cache.length) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid reference");
 | 
						|
			}
 | 
						|
			return this.cache[n2];
 | 
						|
		case 115:
 | 
						|
			var len = this.readDigits();
 | 
						|
			var buf5 = this.buf;
 | 
						|
			if(this.get(this.pos++) != 58 || this.length - this.pos < len) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid bytes length");
 | 
						|
			}
 | 
						|
			var codes = Unserializer.CODES;
 | 
						|
			if(codes == null) {
 | 
						|
				codes = Unserializer.initCodes();
 | 
						|
				Unserializer.CODES = codes;
 | 
						|
			}
 | 
						|
			var i1 = this.pos;
 | 
						|
			var rest = len & 3;
 | 
						|
			var size = (len >> 2) * 3 + (rest >= 2 ? rest - 1 : 0);
 | 
						|
			var max = i1 + (len - rest);
 | 
						|
			var bytes = (haxe_io_Bytes().default).alloc(size);
 | 
						|
			var bpos = 0;
 | 
						|
			while(i1 < max) {
 | 
						|
				var c11 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
				var c2 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
				bytes.set(bpos++,c11 << 2 | c2 >> 4);
 | 
						|
				var c3 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
				bytes.set(bpos++,c2 << 4 | c3 >> 2);
 | 
						|
				var c4 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
				bytes.set(bpos++,c3 << 6 | c4);
 | 
						|
			}
 | 
						|
			if(rest >= 2) {
 | 
						|
				var c12 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
				var c21 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
				bytes.set(bpos++,c12 << 2 | c21 >> 4);
 | 
						|
				if(rest == 3) {
 | 
						|
					var c31 = codes[(StringTools().default).fastCodeAt(buf5,i1++)];
 | 
						|
					bytes.set(bpos++,c21 << 4 | c31 >> 2);
 | 
						|
				}
 | 
						|
			}
 | 
						|
			this.pos += len;
 | 
						|
			this.cache.push(bytes);
 | 
						|
			return bytes;
 | 
						|
		case 116:
 | 
						|
			return true;
 | 
						|
		case 118:
 | 
						|
			var d;
 | 
						|
			if(this.get(this.pos) >= 48 && this.get(this.pos) <= 57 && this.get(this.pos + 1) >= 48 && this.get(this.pos + 1) <= 57 && this.get(this.pos + 2) >= 48 && this.get(this.pos + 2) <= 57 && this.get(this.pos + 3) >= 48 && this.get(this.pos + 3) <= 57 && this.get(this.pos + 4) == 45) {
 | 
						|
				d = (HxOverrides().default).strDate((HxOverrides().default).substr(this.buf,this.pos,19));
 | 
						|
				this.pos += 19;
 | 
						|
			} else {
 | 
						|
				var t = this.readFloat();
 | 
						|
				d = new Date(t);
 | 
						|
			}
 | 
						|
			this.cache.push(d);
 | 
						|
			return d;
 | 
						|
		case 119:
 | 
						|
			var name5 = this.unserialize();
 | 
						|
			var edecl1 = this.resolver.resolveEnum(name5);
 | 
						|
			if(edecl1 == null) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Enum not found " + name5);
 | 
						|
			}
 | 
						|
			var e2 = this.unserializeEnum(edecl1,this.unserialize());
 | 
						|
			this.cache.push(e2);
 | 
						|
			return e2;
 | 
						|
		case 120:
 | 
						|
			throw (js__$Boot_HaxeError().default).wrap(this.unserialize());
 | 
						|
			break;
 | 
						|
		case 121:
 | 
						|
			var len1 = this.readDigits();
 | 
						|
			if(this.get(this.pos++) != 58 || this.length - this.pos < len1) {
 | 
						|
				throw new (js__$Boot_HaxeError().default)("Invalid string length");
 | 
						|
			}
 | 
						|
			var s2 = (HxOverrides().default).substr(this.buf,this.pos,len1);
 | 
						|
			this.pos += len1;
 | 
						|
			s2 = (StringTools().default).urlDecode(s2);
 | 
						|
			this.scache.push(s2);
 | 
						|
			return s2;
 | 
						|
		case 122:
 | 
						|
			return 0;
 | 
						|
		default:
 | 
						|
		}
 | 
						|
		this.pos--;
 | 
						|
		throw new (js__$Boot_HaxeError().default)("Invalid char " + this.buf.charAt(this.pos) + " at position " + this.pos);
 | 
						|
	}
 | 
						|
};
 | 
						|
Unserializer.prototype.__class__ = $hxClasses["haxe.Unserializer"] = Unserializer;
 | 
						|
 | 
						|
// Init
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// Statics
 | 
						|
 | 
						|
Unserializer.initCodes = function() {
 | 
						|
	var codes = [];
 | 
						|
	var _g1 = 0;
 | 
						|
	var _g = Unserializer.BASE64.length;
 | 
						|
	while(_g1 < _g) {
 | 
						|
		var i = _g1++;
 | 
						|
		codes[(StringTools().default).fastCodeAt(Unserializer.BASE64,i)] = i;
 | 
						|
	}
 | 
						|
	return codes;
 | 
						|
}
 | 
						|
Unserializer.run = function(v) {
 | 
						|
	return new Unserializer(v).unserialize();
 | 
						|
}
 | 
						|
Unserializer.DEFAULT_RESOLVER = new (haxe__$Unserializer_DefaultResolver().default)()
 | 
						|
Unserializer.BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789%:"
 | 
						|
Unserializer.CODES = null
 | 
						|
 | 
						|
// Export
 | 
						|
 | 
						|
exports.default = Unserializer; |