// This program was compiled from OCaml by js_of_ocaml 1.0 function caml_raise_with_arg (tag, arg) { throw [0, tag, arg]; } function caml_raise_with_string (tag, msg) { caml_raise_with_arg (tag, new MlWrappedString (msg)); } function caml_invalid_argument (msg) { caml_raise_with_string(caml_global_data[4], msg); } function caml_array_bound_error () { caml_invalid_argument("index out of bounds"); } function caml_str_repeat(n, s) { if (!n) { return ""; } if (n & 1) { return caml_str_repeat(n - 1, s) + s; } var r = caml_str_repeat(n >> 1, s); return r + r; } function MlString(param) { if (param != null) { this.bytes = this.fullBytes = param; this.last = this.len = param.length; } } MlString.prototype = { string:null, bytes:null, fullBytes:null, array:null, len:null, last:0, toJsString:function() { return this.string = decodeURIComponent (escape(this.getFullBytes())); }, toBytes:function() { if (this.string != null) var b = unescape (encodeURIComponent (this.string)); else { var b = "", a = this.array, l = a.length; for (var i = 0; i < l; i ++) b += String.fromCharCode (a[i]); } this.bytes = this.fullBytes = b; this.last = this.len = b.length; return b; }, getBytes:function() { var b = this.bytes; if (b == null) b = this.toBytes(); return b; }, getFullBytes:function() { var b = this.fullBytes; if (b !== null) return b; b = this.bytes; if (b == null) b = this.toBytes (); if (this.last < this.len) { this.bytes = (b += caml_str_repeat(this.len - this.last, '\0')); this.last = this.len; } this.fullBytes = b; return b; }, toArray:function() { var b = this.bytes; if (b == null) b = this.toBytes (); var a = [], l = this.last; for (var i = 0; i < l; i++) a[i] = b.charCodeAt(i); for (l = this.len; i < l; i++) a[i] = 0; this.string = this.bytes = this.fullBytes = null; this.last = this.len; this.array = a; return a; }, getArray:function() { var a = this.array; if (!a) a = this.toArray(); return a; }, getLen:function() { var len = this.len; if (len !== null) return len; this.toBytes(); return this.len; }, toString:function() { var s = this.string; return s?s:this.toJsString(); }, valueOf:function() { var s = this.string; return s?s:this.toJsString(); }, blitToArray:function(i1, a2, i2, l) { var a1 = this.array; if (a1) for (var i = 0; i < l; i++) a2 [i2 + i] = a1 [i1 + i]; else { var b = this.bytes; if (b == null) b = this.toBytes(); var l1 = this.last - i1; if (l <= l1) for (var i = 0; i < l; i++) a2 [i2 + i] = b.charCodeAt(i1 + i); else { for (var i = 0; i < l1; i++) a2 [i2 + i] = b.charCodeAt(i1 + i); for (; i < l; i++) a2 [i2 + i] = 0; } } }, get:function (i) { var a = this.array; if (a) return a[i]; var b = this.bytes; if (b == null) b = this.toBytes(); return (i<this.last)?b.charCodeAt(i):0; }, safeGet:function (i) { if (!this.len) this.toBytes(); if ((i < 0) || (i >= this.len)) caml_array_bound_error (); return this.get(i); }, set:function (i, c) { var a = this.array; if (!a) { if (this.last == i) { this.bytes += String.fromCharCode (c & 0xff); this.last ++; return 0; } a = this.toArray(); } else if (this.bytes != null) { this.bytes = this.fullBytes = this.string = null; } a[i] = c & 0xff; return 0; }, safeSet:function (i, c) { if (this.len == null) this.toBytes (); if ((i < 0) || (i >= this.len)) caml_array_bound_error (); this.set(i, c); }, fill:function (ofs, len, c) { if (ofs >= this.last && this.last && c == 0) return; var a = this.array; if (!a) a = this.toArray(); else if (this.bytes != null) { this.bytes = this.fullBytes = this.string = null; } var l = ofs + len; for (var i = ofs; i < l; i++) a[i] = c; }, compare:function (s2) { if (this.string != null && s2.string != null) { if (this.string < s2.string) return -1; if (this.string > s2.string) return 1; return 0; } var b1 = this.getFullBytes (); var b2 = s2.getFullBytes (); if (b1 < b2) return -1; if (b1 > b2) return 1; return 0; }, equal:function (s2) { if (this.string != null && s2.string != null) return this.string == s2.string; return this.getFullBytes () == s2.getFullBytes (); }, lessThan:function (s2) { if (this.string != null && s2.string != null) return this.string < s2.string; return this.getFullBytes () < s2.getFullBytes (); }, lessEqual:function (s2) { if (this.string != null && s2.string != null) return this.string <= s2.string; return this.getFullBytes () <= s2.getFullBytes (); } } function MlWrappedString (s) { this.string = s; } MlWrappedString.prototype = new MlString(); function MlMakeString (l) { this.bytes = ""; this.len = l; } MlMakeString.prototype = new MlString (); function caml_array_get (array, index) { if ((index < 0) || (index >= array.length - 1)) caml_array_bound_error(); return array[index+1]; } function caml_array_set (array, index, newval) { if ((index < 0) || (index >= array.length - 1)) caml_array_bound_error(); array[index+1]=newval; return 0; } function caml_blit_string(s1, i1, s2, i2, len) { if (len === 0) return; if (i2 === s2.last && s2.bytes != null) { var b = s1.bytes; if (b == null) b = s1.toBytes (); if (i1 > 0 || s1.last > len) b = b.slice(i1, i1 + len); s2.bytes += b; s2.last += b.length; return; } var a = s2.array; if (!a) a = s2.toArray(); else { s2.bytes = s2.string = null; } s1.blitToArray (i1, a, i2, len); } function caml_call_gen(f, args) { if(f.fun) return caml_call_gen(f.fun, args); var n = f.length; var d = n - args.length; if (d == 0) return f.apply(null, args); else if (d < 0) return caml_call_gen(f.apply(null, args.slice(0,n)), args.slice(n)); else return function (x){ return caml_call_gen(f, args.concat([x])); }; } function caml_classify_float (x) { if (isFinite (x)) { if (Math.abs(x) >= 2.2250738585072014e-308) return 0; if (x != 0) return 1; return 2; } return isNaN(x)?4:3; } function caml_create_string(len) { if (len < 0) caml_invalid_argument("String.create"); return new MlMakeString(len); } function caml_fill_string(s, i, l, c) { s.fill (i, l, c); } function caml_parse_format (fmt) { fmt = fmt.toString (); var len = fmt.length; if (len > 31) caml_invalid_argument("format_int: format too long"); var f = { justify:'+', signstyle:'-', filler:' ', alternate:false, base:0, signedconv:false, width:0, uppercase:false, sign:1, prec:-1, conv:'f' }; for (var i = 0; i < len; i++) { var c = fmt.charAt(i); switch (c) { case '-': f.justify = '-'; break; case '+': case ' ': f.signstyle = c; break; case '0': f.filler = '0'; break; case '#': f.alternate = true; break; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': f.width = 0; while (c=fmt.charCodeAt(i) - 48, c >= 0 && c <= 9) { f.width = f.width * 10 + c; i++ } i--; break; case '.': f.prec = 0; i++; while (c=fmt.charCodeAt(i) - 48, c >= 0 && c <= 9) { f.prec = f.prec * 10 + c; i++ } i--; case 'd': case 'i': f.signedconv = true; /* fallthrough */ case 'u': f.base = 10; break; case 'x': f.base = 16; break; case 'X': f.base = 16; f.uppercase = true; break; case 'o': f.base = 8; break; case 'e': case 'f': case 'g': f.signedconv = true; f.conv = c; break; case 'E': case 'F': case 'G': f.signedconv = true; f.uppercase = true; f.conv = c.toLowerCase (); break; } } return f; } function caml_finish_formatting(f, rawbuffer) { if (f.uppercase) rawbuffer = rawbuffer.toUpperCase(); var len = rawbuffer.length; if (f.signedconv && (f.sign < 0 || f.signstyle != '-')) len++; if (f.alternate) { if (f.base == 8) len += 1; if (f.base == 16) len += 2; } var buffer = ""; if (f.justify == '+' && f.filler == ' ') for (var i = len; i < f.width; i++) buffer += ' '; if (f.signedconv) { if (f.sign < 0) buffer += '-'; else if (f.signstyle != '-') buffer += f.signstyle; } if (f.alternate && f.base == 8) buffer += '0'; if (f.alternate && f.base == 16) buffer += "0x"; if (f.justify == '+' && f.filler == '0') for (var i = len; i < f.width; i++) buffer += '0'; buffer += rawbuffer; if (f.justify == '-') for (var i = len; i < f.width; i++) buffer += ' '; return new MlWrappedString (buffer); } function caml_format_float (fmt, x) { var s, f = caml_parse_format(fmt); var prec = (f.prec < 0)?6:f.prec; if (x < 0) { f.sign = -1; x = -x; } if (isNaN(x)) { s = "nan"; f.filler = ' '; } else if (!isFinite(x)) { s = "inf"; f.filler = ' '; } else switch (f.conv) { case 'e': var s = x.toExponential(prec); var i = s.length; if (s.charAt(i - 3) == 'e') s = s.slice (0, i - 1) + '0' + s.slice (i - 1); break; case 'f': s = x.toFixed(prec); break; case 'g': prec = prec?prec:1; s = x.toExponential(prec - 1); var j = s.indexOf('e'); var exp = +s.slice(j + 1); if (exp < -4 || x.toFixed(0).length > prec) { var i = j - 1; while (s.charAt(i) == '0') i--; if (s.charAt(i) == '.') i--; s = s.slice(0, i + 1) + s.slice(j); i = s.length; if (s.charAt(i - 3) == 'e') s = s.slice (0, i - 1) + '0' + s.slice (i - 1); break; } else { var p = prec; if (exp < 0) { p -= exp + 1; s = x.toFixed(p); } else while (s = x.toFixed(p), s.length > prec + 1) p--; if (p) { var i = s.length - 1; while (s.charAt(i) == '0') i--; if (s.charAt(i) == '.') i--; s = s.slice(0, i + 1); } } break; } return caml_finish_formatting(f, s); } function caml_format_int(fmt, i) { if (fmt.toString() == "%d") return new MlWrappedString(""+i); var f = caml_parse_format(fmt); if (i < 0) { if (f.signedconv) { f.sign = -1; i = -i; } else i >>>= 0; } var s = i.toString(f.base); if (f.prec >= 0) { f.filler = ' '; var n = f.prec - s.length; if (n > 0) s = caml_str_repeat (n, '0') + s; } return caml_finish_formatting(f, s); } function caml_get_exception_backtrace () { caml_invalid_argument ("Primitive 'caml_get_exception_backtrace' not implemented"); } function caml_int64_is_negative(x) { return (x[3] << 16) < 0; } function caml_int64_neg (x) { var y1 = - x[1]; var y2 = - x[2] + (y1 >> 24); var y3 = - x[3] + (y2 >> 24); return [255, y1 & 0xffffff, y2 & 0xffffff, y3 & 0xffff]; } function caml_int64_of_int32 (x) { return [255, x & 0xffffff, (x >> 24) & 0xffffff, (x >> 31) & 0xffff] } function caml_int64_ucompare(x,y) { if (x[3] > y[3]) return 1; if (x[3] < y[3]) return -1; if (x[2] > y[2]) return 1; if (x[2] < y[2]) return -1; if (x[1] > y[1]) return 1; if (x[1] < y[1]) return -1; return 0; } function caml_int64_lsl1 (x) { x[3] = (x[3] << 1) | (x[2] >> 23); x[2] = ((x[2] << 1) | (x[1] >> 23)) & 0xffffff; x[1] = (x[1] << 1) & 0xffffff; } function caml_int64_lsr1 (x) { x[1] = ((x[1] >>> 1) | (x[2] << 23)) & 0xffffff; x[2] = ((x[2] >>> 1) | (x[3] << 23)) & 0xffffff; x[3] = x[3] >>> 1; } function caml_int64_sub (x, y) { var z1 = x[1] - y[1]; var z2 = x[2] - y[2] + (z1 >> 24); var z3 = x[3] - y[3] + (z2 >> 24); return [255, z1 & 0xffffff, z2 & 0xffffff, z3 & 0xffff]; } function caml_int64_udivmod (x, y) { var offset = 0; var modulus = x.slice (); var divisor = y.slice (); var quotient = [255, 0, 0, 0]; while (caml_int64_ucompare (modulus, divisor) > 0) { offset++; caml_int64_lsl1 (divisor); } while (offset >= 0) { offset --; caml_int64_lsl1 (quotient); if (caml_int64_ucompare (modulus, divisor) >= 0) { quotient[1] ++; modulus = caml_int64_sub (modulus, divisor); } caml_int64_lsr1 (divisor); } return [0,quotient, modulus]; } function caml_int64_to_int32 (x) { return x[1] | (x[2] << 24); } function caml_int64_is_zero(x) { return (x[3]|x[2]|x[1]) == 0; } function caml_int64_format (fmt, x) { var f = caml_parse_format(fmt); if (f.signedconv && caml_int64_is_negative(x)) { f.sign = -1; x = caml_int64_neg(x); } var buffer = ""; var wbase = caml_int64_of_int32(f.base); var cvtbl = "0123456789abcdef"; do { var p = caml_int64_udivmod(x, wbase); x = p[1]; buffer = cvtbl.charAt(caml_int64_to_int32(p[2])) + buffer; } while (! caml_int64_is_zero(x)); if (f.prec >= 0) { f.filler = ' '; var n = f.prec - buffer.length; if (n > 0) buffer = caml_str_repeat (n, '0') + buffer; } return caml_finish_formatting(f, buffer); } function caml_parse_sign_and_base (s) { var i = 0, base = 10, sign = s.get(0) == 45?(i++,-1):1; if (s.get(i) == 48) switch (s.get(i + 1)) { case 120: case 88: base = 16; i += 2; break; case 111: case 79: base = 8; i += 2; break; case 98: case 66: base = 2; i += 2; break; } return [i, sign, base]; } function caml_parse_digit(c) { if (c >= 48 && c <= 57) return c - 48; if (c >= 65 && c <= 90) return c - 55; if (c >= 97 && c <= 122) return c - 87; return -1; } var caml_global_data = [0]; function caml_failwith (msg) { caml_raise_with_string(caml_global_data[3], msg); } function caml_int_of_string (s) { var r = caml_parse_sign_and_base (s); var i = r[0], sign = r[1], base = r[2]; var threshold = -1 >>> 0; var c = s.get(i); var d = caml_parse_digit(c); if (d < 0 || d >= base) caml_failwith("int_of_string"); var res = d; for (;;) { i++; c = s.get(i); if (c == 95) continue; d = caml_parse_digit(c); if (d < 0 || d >= base) break; res = base * res + d; if (res > threshold) caml_failwith("int_of_string"); } if (i != s.getLen()) caml_failwith("int_of_string"); res = sign * res; if ((res | 0) != res) caml_failwith("int_of_string"); return res; } function caml_is_printable(c) { return +(c > 31 && c < 127); } function caml_js_call(f, o, args) { return f.apply(o, args.slice(1)); } var caml_js_regexps = { amp:/&/g, lt:/</g, quot:/\"/g, all:/[&<\"]/ }; function caml_js_html_escape (s) { if (!caml_js_regexps.all.test(s)) return s; return s.replace(caml_js_regexps.amp, "&") .replace(caml_js_regexps.lt, "<") .replace(caml_js_regexps.quot, """); } function caml_js_on_ie () { var ua = window.navigator?window.navigator.userAgent:""; return ua.indexOf("MSIE") != -1 && ua.indexOf("Opera") != 0; } function caml_js_wrap_callback(f) { var toArray = Array.prototype.slice; return function () { var args = (arguments.length > 0)?toArray.call (arguments):[undefined]; return caml_call_gen(f, args); } } function caml_make_vect (len, init) { var b = [0]; for (var i = 1; i <= len; i++) b[i] = init; return b; } function caml_ml_flush () { return 0; } function caml_ml_open_descriptor_out () { return 0; } function caml_ml_out_channels_list () { return 0; } function caml_ml_output () { return 0; } function caml_raise_constant (tag) { throw [0, tag]; } function caml_raise_zero_divide () { caml_raise_constant(caml_global_data[6]); } function caml_mod(x,y) { if (y == 0) caml_raise_zero_divide (); return x%y; } function caml_mul(x,y) { return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0; } function caml_int64_compare(x,y) { var x3 = x[3] << 16; var y3 = y[3] << 16; if (x3 > y3) return 1; if (x3 < y3) return -1; if (x[2] > y[2]) return 1; if (x[2] < y[2]) return -1; if (x[1] > y[1]) return 1; if (x[1] < y[1]) return -1; return 0; } function caml_int_compare (a, b) { if (a < b) return (-1); if (a == b) return 0; return 1; } function caml_compare_val (a, b, total) { var stack = []; for(;;) { if (!(total && a === b)) { if (a instanceof MlString) { if (b instanceof MlString) { if (a != b) { var x = a.compare(b); if (x != 0) return x; } } else return 1; } else if (a instanceof Array && a[0] === (a[0]|0)) { var ta = a[0]; if (ta === 250) { a = a[1]; continue; } else if (b instanceof Array && b[0] === (b[0]|0)) { var tb = b[0]; if (tb === 250) { b = b[1]; continue; } else if (ta != tb) { return (ta < tb)?-1:1; } else { switch (ta) { case 248: { var x = caml_int_compare(a[2], b[2]); if (x != 0) return x; break; } case 255: { var x = caml_int64_compare(a, b); if (x != 0) return x; break; } default: if (a.length != b.length) return (a.length < b.length)?-1:1; if (a.length > 1) stack.push(a, b, 1); } } } else return 1; } else if (b instanceof MlString || (b instanceof Array && b[0] === (b[0]|0))) { return -1; } else { if (a < b) return -1; if (a > b) return 1; if (total && a != b) { if (a == a) return 1; if (b == b) return -1; } } } if (stack.length == 0) return 0; var i = stack.pop(); b = stack.pop(); a = stack.pop(); if (i + 1 < a.length) stack.push(a, b, i + 1); a = a[i]; b = b[i]; } } function caml_compare (a, b) { return caml_compare_val (a, b, true); } function caml_notequal (x, y) { return +(caml_compare_val(x,y,false) != 0); } function caml_obj_is_block (x) { return +(x instanceof Array); } function caml_obj_tag (x) { return (x instanceof Array)?x[0]:1000; } function caml_register_global (n, v) { caml_global_data[n + 1] = v; } var caml_named_values = {}; function caml_register_named_value(nm,v) { caml_named_values[nm] = v; return 0; } function caml_sys_get_config () { return [0, new MlWrappedString("Unix"), 32]; } function caml_update_dummy (x, y) { if( typeof y==="function" ) { x.fun = y; return 0; } if( y.fun ) { x.fun = y.fun; return 0; } var i = y.length; while (i--) x[i] = y[i]; return 0; } (function() {function _hH_(_q2_,_q3_,_q4_,_q5_,_q6_,_q7_,_q8_) {return _q2_.length==6 ?_q2_(_q3_,_q4_,_q5_,_q6_,_q7_,_q8_) :caml_call_gen(_q2_,[_q3_,_q4_,_q5_,_q6_,_q7_,_q8_]);} function _dB_(_qY_,_qZ_,_q0_,_q1_) {return _qY_.length==3 ?_qY_(_qZ_,_q0_,_q1_) :caml_call_gen(_qY_,[_qZ_,_q0_,_q1_]);} function _d6_(_qV_,_qW_,_qX_) {return _qV_.length==2?_qV_(_qW_,_qX_):caml_call_gen(_qV_,[_qW_,_qX_]);} function _bP_(_qT_,_qU_) {return _qT_.length==1?_qT_(_qU_):caml_call_gen(_qT_,[_qU_]);} var _a_=[0,new MlString("Failure")], _b_=[0,new MlString("Invalid_argument")], _c_=[0,new MlString("Not_found")], _d_=[0,new MlString("Assert_failure")], _e_=new MlString("File \"%s\", line %d, characters %d-%d: %s"); caml_register_global(5,[0,new MlString("Division_by_zero")]); caml_register_global(3,_b_); caml_register_global(2,_a_); var _bg_=[0,new MlString("Out_of_memory")], _bf_=[0,new MlString("Match_failure")], _be_=[0,new MlString("Stack_overflow")], _bd_=[0,new MlString("Undefined_recursive_module")], _bc_=new MlString("%.12g"), _bb_=new MlString("."), _ba_=new MlString("%d"), _a$_=new MlString("true"), _a__=new MlString("false"), _a9_=new MlString("Pervasives.do_at_exit"), _a8_=new MlString("\\b"), _a7_=new MlString("\\t"), _a6_=new MlString("\\n"), _a5_=new MlString("\\r"), _a4_=new MlString("\\\\"), _a3_=new MlString("\\'"), _a2_=new MlString("String.contains_from"), _a1_=new MlString("String.blit"), _a0_=new MlString("String.sub"), _aZ_=new MlString("Queue.Empty"), _aY_=new MlString("Buffer.add: cannot grow buffer"), _aX_=new MlString(""), _aW_=new MlString(""), _aV_=new MlString("\""), _aU_=new MlString("\""), _aT_=new MlString("'"), _aS_=new MlString("'"), _aR_=new MlString("."), _aQ_=new MlString("printf: bad positional specification (0)."), _aP_=new MlString("%_"), _aO_=[0,new MlString("printf.ml"),144,8], _aN_=new MlString("''"), _aM_=new MlString("Printf: premature end of format string ``"), _aL_=new MlString("''"), _aK_=new MlString(" in format string ``"), _aJ_=new MlString(", at char number "), _aI_=new MlString("Printf: bad conversion %"), _aH_=new MlString("Sformat.index_of_int: negative argument "), _aG_=new MlString(""), _aF_=new MlString(", %s%s"), _aE_=[1,1], _aD_=new MlString("%s\n"), _aC_= new MlString ("(Program not linked with -g, cannot print stack backtrace)\n"), _aB_=new MlString("Raised at"), _aA_=new MlString("Re-raised at"), _az_=new MlString("Raised by primitive operation at"), _ay_=new MlString("Called from"), _ax_=new MlString("%s file \"%s\", line %d, characters %d-%d"), _aw_=new MlString("%s unknown location"), _av_=new MlString("Pattern matching failed"), _au_=new MlString("Assertion failed"), _at_=new MlString("Undefined recursive module"), _as_=new MlString("(%s%s)"), _ar_=new MlString(""), _aq_=new MlString(""), _ap_=new MlString("(%s)"), _ao_=new MlString("%d"), _an_=new MlString("%S"), _am_=new MlString("_"), _al_=new MlString("OCAMLRUNPARAM"), _ak_=new MlString("CAMLRUNPARAM"), _aj_=new MlString(""), _ai_=[0,new MlString("src/core/lwt.ml"),814,20], _ah_=[0,new MlString("src/core/lwt.ml"),816,8], _ag_=[0,new MlString("src/core/lwt.ml"),648,20], _af_=[0,new MlString("src/core/lwt.ml"),651,8], _ae_=[0,new MlString("src/core/lwt.ml"),498,8], _ad_=[0,new MlString("src/core/lwt.ml"),487,9], _ac_=new MlString("Lwt.wakeup_result"), _ab_=new MlString("Lwt.Canceled"), _aa_=new MlString("on"), _$_=new MlString("canvas"), ___=new MlString("img"), _Z_=new MlString("br"), _Y_=new MlString("p"), _X_=new MlString("div"), _W_=new MlString("label"), _V_=new MlString("input"), _U_=new MlString("select"), _T_=new MlString("option"), _S_=new MlString("\""), _R_=new MlString(" name=\""), _Q_=new MlString("\""), _P_=new MlString(" type=\""), _O_=new MlString("<"), _N_=new MlString(">"), _M_=new MlString(""), _L_=new MlString("mouseup"), _K_=new MlString("mousemove"), _J_=new MlString("2d"), _I_=new MlString("Dom_html.Canvas_not_available"), _H_=new MlString("lighter"), _G_=new MlString("copy"), _F_=new MlString("% 2.f"), _E_=new MlString(""), _D_=new MlString("controls"), _C_=new MlString("Click and drag mouse to rotate."), _B_=new MlString("Resume"), _A_=new MlString("Pause"), _z_=new MlString("Fixed position"), _y_=new MlString("Follow rotation"), _x_=new MlString("Reset orientation"), _w_=new MlString("Date:"), _v_= [0, new MlString("December solstice"), [0,new MlString("Equinox"),[0,new MlString("June solstice"),0]]], _u_=new MlString("Lighting"), _t_=new MlString("Clip"), _s_=new MlString("Frames per second: "), _r_= new MlString ("Credit: <a href='http://visibleearth.nasa.gov/'>Visual Earth</a>, Nasa"), _q_=[0,new MlString("planet.ml"),415,0], _p_=[0,new MlString("planet.ml"),416,0], _o_=[0,new MlString("planet.ml"),417,0], _n_=[0,new MlString("planet.ml"),418,0], _m_=new MlString("copy"), _l_=new MlString("checkbox"), _k_=new MlString("button"), v_j_=[254,0,0,1], _i_=new MlString("../planet/texture.jpg"); function _h_(s_f_){throw [0,_a_,s_f_];} function _bh_(s_g_){throw [0,_b_,s_g_];} function _bs_(s1_bi_,s2_bk_) {var l1_bj_=s1_bi_.getLen(), l2_bl_=s2_bk_.getLen(), s_bm_=caml_create_string(l1_bj_+l2_bl_|0); caml_blit_string(s1_bi_,0,s_bm_,0,l1_bj_); caml_blit_string(s2_bk_,0,s_bm_,l1_bj_,l2_bl_); return s_bm_;} function string_of_int_bx_(n_bn_){return caml_format_int(_ba_,n_bn_);} function string_of_float_by_(f_bo_) {var _bp_=caml_format_float(_bc_,f_bo_),i_bq_=0,l_br_=_bp_.getLen(); for(;;) {if(l_br_<=i_bq_) var _bt_=_bs_(_bp_,_bb_); else {var _bu_=_bp_.safeGet(i_bq_), _bv_=48<=_bu_?58<=_bu_?0:1:45===_bu_?1:0; if(_bv_){var _bw_=i_bq_+1|0,i_bq_=_bw_;continue;} var _bt_=_bp_;} return _bt_;}} var stderr_bz_=caml_ml_open_descriptor_out(2); function output_string_bH_(oc_bB_,s_bA_) {return caml_ml_output(oc_bB_,s_bA_,0,s_bA_.getLen());} function do_at_exit_bG_(param_bF_) {var param_bC_=caml_ml_out_channels_list(0); for(;;) {if(param_bC_) {var l_bD_=param_bC_[2]; try {}catch(_bE_){} var param_bC_=l_bD_; continue;} return 0;}} caml_register_named_value(_a9_,do_at_exit_bG_); function _bL_(_bJ_,_bI_){return caml_ml_output_char(_bJ_,_bI_);} function _bW_(_bK_){return caml_ml_flush(_bK_);} function _bV_(f_bO_,a_bM_) {var l_bN_=a_bM_.length-1; if(0===l_bN_)return [0]; var r_bQ_=caml_make_vect(l_bN_,_bP_(f_bO_,a_bM_[0+1])), _bR_=1, _bS_=l_bN_-1|0; if(!(_bS_<_bR_)) {var i_bT_=_bR_; for(;;) {r_bQ_[i_bT_+1]=_bP_(f_bO_,a_bM_[i_bT_+1]); var _bU_=i_bT_+1|0; if(_bS_!==i_bT_){var i_bT_=_bU_;continue;} break;}} return r_bQ_;} function _b9_(n_bX_,c_bZ_) {var s_bY_=caml_create_string(n_bX_); caml_fill_string(s_bY_,0,n_bX_,c_bZ_); return s_bY_;} function _b__(s_b2_,ofs_b0_,len_b1_) {if(0<=ofs_b0_&&0<=len_b1_&&!((s_b2_.getLen()-len_b1_|0)<ofs_b0_)) {var r_b3_=caml_create_string(len_b1_); caml_blit_string(s_b2_,ofs_b0_,r_b3_,0,len_b1_); return r_b3_;} return _bh_(_a0_);} function _b$_(s1_b6_,ofs1_b5_,s2_b8_,ofs2_b7_,len_b4_) {if (0<= len_b4_&& 0<= ofs1_b5_&& !((s1_b6_.getLen()-len_b4_|0)<ofs1_b5_)&& 0<= ofs2_b7_&& !((s2_b8_.getLen()-len_b4_|0)<ofs2_b7_)) return caml_blit_string(s1_b6_,ofs1_b5_,s2_b8_,ofs2_b7_,len_b4_); return _bh_(_a1_);} var _ca_=caml_sys_get_config(0)[2], _cb_=caml_mul(_ca_/8|0,(1<<(_ca_-10|0))-1|0)-1|0, _cw_=252, _cv_=253, _cu_=[0,_aZ_]; function _ct_(n_cc_) {var n_cd_=1<=n_cc_?n_cc_:1, n_ce_=_cb_<n_cd_?_cb_:n_cd_, s_cf_=caml_create_string(n_ce_); return [0,s_cf_,0,n_ce_,s_cf_];} function _cx_(b_cg_){return _b__(b_cg_[1],0,b_cg_[2]);} function _cn_(b_ch_,more_cj_) {var new_len_ci_=[0,b_ch_[3]]; for(;;) {if(new_len_ci_[1]<(b_ch_[2]+more_cj_|0)) {new_len_ci_[1]=2*new_len_ci_[1]|0;continue;} if(_cb_<new_len_ci_[1]) if((b_ch_[2]+more_cj_|0)<=_cb_)new_len_ci_[1]=_cb_;else _h_(_aY_); var new_buffer_ck_=caml_create_string(new_len_ci_[1]); _b$_(b_ch_[1],0,new_buffer_ck_,0,b_ch_[2]); b_ch_[1]=new_buffer_ck_; b_ch_[3]=new_len_ci_[1]; return 0;}} function _cy_(b_cl_,c_co_) {var pos_cm_=b_cl_[2]; if(b_cl_[3]<=pos_cm_)_cn_(b_cl_,1); b_cl_[1].safeSet(pos_cm_,c_co_); b_cl_[2]=pos_cm_+1|0; return 0;} function _cz_(b_cr_,s_cp_) {var len_cq_=s_cp_.getLen(),new_position_cs_=b_cr_[2]+len_cq_|0; if(b_cr_[3]<new_position_cs_)_cn_(b_cr_,len_cq_); _b$_(s_cp_,0,b_cr_[1],b_cr_[2],len_cq_); b_cr_[2]=new_position_cs_; return 0;} function index_of_int_cD_(i_cA_) {return 0<=i_cA_?i_cA_:_h_(_bs_(_aH_,string_of_int_bx_(i_cA_)));} function add_int_index_cE_(i_cB_,idx_cC_) {return index_of_int_cD_(i_cB_+idx_cC_|0);} var _cF_=_bP_(add_int_index_cE_,1); function _cM_(fmt_cG_){return _b__(fmt_cG_,0,fmt_cG_.getLen());} function bad_conversion_cO_(sfmt_cH_,i_cI_,c_cK_) {var _cJ_=_bs_(_aK_,_bs_(sfmt_cH_,_aL_)), _cL_=_bs_(_aJ_,_bs_(string_of_int_bx_(i_cI_),_cJ_)); return _bh_(_bs_(_aI_,_bs_(_b9_(1,c_cK_),_cL_)));} function bad_conversion_format_dH_(fmt_cN_,i_cQ_,c_cP_) {return bad_conversion_cO_(_cM_(fmt_cN_),i_cQ_,c_cP_);} function incomplete_format_dI_(fmt_cR_) {return _bh_(_bs_(_aM_,_bs_(_cM_(fmt_cR_),_aN_)));} function extract_format_dd_(fmt_cS_,start_c0_,stop_c2_,widths_c4_) {function skip_positional_spec_cZ_(start_cT_) {if ((fmt_cS_.safeGet(start_cT_)-48|0)< 0|| 9< (fmt_cS_.safeGet(start_cT_)-48|0)) return start_cT_; var i_cU_=start_cT_+1|0; for(;;) {var _cV_=fmt_cS_.safeGet(i_cU_); if(48<=_cV_) {if(!(58<=_cV_)){var _cX_=i_cU_+1|0,i_cU_=_cX_;continue;} var _cW_=0;} else if(36===_cV_){var _cY_=i_cU_+1|0,_cW_=1;}else var _cW_=0; if(!_cW_)var _cY_=start_cT_; return _cY_;}} var start_c1_=skip_positional_spec_cZ_(start_c0_+1|0), b_c3_=_ct_((stop_c2_-start_c1_|0)+10|0); _cy_(b_c3_,37); var l1_c5_=widths_c4_,l2_c6_=0; for(;;) {if(l1_c5_) {var l_c7_=l1_c5_[2], _c8_=[0,l1_c5_[1],l2_c6_], l1_c5_=l_c7_, l2_c6_=_c8_; continue;} var i_c9_=start_c1_,widths_c__=l2_c6_; for(;;) {if(i_c9_<=stop_c2_) {var _c$_=fmt_cS_.safeGet(i_c9_); if(42===_c$_) {if(widths_c__) {var t_da_=widths_c__[2]; _cz_(b_c3_,string_of_int_bx_(widths_c__[1])); var i_db_=skip_positional_spec_cZ_(i_c9_+1|0), i_c9_=i_db_, widths_c__=t_da_; continue;} throw [0,_d_,_aO_];} _cy_(b_c3_,_c$_); var _dc_=i_c9_+1|0,i_c9_=_dc_; continue;} return _cx_(b_c3_);}}} function extract_format_int_e7_ (conv_dj_,fmt_dh_,start_dg_,stop_df_,widths_de_) {var sfmt_di_=extract_format_dd_(fmt_dh_,start_dg_,stop_df_,widths_de_); if(78!==conv_dj_&&110!==conv_dj_)return sfmt_di_; sfmt_di_.safeSet(sfmt_di_.getLen()-1|0,117); return sfmt_di_;} function sub_format_dJ_ (incomplete_format_dq_,bad_conversion_format_dA_,conv_dF_,fmt_dk_,i_dE_) {var len_dl_=fmt_dk_.getLen(); function sub_fmt_dC_(c_dm_,i_dz_) {var close_dn_=40===c_dm_?41:125; function sub_dy_(j_do_) {var j_dp_=j_do_; for(;;) {if(len_dl_<=j_dp_)return _bP_(incomplete_format_dq_,fmt_dk_); if(37===fmt_dk_.safeGet(j_dp_)) {var _dr_=j_dp_+1|0; if(len_dl_<=_dr_) var _ds_=_bP_(incomplete_format_dq_,fmt_dk_); else {var _dt_=fmt_dk_.safeGet(_dr_),_du_=_dt_-40|0; if(_du_<0||1<_du_) {var _dv_=_du_-83|0; if(_dv_<0||2<_dv_) var _dw_=1; else switch(_dv_) {case 1:var _dw_=1;break; case 2:var _dx_=1,_dw_=0;break; default:var _dx_=0,_dw_=0;} if(_dw_){var _ds_=sub_dy_(_dr_+1|0),_dx_=2;}} else var _dx_=0===_du_?0:1; switch(_dx_) {case 1: var _ds_= _dt_===close_dn_ ?_dr_+1|0 :_dB_(bad_conversion_format_dA_,fmt_dk_,i_dz_,_dt_); break; case 2:break; default:var _ds_=sub_dy_(sub_fmt_dC_(_dt_,_dr_+1|0)+1|0);}} return _ds_;} var _dD_=j_dp_+1|0,j_dp_=_dD_; continue;}} return sub_dy_(i_dz_);} return sub_fmt_dC_(conv_dF_,i_dE_);} function sub_format_for_printf_d9_(conv_dG_) {return _dB_ (sub_format_dJ_, incomplete_format_dI_, bad_conversion_format_dH_, conv_dG_);} function iter_on_format_args_en_(fmt_dK_,add_conv_dV_,add_char_d5_) {var lim_dL_=fmt_dK_.getLen()-1|0; function scan_fmt_d7_(i_dM_) {var i_dN_=i_dM_; a: for(;;) {if(i_dN_<lim_dL_) {if(37===fmt_dK_.safeGet(i_dN_)) {var skip_dO_=0,i_dP_=i_dN_+1|0; for(;;) {if(lim_dL_<i_dP_) var _dQ_=incomplete_format_dI_(fmt_dK_); else {var _dR_=fmt_dK_.safeGet(i_dP_); if(58<=_dR_) {if(95===_dR_) {var _dT_=i_dP_+1|0,_dS_=1,skip_dO_=_dS_,i_dP_=_dT_; continue;}} else if(32<=_dR_) switch(_dR_-32|0) {case 1: case 2: case 4: case 5: case 6: case 7: case 8: case 9: case 12: case 15:break; case 0: case 3: case 11: case 13:var _dU_=i_dP_+1|0,i_dP_=_dU_;continue; case 10: var _dW_=_dB_(add_conv_dV_,skip_dO_,i_dP_,105),i_dP_=_dW_; continue; default:var _dX_=i_dP_+1|0,i_dP_=_dX_;continue;} var i_dY_=i_dP_; c: for(;;) {if(lim_dL_<i_dY_) var _dZ_=incomplete_format_dI_(fmt_dK_); else {var _d0_=fmt_dK_.safeGet(i_dY_); if(126<=_d0_) var _d1_=0; else switch(_d0_) {case 78: case 88: case 100: case 105: case 111: case 117: case 120: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,105),_d1_=1;break; case 69: case 70: case 71: case 101: case 102: case 103: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,102),_d1_=1;break; case 33: case 37: case 44: case 64:var _dZ_=i_dY_+1|0,_d1_=1;break; case 83: case 91: case 115: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,115),_d1_=1;break; case 97: case 114: case 116: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,_d0_),_d1_=1; break; case 76: case 108: case 110: var j_d2_=i_dY_+1|0; if(lim_dL_<j_d2_) {var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,105),_d1_=1;} else {var _d3_=fmt_dK_.safeGet(j_d2_)-88|0; if(_d3_<0||32<_d3_) var _d4_=1; else switch(_d3_) {case 0: case 12: case 17: case 23: case 29: case 32: var _dZ_= _d6_ (add_char_d5_,_dB_(add_conv_dV_,skip_dO_,i_dY_,_d0_),105), _d1_=1, _d4_=0; break; default:var _d4_=1;} if(_d4_) {var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,105),_d1_=1;}} break; case 67: case 99: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,99),_d1_=1;break; case 66: case 98: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,66),_d1_=1;break; case 41: case 125: var _dZ_=_dB_(add_conv_dV_,skip_dO_,i_dY_,_d0_),_d1_=1; break; case 40: var _dZ_=scan_fmt_d7_(_dB_(add_conv_dV_,skip_dO_,i_dY_,_d0_)), _d1_=1; break; case 123: var i_d8_=_dB_(add_conv_dV_,skip_dO_,i_dY_,_d0_), j_d__=_dB_(sub_format_for_printf_d9_,_d0_,fmt_dK_,i_d8_), i_d$_=i_d8_; for(;;) {if(i_d$_<(j_d__-2|0)) {var _ea_=_d6_(add_char_d5_,i_d$_,fmt_dK_.safeGet(i_d$_)), i_d$_=_ea_; continue;} var _eb_=j_d__-1|0,i_dY_=_eb_; continue c;} default:var _d1_=0;} if(!_d1_) var _dZ_=bad_conversion_format_dH_(fmt_dK_,i_dY_,_d0_);} var _dQ_=_dZ_; break;}} var i_dN_=_dQ_; continue a;}} var _ec_=i_dN_+1|0,i_dN_=_ec_; continue;} return i_dN_;}} scan_fmt_d7_(0); return 0;} function count_arguments_of_format_gk_(fmt_eo_) {var ac_ed_=[0,0,0,0]; function add_conv_em_(skip_ei_,i_ej_,c_ee_) {var _ef_=41!==c_ee_?1:0,_eg_=_ef_?125!==c_ee_?1:0:_ef_; if(_eg_) {var inc_eh_=97===c_ee_?2:1; if(114===c_ee_)ac_ed_[3]=ac_ed_[3]+1|0; if(skip_ei_) ac_ed_[2]=ac_ed_[2]+inc_eh_|0; else ac_ed_[1]=ac_ed_[1]+inc_eh_|0;} return i_ej_+1|0;} iter_on_format_args_en_ (fmt_eo_,add_conv_em_,function(i_ek_,param_el_){return i_ek_+1|0;}); return ac_ed_[1];} function scan_positional_spec_e3_(fmt_ep_,got_spec_es_,i_eq_) {var _er_=fmt_ep_.safeGet(i_eq_); if((_er_-48|0)<0||9<(_er_-48|0))return _d6_(got_spec_es_,0,i_eq_); var accu_et_=_er_-48|0,j_eu_=i_eq_+1|0; for(;;) {var _ev_=fmt_ep_.safeGet(j_eu_); if(48<=_ev_) {if(!(58<=_ev_)) {var _ey_=j_eu_+1|0, _ex_=(10*accu_et_|0)+(_ev_-48|0)|0, accu_et_=_ex_, j_eu_=_ey_; continue;} var _ew_=0;} else if(36===_ev_) if(0===accu_et_) {var _ez_=_h_(_aQ_),_ew_=1;} else {var _ez_= _d6_(got_spec_es_,[0,index_of_int_cD_(accu_et_-1|0)],j_eu_+1|0), _ew_=1;} else var _ew_=0; if(!_ew_)var _ez_=_d6_(got_spec_es_,0,i_eq_); return _ez_;}} function next_index_eY_(spec_eA_,n_eB_) {return spec_eA_?n_eB_:_bP_(_cF_,n_eB_);} function get_index_eN_(spec_eC_,n_eD_){return spec_eC_?spec_eC_[1]:n_eD_;} function _hG_ (to_s_gE_,get_out_eF_,outc_gQ_,outs_gF_,flush_gp_,k_gW_,fmt_eE_) {var out_eG_=_bP_(get_out_eF_,fmt_eE_); function pr_go_(k_eL_,n_gV_,fmt_eH_,v_eQ_) {var len_eK_=fmt_eH_.getLen(); function doprn_gl_(n_gN_,i_eI_) {var i_eJ_=i_eI_; for(;;) {if(len_eK_<=i_eJ_)return _bP_(k_eL_,out_eG_); var _eM_=fmt_eH_.safeGet(i_eJ_); if(37===_eM_) {var get_arg_eU_= function(spec_eP_,n_eO_) {return caml_array_get(v_eQ_,get_index_eN_(spec_eP_,n_eO_));}, scan_flags_e0_= function(spec_e2_,n_eV_,widths_eX_,i_eR_) {var i_eS_=i_eR_; for(;;) {var _eT_=fmt_eH_.safeGet(i_eS_)-32|0; if(!(_eT_<0||25<_eT_)) switch(_eT_) {case 1: case 2: case 4: case 5: case 6: case 7: case 8: case 9: case 12: case 15:break; case 10: return scan_positional_spec_e3_ (fmt_eH_, function(wspec_eW_,i_e1_) {var _eZ_=[0,get_arg_eU_(wspec_eW_,n_eV_),widths_eX_]; return scan_flags_e0_ (spec_e2_,next_index_eY_(wspec_eW_,n_eV_),_eZ_,i_e1_);}, i_eS_+1|0); default:var _e4_=i_eS_+1|0,i_eS_=_e4_;continue;} var _e5_=fmt_eH_.safeGet(i_eS_); if(124<=_e5_) var _e6_=0; else switch(_e5_) {case 78: case 88: case 100: case 105: case 111: case 117: case 120: var x_e8_=get_arg_eU_(spec_e2_,n_eV_), s_e9_= caml_format_int (extract_format_int_e7_(_e5_,fmt_eH_,i_eJ_,i_eS_,widths_eX_), x_e8_), _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_e9_,i_eS_+1|0), _e6_=1; break; case 69: case 71: case 101: case 102: case 103: var x_fa_=get_arg_eU_(spec_e2_,n_eV_), s_fb_= caml_format_float (extract_format_dd_(fmt_eH_,i_eJ_,i_eS_,widths_eX_),x_fa_), _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_fb_,i_eS_+1|0), _e6_=1; break; case 76: case 108: case 110: var _fc_=fmt_eH_.safeGet(i_eS_+1|0)-88|0; if(_fc_<0||32<_fc_) var _fd_=1; else switch(_fc_) {case 0: case 12: case 17: case 23: case 29: case 32: var i_fe_=i_eS_+1|0,_ff_=_e5_-108|0; if(_ff_<0||2<_ff_) var _fg_=0; else {switch(_ff_) {case 1:var _fg_=0,_fh_=0;break; case 2: var x_fi_=get_arg_eU_(spec_e2_,n_eV_), _fj_= caml_format_int (extract_format_dd_(fmt_eH_,i_eJ_,i_fe_,widths_eX_),x_fi_), _fh_=1; break; default: var x_fk_=get_arg_eU_(spec_e2_,n_eV_), _fj_= caml_format_int (extract_format_dd_(fmt_eH_,i_eJ_,i_fe_,widths_eX_),x_fk_), _fh_=1;} if(_fh_){var s_fl_=_fj_,_fg_=1;}} if(!_fg_) {var x_fm_=get_arg_eU_(spec_e2_,n_eV_), s_fl_= caml_int64_format (extract_format_dd_(fmt_eH_,i_eJ_,i_fe_,widths_eX_),x_fm_);} var _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_fl_,i_fe_+1|0), _e6_=1, _fd_=0; break; default:var _fd_=1;} if(_fd_) {var x_fn_=get_arg_eU_(spec_e2_,n_eV_), s_fo_= caml_format_int (extract_format_int_e7_(110,fmt_eH_,i_eJ_,i_eS_,widths_eX_), x_fn_), _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_fo_,i_eS_+1|0), _e6_=1;} break; case 37: case 64: var _e$_=cont_s_e__(n_eV_,_b9_(1,_e5_),i_eS_+1|0),_e6_=1; break; case 83: case 115: var x_fp_=get_arg_eU_(spec_e2_,n_eV_); if(115===_e5_) var x_fq_=x_fp_; else {var n_fr_=[0,0],_fs_=0,_ft_=x_fp_.getLen()-1|0; if(!(_ft_<_fs_)) {var i_fu_=_fs_; for(;;) {var _fv_=x_fp_.safeGet(i_fu_), _fw_= 14<=_fv_ ?34===_fv_?1:92===_fv_?1:0 :11<=_fv_?13<=_fv_?1:0:8<=_fv_?1:0, _fx_=_fw_?2:caml_is_printable(_fv_)?1:4; n_fr_[1]=n_fr_[1]+_fx_|0; var _fy_=i_fu_+1|0; if(_ft_!==i_fu_){var i_fu_=_fy_;continue;} break;}} if(n_fr_[1]===x_fp_.getLen()) var _fz_=x_fp_; else {var s__fA_=caml_create_string(n_fr_[1]); n_fr_[1]=0; var _fB_=0,_fC_=x_fp_.getLen()-1|0; if(!(_fC_<_fB_)) {var i_fD_=_fB_; for(;;) {var _fE_=x_fp_.safeGet(i_fD_),_fF_=_fE_-34|0; if(_fF_<0||58<_fF_) if(-20<=_fF_) var _fG_=1; else {switch(_fF_+34|0) {case 8: s__fA_.safeSet(n_fr_[1],92); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],98); var _fH_=1; break; case 9: s__fA_.safeSet(n_fr_[1],92); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],116); var _fH_=1; break; case 10: s__fA_.safeSet(n_fr_[1],92); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],110); var _fH_=1; break; case 13: s__fA_.safeSet(n_fr_[1],92); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],114); var _fH_=1; break; default:var _fG_=1,_fH_=0;} if(_fH_)var _fG_=0;} else var _fG_= (_fF_-1|0)<0||56<(_fF_-1|0) ?(s__fA_.safeSet(n_fr_[1],92), n_fr_[1]+= 1, s__fA_.safeSet(n_fr_[1],_fE_), 0) :1; if(_fG_) if(caml_is_printable(_fE_)) s__fA_.safeSet(n_fr_[1],_fE_); else {s__fA_.safeSet(n_fr_[1],92); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],48+(_fE_/100|0)|0); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],48+((_fE_/10|0)%10|0)|0); n_fr_[1]+=1; s__fA_.safeSet(n_fr_[1],48+(_fE_%10|0)|0);} n_fr_[1]+=1; var _fI_=i_fD_+1|0; if(_fC_!==i_fD_){var i_fD_=_fI_;continue;} break;}} var _fz_=s__fA_;} var x_fq_=_bs_(_aU_,_bs_(_fz_,_aV_));} if(i_eS_===(i_eJ_+1|0)) var s_fJ_=x_fq_; else {var _fK_= extract_format_dd_(fmt_eH_,i_eJ_,i_eS_,widths_eX_); try {var neg_fL_=0,i_fM_=1; for(;;) {if(_fK_.getLen()<=i_fM_) var _fN_=[0,0,neg_fL_]; else {var _fO_=_fK_.safeGet(i_fM_); if(49<=_fO_) if(58<=_fO_) var _fP_=0; else {var _fN_= [0, caml_int_of_string (_b__(_fK_,i_fM_,(_fK_.getLen()-i_fM_|0)-1|0)), neg_fL_], _fP_=1;} else {if(45===_fO_) {var _fR_=i_fM_+1|0,_fQ_=1,neg_fL_=_fQ_,i_fM_=_fR_; continue;} var _fP_=0;} if(!_fP_){var _fS_=i_fM_+1|0,i_fM_=_fS_;continue;}} var match_fT_=_fN_; break;}} catch(_fU_) {if(_fU_[1]!==_a_)throw _fU_; var match_fT_=bad_conversion_cO_(_fK_,0,115);} var p_fV_=match_fT_[1], _fW_=x_fq_.getLen(), _fX_=0, neg_f1_=match_fT_[2], _f0_=32; if(p_fV_===_fW_&&0===_fX_) {var _fY_=x_fq_,_fZ_=1;} else var _fZ_=0; if(!_fZ_) if(p_fV_<=_fW_) var _fY_=_b__(x_fq_,_fX_,_fW_); else {var res_f2_=_b9_(p_fV_,_f0_); if(neg_f1_) _b$_(x_fq_,_fX_,res_f2_,0,_fW_); else _b$_(x_fq_,_fX_,res_f2_,p_fV_-_fW_|0,_fW_); var _fY_=res_f2_;} var s_fJ_=_fY_;} var _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_fJ_,i_eS_+1|0), _e6_=1; break; case 67: case 99: var x_f3_=get_arg_eU_(spec_e2_,n_eV_); if(99===_e5_) var s_f4_=_b9_(1,x_f3_); else {if(39===x_f3_) var _f5_=_a3_; else if(92===x_f3_) var _f5_=_a4_; else {if(14<=x_f3_) var _f6_=0; else switch(x_f3_) {case 8:var _f5_=_a8_,_f6_=1;break; case 9:var _f5_=_a7_,_f6_=1;break; case 10:var _f5_=_a6_,_f6_=1;break; case 13:var _f5_=_a5_,_f6_=1;break; default:var _f6_=0;} if(!_f6_) if(caml_is_printable(x_f3_)) {var s_f7_=caml_create_string(1); s_f7_.safeSet(0,x_f3_); var _f5_=s_f7_;} else {var s_f8_=caml_create_string(4); s_f8_.safeSet(0,92); s_f8_.safeSet(1,48+(x_f3_/100|0)|0); s_f8_.safeSet(2,48+((x_f3_/10|0)%10|0)|0); s_f8_.safeSet(3,48+(x_f3_%10|0)|0); var _f5_=s_f8_;}} var s_f4_=_bs_(_aS_,_bs_(_f5_,_aT_));} var _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_f4_,i_eS_+1|0), _e6_=1; break; case 66: case 98: var _f__=i_eS_+1|0, _f9_=get_arg_eU_(spec_e2_,n_eV_)?_a$_:_a__, _e$_=cont_s_e__(next_index_eY_(spec_e2_,n_eV_),_f9_,_f__), _e6_=1; break; case 40: case 123: var xf_f$_=get_arg_eU_(spec_e2_,n_eV_), j_ga_=_dB_(sub_format_for_printf_d9_,_e5_,fmt_eH_,i_eS_+1|0); if(123===_e5_) {var b_gb_=_ct_(xf_f$_.getLen()), add_char_gf_= function(i_gd_,c_gc_){_cy_(b_gb_,c_gc_);return i_gd_+1|0;}; iter_on_format_args_en_ (xf_f$_, function(skip_ge_,i_gh_,c_gg_) {if(skip_ge_)_cz_(b_gb_,_aP_);else _cy_(b_gb_,37); return add_char_gf_(i_gh_,c_gg_);}, add_char_gf_); var _gi_=_cx_(b_gb_), _e$_=cont_s_e__(next_index_eY_(spec_e2_,n_eV_),_gi_,j_ga_), _e6_=1;} else {var _gj_=next_index_eY_(spec_e2_,n_eV_), m_gm_= add_int_index_cE_ (count_arguments_of_format_gk_(xf_f$_),_gj_), _e$_= pr_go_ (function(param_gn_){return doprn_gl_(m_gm_,j_ga_);}, _gj_, xf_f$_, v_eQ_), _e6_=1;} break; case 33: _bP_(flush_gp_,out_eG_); var _e$_=doprn_gl_(n_eV_,i_eS_+1|0),_e6_=1; break; case 41: var _e$_=cont_s_e__(n_eV_,_aX_,i_eS_+1|0),_e6_=1;break; case 44: var _e$_=cont_s_e__(n_eV_,_aW_,i_eS_+1|0),_e6_=1;break; case 70: var x_gq_=get_arg_eU_(spec_e2_,n_eV_); if(0===widths_eX_) var s_gr_=string_of_float_by_(x_gq_); else {var sfmt_gs_= extract_format_dd_(fmt_eH_,i_eJ_,i_eS_,widths_eX_); if(70===_e5_)sfmt_gs_.safeSet(sfmt_gs_.getLen()-1|0,103); var s_gt_=caml_format_float(sfmt_gs_,x_gq_); if(3<=caml_classify_float(x_gq_)) var _gu_=s_gt_; else {var i_gv_=0,l_gw_=s_gt_.getLen(); for(;;) {if(l_gw_<=i_gv_) var _gx_=_bs_(s_gt_,_aR_); else {var _gy_=s_gt_.safeGet(i_gv_)-46|0, _gz_= _gy_<0||23<_gy_ ?55===_gy_?1:0 :(_gy_-1|0)<0||21<(_gy_-1|0)?1:0; if(!_gz_){var _gA_=i_gv_+1|0,i_gv_=_gA_;continue;} var _gx_=s_gt_;} var _gu_=_gx_; break;}} var s_gr_=_gu_;} var _e$_= cont_s_e__(next_index_eY_(spec_e2_,n_eV_),s_gr_,i_eS_+1|0), _e6_=1; break; case 91: var _e$_=bad_conversion_format_dH_(fmt_eH_,i_eS_,_e5_), _e6_=1; break; case 97: var printer_gB_=get_arg_eU_(spec_e2_,n_eV_), n_gC_=_bP_(_cF_,get_index_eN_(spec_e2_,n_eV_)), arg_gD_=get_arg_eU_(0,n_gC_), _gH_=i_eS_+1|0, _gG_=next_index_eY_(spec_e2_,n_gC_); if(to_s_gE_) _d6_(outs_gF_,out_eG_,_d6_(printer_gB_,0,arg_gD_)); else _d6_(printer_gB_,out_eG_,arg_gD_); var _e$_=doprn_gl_(_gG_,_gH_),_e6_=1; break; case 114: var _e$_=bad_conversion_format_dH_(fmt_eH_,i_eS_,_e5_), _e6_=1; break; case 116: var printer_gI_=get_arg_eU_(spec_e2_,n_eV_), _gK_=i_eS_+1|0, _gJ_=next_index_eY_(spec_e2_,n_eV_); if(to_s_gE_) _d6_(outs_gF_,out_eG_,_bP_(printer_gI_,0)); else _bP_(printer_gI_,out_eG_); var _e$_=doprn_gl_(_gJ_,_gK_),_e6_=1; break; default:var _e6_=0;} if(!_e6_) var _e$_=bad_conversion_format_dH_(fmt_eH_,i_eS_,_e5_); return _e$_;}}, _gP_=i_eJ_+1|0, _gM_=0; return scan_positional_spec_e3_ (fmt_eH_, function(spec_gO_,i_gL_) {return scan_flags_e0_(spec_gO_,n_gN_,_gM_,i_gL_);}, _gP_);} _d6_(outc_gQ_,out_eG_,_eM_); var _gR_=i_eJ_+1|0,i_eJ_=_gR_; continue;}} function cont_s_e__(n_gU_,s_gS_,i_gT_) {_d6_(outs_gF_,out_eG_,s_gS_);return doprn_gl_(n_gU_,i_gT_);} return doprn_gl_(n_gV_,0);} var kpr_gX_=_d6_(pr_go_,k_gW_,index_of_int_cD_(0)), _gY_=count_arguments_of_format_gk_(fmt_eE_); if(_gY_<0||6<_gY_) {var loop_g$_= function(i_gZ_,args_g5_) {if(_gY_<=i_gZ_) {var a_g0_=caml_make_vect(_gY_,0), _g3_= function(i_g1_,arg_g2_) {return caml_array_set(a_g0_,(_gY_-i_g1_|0)-1|0,arg_g2_);}, i_g4_=0, param_g6_=args_g5_; for(;;) {if(param_g6_) {var _g7_=param_g6_[2],_g8_=param_g6_[1]; if(_g7_) {_g3_(i_g4_,_g8_); var _g9_=i_g4_+1|0,i_g4_=_g9_,param_g6_=_g7_; continue;} _g3_(i_g4_,_g8_);} return _d6_(kpr_gX_,fmt_eE_,a_g0_);}} return function(x_g__) {return loop_g$_(i_gZ_+1|0,[0,x_g__,args_g5_]);};}, _ha_=loop_g$_(0,0);} else switch(_gY_) {case 1: var _ha_= function(x_hc_) {var a_hb_=caml_make_vect(1,0); caml_array_set(a_hb_,0,x_hc_); return _d6_(kpr_gX_,fmt_eE_,a_hb_);}; break; case 2: var _ha_= function(x_he_,y_hf_) {var a_hd_=caml_make_vect(2,0); caml_array_set(a_hd_,0,x_he_); caml_array_set(a_hd_,1,y_hf_); return _d6_(kpr_gX_,fmt_eE_,a_hd_);}; break; case 3: var _ha_= function(x_hh_,y_hi_,z_hj_) {var a_hg_=caml_make_vect(3,0); caml_array_set(a_hg_,0,x_hh_); caml_array_set(a_hg_,1,y_hi_); caml_array_set(a_hg_,2,z_hj_); return _d6_(kpr_gX_,fmt_eE_,a_hg_);}; break; case 4: var _ha_= function(x_hl_,y_hm_,z_hn_,t_ho_) {var a_hk_=caml_make_vect(4,0); caml_array_set(a_hk_,0,x_hl_); caml_array_set(a_hk_,1,y_hm_); caml_array_set(a_hk_,2,z_hn_); caml_array_set(a_hk_,3,t_ho_); return _d6_(kpr_gX_,fmt_eE_,a_hk_);}; break; case 5: var _ha_= function(x_hq_,y_hr_,z_hs_,t_ht_,u_hu_) {var a_hp_=caml_make_vect(5,0); caml_array_set(a_hp_,0,x_hq_); caml_array_set(a_hp_,1,y_hr_); caml_array_set(a_hp_,2,z_hs_); caml_array_set(a_hp_,3,t_ht_); caml_array_set(a_hp_,4,u_hu_); return _d6_(kpr_gX_,fmt_eE_,a_hp_);}; break; case 6: var _ha_= function(x_hw_,y_hx_,z_hy_,t_hz_,u_hA_,v_hB_) {var a_hv_=caml_make_vect(6,0); caml_array_set(a_hv_,0,x_hw_); caml_array_set(a_hv_,1,y_hx_); caml_array_set(a_hv_,2,z_hy_); caml_array_set(a_hv_,3,t_hz_); caml_array_set(a_hv_,4,u_hA_); caml_array_set(a_hv_,5,v_hB_); return _d6_(kpr_gX_,fmt_eE_,a_hv_);}; break; default:var _ha_=_d6_(kpr_gX_,fmt_eE_,[0]);} return _ha_;} function _hU_(oc_hD_) {function _hF_(_hC_){return 0;} return _hH_ (_hG_, 0, function(param_hE_){return oc_hD_;}, _bL_, output_string_bH_, _bW_, _hF_);} function _hQ_(fmt_hI_){return _ct_(2*fmt_hI_.getLen()|0);} function _hN_(k_hL_,b_hJ_) {var s_hK_=_cx_(b_hJ_);b_hJ_[2]=0;return _bP_(k_hL_,s_hK_);} function _hT_(k_hM_) {var _hP_=_bP_(_hN_,k_hM_); return _hH_(_hG_,1,_hQ_,_cy_,_cz_,function(_hO_){return 0;},_hP_);} function _hV_(fmt_hS_) {return _d6_(_hT_,function(s_hR_){return s_hR_;},fmt_hS_);} var _hW_=[0,0]; function _h3_(x_hX_,i_hY_) {var f_hZ_=x_hX_[i_hY_+1]; return caml_obj_is_block(f_hZ_) ?caml_obj_tag(f_hZ_)===_cw_ ?_d6_(_hV_,_an_,f_hZ_) :caml_obj_tag(f_hZ_)===_cv_?string_of_float_by_(f_hZ_):_am_ :_d6_(_hV_,_ao_,f_hZ_);} function _h2_(x_h0_,i_h1_) {if(x_h0_.length-1<=i_h1_)return _aG_; var _h4_=_h2_(x_h0_,i_h1_+1|0); return _dB_(_hV_,_aF_,_h3_(x_h0_,i_h1_),_h4_);} 32===_ca_; try {var _h5_=caml_sys_getenv(_al_),params_h6_=_h5_;} catch(_h7_) {if(_h7_[1]!==_c_)throw _h7_; try {var _h8_=caml_sys_getenv(_ak_),_h9_=_h8_;} catch(_h__){if(_h__[1]!==_c_)throw _h__;var _h9_=_aj_;} var params_h6_=_h9_;} var _h$_=0,l_ia_=params_h6_.getLen(),_id_=82; if(0<=_h$_&&!(l_ia_<_h$_)) try {var i_ic_=_h$_; for(;;) {if(l_ia_<=i_ic_)throw [0,_c_]; if(params_h6_.safeGet(i_ic_)!==_id_) {var _ie_=i_ic_+1|0,i_ic_=_ie_;continue;} var _ib_=1; break;}} catch(_if_){if(_if_[1]!==_c_)throw _if_;var _ib_=1;} else var _ib_=0; if(!_ib_)_bh_(_a2_); function _ii_(param_ih_) {var seq_ig_=[]; caml_update_dummy(seq_ig_,[0,seq_ig_,seq_ig_]); return seq_ig_;} var Canceled_ij_=[0,_ab_],current_data_ik_=[0,0],max_removed_jm_=42; function repr_rec_io_(t_il_) {var _im_=t_il_[1]; {if(3===_im_[0]) {var t__in_=_im_[1],t___ip_=repr_rec_io_(t__in_); if(t___ip_!==t__in_)t_il_[1]=[3,t___ip_]; return t___ip_;} return t_il_;}} function repr_jn_(t_iq_){return repr_rec_io_(t_iq_);} function _iV_(exn_is_) {var param_ir_=_hW_[1]; for(;;) {if(param_ir_) {var tl_iw_=param_ir_[2],hd_it_=param_ir_[1]; try {var _iu_=_bP_(hd_it_,exn_is_),_iv_=_iu_;} catch(_ix_){var _iv_=0;} if(!_iv_){var param_ir_=tl_iw_;continue;}} else if(exn_is_[1]!==_bg_&&exn_is_[1]!==_be_) if(exn_is_[1]===_bf_) {var match_iy_=exn_is_[2],char_iz_=match_iy_[3]; _hH_ (_hV_,_e_,match_iy_[1],match_iy_[2],char_iz_,char_iz_+5|0,_av_);} else if(exn_is_[1]===_d_) {var match_iA_=exn_is_[2],char_iB_=match_iA_[3]; _hH_ (_hV_,_e_,match_iA_[1],match_iA_[2],char_iB_,char_iB_+6|0,_au_);} else if(exn_is_[1]===_bd_) {var match_iC_=exn_is_[2],char_iD_=match_iC_[3]; _hH_ (_hV_,_e_,match_iC_[1],match_iC_[2],char_iD_,char_iD_+6|0,_at_);} else {var _iE_=exn_is_.length-1,constructor_iH_=exn_is_[0+1][0+1]; if(_iE_<0||2<_iE_) {var _iF_=_h2_(exn_is_,2), _iG_=_dB_(_hV_,_as_,_h3_(exn_is_,1),_iF_);} else switch(_iE_) {case 1:var _iG_=_aq_;break; case 2:var _iG_=_d6_(_hV_,_ap_,_h3_(exn_is_,1));break; default:var _iG_=_ar_;} _bs_(constructor_iH_,_iG_);} caml_ml_output_char(stderr_bz_,10); var _iI_=caml_get_exception_backtrace(0); if(_iI_) {var a_iJ_=_iI_[1],_iK_=0,_iL_=a_iJ_.length-1-1|0; if(!(_iL_<_iK_)) {var i_iM_=_iK_; for(;;) {if(caml_notequal(caml_array_get(a_iJ_,i_iM_),_aE_)) {var _iN_=caml_array_get(a_iJ_,i_iM_), is_raise_iO_=0===_iN_[0]?_iN_[1]:_iN_[1], info_iP_=is_raise_iO_?0===i_iM_?_aB_:_aA_:0===i_iM_?_az_:_ay_, _iQ_= 0===_iN_[0] ?_hH_(_hV_,_ax_,info_iP_,_iN_[2],_iN_[3],_iN_[4],_iN_[5]) :_d6_(_hV_,_aw_,info_iP_); _dB_(_hU_,stderr_bz_,_aD_,_iQ_);} var _iR_=i_iM_+1|0; if(_iL_!==i_iM_){var i_iM_=_iR_;continue;} break;}}} else _d6_(_hU_,stderr_bz_,_aC_); do_at_exit_bG_(0); return caml_sys_exit(2);}} function call_unsafe_jg_(f_iT_,x_iS_) {try {var _iU_=_bP_(f_iT_,x_iS_);}catch(_iW_){return _iV_(_iW_);} return _iU_;} function run_waiters_rec_i7_(state_i1_,ws_iX_,rem_iZ_) {var ws_iY_=ws_iX_,rem_i0_=rem_iZ_; for(;;) if(typeof ws_iY_==="number") return run_waiters_rec_next_i2_(state_i1_,rem_i0_); else switch(ws_iY_[0]) {case 1: _bP_(ws_iY_[1],state_i1_); return run_waiters_rec_next_i2_(state_i1_,rem_i0_); case 2: var ws1_i3_=ws_iY_[1], _i4_=[0,ws_iY_[2],rem_i0_], ws_iY_=ws1_i3_, rem_i0_=_i4_; continue; default: var _i5_=ws_iY_[1][1]; return _i5_ ?(_bP_(_i5_[1],state_i1_), run_waiters_rec_next_i2_(state_i1_,rem_i0_)) :run_waiters_rec_next_i2_(state_i1_,rem_i0_);}} function run_waiters_rec_next_i2_(state_i8_,rem_i6_) {return rem_i6_?run_waiters_rec_i7_(state_i8_,rem_i6_[1],rem_i6_[2]):0;} function run_cancel_handlers_rec_ji_(chs_i9_,rem_i$_) {var chs_i__=chs_i9_,rem_ja_=rem_i$_; for(;;) if(typeof chs_i__==="number") return run_cancel_handlers_rec_next_jc_(rem_ja_); else switch(chs_i__[0]) {case 1: var n_jb_=chs_i__[1]; if(n_jb_[4]){n_jb_[4]=0;n_jb_[1][2]=n_jb_[2];n_jb_[2][1]=n_jb_[1];} return run_cancel_handlers_rec_next_jc_(rem_ja_); case 2: var chs1_jd_=chs_i__[1], _je_=[0,chs_i__[2],rem_ja_], chs_i__=chs1_jd_, rem_ja_=_je_; continue; default: var f_jf_=chs_i__[2]; current_data_ik_[1]=chs_i__[1]; call_unsafe_jg_(f_jf_,0); return run_cancel_handlers_rec_next_jc_(rem_ja_);}} function run_cancel_handlers_rec_next_jc_(rem_jh_) {return rem_jh_?run_cancel_handlers_rec_ji_(rem_jh_[1],rem_jh_[2]):0;} function unsafe_run_waiters_jo_(sleeper_jk_,state_jj_) {var _jl_= 1===state_jj_[0] ?state_jj_[1][1]===Canceled_ij_ ?(run_cancel_handlers_rec_ji_(sleeper_jk_[4],0),1) :0 :0; _jl_; return run_waiters_rec_i7_(state_jj_,sleeper_jk_[2],0);} var wakening_jp_=[0,0],_jq_=[0,0,0]; function wakeup_kk_(t_jt_,v_jr_) {var _js_=[0,v_jr_],t_ju_=repr_rec_io_(t_jt_),_jv_=t_ju_[1]; switch(_jv_[0]) {case 1: if(_jv_[1][1]===Canceled_ij_){var _jw_=0,_jx_=1;}else var _jx_=0; break; case 2: var sleeper_jy_=_jv_[1]; t_ju_[1]=_js_; var snapshot_jz_=current_data_ik_[1], already_wakening_jA_=wakening_jp_[1]?1:(wakening_jp_[1]=1,0); unsafe_run_waiters_jo_(sleeper_jy_,_js_); if(already_wakening_jA_) {current_data_ik_[1]=snapshot_jz_;var _jB_=0;} else for(;;) {if(0!==_jq_[1]) {if(0===_jq_[1])throw [0,_cu_]; _jq_[1]=_jq_[1]-1|0; var tail_jC_=_jq_[2],head_jD_=tail_jC_[2]; if(head_jD_===tail_jC_)_jq_[2]=0;else tail_jC_[2]=head_jD_[2]; var _jE_=head_jD_[1]; unsafe_run_waiters_jo_(_jE_[1],_jE_[2]); continue;} wakening_jp_[1]=0; current_data_ik_[1]=snapshot_jz_; var _jB_=0; break;} var _jw_=_jB_,_jx_=1; break; default:var _jx_=0;} if(!_jx_)var _jw_=_bh_(_ac_); return _jw_;} function append_jL_(l1_jF_,l2_jG_) {return typeof l1_jF_==="number" ?l2_jG_ :typeof l2_jG_==="number"?l1_jF_:[2,l1_jF_,l2_jG_];} function cleanup_jI_(ws_jH_) {if(typeof ws_jH_!=="number") switch(ws_jH_[0]) {case 2: var l1_jJ_=ws_jH_[1],_jK_=cleanup_jI_(ws_jH_[2]); return append_jL_(cleanup_jI_(l1_jJ_),_jK_); case 1:break; default:if(!ws_jH_[1][1])return 0;} return ws_jH_;} function task_kl_(param_jN_) {var _jM_=[0,[2,[0,1,0,0,0]]];return [0,_jM_,_jM_];} function add_immutable_waiter_ki_(sleeper_jQ_,waiter_jO_) {var _jP_=[1,waiter_jO_], _jR_=sleeper_jQ_[2], _jS_=typeof _jR_==="number"?_jP_:[2,_jP_,_jR_]; sleeper_jQ_[2]=_jS_; return 0;} function bind_km_(t_jT_,f_j0_) {var t_jU_=repr_jn_(t_jT_),_jV_=t_jU_[1]; switch(_jV_[0]) {case 1:return [0,_jV_]; case 2: var _jW_=[0,[2,[0,[0,[0,t_jU_]],0,0,0]]], sleeper_kh_=_jV_[1], data_jY_=current_data_ik_[1]; add_immutable_waiter_ki_ (sleeper_kh_, function(state_jX_) {switch(state_jX_[0]) {case 0: var v_jZ_=state_jX_[1]; current_data_ik_[1]=data_jY_; try {var _j1_=_bP_(f_j0_,v_jZ_),_j2_=_j1_;} catch(_j3_){var _j2_=[0,[1,_j3_]];} var t1_j4_=repr_jn_(_jW_), t2_j5_=repr_jn_(_j2_), _j6_=t1_j4_[1]; {if(2===_j6_[0]) {var sleeper1_j7_=_j6_[1]; if(t1_j4_===t2_j5_) var _j8_=0; else {var _j9_=t2_j5_[1]; if(2===_j9_[0]) {var sleeper2_j__=_j9_[1]; t2_j5_[1]=[3,t1_j4_]; sleeper1_j7_[1]=sleeper2_j__[1]; var waiters_j$_=append_jL_(sleeper1_j7_[2],sleeper2_j__[2]), removed_ka_=sleeper1_j7_[3]+sleeper2_j__[3]|0; if(max_removed_jm_<removed_ka_) {sleeper1_j7_[3]=0; sleeper1_j7_[2]=cleanup_jI_(waiters_j$_);} else {sleeper1_j7_[3]=removed_ka_;sleeper1_j7_[2]=waiters_j$_;} var _kb_=sleeper2_j__[4], _kc_=sleeper1_j7_[4], _kd_= typeof _kc_==="number" ?_kb_ :typeof _kb_==="number"?_kc_:[2,_kc_,_kb_]; sleeper1_j7_[4]=_kd_; var _j8_=0;} else {t1_j4_[1]=_j9_; var _j8_=unsafe_run_waiters_jo_(sleeper1_j7_,_j9_);}} return _j8_;} throw [0,_d_,_ad_];} case 1: var t_ke_=repr_jn_(_jW_),_kf_=t_ke_[1]; {if(2===_kf_[0]) {var sleeper_kg_=_kf_[1]; t_ke_[1]=state_jX_; return unsafe_run_waiters_jo_(sleeper_kg_,state_jX_);} throw [0,_d_,_ae_];} default:throw [0,_d_,_ag_];}}); return _jW_; case 3:throw [0,_d_,_af_]; default:return _bP_(f_j0_,_jV_[1]);}} var pause_hook_ko_=[0,function(_kj_){return 0;}], _kn_=_ii_(0), _kr_=[0,0], null_kw_=null, undefined_kx_=undefined, _true_ky_=true, _false_kz_=false, array_constructor_kA_=Array, date_constr_kB_=Date; function _kD_(param_kv_) {var _kp_=1-(_kn_[2]===_kn_?1:0); if(_kp_) {var tmp_kq_=_ii_(0); tmp_kq_[1][2]=_kn_[2]; _kn_[2][1]=tmp_kq_[1]; tmp_kq_[1]=_kn_[1]; _kn_[1][2]=tmp_kq_; _kn_[1]=_kn_; _kn_[2]=_kn_; _kr_[1]=0; var curr_ks_=tmp_kq_[2]; for(;;) {var _kt_=curr_ks_!==tmp_kq_?1:0; if(_kt_) {if(curr_ks_[4])wakeup_kk_(curr_ks_[3],0); var _ku_=curr_ks_[2],curr_ks_=_ku_; continue;} return _kt_;}} return _kp_;} function _kE_(e_kC_) {return e_kC_ instanceof array_constructor_kA_ ?0 :[0,new MlWrappedString(e_kC_.toString())];} _hW_[1]=[0,_kE_,_hW_[1]]; function _kG_(_kF_){return _kF_;} function appendChild_k3_(p_kH_,n_kI_){p_kH_.appendChild(n_kI_);return 0;} function handler_k4_(f_kK_) {return _kG_ (caml_js_wrap_callback (function(e_kJ_) {if(e_kJ_) {var res_kL_=_bP_(f_kK_,e_kJ_); if(!(res_kL_|0))e_kJ_.preventDefault(); return res_kL_;} var _kM_=event,res_kN_=_bP_(f_kK_,_kM_); _kM_.returnValue=res_kN_; return res_kN_;}));} function _k5_(s_kO_){return s_kO_.toString();} function _k6_(e_kP_,typ_kQ_,h_kT_,capt_k0_) {if(e_kP_.addEventListener===undefined_kx_) {var ev_kR_=_aa_.toString().concat(typ_kQ_), callback_kY_= function(e_kS_) {var _kX_=[0,h_kT_,e_kS_,[0]]; return _bP_ (function(_kW_,_kV_,_kU_) {return caml_js_call(_kW_,_kV_,_kU_);}, _kX_);}; e_kP_.attachEvent(ev_kR_,callback_kY_); return function(param_kZ_) {return e_kP_.detachEvent(ev_kR_,callback_kY_);};} e_kP_.addEventListener(typ_kQ_,h_kT_,capt_k0_); return function(param_k1_) {return e_kP_.removeEventListener(typ_kQ_,h_kT_,capt_k0_);};} function _k7_(id_k2_){return _bP_(id_k2_,0);} var mouseup_k8_=_k5_(_L_), mousemove_k__=_k5_(_K_), _2d__k9_=_J_.toString(), window_k$_=window, document_la_=window_k$_.document, onIE_lm_=caml_js_on_ie(0)|0; function opt_iter_lp_(x_lb_,f_lc_){return x_lb_?_bP_(f_lc_,x_lb_[1]):0;} function createElement_lf_(doc_le_,name_ld_) {return doc_le_.createElement(name_ld_.toString());} function unsafeCreateElement_ly_(doc_lh_,name_lg_) {return createElement_lf_(doc_lh_,name_lg_);} function unsafeCreateElementEx_lu_(_type_li_,name_lj_,doc_ll_,elt_lk_) {if(0===_type_li_&&0===name_lj_) return createElement_lf_(doc_ll_,elt_lk_); if(onIE_lm_) {var a_ln_=new array_constructor_kA_(); a_ln_.push(_O_.toString(),elt_lk_.toString()); opt_iter_lp_ (_type_li_, function(t_lo_) {a_ln_.push (_P_.toString(),caml_js_html_escape(t_lo_),_Q_.toString()); return 0;}); opt_iter_lp_ (name_lj_, function(n_lq_) {a_ln_.push (_R_.toString(),caml_js_html_escape(n_lq_),_S_.toString()); return 0;}); a_ln_.push(_N_.toString()); return doc_ll_.createElement(a_ln_.join(_M_.toString()));} var res_lr_=createElement_lf_(doc_ll_,elt_lk_); opt_iter_lp_(_type_li_,function(t_ls_){return res_lr_.type=t_ls_;}); opt_iter_lp_(name_lj_,function(n_lt_){return res_lr_.name=n_lt_;}); return res_lr_;} function createInput_lB_(_type_lx_,name_lw_,doc_lv_) {return unsafeCreateElementEx_lu_(_type_lx_,name_lw_,doc_lv_,_V_);} function createLabel_lC_(doc_lz_) {return unsafeCreateElement_ly_(doc_lz_,_W_);} function createDiv_lD_(doc_lA_) {return unsafeCreateElement_ly_(doc_lA_,_X_);} var Canvas_not_available_lE_=[0,_I_]; window.HTMLElement===undefined_kx_; pause_hook_ko_[1]= function(param_lF_) {return 1===param_lF_ ?(window_k$_.setTimeout(caml_js_wrap_callback(_kD_),0),0) :0;}; var width_lG_=600, pi_lH_=4*Math.atan(1), obliquity_lI_=23.5*pi_lH_/180, gamma_lJ_=2, dark_lK_=Math.pow(0.2,gamma_lJ_), button_type_lL_=_k_.toString(); function toggle_button_my_(txt1_lN_,txt2_lP_,action_lT_) {var state_lM_=[0,0], txt1_lO_=txt1_lN_.toString(), txt2_lR_=txt2_lP_.toString(), b_lQ_=createInput_lB_([0,button_type_lL_],0,document_la_); b_lQ_.value=txt1_lO_; b_lQ_.onclick= handler_k4_ (function(param_lU_) {state_lM_[1]=1-state_lM_[1]; var _lS_=state_lM_[1]?txt2_lR_:txt1_lO_; b_lQ_.value=_lS_; _bP_(action_lT_,state_lM_[1]); return _true_ky_;}); return b_lQ_;} function checkbox_mz_(txt_l0_,checked_lW_,action_lX_) {var b_lV_=createInput_lB_([0,_l_.toString()],0,document_la_); b_lV_.checked=!!checked_lW_; b_lV_.onclick= handler_k4_ (function(param_lY_) {_bP_(action_lX_,b_lV_.checked|0);return _true_ky_;}); var lab_lZ_=createLabel_lC_(document_la_); appendChild_k3_(lab_lZ_,b_lV_); appendChild_k3_(lab_lZ_,document_la_.createTextNode(txt_l0_.toString())); return lab_lZ_;} function vertex_mq_(x_l3_,y_l2_,z_l1_){return [-1,x_l3_,y_l2_,z_l1_];} function vect_mA_(param_l5_,_l4_) {return [-1, _l4_[1]-param_l5_[1], _l4_[2]-param_l5_[2], _l4_[3]-param_l5_[3]];} function matrix_vect_mul_mk_(m_l__,param_l6_) {var z_l7_=param_l6_[3], y_l8_=param_l6_[2], x_l9_=param_l6_[1], r3_l$_=m_l__[3], r2_ma_=m_l__[2], r1_mb_=m_l__[1]; return [-1, x_l9_*r1_mb_[1]+y_l8_*r1_mb_[2]+z_l7_*r1_mb_[3], x_l9_*r2_ma_[1]+y_l8_*r2_ma_[2]+z_l7_*r2_ma_[3], x_l9_*r3_l$_[1]+y_l8_*r3_l$_[2]+z_l7_*r3_l$_[3]];} function matrix_transp_mg_(m_mc_) {var r3_md_=m_mc_[3],r2_me_=m_mc_[2],r1_mf_=m_mc_[1]; return [0, [-1,r1_mf_[1],r2_me_[1],r3_md_[1]], [-1,r1_mf_[2],r2_me_[2],r3_md_[2]], [-1,r1_mf_[3],r2_me_[3],r3_md_[3]]];} function matrix_mul_mB_(m_mj_,m__mh_) {var m__mi_=matrix_transp_mg_(m__mh_), _ml_=matrix_vect_mul_mk_(m__mi_,m_mj_[3]), _mm_=matrix_vect_mul_mk_(m__mi_,m_mj_[2]); return [0,matrix_vect_mul_mk_(m__mi_,m_mj_[1]),_mm_,_ml_];} function xz_rotation_mC_(phi_mn_) {var cos_phi_mo_=Math.cos(phi_mn_), sin_phi_mp_=Math.sin(phi_mn_), _mr_=vertex_mq_(-sin_phi_mp_,0,cos_phi_mo_), _ms_=vertex_mq_(0,1,0); return [0,vertex_mq_(cos_phi_mo_,0,sin_phi_mp_),_ms_,_mr_];} function xy_rotation_mD_(phi_mt_) {var cos_phi_mu_=Math.cos(phi_mt_), sin_phi_mv_=Math.sin(phi_mt_), _mw_=vertex_mq_(0,0,1), _mx_=vertex_mq_(-sin_phi_mv_,cos_phi_mu_,0); return [0,vertex_mq_(cos_phi_mu_,sin_phi_mv_,0),_mx_,_mw_];} var matrix_identity_mE_=xz_rotation_mC_(0); function face_mP_(v1_mH_,v2_mG_,v3_mF_){return [0,v1_mH_,v2_mG_,v3_mF_];} function create_canvas_mQ_(w_mJ_,h_mK_) {var c_mI_=unsafeCreateElement_ly_(document_la_,_$_); if(1-(c_mI_.getContext==null_kw_?1:0)) {c_mI_.width=w_mJ_;c_mI_.height=h_mK_;return c_mI_;} throw [0,Canvas_not_available_lE_];} function min_mR_(u_mL_,v_mM_){return u_mL_<v_mM_?u_mL_:v_mM_;} function max_mS_(u_mN_,v_mO_){return u_mN_<v_mO_?v_mO_:u_mN_;} var _mT_=8, _mU_=12, t_delta_mV_=pi_lH_/_mT_, n_mW_=_mT_*_mU_|0, vertices_mX_=caml_make_vect(n_mW_+2|0,vertex_mq_(0,0,0)), faces_mY_=caml_make_vect(n_mW_*2|0,face_mP_(0,0,0)), south_mZ_=n_mW_+1|0; caml_array_set(vertices_mX_,n_mW_,vertex_mq_(0,-1,0)); caml_array_set(vertices_mX_,south_mZ_,vertex_mq_(0,1,0)); var _m0_=0, _m1_=_mU_-1|0, p_delta_m6_=2*pi_lH_/_mU_, t_offset_m8_=(pi_lH_-t_delta_mV_)/2; if(!(_m1_<_m0_)) {var i_m2_=_m0_; for(;;) {var _m3_=0,_m4_=_mT_-1|0; if(!(_m4_<_m3_)) {var j_m5_=_m3_; for(;;) {var phi_m7_=i_m2_*p_delta_m6_, theta_m9_=j_m5_*t_delta_mV_-t_offset_m8_, k_m__=(i_m2_*_mT_|0)+j_m5_|0; caml_array_set (vertices_mX_, k_m__, vertex_mq_ (Math.cos(phi_m7_)*Math.cos(theta_m9_), Math.sin(theta_m9_), Math.sin(phi_m7_)*Math.cos(theta_m9_))); if(0===j_m5_) {caml_array_set (faces_mY_, 2*k_m__|0, face_mP_(n_mW_,k_m__,caml_mod(k_m__+_mT_|0,n_mW_))); caml_array_set (faces_mY_, (2*k_m__|0)+1|0, face_mP_ (south_mZ_, caml_mod((k_m__+(2*_mT_|0)|0)-1|0,n_mW_), (k_m__+_mT_|0)-1|0));} else {caml_array_set (faces_mY_, 2*k_m__|0, face_mP_(k_m__,caml_mod(k_m__+_mT_|0,n_mW_),k_m__-1|0)); caml_array_set (faces_mY_, (2*k_m__|0)+1|0, face_mP_ (k_m__-1|0, caml_mod(k_m__+_mT_|0,n_mW_), caml_mod((k_m__+_mT_|0)-1|0,n_mW_)));} var _m$_=j_m5_+1|0; if(_m4_!==j_m5_){var j_m5_=_m$_;continue;} break;}} var _na_=i_m2_+1|0; if(_m1_!==i_m2_){var i_m2_=_na_;continue;} break;}} var texture_qO_=_i_.toString(); window_k$_.onload= handler_k4_ (function(param_qS_) {function _qF_(texture_nb_) {var w_nc_=texture_nb_.width, h_nd_=texture_nb_.height, canvas_ne_=create_canvas_mQ_(w_nc_,h_nd_), ctx_nf_=canvas_ne_.getContext(_2d__k9_), _ng_=h_nd_/8|0, _nh_=w_nc_/8|0, img_ni_=ctx_nf_.getImageData(0,0,_nh_,_ng_), data_nj_=img_ni_.data, inv_gamma_nz_=1/gamma_lJ_; function update_shadow_nD_(obliquity_nk_) {var _nl_=0, _nm_=_ng_-1|0, cos_obl_nt_=Math.cos(obliquity_nk_), sin_obl_ns_=-Math.sin(obliquity_nk_); if(!(_nm_<_nl_)) {var j_nn_=_nl_; for(;;) {var _no_=0,_np_=(_nh_/2|0)-1|0; if(!(_np_<_no_)) {var i_nq_=_no_; for(;;) {var theta_nr_=(j_nn_/_ng_-0.5)*pi_lH_, _nu_= Math.cos(i_nq_/_nh_*2*pi_lH_)* Math.cos(theta_nr_)* cos_obl_nt_+ Math.sin(theta_nr_)* sin_obl_ns_, k_nx_=4*(i_nq_+j_nn_*_nh_)|0, k__nw_=4*(_nh_-i_nq_+j_nn_*_nh_-1)|0, c_nv_=0<_nu_?dark_lK_:dark_lK_-_nu_*(1-dark_lK_)*1.2, c_ny_=c_nv_<=1?c_nv_:1, c_nA_=255-(255.99*Math.pow(c_ny_,inv_gamma_nz_)|0)|0; data_nj_[k_nx_+3|0]=c_nA_; data_nj_[k__nw_+3|0]=c_nA_; var _nB_=i_nq_+1|0; if(_np_!==i_nq_){var i_nq_=_nB_;continue;} break;}} var _nC_=j_nn_+1|0; if(_nm_!==j_nn_){var j_nn_=_nC_;continue;} break;}} ctx_nf_.putImageData(img_ni_,0,0); ctx_nf_.globalCompositeOperation=_m_.toString(); ctx_nf_.save(); ctx_nf_.scale(8*(_nh_+2|0)/_nh_,8*(_ng_+2|0)/_ng_); ctx_nf_.translate(-1,-1); ctx_nf_.drawImage(canvas_ne_,0,0); return ctx_nf_.restore();} update_shadow_nD_(obliquity_lI_); var w_nE_=texture_nb_.width, canvas__nF_=create_canvas_mQ_(w_nE_,texture_nb_.height), ctx__nG_=canvas__nF_.getContext(_2d__k9_), no_lighting_nH_=[0,0], canvas_nI_=create_canvas_mQ_(width_lG_,width_lG_), canvas__nJ_=create_canvas_mQ_(width_lG_,width_lG_); appendChild_k3_(document_la_.body,canvas_nI_); var ctx_nK_=canvas_nI_.getContext(_2d__k9_), ctx__nL_=canvas__nJ_.getContext(_2d__k9_), r_nM_=width_lG_/2, tw_nN_=texture_nb_.width, th_nO_=texture_nb_.height, uv_nS_= _bV_ (function(v_nP_) {var u_nQ_= (tw_nN_- Math.atan2(v_nP_[3],v_nP_[1])* ((tw_nN_/2-0.99)/pi_lH_)| 0)% tw_nN_, v_nR_=th_nO_/2+Math.asin(v_nP_[2])*((th_nO_-0.99)/pi_lH_)|0; if(0<=u_nQ_) {if(u_nQ_<tw_nN_) {if(0<=v_nR_) {if(v_nR_<th_nO_)return [0,u_nQ_,v_nR_];throw [0,_d_,_n_];} throw [0,_d_,_o_];} throw [0,_d_,_p_];} throw [0,_d_,_q_];}, vertices_mX_), normals_oI_= _bV_ (function(param_nT_) {var v1_nU_=caml_array_get(vertices_mX_,param_nT_[1]), v2_nW_=caml_array_get(vertices_mX_,param_nT_[2]), _nV_= vect_mA_(v1_nU_,caml_array_get(vertices_mX_,param_nT_[3])), _nX_=vect_mA_(v1_nU_,v2_nW_), z2_nY_=_nV_[3], y2_nZ_=_nV_[2], x2_n0_=_nV_[1], z1_n1_=_nX_[3], y1_n2_=_nX_[2], x1_n3_=_nX_[1]; return [-1, y1_n2_*z2_nY_-y2_nZ_*z1_n1_, z1_n1_*x2_n0_-z2_nY_*x1_n3_, x1_n3_*y2_nZ_-x2_n0_*y1_n2_];}, faces_mY_), paused_oJ_=[0,0], follow_oK_=[0,0], lighting_oL_=[0,1], clipped_oM_=[0,1], obl_oN_=[0,obliquity_lI_], face_info_oO_= _bV_ (function(f_n4_) {var match_n5_=caml_array_get(uv_nS_,f_n4_[1]), v1_n6_=match_n5_[2], u1_n7_=match_n5_[1], match_n8_=caml_array_get(uv_nS_,f_n4_[2]), v2_n9_=match_n8_[2], u2_n__=match_n8_[1], match_n$_=caml_array_get(uv_nS_,f_n4_[3]), v3_oa_=match_n$_[2], u3_ob_=match_n$_[1], mid_oc_=tw_nN_/2; if(u1_n7_==0) {if(mid_oc_<u2_n__||mid_oc_<u3_ob_) var _od_=1; else {var _oe_=0,_od_=0;} if(_od_){var u1_of_=tw_nN_-2,_oe_=1;}} else var _oe_=0; if(!_oe_)var u1_of_=u1_n7_; if(u2_n__==0) {if(mid_oc_<u1_of_||mid_oc_<u3_ob_) var _og_=1; else {var _oh_=0,_og_=0;} if(_og_){var u2_oi_=tw_nN_-2,_oh_=1;}} else var _oh_=0; if(!_oh_)var u2_oi_=u2_n__; if(u3_ob_==0) {if(mid_oc_<u2_oi_||mid_oc_<u1_of_) var _oj_=1; else {var _ok_=0,_oj_=0;} if(_oj_){var u3_ol_=tw_nN_-2,_ok_=1;}} else var _ok_=0; if(!_ok_)var u3_ol_=u3_ob_; var mth_om_=th_nO_-2; if(v1_n6_==0||mth_om_<=v1_n6_) var _on_=0; else {var u1_oo_=u1_of_,_on_=1;} if(!_on_)var u1_oo_=(u2_oi_+u3_ol_)/2; if(v2_n9_==0||mth_om_<=v2_n9_) var _op_=0; else {var u2_oq_=u2_oi_,_op_=1;} if(!_op_)var u2_oq_=(u1_oo_+u3_ol_)/2; if(v3_oa_==0||mth_om_<=v3_oa_) var _or_=0; else {var u3_os_=u3_ol_,_or_=1;} if(!_or_)var u3_os_=(u2_oq_+u1_oo_)/2; var u1_ot_=max_mS_(1,u1_oo_), u2_ou_=max_mS_(1,u2_oq_), u3_ov_=max_mS_(1,u3_os_), v1_ow_=max_mS_(1,v1_n6_), v2_ox_=max_mS_(1,v2_n9_), v3_oy_=max_mS_(1,v3_oa_), du2_oz_=u2_ou_-u1_ot_, du3_oA_=u3_ov_-u1_ot_, dv2_oB_=v2_ox_-v1_ow_, dv3_oC_=v3_oy_-v1_ow_, su_oD_=dv2_oB_*du3_oA_-dv3_oC_*du2_oz_, sv_oE_=du2_oz_*dv3_oC_-du3_oA_*dv2_oB_, u_oF_=max_mS_(0,min_mR_(u1_ot_,min_mR_(u2_ou_,u3_ov_))-4), v_oG_=max_mS_(0,min_mR_(v1_ow_,min_mR_(v2_ox_,v3_oy_))-4), u__oH_= min_mR_(tw_nN_,max_mS_(u1_ot_,max_mS_(u2_ou_,u3_ov_))+4); return [0, u1_ot_, v1_ow_, du2_oz_/su_oD_, dv2_oB_/sv_oE_, du3_oA_/su_oD_, dv3_oC_/sv_oE_, u_oF_, v_oG_, u__oH_-u_oF_, min_mR_(th_nO_,max_mS_(v1_ow_,max_mS_(v2_ox_,v3_oy_))+4)- v_oG_];}, faces_mY_), m_obliq_oP_=[0,xy_rotation_mD_(-obliquity_lI_)], m_oQ_=[0,matrix_identity_mE_], phi_rot_oR_=[0,0], rateText_oS_=document_la_.createTextNode(_E_.toString()), ctrl_oT_=createDiv_lD_(document_la_); ctrl_oT_.className=_D_.toString(); var d_oU_=createDiv_lD_(document_la_); appendChild_k3_(d_oU_,document_la_.createTextNode(_C_.toString())); appendChild_k3_(ctrl_oT_,d_oU_); var form_oV_=createDiv_lD_(document_la_); function br_oY_(param_oW_) {return unsafeCreateElement_ly_(document_la_,_Z_);} appendChild_k3_ (form_oV_, toggle_button_my_ (_A_,_B_,function(p_oX_){paused_oJ_[1]=p_oX_;return 0;})); appendChild_k3_(form_oV_,br_oY_(0)); appendChild_k3_ (form_oV_, toggle_button_my_ (_y_,_z_,function(f_oZ_){follow_oK_[1]=f_oZ_;return 0;})); appendChild_k3_(form_oV_,br_oY_(0)); var b_o0_=createInput_lB_([0,button_type_lL_],0,document_la_); b_o0_.value=_x_.toString(); b_o0_.onclick= handler_k4_ (function(param_o1_) {m_oQ_[1]=matrix_identity_mE_; phi_rot_oR_[1]=0; m_obliq_oP_[1]=xy_rotation_mD_(-obl_oN_[1]); return _true_ky_;}); appendChild_k3_(form_oV_,b_o0_); appendChild_k3_(form_oV_,br_oY_(0)); var lab_o2_=createLabel_lC_(document_la_); appendChild_k3_(lab_o2_,document_la_.createTextNode(_w_.toString())); var _o3_=unsafeCreateElementEx_lu_(0,0,document_la_,_U_), param_o4_=_v_; for(;;) {if(param_o4_) {var l_o7_=param_o4_[2], a_o6_=param_o4_[1], _o5_=unsafeCreateElement_ly_(document_la_,_T_); appendChild_k3_ (_o5_,document_la_.createTextNode(a_o6_.toString())); _o3_.add(_o5_,null_kw_); var param_o4_=l_o7_; continue;} _o3_.onchange= handler_k4_ (function(param_o__) {var _o8_=_o3_.selectedIndex, o_o9_=0===_o8_?obliquity_lI_:1===_o8_?0:-obliquity_lI_; update_shadow_nD_(o_o9_); obl_oN_[1]=o_o9_; return _true_ky_;}); appendChild_k3_(lab_o2_,_o3_); appendChild_k3_(form_oV_,lab_o2_); appendChild_k3_(ctrl_oT_,form_oV_); var form_o$_=createDiv_lD_(document_la_); appendChild_k3_ (form_o$_, checkbox_mz_ (_u_,1,function(l_pa_){lighting_oL_[1]=l_pa_;return 0;})); appendChild_k3_(form_o$_,br_oY_(0)); appendChild_k3_ (form_o$_, checkbox_mz_ (_t_,1,function(l_pb_){clipped_oM_[1]=l_pb_;return 0;})); appendChild_k3_(form_o$_,br_oY_(0)); appendChild_k3_ (form_o$_,document_la_.createTextNode(_s_.toString())); appendChild_k3_(form_o$_,rateText_oS_); appendChild_k3_(ctrl_oT_,form_o$_); appendChild_k3_(document_la_.body,ctrl_oT_); var _pc_=unsafeCreateElement_ly_(document_la_,_Y_); _pc_.innerHTML=_r_.toString(); appendChild_k3_(document_la_.body,_pc_); var mx_pd_=[0,0],my_pe_=[0,0]; canvas_nI_.onmousedown= handler_k4_ (function(ev_pf_) {mx_pd_[1]=ev_pf_.clientX; my_pe_[1]=ev_pf_.clientY; var c2_ps_=[0,null_kw_], c1_pt_= _k6_ (document_la_, mousemove_k__, handler_k4_ (function(ev_pg_) {var x_ph_=ev_pg_.clientX, y_pi_=ev_pg_.clientY, dx_pj_=x_ph_-mx_pd_[1]|0, dy_pk_=y_pi_-my_pe_[1]|0; if(0!==dy_pk_) {var _pl_=2*dy_pk_/width_lG_, cos_phi_pm_=Math.cos(_pl_), sin_phi_pn_=Math.sin(_pl_), _po_=m_oQ_[1], _pp_=vertex_mq_(0,-sin_phi_pn_,cos_phi_pm_), _pq_=vertex_mq_(0,cos_phi_pm_,sin_phi_pn_); m_oQ_[1]= matrix_mul_mB_([0,vertex_mq_(1,0,0),_pq_,_pp_],_po_);} if(0!==dx_pj_) {var _pr_=m_oQ_[1]; m_oQ_[1]= matrix_mul_mB_(xz_rotation_mC_(2*dx_pj_/width_lG_),_pr_);} mx_pd_[1]=x_ph_; my_pe_[1]=y_pi_; return _true_ky_;}), _true_ky_); c2_ps_[1]= _kG_ (_k6_ (document_la_, mouseup_k8_, handler_k4_ (function(param_pv_) {_k7_(c1_pt_); var _pu_=c2_ps_[1]; if(_pu_!=null_kw_)_k7_(_pu_); return _true_ky_;}), _true_ky_)); return _false_kz_;}); var ti_pw_=[0,new date_constr_kB_().getTime()], fps_px_=[0,0], loop_qm_= function(t_qg_,phi_py_) {var rotation_pz_=xz_rotation_mC_(phi_py_-phi_rot_oR_[1]); if(lighting_oL_[1]) {no_lighting_nH_[1]=0; ctx__nG_.drawImage(texture_nb_,0,0); var i_pA_= (2*pi_lH_-phi_py_%(2*pi_lH_))*w_nE_/2/pi_lH_%w_nE_|0; ctx__nG_.drawImage(canvas_ne_,i_pA_,0); ctx__nG_.drawImage(canvas_ne_,i_pA_-w_nE_,0);} else if(!no_lighting_nH_[1]) {ctx__nG_.drawImage(texture_nb_,0,0);no_lighting_nH_[1]=1;} var _pB_=matrix_mul_mB_(m_obliq_oP_[1],rotation_pz_), m_pC_=matrix_mul_mB_(m_oQ_[1],_pB_), _pE_= _bV_ (function(v_pD_){return matrix_vect_mul_mk_(m_pC_,v_pD_);}, vertices_mX_), _pF_=matrix_vect_mul_mk_(matrix_transp_mg_(m_pC_),v_j_); ctx__nL_.clearRect(0,0,width_lG_,width_lG_); ctx__nL_.save(); if(clipped_oM_[1]) {ctx__nL_.beginPath(); ctx__nL_.arc(r_nM_,r_nM_,r_nM_*0.95,0,-2*pi_lH_,_true_ky_); ctx__nL_.clip();} ctx__nL_.setTransform(r_nM_-2,0,0,r_nM_-2,r_nM_,r_nM_); ctx__nL_.globalCompositeOperation=_H_.toString(); var _pG_=0,_pH_=faces_mY_.length-1-1|0; if(!(_pH_<_pG_)) {var i_pI_=_pG_; for(;;) {var _pJ_=faces_mY_[i_pI_+1], match_pK_=caml_array_get(_pE_,_pJ_[1]), y1_pL_=match_pK_[2], x1_pM_=match_pK_[1], match_pN_=caml_array_get(_pE_,_pJ_[2]), y2_pO_=match_pN_[2], x2_pP_=match_pN_[1], match_pQ_=caml_array_get(_pE_,_pJ_[3]), y3_pR_=match_pQ_[2], x3_pS_=match_pQ_[1], _pT_=caml_array_get(normals_oI_,i_pI_); if(0<=_pT_[1]*_pF_[1]+_pT_[2]*_pF_[2]+_pT_[3]*_pF_[3]) {ctx__nL_.beginPath(); ctx__nL_.moveTo(x1_pM_,y1_pL_); ctx__nL_.lineTo(x2_pP_,y2_pO_); ctx__nL_.lineTo(x3_pS_,y3_pR_); ctx__nL_.closePath(); ctx__nL_.save(); ctx__nL_.clip(); var match_pU_=caml_array_get(face_info_oO_,i_pI_), dv_pV_=match_pU_[10], du_pW_=match_pU_[9], v_pX_=match_pU_[8], u_pY_=match_pU_[7], dv3_pZ_=match_pU_[6], du3_p0_=match_pU_[5], dv2_p1_=match_pU_[4], du2_p2_=match_pU_[3], v1_p3_=match_pU_[2], u1_p4_=match_pU_[1], dx2_p5_=x2_pP_-x1_pM_, dx3_p6_=x3_pS_-x1_pM_, dy2_p7_=y2_pO_-y1_pL_, dy3_p8_=y3_pR_-y1_pL_, a_p9_=dx2_p5_*dv3_pZ_-dx3_p6_*dv2_p1_, b_p__=dx2_p5_*du3_p0_-dx3_p6_*du2_p2_, d_p$_=dy2_p7_*dv3_pZ_-dy3_p8_*dv2_p1_, e_qa_=dy2_p7_*du3_p0_-dy3_p8_*du2_p2_; ctx__nL_.transform (a_p9_, d_p$_, b_p__, e_qa_, x1_pM_-a_p9_*u1_p4_-b_p__*v1_p3_, y1_pL_-d_p$_*u1_p4_-e_qa_*v1_p3_); ctx__nL_.drawImage (canvas__nF_, u_pY_, v_pX_, du_pW_, dv_pV_, u_pY_, v_pX_, du_pW_, dv_pV_); ctx__nL_.restore();} var _qb_=i_pI_+1|0; if(_pH_!==i_pI_){var i_pI_=_qb_;continue;} break;}} ctx__nL_.restore(); ctx_nK_.globalCompositeOperation=_G_.toString(); ctx_nK_.drawImage(canvas__nJ_,0,0); try {ctx_nK_.getImageData(0,0,1,1);}catch(_qD_){} var t__qc_=new date_constr_kB_().getTime(), hz_qd_=1000/(t__qc_-ti_pw_[1]), _qe_=fps_px_[1]==0?hz_qd_:0.9*fps_px_[1]+0.1*hz_qd_; fps_px_[1]=_qe_; rateText_oS_.data=_d6_(_hV_,_F_,fps_px_[1]).toString(); ti_pw_[1]=t__qc_; function _qp_(param_qn_) {var t__qf_=new date_constr_kB_().getTime(), dt_qh_=t__qf_-t_qg_, dt_qi_=dt_qh_<0?0:1000<dt_qh_?0:dt_qh_, angle_qj_=2*pi_lH_*dt_qi_/1000/10, _qk_= paused_oJ_[1] ?0 :follow_oK_[1]?(phi_rot_oR_[1]=phi_rot_oR_[1]+angle_qj_,1):0; _qk_; var _ql_=paused_oJ_[1]?phi_py_:phi_py_+angle_qj_; return loop_qm_(t__qf_,_ql_);} var match_qo_=task_kl_(0), t_qq_=match_qo_[1], w_qr_=match_qo_[2], _qt_=0.01*1000, id_qu_= window_k$_.setTimeout (caml_js_wrap_callback (function(param_qs_){return wakeup_kk_(w_qr_,0);}), _qt_); function _qw_(param_qv_) {return window_k$_.clearTimeout(id_qu_);} var _qx_=repr_jn_(t_qq_)[1]; switch(_qx_[0]) {case 1: var _qy_= _qx_[1][1]===Canceled_ij_?(call_unsafe_jg_(_qw_,0),1):0; break; case 2: var sleeper_qz_=_qx_[1], handler_qA_=[0,current_data_ik_[1],_qw_], _qB_=sleeper_qz_[4], _qC_=typeof _qB_==="number"?handler_qA_:[2,handler_qA_,_qB_]; sleeper_qz_[4]=_qC_; var _qy_=1; break; default:var _qy_=0;} _qy_; return bind_km_(t_qq_,_qp_);}; return loop_qm_(new date_constr_kB_().getTime(),0);}} var _qE_=unsafeCreateElement_ly_(document_la_,___); function _qI_(param_qG_){return [0,[0,_qE_]];} var match_qH_=task_kl_(0),w_qK_=match_qH_[2],t_qL_=match_qH_[1]; function cont_qM_(x_qJ_){return wakeup_kk_(w_qK_,x_qJ_);} _qE_.onload= handler_k4_(function(param_qN_){cont_qM_(0);return _false_kz_;}); _qE_.src=texture_qO_; var _qP_=repr_jn_(bind_km_(bind_km_(t_qL_,_qI_),_qF_))[1]; switch(_qP_[0]) {case 1:throw _qP_[1]; case 2: var sleeper_qR_=_qP_[1]; add_immutable_waiter_ki_ (sleeper_qR_, function(param_qQ_) {switch(param_qQ_[0]) {case 0:return 0; case 1:return _iV_(param_qQ_[1]); default:throw [0,_d_,_ai_];}}); break; case 3:throw [0,_d_,_ah_]; default:} return _false_kz_;}); do_at_exit_bG_(0); return;} ());