diff --git a/assets/images/tictactoe4.png.original b/assets/images/tictactoe4.png.original new file mode 100644 index 0000000..13beb84 Binary files /dev/null and b/assets/images/tictactoe4.png.original differ diff --git a/experiments/points/index.js b/experiments/points/index.js index fa4a597..ef867a0 100644 --- a/experiments/points/index.js +++ b/experiments/points/index.js @@ -21,7 +21,7 @@ const metricDisplayInfo = { commentsPosted: { name: "Comments posted", units: "comment" }, greatestInfipage: { name: "Largest infipage visited" }, heavpootLocations: { name: "Heavpoot's Game states", units: "state" }, - heavpootDeaths: { name: "Heavpoot's Game deaths", units: "death" } + heavpootDeaths: { name: "Heavpoot's Game deaths", units: "death" }, } for (const opponent of ["ai1", "ai2"]) { @@ -30,6 +30,10 @@ for (const opponent of ["ai1", "ai2"]) { } } +for (const result of ["Wins", "Losses", "Draws"]) { + metricDisplayInfo[`ttt4${result}`] = { name: `${result} in 4D Tic-Tac-Toe`, units: "game" } +} + const displayMetric = metric => { let name = metric[0] let value = metric[1] diff --git a/experiments/tictactoe/index.html b/experiments/tictactoe/index.html index f4f16a7..9525347 100644 --- a/experiments/tictactoe/index.html +++ b/experiments/tictactoe/index.html @@ -360,6 +360,8 @@ slug: tictactoe function render() { var html = "" for (var l = 0; l < size; l++) { + if (l == 2) html += `` + if (l == 0 || l == 2) html += `
` html += '
' for (var r = 0; r < size; r++) { html += '
' @@ -373,6 +375,7 @@ slug: tictactoe } html += '
' } + if (l == 3) html += `
` html += '
' } screen.innerHTML = html diff --git a/experiments/tictactoe4d/app.css b/experiments/tictactoe4d/app.css new file mode 100644 index 0000000..bf1910e --- /dev/null +++ b/experiments/tictactoe4d/app.css @@ -0,0 +1,2 @@ +.layer{margin:1em;border:1px solid #666;display:inline-block}.cell{display:flex;flex-direction:column}.slot{width:2rem;height:2rem;display:inline-block;border:1px solid #aaa;font-size:.5em}.slot-1{background:#00f}.slot-2{background:red}.board,.row{display:flex}.highlight{width:50%;height:50%;top:25%;left:25%;position:relative}.abspos-indicator{height:100%;background-size:cover} +/*# sourceMappingURL=app.css.map */ diff --git a/experiments/tictactoe4d/app.css.map b/experiments/tictactoe4d/app.css.map new file mode 100644 index 0000000..326271a --- /dev/null +++ b/experiments/tictactoe4d/app.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../app.css"], + "sourcesContent": [".layer {\n margin: 1em;\n border: 1px solid #666;\n display: inline-block;\n}\n.cell {\n display: flex;\n flex-direction: column;\n}\n.slot {\n width: 2rem;\n height: 2rem;\n display: inline-block;\n border: 1px solid #aaa;\n font-size: 0.5em;\n}\n.slot-1 {\n background: blue;\n}\n.slot-2 {\n background: red;\n}\n.board {\n display: flex;\n}\n.row {\n display: flex;\n}\n.highlight {\n width: 50%;\n height: 50%;\n top: 25%;\n left: 25%;\n position: relative;\n}\n.abspos-indicator {\n height: 100%;\n background-size: cover;\n}"], + "mappings": "AAAA,CAAC,MAAD,OACY,IACR,OAAQ,IAAI,MAAM,KAClB,QAAS,YACb,CACA,CAAC,KACG,QAAS,KACT,eAAgB,MACpB,CACA,CAAC,KACG,MAAO,KACP,OAAQ,KACR,QAAS,aACT,OAAQ,IAAI,MAAM,KAClB,UAAW,IACf,CACA,CAAC,OACG,WAAY,IAChB,CACA,CAAC,OACG,WAAY,GAChB,CACA,CAAC,MAGD,CAAC,IAFG,QAAS,IACb,CAIA,CAAC,UACG,MAAO,IACP,OAAQ,IACR,IAAK,IACL,KAAM,IACN,SAAU,QACd,CACA,CAAC,iBACG,OAAQ,KACR,gBAAiB,KACrB", + "names": [] +} diff --git a/experiments/tictactoe4d/app.js b/experiments/tictactoe4d/app.js new file mode 100644 index 0000000..c58b1bb --- /dev/null +++ b/experiments/tictactoe4d/app.js @@ -0,0 +1,3 @@ +(()=>{var a,w=new Array(128).fill(void 0);w.push(void 0,null,!0,!1);function c(n){return w[n]}var E=w.length;function L(n){n<132||(w[n]=E,E=n)}function M(n){let e=c(n);return L(n),e}function _(n){E===w.length&&w.push(w.length+1);let e=E;return E=w[e],w[e]=n,e}var T=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&T.decode();var p=null;function m(){return(p===null||p.byteLength===0)&&(p=new Uint8Array(a.memory.buffer)),p}function s(n,e){return n=n>>>0,T.decode(m().subarray(n,n+e))}function g(n){return n==null}var k=null;function R(){return(k===null||k.byteLength===0)&&(k=new Float64Array(a.memory.buffer)),k}var A=null;function l(){return(A===null||A.byteLength===0)&&(A=new Int32Array(a.memory.buffer)),A}function W(n){let e=typeof n;if(e=="number"||e=="boolean"||n==null)return`${n}`;if(e=="string")return`"${n}"`;if(e=="symbol"){let o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(e=="function"){let o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){let o=n.length,i="[";o>0&&(i+=W(n[0]));for(let u=1;u1)r=t[1];else return toString.call(n);if(r=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message} +${n.stack}`:r}var d=0,v=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},U=typeof v.encodeInto=="function"?function(n,e){return v.encodeInto(n,e)}:function(n,e){let t=v.encode(n);return e.set(t),{read:n.length,written:t.length}};function h(n,e,t){if(t===void 0){let f=v.encode(n),y=e(f.length,1)>>>0;return m().subarray(y,y+f.length).set(f),d=f.length,y}let r=n.length,o=e(r,1)>>>0,i=m(),u=0;for(;u127)break;i[o+u]=f}if(u!==r){u!==0&&(n=n.slice(u)),o=t(o,r,r=u+n.length*3,1)>>>0;let f=m().subarray(o+u,o+r),y=U(n,f);u+=y.written}return d=u,o}function C(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},i=(...u)=>{o.cnt++;let f=o.a;o.a=0;try{return r(f,o.b,...u)}finally{--o.cnt===0?a.__wbindgen_export_2.get(o.dtor)(f,o.b):o.a=f}};return i.original=o,i}function F(n,e){let t=e(n.length*1,1)>>>0;return m().set(n,t/1),d=n.length,t}function B(n,e,t){let r=F(t,a.__wbindgen_malloc),o=d;a.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(n,e,r,o)}function D(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},i=(...u)=>{o.cnt++;try{return r(o.a,o.b,...u)}finally{--o.cnt===0&&(a.__wbindgen_export_2.get(o.dtor)(o.a,o.b),o.a=0)}};return i.original=o,i}function N(n,e,t){a.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(n,e,_(t))}function $(n,e){return n=n>>>0,m().subarray(n/1,n/1+e)}function V(n){return()=>{throw new Error(`${n} is not defined`)}}function S(){let n=a.main();return M(n)}var x=null;function z(){return(x===null||x.byteLength===0)&&(x=new Uint32Array(a.memory.buffer)),x}function q(n,e){n=n>>>0;let r=z().subarray(n/4,n/4+e),o=[];for(let i=0;i"u"&&(n=new URL("tic_tac_toe_4d_bg.wasm",location));let e=H();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));let{instance:t,module:r}=await J(await n,e);return G(t,r)}var j=O;var I=new Worker("webworker_glue.js");win_callback=n=>{console.log(n),"points"in window&&window.points.then(e=>{console.log("writing to achievement system"),n===1?(e.unlockAchievement("ttt4Win"),e.updateMetric("ttt4Wins",t=>t+1,0)):n===2?e.updateMetric("ttt4Losses",t=>t+1,0):isDraw&&e.updateMetric("ttt4Draws",t=>t+1,0)})};j().then(n=>{let e=S();console.log("rust initiated",e),run_ai_background=t=>{I.postMessage(t),console.log("dispatching")},I.onmessage=t=>{e(t.data)}});})(); +//# sourceMappingURL=app.js.map diff --git a/experiments/tictactoe4d/app.js.map b/experiments/tictactoe4d/app.js.map new file mode 100644 index 0000000..f48c8b4 --- /dev/null +++ b/experiments/tictactoe4d/app.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../pkg/tic_tac_toe_4d.js", "../src/app.js"], + "sourcesContent": ["let wasm;\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nfunction __wbg_adapter_18(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm0(arg2, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(arg0, arg1, ptr0, len0);\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_21(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array} state\n* @returns {Uint8Array}\n*/\nexport function run_ai(state) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(state, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.run_ai(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1, 1);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n* @returns {any}\n*/\nexport function main() {\n const ret = wasm.main();\n return takeObject(ret);\n}\n\nlet cachedUint32Memory0 = null;\n\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_wincallback_a6a4fc5b782108cf = typeof win_callback == 'function' ? win_callback : notDefined('win_callback');\n imports.wbg.__wbg_runaibackground_8f0429c82a23ffaf = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n run_ai_background(v0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_warn_40349716c899750a = function(arg0, arg1) {\n var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 4, 4);\n console.warn(...v0);\n };\n imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_body_4579ae140279af20 = function(arg0) {\n const ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createElement_d15f046703844f09 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createElementNS_11acf9c78d336078 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createTextNode_18d067bf6369a475 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getElementById_af8feeb3fb877150 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Element_c9423704dd5d9b1d = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Element;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_namespaceURI_9fd9462aeda0a089 = function(arg0, arg1) {\n const ret = getObject(arg1).namespaceURI;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_removeAttribute_8f442821de341f11 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_setAttribute_fecb2c0d020f422f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_target_ee132da05a9ef949 = function(arg0) {\n const ret = getObject(arg0).target;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_cancelBubble_5739e699df6294b0 = function(arg0) {\n const ret = getObject(arg0).cancelBubble;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_1151978b9ef85f25 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4));\n }, arguments) };\n imports.wbg.__wbg_setchecked_b4c153b5e9fbc166 = function(arg0, arg1) {\n getObject(arg0).checked = arg1 !== 0;\n };\n imports.wbg.__wbg_value_a2e4cbb5179fb3b8 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_f9de54bc4a5880ce = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_value_6b1ddbb6e9155da3 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_5ef50a7282dd6d7e = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_parentElement_5a7090f336d94c74 = function(arg0) {\n const ret = getObject(arg0).parentElement;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_lastChild_b2bc9e1e4adf0cda = function(arg0) {\n const ret = getObject(arg0).lastChild;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_setnodeValue_7ed608b56bb5f51b = function(arg0, arg1, arg2) {\n getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_appendChild_f60942b2565cb803 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_insertBefore_d8e803d8ba9a41b8 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_removeChild_38dc2b8a0f4f0a41 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).removeChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_document_17e852b4666eac5e = function(arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_debug_ca7d8917245536d0 = function(arg0, arg1, arg2, arg3) {\n console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_error_1189b5de6dd1b808 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_error_4a7b91f097a233a5 = function(arg0, arg1, arg2, arg3) {\n console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_info_d4ce670cd6ec6fde = function(arg0, arg1, arg2, arg3) {\n console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_log_50738d2ca2ec904a = function(arg0, arg1, arg2, arg3) {\n console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_warn_2eee9ed96860a8b7 = function(arg0, arg1, arg2, arg3) {\n console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_self_c4a869f7521d7b18 = function() { return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_f76bff89ab6e4c74 = function() { return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_71824672ea2add7c = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_f78549112bdb0090 = function() { return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_4cbce0ba8003ced4 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_875d4ea9abbec88f = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_get_02999bb2caeeff61 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_fc6bfaed5ca1b77a = function() {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_valueOf_b57a82897edf3264 = function(arg0) {\n const ret = getObject(arg0).valueOf();\n return ret;\n };\n imports.wbg.__wbg_is_e0a4fb92be049653 = function(arg0, arg1) {\n const ret = Object.is(getObject(arg0), getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_set_3340302df484a06c = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_closure_wrapper106 = function(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 6, __wbg_adapter_18);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper334 = function(arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 119, __wbg_adapter_21);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === 'undefined') {\n input = new URL('tic_tac_toe_4d_bg.wasm', location);\n }\n const imports = __wbg_get_imports();\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync }\nexport default __wbg_init;\n", "import wasm_init from \"../pkg/tic_tac_toe_4d\"\nimport \"../app.css\"\nimport * as wasm_api from \"../pkg/tic_tac_toe_4d\"\n\nvar worker = new Worker(\"webworker_glue.js\")\n\nwin_callback = winner => {\n console.log(winner)\n if (\"points\" in window) {\n window.points.then(points => {\n console.log(\"writing to achievement system\")\n if (winner === 1) {\n points.unlockAchievement(`ttt4Win`)\n points.updateMetric(`ttt4Wins`, x => x + 1, 0)\n } else if (winner === 2) { \n points.updateMetric(`ttt4Losses`, x => x + 1, 0)\n } else if (isDraw) {\n points.updateMetric(`ttt4Draws`, x => x + 1, 0)\n }\n })\n }\n}\n\nwasm_init().then(x => {\n const callback = wasm_api.main()\n console.log(\"rust initiated\", callback)\n run_ai_background = data => {\n worker.postMessage(data)\n console.log(\"dispatching\")\n }\n \n worker.onmessage = ev => {\n callback(ev.data)\n }\n})"], + "mappings": "MAAA,IAAIA,EAEEC,EAAO,IAAI,MAAM,GAAG,EAAE,KAAK,MAAS,EAE1CA,EAAK,KAAK,OAAW,KAAM,GAAM,EAAK,EAEtC,SAASC,EAAUC,EAAK,CAAE,OAAOF,EAAKE,CAAG,CAAG,CAE5C,IAAIC,EAAYH,EAAK,OAErB,SAASI,EAAWF,EAAK,CACjBA,EAAM,MACVF,EAAKE,CAAG,EAAIC,EACZA,EAAYD,EAChB,CAEA,SAASG,EAAWH,EAAK,CACrB,IAAMI,EAAML,EAAUC,CAAG,EACzB,OAAAE,EAAWF,CAAG,EACPI,CACX,CAEA,SAASC,EAAcC,EAAK,CACpBL,IAAcH,EAAK,QAAQA,EAAK,KAAKA,EAAK,OAAS,CAAC,EACxD,IAAME,EAAMC,EACZ,OAAAA,EAAYH,EAAKE,CAAG,EAEpBF,EAAKE,CAAG,EAAIM,EACLN,CACX,CAEA,IAAMO,EAAqB,OAAO,YAAgB,IAAc,IAAI,YAAY,QAAS,CAAE,UAAW,GAAM,MAAO,EAAK,CAAC,EAAI,CAAE,OAAQ,IAAM,CAAE,MAAM,MAAM,2BAA2B,CAAE,CAAE,EAEtL,OAAO,YAAgB,KAAeA,EAAkB,OAAO,EAEnE,IAAIC,EAAqB,KAEzB,SAASC,GAAkB,CACvB,OAAID,IAAuB,MAAQA,EAAmB,aAAe,KACjEA,EAAqB,IAAI,WAAWX,EAAK,OAAO,MAAM,GAEnDW,CACX,CAEA,SAASE,EAAmBC,EAAKC,EAAK,CAClC,OAAAD,EAAMA,IAAQ,EACPJ,EAAkB,OAAOE,EAAgB,EAAE,SAASE,EAAKA,EAAMC,CAAG,CAAC,CAC9E,CAEA,SAASC,EAAWC,EAAG,CACnB,OAA0BA,GAAM,IACpC,CAEA,IAAIC,EAAuB,KAE3B,SAASC,GAAoB,CACzB,OAAID,IAAyB,MAAQA,EAAqB,aAAe,KACrEA,EAAuB,IAAI,aAAalB,EAAK,OAAO,MAAM,GAEvDkB,CACX,CAEA,IAAIE,EAAqB,KAEzB,SAASC,GAAkB,CACvB,OAAID,IAAuB,MAAQA,EAAmB,aAAe,KACjEA,EAAqB,IAAI,WAAWpB,EAAK,OAAO,MAAM,GAEnDoB,CACX,CAEA,SAASE,EAAYC,EAAK,CAEtB,IAAMC,EAAO,OAAOD,EACpB,GAAIC,GAAQ,UAAYA,GAAQ,WAAaD,GAAO,KAChD,MAAQ,GAAGA,CAAG,GAElB,GAAIC,GAAQ,SACR,MAAO,IAAID,CAAG,IAElB,GAAIC,GAAQ,SAAU,CAClB,IAAMC,EAAcF,EAAI,YACxB,OAAIE,GAAe,KACR,SAEA,UAAUA,CAAW,GAEpC,CACA,GAAID,GAAQ,WAAY,CACpB,IAAME,EAAOH,EAAI,KACjB,OAAI,OAAOG,GAAQ,UAAYA,EAAK,OAAS,EAClC,YAAYA,CAAI,IAEhB,UAEf,CAEA,GAAI,MAAM,QAAQH,CAAG,EAAG,CACpB,IAAMI,EAASJ,EAAI,OACfK,EAAQ,IACRD,EAAS,IACTC,GAASN,EAAYC,EAAI,CAAC,CAAC,GAE/B,QAAQM,EAAI,EAAGA,EAAIF,EAAQE,IACvBD,GAAS,KAAON,EAAYC,EAAIM,CAAC,CAAC,EAEtC,OAAAD,GAAS,IACFA,CACX,CAEA,IAAME,EAAiB,sBAAsB,KAAK,SAAS,KAAKP,CAAG,CAAC,EAChEQ,EACJ,GAAID,EAAe,OAAS,EACxBC,EAAYD,EAAe,CAAC,MAG5B,QAAO,SAAS,KAAKP,CAAG,EAE5B,GAAIQ,GAAa,SAIb,GAAI,CACA,MAAO,UAAY,KAAK,UAAUR,CAAG,EAAI,GAC7C,MAAY,CACR,MAAO,QACX,CAGJ,OAAIA,aAAe,MACR,GAAGA,EAAI,IAAI,KAAKA,EAAI,OAAO;AAAA,EAAKA,EAAI,KAAK,GAG7CQ,CACX,CAEA,IAAIC,EAAkB,EAEhBC,EAAqB,OAAO,YAAgB,IAAc,IAAI,YAAY,OAAO,EAAI,CAAE,OAAQ,IAAM,CAAE,MAAM,MAAM,2BAA2B,CAAE,CAAE,EAElJC,EAAgB,OAAOD,EAAkB,YAAe,WACxD,SAAUE,EAAKC,EAAM,CACvB,OAAOH,EAAkB,WAAWE,EAAKC,CAAI,CACjD,EACM,SAAUD,EAAKC,EAAM,CACvB,IAAMC,EAAMJ,EAAkB,OAAOE,CAAG,EACxC,OAAAC,EAAK,IAAIC,CAAG,EACL,CACH,KAAMF,EAAI,OACV,QAASE,EAAI,MACjB,CACJ,EAEA,SAASC,EAAkBH,EAAKI,EAAQC,EAAS,CAE7C,GAAIA,IAAY,OAAW,CACvB,IAAMH,EAAMJ,EAAkB,OAAOE,CAAG,EAClCrB,EAAMyB,EAAOF,EAAI,OAAQ,CAAC,IAAM,EACtC,OAAAzB,EAAgB,EAAE,SAASE,EAAKA,EAAMuB,EAAI,MAAM,EAAE,IAAIA,CAAG,EACzDL,EAAkBK,EAAI,OACfvB,CACX,CAEA,IAAIC,EAAMoB,EAAI,OACVrB,EAAMyB,EAAOxB,EAAK,CAAC,IAAM,EAEvB0B,EAAM7B,EAAgB,EAExB8B,EAAS,EAEb,KAAOA,EAAS3B,EAAK2B,IAAU,CAC3B,IAAMC,EAAOR,EAAI,WAAWO,CAAM,EAClC,GAAIC,EAAO,IAAM,MACjBF,EAAI3B,EAAM4B,CAAM,EAAIC,CACxB,CAEA,GAAID,IAAW3B,EAAK,CACZ2B,IAAW,IACXP,EAAMA,EAAI,MAAMO,CAAM,GAE1B5B,EAAM0B,EAAQ1B,EAAKC,EAAKA,EAAM2B,EAASP,EAAI,OAAS,EAAG,CAAC,IAAM,EAC9D,IAAMC,EAAOxB,EAAgB,EAAE,SAASE,EAAM4B,EAAQ5B,EAAMC,CAAG,EACzDR,EAAM2B,EAAaC,EAAKC,CAAI,EAElCM,GAAUnC,EAAI,OAClB,CAEA,OAAAyB,EAAkBU,EACX5B,CACX,CAEA,SAAS8B,EAAeC,EAAMC,EAAMC,EAAMC,EAAG,CACzC,IAAMC,EAAQ,CAAE,EAAGJ,EAAM,EAAGC,EAAM,IAAK,EAAG,KAAAC,CAAK,EACzCG,EAAO,IAAIC,IAAS,CAItBF,EAAM,MACN,IAAMG,EAAIH,EAAM,EAChBA,EAAM,EAAI,EACV,GAAI,CACA,OAAOD,EAAEI,EAAGH,EAAM,EAAG,GAAGE,CAAI,CAChC,QAAE,CACM,EAAEF,EAAM,MAAQ,EAChBjD,EAAK,oBAAoB,IAAIiD,EAAM,IAAI,EAAEG,EAAGH,EAAM,CAAC,EAGnDA,EAAM,EAAIG,CAElB,CACJ,EACA,OAAAF,EAAK,SAAWD,EAETC,CACX,CAEA,SAASG,EAAkBlB,EAAKI,EAAQ,CACpC,IAAMzB,EAAMyB,EAAOJ,EAAI,OAAS,EAAG,CAAC,IAAM,EAC1C,OAAAvB,EAAgB,EAAE,IAAIuB,EAAKrB,EAAM,CAAC,EAClCkB,EAAkBG,EAAI,OACfrB,CACX,CACA,SAASwC,EAAiBT,EAAMC,EAAMS,EAAM,CACxC,IAAMC,EAAOH,EAAkBE,EAAMvD,EAAK,iBAAiB,EACrDyD,EAAOzB,EACbhC,EAAK,gEAAgE6C,EAAMC,EAAMU,EAAMC,CAAI,CAC/F,CAEA,SAASC,EAAYb,EAAMC,EAAMC,EAAMC,EAAG,CACtC,IAAMC,EAAQ,CAAE,EAAGJ,EAAM,EAAGC,EAAM,IAAK,EAAG,KAAAC,CAAK,EACzCG,EAAO,IAAIC,IAAS,CAItBF,EAAM,MACN,GAAI,CACA,OAAOD,EAAEC,EAAM,EAAGA,EAAM,EAAG,GAAGE,CAAI,CACtC,QAAE,CACM,EAAEF,EAAM,MAAQ,IAChBjD,EAAK,oBAAoB,IAAIiD,EAAM,IAAI,EAAEA,EAAM,EAAGA,EAAM,CAAC,EACzDA,EAAM,EAAI,EAGlB,CACJ,EACA,OAAAC,EAAK,SAAWD,EAETC,CACX,CACA,SAASS,EAAiBd,EAAMC,EAAMS,EAAM,CACxCvD,EAAK,4DAA4D6C,EAAMC,EAAMtC,EAAc+C,CAAI,CAAC,CACpG,CAEA,SAASK,EAAoB9C,EAAKC,EAAK,CACnC,OAAAD,EAAMA,IAAQ,EACPF,EAAgB,EAAE,SAASE,EAAM,EAAGA,EAAM,EAAIC,CAAG,CAC5D,CAqBA,SAAS8C,EAAWC,EAAM,CAAE,MAAO,IAAM,CAAE,MAAM,IAAI,MAAM,GAAGA,CAAI,iBAAiB,CAAG,CAAG,CAIlF,SAASC,GAAO,CACnB,IAAMC,EAAMC,EAAK,KAAK,EACtB,OAAOC,EAAWF,CAAG,CACzB,CAEA,IAAIG,EAAsB,KAE1B,SAASC,GAAmB,CACxB,OAAID,IAAwB,MAAQA,EAAoB,aAAe,KACnEA,EAAsB,IAAI,YAAYF,EAAK,OAAO,MAAM,GAErDE,CACX,CAEA,SAASE,EAAyBC,EAAKC,EAAK,CACxCD,EAAMA,IAAQ,EAEd,IAAME,EADMJ,EAAiB,EACX,SAASE,EAAM,EAAGA,EAAM,EAAIC,CAAG,EAC3CE,EAAS,CAAC,EAChB,QAAS,EAAI,EAAG,EAAID,EAAM,OAAQ,IAC9BC,EAAO,KAAKP,EAAWM,EAAM,CAAC,CAAC,CAAC,EAEpC,OAAOC,CACX,CAEA,SAASC,EAAYC,EAAGC,EAAM,CAC1B,GAAI,CACA,OAAOD,EAAE,MAAM,KAAMC,CAAI,CAC7B,OAASC,EAAG,CACRZ,EAAK,qBAAqBa,EAAcD,CAAC,CAAC,CAC9C,CACJ,CAEA,eAAeE,EAAWC,EAAQC,EAAS,CACvC,GAAI,OAAO,UAAa,YAAcD,aAAkB,SAAU,CAC9D,GAAI,OAAO,YAAY,sBAAyB,WAC5C,GAAI,CACA,OAAO,MAAM,YAAY,qBAAqBA,EAAQC,CAAO,CAEjE,OAASJ,EAAG,CACR,GAAIG,EAAO,QAAQ,IAAI,cAAc,GAAK,mBACtC,QAAQ,KAAK,oMAAqMH,CAAC,MAGnN,OAAMA,CAEd,CAGJ,IAAMK,EAAQ,MAAMF,EAAO,YAAY,EACvC,OAAO,MAAM,YAAY,YAAYE,EAAOD,CAAO,CAEvD,KAAO,CACH,IAAME,EAAW,MAAM,YAAY,YAAYH,EAAQC,CAAO,EAE9D,OAAIE,aAAoB,YAAY,SACzB,CAAE,SAAAA,EAAU,OAAAH,CAAO,EAGnBG,CAEf,CACJ,CAEA,SAASC,GAAoB,CACzB,IAAMH,EAAU,CAAC,EACjB,OAAAA,EAAQ,IAAM,CAAC,EACfA,EAAQ,IAAI,2BAA6B,SAASI,EAAM,CACpDnB,EAAWmB,CAAI,CACnB,EACAJ,EAAQ,IAAI,4BAA8B,SAASI,EAAM,CACrD,IAAMrB,EAAMsB,EAAUD,CAAI,EAC1B,OAAOP,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,mCAAqC,OAAO,cAAgB,WAAa,aAAepB,EAAW,cAAc,EAC7HoB,EAAQ,IAAI,uCAAyC,SAASI,EAAME,EAAM,CACtE,IAAIC,EAAKC,EAAoBJ,EAAME,CAAI,EAAE,MAAM,EAC/CtB,EAAK,gBAAgBoB,EAAME,EAAO,EAAG,CAAC,EACtC,kBAAkBC,CAAE,CACxB,EACAP,EAAQ,IAAI,sBAAwB,SAASI,EAAME,EAAM,CACrD,IAAMvB,EAAM0B,EAAmBL,EAAME,CAAI,EACzC,OAAOT,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,sBAAwB,SAASI,EAAME,EAAM,CACrD,IAAMI,EAAML,EAAUC,CAAI,EACpBvB,EAAM,OAAO2B,GAAS,SAAWA,EAAM,OAC7CC,EAAkB,EAAEP,EAAO,EAAI,CAAC,EAAIQ,EAAW7B,CAAG,EAAI,EAAIA,EAC1D8B,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAI,CAACQ,EAAW7B,CAAG,CACrD,EACAiB,EAAQ,IAAI,sBAAwB,SAASI,EAAM,CAE/C,OAAOP,EADKO,CACY,CAC5B,EACAJ,EAAQ,IAAI,2BAA6B,UAAW,CAChD,IAAMjB,EAAM,IAAI,MAChB,OAAOc,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,6BAA+B,SAASI,EAAME,EAAM,CAC5D,IAAMvB,EAAMsB,EAAUC,CAAI,EAAE,MACtBQ,EAAOC,EAAkBhC,EAAKC,EAAK,kBAAmBA,EAAK,kBAAkB,EAC7EgC,EAAOC,EACbJ,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIY,EAClCH,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIU,CACtC,EACAd,EAAQ,IAAI,6BAA+B,SAASI,EAAME,EAAM,CAC5D,IAAIY,EACAC,EACJ,GAAI,CACAD,EAAcd,EACde,EAAcb,EACd,QAAQ,MAAMG,EAAmBL,EAAME,CAAI,CAAC,CAChD,QAAE,CACEtB,EAAK,gBAAgBkC,EAAaC,EAAa,CAAC,CACpD,CACJ,EACAnB,EAAQ,IAAI,4BAA8B,SAASI,EAAME,EAAM,CAC3D,IAAIC,EAAKnB,EAAyBgB,EAAME,CAAI,EAAE,MAAM,EACpDtB,EAAK,gBAAgBoB,EAAME,EAAO,EAAG,CAAC,EACtC,QAAQ,KAAK,GAAGC,CAAE,CACtB,EACAP,EAAQ,IAAI,yCAA2C,SAASI,EAAM,CAClE,IAAIZ,EACJ,GAAI,CACAA,EAASa,EAAUD,CAAI,YAAa,MACxC,MAAY,CACRZ,EAAS,EACb,CAEA,OADYA,CAEhB,EACAQ,EAAQ,IAAI,4BAA8B,SAASI,EAAM,CACrD,IAAMrB,EAAMsB,EAAUD,CAAI,EAAE,KAC5B,OAAOQ,EAAW7B,CAAG,EAAI,EAAIc,EAAcd,CAAG,CAClD,EACAiB,EAAQ,IAAI,qCAAuC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAM,CAC3G,IAAMrC,EAAMsB,EAAUD,CAAI,EAAE,cAAcK,EAAmBH,EAAMc,CAAI,CAAC,EACxE,OAAOvB,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,uCAAyC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAMC,EAAMC,EAAM,CACzH,IAAMvC,EAAMsB,EAAUD,CAAI,EAAE,gBAAgBE,IAAS,EAAI,OAAYG,EAAmBH,EAAMc,CAAI,EAAGX,EAAmBY,EAAMC,CAAI,CAAC,EACnI,OAAOzB,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,sCAAwC,SAASI,EAAME,EAAMc,EAAM,CAC3E,IAAMrC,EAAMsB,EAAUD,CAAI,EAAE,eAAeK,EAAmBH,EAAMc,CAAI,CAAC,EACzE,OAAOvB,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,sCAAwC,SAASI,EAAME,EAAMc,EAAM,CAC3E,IAAMrC,EAAMsB,EAAUD,CAAI,EAAE,eAAeK,EAAmBH,EAAMc,CAAI,CAAC,EACzE,OAAOR,EAAW7B,CAAG,EAAI,EAAIc,EAAcd,CAAG,CAClD,EACAiB,EAAQ,IAAI,0CAA4C,SAASI,EAAM,CACnE,IAAIZ,EACJ,GAAI,CACAA,EAASa,EAAUD,CAAI,YAAa,OACxC,MAAY,CACRZ,EAAS,EACb,CAEA,OADYA,CAEhB,EACAQ,EAAQ,IAAI,oCAAsC,SAASI,EAAME,EAAM,CACnE,IAAMvB,EAAMsB,EAAUC,CAAI,EAAE,aAC5B,IAAIQ,EAAOF,EAAW7B,CAAG,EAAI,EAAIgC,EAAkBhC,EAAKC,EAAK,kBAAmBA,EAAK,kBAAkB,EACnGgC,EAAOC,EACXJ,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIY,EAClCH,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIU,CACtC,EACAd,EAAQ,IAAI,uCAAyC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAM,CAC7Gf,EAAUD,CAAI,EAAE,gBAAgBK,EAAmBH,EAAMc,CAAI,CAAC,CAClE,EAAG,SAAS,CAAE,EACdpB,EAAQ,IAAI,oCAAsC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAMC,EAAMC,EAAM,CACtHjB,EAAUD,CAAI,EAAE,aAAaK,EAAmBH,EAAMc,CAAI,EAAGX,EAAmBY,EAAMC,CAAI,CAAC,CAC/F,EAAG,SAAS,CAAE,EACdtB,EAAQ,IAAI,8BAAgC,SAASI,EAAM,CACvD,IAAMrB,EAAMsB,EAAUD,CAAI,EAAE,OAC5B,OAAOQ,EAAW7B,CAAG,EAAI,EAAIc,EAAcd,CAAG,CAClD,EACAiB,EAAQ,IAAI,oCAAsC,SAASI,EAAM,CAE7D,OADYC,EAAUD,CAAI,EAAE,YAEhC,EACAJ,EAAQ,IAAI,wCAA0C,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAMC,EAAMC,EAAM,CAC1HjB,EAAUD,CAAI,EAAE,iBAAiBK,EAAmBH,EAAMc,CAAI,EAAGf,EAAUgB,CAAI,EAAGhB,EAAUiB,CAAI,CAAC,CACrG,EAAG,SAAS,CAAE,EACdtB,EAAQ,IAAI,kCAAoC,SAASI,EAAME,EAAM,CACjED,EAAUD,CAAI,EAAE,QAAUE,IAAS,CACvC,EACAN,EAAQ,IAAI,6BAA+B,SAASI,EAAME,EAAM,CAC5D,IAAMvB,EAAMsB,EAAUC,CAAI,EAAE,MACtBQ,EAAOC,EAAkBhC,EAAKC,EAAK,kBAAmBA,EAAK,kBAAkB,EAC7EgC,EAAOC,EACbJ,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIY,EAClCH,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIU,CACtC,EACAd,EAAQ,IAAI,gCAAkC,SAASI,EAAME,EAAMc,EAAM,CACrEf,EAAUD,CAAI,EAAE,MAAQK,EAAmBH,EAAMc,CAAI,CACzD,EACApB,EAAQ,IAAI,6BAA+B,SAASI,EAAME,EAAM,CAC5D,IAAMvB,EAAMsB,EAAUC,CAAI,EAAE,MACtBQ,EAAOC,EAAkBhC,EAAKC,EAAK,kBAAmBA,EAAK,kBAAkB,EAC7EgC,EAAOC,EACbJ,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIY,EAClCH,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIU,CACtC,EACAd,EAAQ,IAAI,gCAAkC,SAASI,EAAME,EAAMc,EAAM,CACrEf,EAAUD,CAAI,EAAE,MAAQK,EAAmBH,EAAMc,CAAI,CACzD,EACApB,EAAQ,IAAI,qCAAuC,SAASI,EAAM,CAC9D,IAAMrB,EAAMsB,EAAUD,CAAI,EAAE,cAC5B,OAAOQ,EAAW7B,CAAG,EAAI,EAAIc,EAAcd,CAAG,CAClD,EACAiB,EAAQ,IAAI,iCAAmC,SAASI,EAAM,CAC1D,IAAMrB,EAAMsB,EAAUD,CAAI,EAAE,UAC5B,OAAOQ,EAAW7B,CAAG,EAAI,EAAIc,EAAcd,CAAG,CAClD,EACAiB,EAAQ,IAAI,oCAAsC,SAASI,EAAME,EAAMc,EAAM,CACzEf,EAAUD,CAAI,EAAE,UAAYE,IAAS,EAAI,OAAYG,EAAmBH,EAAMc,CAAI,CACtF,EACApB,EAAQ,IAAI,mCAAqC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAM,CACnG,IAAMvB,EAAMsB,EAAUD,CAAI,EAAE,YAAYC,EAAUC,CAAI,CAAC,EACvD,OAAOT,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,oCAAsC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAM,CAC1G,IAAMrC,EAAMsB,EAAUD,CAAI,EAAE,aAAaC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,CAAC,EACzE,OAAOvB,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,mCAAqC,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAM,CACnG,IAAMvB,EAAMsB,EAAUD,CAAI,EAAE,YAAYC,EAAUC,CAAI,CAAC,EACvD,OAAOT,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,gCAAkC,SAASI,EAAM,CACzD,IAAMrB,EAAMsB,EAAUD,CAAI,EAAE,SAC5B,OAAOQ,EAAW7B,CAAG,EAAI,EAAIc,EAAcd,CAAG,CAClD,EACAiB,EAAQ,IAAI,6BAA+B,SAASI,EAAME,EAAMc,EAAMC,EAAM,CACxE,QAAQ,MAAMhB,EAAUD,CAAI,EAAGC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,EAAGf,EAAUgB,CAAI,CAAC,CACpF,EACArB,EAAQ,IAAI,6BAA+B,SAASI,EAAM,CACtD,QAAQ,MAAMC,EAAUD,CAAI,CAAC,CACjC,EACAJ,EAAQ,IAAI,6BAA+B,SAASI,EAAME,EAAMc,EAAMC,EAAM,CACxE,QAAQ,MAAMhB,EAAUD,CAAI,EAAGC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,EAAGf,EAAUgB,CAAI,CAAC,CACpF,EACArB,EAAQ,IAAI,4BAA8B,SAASI,EAAME,EAAMc,EAAMC,EAAM,CACvE,QAAQ,KAAKhB,EAAUD,CAAI,EAAGC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,EAAGf,EAAUgB,CAAI,CAAC,CACnF,EACArB,EAAQ,IAAI,2BAA6B,SAASI,EAAME,EAAMc,EAAMC,EAAM,CACtE,QAAQ,IAAIhB,EAAUD,CAAI,EAAGC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,EAAGf,EAAUgB,CAAI,CAAC,CAClF,EACArB,EAAQ,IAAI,4BAA8B,SAASI,EAAME,EAAMc,EAAMC,EAAM,CACvE,QAAQ,KAAKhB,EAAUD,CAAI,EAAGC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,EAAGf,EAAUgB,CAAI,CAAC,CACnF,EACArB,EAAQ,IAAI,4BAA8B,UAAW,CAAE,OAAOP,EAAY,UAAY,CAClF,IAAMV,EAAM,KAAK,KACjB,OAAOc,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,8BAAgC,UAAW,CAAE,OAAOP,EAAY,UAAY,CACpF,IAAMV,EAAM,OAAO,OACnB,OAAOc,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,kCAAoC,UAAW,CAAE,OAAOP,EAAY,UAAY,CACxF,IAAMV,EAAM,WAAW,WACvB,OAAOc,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,8BAAgC,UAAW,CAAE,OAAOP,EAAY,UAAY,CACpF,IAAMV,EAAM,OAAO,OACnB,OAAOc,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,wBAA0B,SAASI,EAAM,CAEjD,OADYC,EAAUD,CAAI,IAAM,MAEpC,EACAJ,EAAQ,IAAI,iCAAmC,SAASI,EAAME,EAAM,CAChE,IAAMvB,EAAM,IAAI,SAAS0B,EAAmBL,EAAME,CAAI,CAAC,EACvD,OAAOT,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,4BAA8B,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAM,CAC5F,IAAMvB,EAAMsB,EAAUD,CAAI,EAAE,KAAKC,EAAUC,CAAI,CAAC,EAChD,OAAOT,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,2BAA6B,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAM,CAC3F,IAAMvB,EAAM,QAAQ,IAAIsB,EAAUD,CAAI,EAAGC,EAAUC,CAAI,CAAC,EACxD,OAAOT,EAAcd,CAAG,CAC5B,EAAG,SAAS,CAAE,EACdiB,EAAQ,IAAI,2BAA6B,UAAW,CAChD,IAAMjB,EAAM,IAAI,OAChB,OAAOc,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,+BAAiC,SAASI,EAAM,CAExD,OADYC,EAAUD,CAAI,EAAE,QAAQ,CAExC,EACAJ,EAAQ,IAAI,0BAA4B,SAASI,EAAME,EAAM,CAEzD,OADY,OAAO,GAAGD,EAAUD,CAAI,EAAGC,EAAUC,CAAI,CAAC,CAE1D,EACAN,EAAQ,IAAI,2BAA6B,UAAW,CAAE,OAAOP,EAAY,SAAUW,EAAME,EAAMc,EAAM,CAEjG,OADY,QAAQ,IAAIf,EAAUD,CAAI,EAAGC,EAAUC,CAAI,EAAGD,EAAUe,CAAI,CAAC,CAE7E,EAAG,SAAS,CAAE,EACdpB,EAAQ,IAAI,wBAA0B,SAASI,EAAME,EAAM,CACvD,IAAMvB,EAAMwC,EAAYlB,EAAUC,CAAI,CAAC,EACjCQ,EAAOC,EAAkBhC,EAAKC,EAAK,kBAAmBA,EAAK,kBAAkB,EAC7EgC,EAAOC,EACbJ,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIY,EAClCH,EAAgB,EAAET,EAAO,EAAI,CAAC,EAAIU,CACtC,EACAd,EAAQ,IAAI,iBAAmB,SAASI,EAAME,EAAM,CAChD,MAAM,IAAI,MAAMG,EAAmBL,EAAME,CAAI,CAAC,CAClD,EACAN,EAAQ,IAAI,8BAAgC,SAASI,EAAME,EAAMc,EAAM,CACnE,IAAMrC,EAAMyC,EAAepB,EAAME,EAAM,EAAGmB,CAAgB,EAC1D,OAAO5B,EAAcd,CAAG,CAC5B,EACAiB,EAAQ,IAAI,8BAAgC,SAASI,EAAME,EAAMc,EAAM,CACnE,IAAMrC,EAAM2C,EAAYtB,EAAME,EAAM,IAAKqB,CAAgB,EACzD,OAAO9B,EAAcd,CAAG,CAC5B,EAEOiB,CACX,CAMA,SAAS4B,EAAoBC,EAAUC,EAAQ,CAC3C,OAAAC,EAAOF,EAAS,QAChBG,EAAW,uBAAyBF,EACpCG,EAAuB,KACvBC,EAAqB,KACrBC,EAAsB,KACtBC,EAAqB,KAGdL,CACX,CAkBA,eAAeM,EAAWC,EAAO,CAC7B,GAAIC,IAAS,OAAW,OAAOA,EAE3B,OAAOD,EAAU,MACjBA,EAAQ,IAAI,IAAI,yBAA0B,QAAQ,GAEtD,IAAME,EAAUC,EAAkB,GAE9B,OAAOH,GAAU,UAAa,OAAO,SAAY,YAAcA,aAAiB,SAAa,OAAO,KAAQ,YAAcA,aAAiB,OAC3IA,EAAQ,MAAMA,CAAK,GAKvB,GAAM,CAAE,SAAAI,EAAU,OAAAC,CAAO,EAAI,MAAMC,EAAW,MAAMN,EAAOE,CAAO,EAElE,OAAOK,EAAoBH,EAAUC,CAAM,CAC/C,CAGA,IAAOG,EAAQC,EC5oBf,IAAIC,EAAS,IAAI,OAAO,mBAAmB,EAE3C,aAAeC,GAAU,CACrB,QAAQ,IAAIA,CAAM,EACd,WAAY,QACZ,OAAO,OAAO,KAAKC,GAAU,CACzB,QAAQ,IAAI,+BAA+B,EACvCD,IAAW,GACXC,EAAO,kBAAkB,SAAS,EAClCA,EAAO,aAAa,WAAYC,GAAKA,EAAI,EAAG,CAAC,GACtCF,IAAW,EAClBC,EAAO,aAAa,aAAcC,GAAKA,EAAI,EAAG,CAAC,EACxC,QACPD,EAAO,aAAa,YAAaC,GAAKA,EAAI,EAAG,CAAC,CAEtD,CAAC,CAET,EAEAC,EAAU,EAAE,KAAKD,GAAK,CAClB,IAAME,EAAoBC,EAAK,EAC/B,QAAQ,IAAI,iBAAkBD,CAAQ,EACtC,kBAAoBE,GAAQ,CACxBP,EAAO,YAAYO,CAAI,EACvB,QAAQ,IAAI,aAAa,CAC7B,EAEAP,EAAO,UAAYQ,GAAM,CACrBH,EAASG,EAAG,IAAI,CACpB,CACJ,CAAC", + "names": ["wasm", "heap", "getObject", "idx", "heap_next", "dropObject", "takeObject", "ret", "addHeapObject", "obj", "cachedTextDecoder", "cachedUint8Memory0", "getUint8Memory0", "getStringFromWasm0", "ptr", "len", "isLikeNone", "x", "cachedFloat64Memory0", "getFloat64Memory0", "cachedInt32Memory0", "getInt32Memory0", "debugString", "val", "type", "description", "name", "length", "debug", "i", "builtInMatches", "className", "WASM_VECTOR_LEN", "cachedTextEncoder", "encodeString", "arg", "view", "buf", "passStringToWasm0", "malloc", "realloc", "mem", "offset", "code", "makeMutClosure", "arg0", "arg1", "dtor", "f", "state", "real", "args", "a", "passArray8ToWasm0", "__wbg_adapter_18", "arg2", "ptr0", "len0", "makeClosure", "__wbg_adapter_21", "getArrayU8FromWasm0", "notDefined", "what", "main", "ret", "wasm", "takeObject", "cachedUint32Memory0", "getUint32Memory0", "getArrayJsValueFromWasm0", "ptr", "len", "slice", "result", "handleError", "f", "args", "e", "addHeapObject", "__wbg_load", "module", "imports", "bytes", "instance", "__wbg_get_imports", "arg0", "getObject", "arg1", "v0", "getArrayU8FromWasm0", "getStringFromWasm0", "obj", "getFloat64Memory0", "isLikeNone", "getInt32Memory0", "ptr1", "passStringToWasm0", "len1", "WASM_VECTOR_LEN", "deferred0_0", "deferred0_1", "arg2", "arg3", "arg4", "debugString", "makeMutClosure", "__wbg_adapter_18", "makeClosure", "__wbg_adapter_21", "__wbg_finalize_init", "instance", "module", "wasm", "__wbg_init", "cachedFloat64Memory0", "cachedInt32Memory0", "cachedUint32Memory0", "cachedUint8Memory0", "__wbg_init", "input", "wasm", "imports", "__wbg_get_imports", "instance", "module", "__wbg_load", "__wbg_finalize_init", "tic_tac_toe_4d_default", "__wbg_init", "worker", "winner", "points", "x", "tic_tac_toe_4d_default", "callback", "main", "data", "ev"] +} diff --git a/experiments/tictactoe4d/assets/horiz0.svg b/experiments/tictactoe4d/assets/horiz0.svg new file mode 100644 index 0000000..9fd2d1a --- /dev/null +++ b/experiments/tictactoe4d/assets/horiz0.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/horiz1.svg b/experiments/tictactoe4d/assets/horiz1.svg new file mode 100644 index 0000000..ab749d6 --- /dev/null +++ b/experiments/tictactoe4d/assets/horiz1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/horiz2.svg b/experiments/tictactoe4d/assets/horiz2.svg new file mode 100644 index 0000000..cef1deb --- /dev/null +++ b/experiments/tictactoe4d/assets/horiz2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/horiz3.svg b/experiments/tictactoe4d/assets/horiz3.svg new file mode 100644 index 0000000..f0e68fb --- /dev/null +++ b/experiments/tictactoe4d/assets/horiz3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/vert0.svg b/experiments/tictactoe4d/assets/vert0.svg new file mode 100644 index 0000000..73623e2 --- /dev/null +++ b/experiments/tictactoe4d/assets/vert0.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/vert1.svg b/experiments/tictactoe4d/assets/vert1.svg new file mode 100644 index 0000000..297e611 --- /dev/null +++ b/experiments/tictactoe4d/assets/vert1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/vert2.svg b/experiments/tictactoe4d/assets/vert2.svg new file mode 100644 index 0000000..30f1634 --- /dev/null +++ b/experiments/tictactoe4d/assets/vert2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/assets/vert3.svg b/experiments/tictactoe4d/assets/vert3.svg new file mode 100644 index 0000000..2281a14 --- /dev/null +++ b/experiments/tictactoe4d/assets/vert3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/app.css b/experiments/tictactoe4d/dist/app.css new file mode 100644 index 0000000..bf1910e --- /dev/null +++ b/experiments/tictactoe4d/dist/app.css @@ -0,0 +1,2 @@ +.layer{margin:1em;border:1px solid #666;display:inline-block}.cell{display:flex;flex-direction:column}.slot{width:2rem;height:2rem;display:inline-block;border:1px solid #aaa;font-size:.5em}.slot-1{background:#00f}.slot-2{background:red}.board,.row{display:flex}.highlight{width:50%;height:50%;top:25%;left:25%;position:relative}.abspos-indicator{height:100%;background-size:cover} +/*# sourceMappingURL=app.css.map */ diff --git a/experiments/tictactoe4d/dist/app.css.map b/experiments/tictactoe4d/dist/app.css.map new file mode 100644 index 0000000..326271a --- /dev/null +++ b/experiments/tictactoe4d/dist/app.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../app.css"], + "sourcesContent": [".layer {\n margin: 1em;\n border: 1px solid #666;\n display: inline-block;\n}\n.cell {\n display: flex;\n flex-direction: column;\n}\n.slot {\n width: 2rem;\n height: 2rem;\n display: inline-block;\n border: 1px solid #aaa;\n font-size: 0.5em;\n}\n.slot-1 {\n background: blue;\n}\n.slot-2 {\n background: red;\n}\n.board {\n display: flex;\n}\n.row {\n display: flex;\n}\n.highlight {\n width: 50%;\n height: 50%;\n top: 25%;\n left: 25%;\n position: relative;\n}\n.abspos-indicator {\n height: 100%;\n background-size: cover;\n}"], + "mappings": "AAAA,CAAC,MAAD,OACY,IACR,OAAQ,IAAI,MAAM,KAClB,QAAS,YACb,CACA,CAAC,KACG,QAAS,KACT,eAAgB,MACpB,CACA,CAAC,KACG,MAAO,KACP,OAAQ,KACR,QAAS,aACT,OAAQ,IAAI,MAAM,KAClB,UAAW,IACf,CACA,CAAC,OACG,WAAY,IAChB,CACA,CAAC,OACG,WAAY,GAChB,CACA,CAAC,MAGD,CAAC,IAFG,QAAS,IACb,CAIA,CAAC,UACG,MAAO,IACP,OAAQ,IACR,IAAK,IACL,KAAM,IACN,SAAU,QACd,CACA,CAAC,iBACG,OAAQ,KACR,gBAAiB,KACrB", + "names": [] +} diff --git a/experiments/tictactoe4d/dist/app.js b/experiments/tictactoe4d/dist/app.js new file mode 100644 index 0000000..b573f8c --- /dev/null +++ b/experiments/tictactoe4d/dist/app.js @@ -0,0 +1,3 @@ +(()=>{var a,w=new Array(128).fill(void 0);w.push(void 0,null,!0,!1);function c(n){return w[n]}var v=w.length;function R(n){n<132||(w[n]=v,v=n)}function T(n){let e=c(n);return R(n),e}function _(n){v===w.length&&w.push(w.length+1);let e=v;return v=w[e],w[e]=n,e}var S=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&S.decode();var k=null;function m(){return(k===null||k.byteLength===0)&&(k=new Uint8Array(a.memory.buffer)),k}function s(n,e){return n=n>>>0,S.decode(m().subarray(n,n+e))}function g(n){return n==null}var A=null;function U(){return(A===null||A.byteLength===0)&&(A=new Float64Array(a.memory.buffer)),A}var x=null;function l(){return(x===null||x.byteLength===0)&&(x=new Int32Array(a.memory.buffer)),x}function M(n){let e=typeof n;if(e=="number"||e=="boolean"||n==null)return`${n}`;if(e=="string")return`"${n}"`;if(e=="symbol"){let o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(e=="function"){let o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){let o=n.length,i="[";o>0&&(i+=M(n[0]));for(let u=1;u1)r=t[1];else return toString.call(n);if(r=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message} +${n.stack}`:r}var d=0,W=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},C=typeof W.encodeInto=="function"?function(n,e){return W.encodeInto(n,e)}:function(n,e){let t=W.encode(n);return e.set(t),{read:n.length,written:t.length}};function p(n,e,t){if(t===void 0){let f=W.encode(n),h=e(f.length,1)>>>0;return m().subarray(h,h+f.length).set(f),d=f.length,h}let r=n.length,o=e(r,1)>>>0,i=m(),u=0;for(;u127)break;i[o+u]=f}if(u!==r){u!==0&&(n=n.slice(u)),o=t(o,r,r=u+n.length*3,1)>>>0;let f=m().subarray(o+u,o+r),h=C(n,f);u+=h.written}return d=u,o}function F(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},i=(...u)=>{o.cnt++;let f=o.a;o.a=0;try{return r(f,o.b,...u)}finally{--o.cnt===0?a.__wbindgen_export_2.get(o.dtor)(f,o.b):o.a=f}};return i.original=o,i}function B(n,e){let t=e(n.length*1,1)>>>0;return m().set(n,t/1),d=n.length,t}function D(n,e,t){let r=B(t,a.__wbindgen_malloc),o=d;a.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(n,e,r,o)}function N(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},i=(...u)=>{o.cnt++;try{return r(o.a,o.b,...u)}finally{--o.cnt===0&&(a.__wbindgen_export_2.get(o.dtor)(o.a,o.b),o.a=0)}};return i.original=o,i}function $(n,e,t){a.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(n,e,_(t))}function V(n,e){return n=n>>>0,m().subarray(n/1,n/1+e)}function z(n){return()=>{throw new Error(`${n} is not defined`)}}function O(){let n=a.main();return T(n)}var E=null;function q(){return(E===null||E.byteLength===0)&&(E=new Uint32Array(a.memory.buffer)),E}function J(n,e){n=n>>>0;let r=q().subarray(n/4,n/4+e),o=[];for(let i=0;i"u"&&(n=new URL("tic_tac_toe_4d_bg.wasm",location));let e=G();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));let{instance:t,module:r}=await H(await n,e);return K(t,r)}var I=j;var L=new Worker("webworker_glue.js"),y;win_callback=n=>{console.log(n),y&&(n===1?(y.unlockAchievement("ttt4Win"),y.updateMetric("ttt4Wins",e=>e+1,0)):n===2?y.updateMetric("ttt4Losses",e=>e+1,0):isDraw&&y.updateMetric("ttt4Draws",e=>e+1,0))};"points"in window&&window.points.then(n=>{y=n});I().then(n=>{let e=O();console.log("rust initiated",e),run_ai_background=t=>{L.postMessage(t),console.log("dispatching")},L.onmessage=t=>{e(t.data)}});})(); +//# sourceMappingURL=app.js.map diff --git a/experiments/tictactoe4d/dist/app.js.map b/experiments/tictactoe4d/dist/app.js.map new file mode 100644 index 0000000..7d8db73 --- /dev/null +++ b/experiments/tictactoe4d/dist/app.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../pkg/tic_tac_toe_4d.js", "../src/app.js"], + "sourcesContent": ["let wasm;\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nfunction __wbg_adapter_18(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm0(arg2, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(arg0, arg1, ptr0, len0);\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_21(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array} state\n* @returns {Uint8Array}\n*/\nexport function run_ai(state) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(state, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.run_ai(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1, 1);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n* @returns {any}\n*/\nexport function main() {\n const ret = wasm.main();\n return takeObject(ret);\n}\n\nlet cachedUint32Memory0 = null;\n\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_wincallback_a6a4fc5b782108cf = typeof win_callback == 'function' ? win_callback : notDefined('win_callback');\n imports.wbg.__wbg_runaibackground_8f0429c82a23ffaf = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n run_ai_background(v0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_warn_40349716c899750a = function(arg0, arg1) {\n var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 4, 4);\n console.warn(...v0);\n };\n imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_body_4579ae140279af20 = function(arg0) {\n const ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createElement_d15f046703844f09 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createElementNS_11acf9c78d336078 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createTextNode_18d067bf6369a475 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getElementById_af8feeb3fb877150 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Element_c9423704dd5d9b1d = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Element;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_namespaceURI_9fd9462aeda0a089 = function(arg0, arg1) {\n const ret = getObject(arg1).namespaceURI;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_removeAttribute_8f442821de341f11 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_setAttribute_fecb2c0d020f422f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_target_ee132da05a9ef949 = function(arg0) {\n const ret = getObject(arg0).target;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_cancelBubble_5739e699df6294b0 = function(arg0) {\n const ret = getObject(arg0).cancelBubble;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_1151978b9ef85f25 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4));\n }, arguments) };\n imports.wbg.__wbg_setchecked_b4c153b5e9fbc166 = function(arg0, arg1) {\n getObject(arg0).checked = arg1 !== 0;\n };\n imports.wbg.__wbg_value_a2e4cbb5179fb3b8 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_f9de54bc4a5880ce = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_value_6b1ddbb6e9155da3 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_5ef50a7282dd6d7e = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_parentElement_5a7090f336d94c74 = function(arg0) {\n const ret = getObject(arg0).parentElement;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_lastChild_b2bc9e1e4adf0cda = function(arg0) {\n const ret = getObject(arg0).lastChild;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_setnodeValue_7ed608b56bb5f51b = function(arg0, arg1, arg2) {\n getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_appendChild_f60942b2565cb803 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_insertBefore_d8e803d8ba9a41b8 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_removeChild_38dc2b8a0f4f0a41 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).removeChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_document_17e852b4666eac5e = function(arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_debug_ca7d8917245536d0 = function(arg0, arg1, arg2, arg3) {\n console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_error_1189b5de6dd1b808 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_error_4a7b91f097a233a5 = function(arg0, arg1, arg2, arg3) {\n console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_info_d4ce670cd6ec6fde = function(arg0, arg1, arg2, arg3) {\n console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_log_50738d2ca2ec904a = function(arg0, arg1, arg2, arg3) {\n console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_warn_2eee9ed96860a8b7 = function(arg0, arg1, arg2, arg3) {\n console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_self_c4a869f7521d7b18 = function() { return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_f76bff89ab6e4c74 = function() { return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_71824672ea2add7c = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_f78549112bdb0090 = function() { return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_4cbce0ba8003ced4 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_875d4ea9abbec88f = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_get_02999bb2caeeff61 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_fc6bfaed5ca1b77a = function() {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_valueOf_b57a82897edf3264 = function(arg0) {\n const ret = getObject(arg0).valueOf();\n return ret;\n };\n imports.wbg.__wbg_is_e0a4fb92be049653 = function(arg0, arg1) {\n const ret = Object.is(getObject(arg0), getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_set_3340302df484a06c = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_closure_wrapper103 = function(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 6, __wbg_adapter_18);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper322 = function(arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 111, __wbg_adapter_21);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === 'undefined') {\n input = new URL('tic_tac_toe_4d_bg.wasm', location);\n }\n const imports = __wbg_get_imports();\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync }\nexport default __wbg_init;\n", "import wasm_init from \"../pkg/tic_tac_toe_4d\"\nimport \"../app.css\"\nimport * as wasm_api from \"../pkg/tic_tac_toe_4d\"\n\nvar worker = new Worker(\"webworker_glue.js\")\n\nlet achievementSystem\n\nwin_callback = winner => {\n console.log(winner)\n if (achievementSystem) {\n if (winner === 1) {\n achievementSystem.unlockAchievement(`ttt4Win`)\n achievementSystem.updateMetric(`ttt4Wins`, x => x + 1, 0)\n } else if (winner === 2) { \n achievementSystem.updateMetric(`ttt4Losses`, x => x + 1, 0)\n } else if (isDraw) {\n achievementSystem.updateMetric(`ttt4Draws`, x => x + 1, 0)\n }\n }\n}\n\nif (\"points\" in window) {\n window.points.then(x => { achievementSystem = x })\n}\n\nwasm_init().then(x => {\n const callback = wasm_api.main()\n console.log(\"rust initiated\", callback)\n run_ai_background = data => {\n worker.postMessage(data)\n console.log(\"dispatching\")\n }\n \n worker.onmessage = ev => {\n callback(ev.data)\n }\n})"], + "mappings": "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", + "names": ["wasm", "heap", "getObject", "idx", "heap_next", "dropObject", "takeObject", "ret", "addHeapObject", "obj", "cachedTextDecoder", "cachedUint8Memory0", "getUint8Memory0", "getStringFromWasm0", "ptr", "len", "isLikeNone", "x", "cachedFloat64Memory0", "getFloat64Memory0", "cachedInt32Memory0", "getInt32Memory0", "debugString", "val", "type", "description", "name", "length", "debug", "i", "builtInMatches", "className", "WASM_VECTOR_LEN", "cachedTextEncoder", "encodeString", "arg", "view", "buf", "passStringToWasm0", "malloc", "realloc", "mem", "offset", "code", "makeMutClosure", "arg0", "arg1", "dtor", "f", "state", "real", "args", "a", "passArray8ToWasm0", "__wbg_adapter_18", "arg2", "ptr0", "len0", "makeClosure", "__wbg_adapter_21", "getArrayU8FromWasm0", "notDefined", "what", "main", "ret", "wasm", "takeObject", "cachedUint32Memory0", "getUint32Memory0", "getArrayJsValueFromWasm0", "ptr", "len", "slice", "result", "handleError", "f", "args", "e", "addHeapObject", "__wbg_load", "module", "imports", "bytes", "instance", "__wbg_get_imports", "arg0", "getObject", "arg1", "v0", "getArrayU8FromWasm0", "getStringFromWasm0", "obj", "getFloat64Memory0", "isLikeNone", "getInt32Memory0", "ptr1", "passStringToWasm0", "len1", "WASM_VECTOR_LEN", "deferred0_0", "deferred0_1", "arg2", "arg3", "arg4", "debugString", "makeMutClosure", "__wbg_adapter_18", "makeClosure", "__wbg_adapter_21", "__wbg_finalize_init", "instance", "module", "wasm", "__wbg_init", "cachedFloat64Memory0", "cachedInt32Memory0", "cachedUint32Memory0", "cachedUint8Memory0", "__wbg_init", "input", "wasm", "imports", "__wbg_get_imports", "instance", "module", "__wbg_load", "__wbg_finalize_init", "tic_tac_toe_4d_default", "__wbg_init", "worker", "achievementSystem", "winner", "x", "tic_tac_toe_4d_default", "callback", "main", "data", "ev"] +} diff --git a/experiments/tictactoe4d/dist/assets/horiz0.svg b/experiments/tictactoe4d/dist/assets/horiz0.svg new file mode 100644 index 0000000..9fd2d1a --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/horiz0.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/horiz1.svg b/experiments/tictactoe4d/dist/assets/horiz1.svg new file mode 100644 index 0000000..ab749d6 --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/horiz1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/horiz2.svg b/experiments/tictactoe4d/dist/assets/horiz2.svg new file mode 100644 index 0000000..cef1deb --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/horiz2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/horiz3.svg b/experiments/tictactoe4d/dist/assets/horiz3.svg new file mode 100644 index 0000000..f0e68fb --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/horiz3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/vert0.svg b/experiments/tictactoe4d/dist/assets/vert0.svg new file mode 100644 index 0000000..73623e2 --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/vert0.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/vert1.svg b/experiments/tictactoe4d/dist/assets/vert1.svg new file mode 100644 index 0000000..297e611 --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/vert1.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/vert2.svg b/experiments/tictactoe4d/dist/assets/vert2.svg new file mode 100644 index 0000000..30f1634 --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/vert2.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/assets/vert3.svg b/experiments/tictactoe4d/dist/assets/vert3.svg new file mode 100644 index 0000000..2281a14 --- /dev/null +++ b/experiments/tictactoe4d/dist/assets/vert3.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/index.html b/experiments/tictactoe4d/dist/index.html new file mode 100644 index 0000000..87dd476 --- /dev/null +++ b/experiments/tictactoe4d/dist/index.html @@ -0,0 +1,12 @@ + + + + + 4D Tic-Tac-Toe + + + +
+ + + \ No newline at end of file diff --git a/experiments/tictactoe4d/dist/tic_tac_toe_4d_bg.wasm b/experiments/tictactoe4d/dist/tic_tac_toe_4d_bg.wasm new file mode 100644 index 0000000..c3ef586 Binary files /dev/null and b/experiments/tictactoe4d/dist/tic_tac_toe_4d_bg.wasm differ diff --git a/experiments/tictactoe4d/dist/webworker_glue.css b/experiments/tictactoe4d/dist/webworker_glue.css new file mode 100644 index 0000000..5bf2c91 --- /dev/null +++ b/experiments/tictactoe4d/dist/webworker_glue.css @@ -0,0 +1,41 @@ +/* app.css */ +.layer { + margin: 1em; + border: 1px solid #666; + display: inline-block; +} +.cell { + display: flex; + flex-direction: column; +} +.slot { + width: 2rem; + height: 2rem; + display: inline-block; + border: 1px solid #aaa; + font-size: 0.5em; +} +.slot-1 { + background: blue; +} +.slot-2 { + background: red; +} +.board { + display: flex; +} +.row { + display: flex; +} +.highlight { + width: 50%; + height: 50%; + top: 25%; + left: 25%; + position: relative; +} +.abspos-indicator { + height: 100%; + background-size: cover; +} +/*# sourceMappingURL=webworker_glue.css.map */ diff --git a/experiments/tictactoe4d/dist/webworker_glue.css.map b/experiments/tictactoe4d/dist/webworker_glue.css.map new file mode 100644 index 0000000..d5b8a8c --- /dev/null +++ b/experiments/tictactoe4d/dist/webworker_glue.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../app.css"], + "sourcesContent": [".layer {\n margin: 1em;\n border: 1px solid #666;\n display: inline-block;\n}\n.cell {\n display: flex;\n flex-direction: column;\n}\n.slot {\n width: 2rem;\n height: 2rem;\n display: inline-block;\n border: 1px solid #aaa;\n font-size: 0.5em;\n}\n.slot-1 {\n background: blue;\n}\n.slot-2 {\n background: red;\n}\n.board {\n display: flex;\n}\n.row {\n display: flex;\n}\n.highlight {\n width: 50%;\n height: 50%;\n top: 25%;\n left: 25%;\n position: relative;\n}\n.abspos-indicator {\n height: 100%;\n background-size: cover;\n}"], + "mappings": ";AAAA,CAAC;AACG,UAAQ;AACR,UAAQ,IAAI,MAAM;AAClB,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACT,kBAAgB;AACpB;AACA,CAAC;AACG,SAAO;AACP,UAAQ;AACR,WAAS;AACT,UAAQ,IAAI,MAAM;AAClB,aAAW;AACf;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,SAAO;AACP,UAAQ;AACR,OAAK;AACL,QAAM;AACN,YAAU;AACd;AACA,CAAC;AACG,UAAQ;AACR,mBAAiB;AACrB;", + "names": [] +} diff --git a/experiments/tictactoe4d/dist/webworker_glue.js b/experiments/tictactoe4d/dist/webworker_glue.js new file mode 100644 index 0000000..f63adc3 --- /dev/null +++ b/experiments/tictactoe4d/dist/webworker_glue.js @@ -0,0 +1,3 @@ +(()=>{var i,d=new Array(128).fill(void 0);d.push(void 0,null,!0,!1);function c(n){return d[n]}var x=d.length;function U(n){n<132||(d[n]=x,x=n)}function W(n){let e=c(n);return U(n),e}function u(n){x===d.length&&d.push(d.length+1);let e=x;return x=d[e],d[e]=n,e}var M=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&M.decode();var p=null;function m(){return(p===null||p.byteLength===0)&&(p=new Uint8Array(i.memory.buffer)),p}function b(n,e){return n=n>>>0,M.decode(m().subarray(n,n+e))}function w(n){return n==null}var A=null;function C(){return(A===null||A.byteLength===0)&&(A=new Float64Array(i.memory.buffer)),A}var E=null;function l(){return(E===null||E.byteLength===0)&&(E=new Int32Array(i.memory.buffer)),E}function T(n){let e=typeof n;if(e=="number"||e=="boolean"||n==null)return`${n}`;if(e=="string")return`"${n}"`;if(e=="symbol"){let o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(e=="function"){let o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){let o=n.length,_="[";o>0&&(_+=T(n[0]));for(let a=1;a1)r=t[1];else return toString.call(n);if(r=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message} +${n.stack}`:r}var g=0,v=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},F=typeof v.encodeInto=="function"?function(n,e){return v.encodeInto(n,e)}:function(n,e){let t=v.encode(n);return e.set(t),{read:n.length,written:t.length}};function h(n,e,t){if(t===void 0){let s=v.encode(n),y=e(s.length,1)>>>0;return m().subarray(y,y+s.length).set(s),g=s.length,y}let r=n.length,o=e(r,1)>>>0,_=m(),a=0;for(;a127)break;_[o+a]=s}if(a!==r){a!==0&&(n=n.slice(a)),o=t(o,r,r=a+n.length*3,1)>>>0;let s=m().subarray(o+a,o+r),y=F(n,s);a+=y.written}return g=a,o}function L(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},_=(...a)=>{o.cnt++;let s=o.a;o.a=0;try{return r(s,o.b,...a)}finally{--o.cnt===0?i.__wbindgen_export_2.get(o.dtor)(s,o.b):o.a=s}};return _.original=o,_}function S(n,e){let t=e(n.length*1,1)>>>0;return m().set(n,t/1),g=n.length,t}function B(n,e,t){let r=S(t,i.__wbindgen_malloc),o=g;i.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(n,e,r,o)}function N(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},_=(...a)=>{o.cnt++;try{return r(o.a,o.b,...a)}finally{--o.cnt===0&&(i.__wbindgen_export_2.get(o.dtor)(o.a,o.b),o.a=0)}};return _.original=o,_}function $(n,e,t){i.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(n,e,u(t))}function O(n,e){return n=n>>>0,m().subarray(n/1,n/1+e)}function j(n){try{let o=i.__wbindgen_add_to_stack_pointer(-16),_=S(n,i.__wbindgen_malloc),a=g;i.run_ai(o,_,a);var e=l()[o/4+0],t=l()[o/4+1],r=O(e,t).slice();return i.__wbindgen_free(e,t*1,1),r}finally{i.__wbindgen_add_to_stack_pointer(16)}}function D(n){return()=>{throw new Error(`${n} is not defined`)}}var k=null;function V(){return(k===null||k.byteLength===0)&&(k=new Uint32Array(i.memory.buffer)),k}function q(n,e){n=n>>>0;let r=V().subarray(n/4,n/4+e),o=[];for(let _=0;_"u"&&(n=new URL("tic_tac_toe_4d_bg.wasm",location));let e=z();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));let{instance:t,module:r}=await J(await n,e);return H(t,r)}var R=I;R().then(n=>{onmessage=e=>{postMessage(j(e.data))},console.log("background execution ready")});})(); +//# sourceMappingURL=webworker_glue.js.map diff --git a/experiments/tictactoe4d/dist/webworker_glue.js.map b/experiments/tictactoe4d/dist/webworker_glue.js.map new file mode 100644 index 0000000..f544167 --- /dev/null +++ b/experiments/tictactoe4d/dist/webworker_glue.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../pkg/tic_tac_toe_4d.js", "../src/webworker_glue.js"], + "sourcesContent": ["let wasm;\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nfunction __wbg_adapter_18(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm0(arg2, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(arg0, arg1, ptr0, len0);\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_21(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array} state\n* @returns {Uint8Array}\n*/\nexport function run_ai(state) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(state, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.run_ai(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1, 1);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n* @returns {any}\n*/\nexport function main() {\n const ret = wasm.main();\n return takeObject(ret);\n}\n\nlet cachedUint32Memory0 = null;\n\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_wincallback_a6a4fc5b782108cf = typeof win_callback == 'function' ? win_callback : notDefined('win_callback');\n imports.wbg.__wbg_runaibackground_8f0429c82a23ffaf = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n run_ai_background(v0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_warn_40349716c899750a = function(arg0, arg1) {\n var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 4, 4);\n console.warn(...v0);\n };\n imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_body_4579ae140279af20 = function(arg0) {\n const ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createElement_d15f046703844f09 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createElementNS_11acf9c78d336078 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createTextNode_18d067bf6369a475 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getElementById_af8feeb3fb877150 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Element_c9423704dd5d9b1d = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Element;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_namespaceURI_9fd9462aeda0a089 = function(arg0, arg1) {\n const ret = getObject(arg1).namespaceURI;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_removeAttribute_8f442821de341f11 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_setAttribute_fecb2c0d020f422f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_target_ee132da05a9ef949 = function(arg0) {\n const ret = getObject(arg0).target;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_cancelBubble_5739e699df6294b0 = function(arg0) {\n const ret = getObject(arg0).cancelBubble;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_1151978b9ef85f25 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4));\n }, arguments) };\n imports.wbg.__wbg_setchecked_b4c153b5e9fbc166 = function(arg0, arg1) {\n getObject(arg0).checked = arg1 !== 0;\n };\n imports.wbg.__wbg_value_a2e4cbb5179fb3b8 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_f9de54bc4a5880ce = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_value_6b1ddbb6e9155da3 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_5ef50a7282dd6d7e = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_parentElement_5a7090f336d94c74 = function(arg0) {\n const ret = getObject(arg0).parentElement;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_lastChild_b2bc9e1e4adf0cda = function(arg0) {\n const ret = getObject(arg0).lastChild;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_setnodeValue_7ed608b56bb5f51b = function(arg0, arg1, arg2) {\n getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_appendChild_f60942b2565cb803 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_insertBefore_d8e803d8ba9a41b8 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_removeChild_38dc2b8a0f4f0a41 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).removeChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_document_17e852b4666eac5e = function(arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_debug_ca7d8917245536d0 = function(arg0, arg1, arg2, arg3) {\n console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_error_1189b5de6dd1b808 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_error_4a7b91f097a233a5 = function(arg0, arg1, arg2, arg3) {\n console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_info_d4ce670cd6ec6fde = function(arg0, arg1, arg2, arg3) {\n console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_log_50738d2ca2ec904a = function(arg0, arg1, arg2, arg3) {\n console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_warn_2eee9ed96860a8b7 = function(arg0, arg1, arg2, arg3) {\n console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_self_c4a869f7521d7b18 = function() { return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_f76bff89ab6e4c74 = function() { return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_71824672ea2add7c = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_f78549112bdb0090 = function() { return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_4cbce0ba8003ced4 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_875d4ea9abbec88f = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_get_02999bb2caeeff61 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_fc6bfaed5ca1b77a = function() {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_valueOf_b57a82897edf3264 = function(arg0) {\n const ret = getObject(arg0).valueOf();\n return ret;\n };\n imports.wbg.__wbg_is_e0a4fb92be049653 = function(arg0, arg1) {\n const ret = Object.is(getObject(arg0), getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_set_3340302df484a06c = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_closure_wrapper103 = function(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 6, __wbg_adapter_18);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper322 = function(arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 111, __wbg_adapter_21);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === 'undefined') {\n input = new URL('tic_tac_toe_4d_bg.wasm', location);\n }\n const imports = __wbg_get_imports();\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync }\nexport default __wbg_init;\n", "import wasm_init from \"../pkg/tic_tac_toe_4d\"\nimport * as wasm_api from \"../pkg/tic_tac_toe_4d\"\n\nwasm_init().then(x => {\n onmessage = event => {\n postMessage(wasm_api.run_ai(event.data))\n }\n console.log(\"background execution ready\")\n})"], + "mappings": "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", + "names": ["wasm", "heap", "getObject", "idx", "heap_next", "dropObject", "takeObject", "ret", "addHeapObject", "obj", "cachedTextDecoder", "cachedUint8Memory0", "getUint8Memory0", "getStringFromWasm0", "ptr", "len", "isLikeNone", "x", "cachedFloat64Memory0", "getFloat64Memory0", "cachedInt32Memory0", "getInt32Memory0", "debugString", "val", "type", "description", "name", "length", "debug", "i", "builtInMatches", "className", "WASM_VECTOR_LEN", "cachedTextEncoder", "encodeString", "arg", "view", "buf", "passStringToWasm0", "malloc", "realloc", "mem", "offset", "code", "makeMutClosure", "arg0", "arg1", "dtor", "f", "state", "real", "args", "a", "passArray8ToWasm0", "__wbg_adapter_18", "arg2", "ptr0", "len0", "makeClosure", "__wbg_adapter_21", "getArrayU8FromWasm0", "run_ai", "retptr", "r0", "r1", "v2", "notDefined", "what", "cachedUint32Memory0", "getUint32Memory0", "wasm", "getArrayJsValueFromWasm0", "ptr", "len", "slice", "result", "i", "takeObject", "handleError", "f", "args", "e", "addHeapObject", "__wbg_load", "module", "imports", "bytes", "instance", "__wbg_get_imports", "arg0", "ret", "getObject", "notDefined", "arg1", "v0", "getArrayU8FromWasm0", "getStringFromWasm0", "obj", "getFloat64Memory0", "isLikeNone", "getInt32Memory0", "ptr1", "passStringToWasm0", "len1", "WASM_VECTOR_LEN", "deferred0_0", "deferred0_1", "arg2", "arg3", "arg4", "debugString", "makeMutClosure", "__wbg_adapter_18", "makeClosure", "__wbg_adapter_21", "__wbg_finalize_init", "instance", "module", "wasm", "__wbg_init", "cachedFloat64Memory0", "cachedInt32Memory0", "cachedUint32Memory0", "cachedUint8Memory0", "__wbg_init", "input", "wasm", "imports", "__wbg_get_imports", "instance", "module", "__wbg_load", "__wbg_finalize_init", "tic_tac_toe_4d_default", "__wbg_init", "tic_tac_toe_4d_default", "x", "event", "run_ai"] +} diff --git a/experiments/tictactoe4d/index.html b/experiments/tictactoe4d/index.html new file mode 100644 index 0000000..9dca710 --- /dev/null +++ b/experiments/tictactoe4d/index.html @@ -0,0 +1,8 @@ +--- +title: Tic-Tac-Toe (4⁴) +description: More dimensions. More confusion. Somewhat worse performance. 4D Tic-Tac-Toe. +slug: tictactoe4 +--- + +
+ \ No newline at end of file diff --git a/experiments/tictactoe4d/tic_tac_toe_4d_bg.wasm b/experiments/tictactoe4d/tic_tac_toe_4d_bg.wasm new file mode 100644 index 0000000..b082530 Binary files /dev/null and b/experiments/tictactoe4d/tic_tac_toe_4d_bg.wasm differ diff --git a/experiments/tictactoe4d/webworker_glue.css b/experiments/tictactoe4d/webworker_glue.css new file mode 100644 index 0000000..5bf2c91 --- /dev/null +++ b/experiments/tictactoe4d/webworker_glue.css @@ -0,0 +1,41 @@ +/* app.css */ +.layer { + margin: 1em; + border: 1px solid #666; + display: inline-block; +} +.cell { + display: flex; + flex-direction: column; +} +.slot { + width: 2rem; + height: 2rem; + display: inline-block; + border: 1px solid #aaa; + font-size: 0.5em; +} +.slot-1 { + background: blue; +} +.slot-2 { + background: red; +} +.board { + display: flex; +} +.row { + display: flex; +} +.highlight { + width: 50%; + height: 50%; + top: 25%; + left: 25%; + position: relative; +} +.abspos-indicator { + height: 100%; + background-size: cover; +} +/*# sourceMappingURL=webworker_glue.css.map */ diff --git a/experiments/tictactoe4d/webworker_glue.css.map b/experiments/tictactoe4d/webworker_glue.css.map new file mode 100644 index 0000000..d5b8a8c --- /dev/null +++ b/experiments/tictactoe4d/webworker_glue.css.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../app.css"], + "sourcesContent": [".layer {\n margin: 1em;\n border: 1px solid #666;\n display: inline-block;\n}\n.cell {\n display: flex;\n flex-direction: column;\n}\n.slot {\n width: 2rem;\n height: 2rem;\n display: inline-block;\n border: 1px solid #aaa;\n font-size: 0.5em;\n}\n.slot-1 {\n background: blue;\n}\n.slot-2 {\n background: red;\n}\n.board {\n display: flex;\n}\n.row {\n display: flex;\n}\n.highlight {\n width: 50%;\n height: 50%;\n top: 25%;\n left: 25%;\n position: relative;\n}\n.abspos-indicator {\n height: 100%;\n background-size: cover;\n}"], + "mappings": ";AAAA,CAAC;AACG,UAAQ;AACR,UAAQ,IAAI,MAAM;AAClB,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACT,kBAAgB;AACpB;AACA,CAAC;AACG,SAAO;AACP,UAAQ;AACR,WAAS;AACT,UAAQ,IAAI,MAAM;AAClB,aAAW;AACf;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,cAAY;AAChB;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,WAAS;AACb;AACA,CAAC;AACG,SAAO;AACP,UAAQ;AACR,OAAK;AACL,QAAM;AACN,YAAU;AACd;AACA,CAAC;AACG,UAAQ;AACR,mBAAiB;AACrB;", + "names": [] +} diff --git a/experiments/tictactoe4d/webworker_glue.js b/experiments/tictactoe4d/webworker_glue.js new file mode 100644 index 0000000..34c8da8 --- /dev/null +++ b/experiments/tictactoe4d/webworker_glue.js @@ -0,0 +1,3 @@ +(()=>{var i,d=new Array(128).fill(void 0);d.push(void 0,null,!0,!1);function c(n){return d[n]}var x=d.length;function U(n){n<132||(d[n]=x,x=n)}function W(n){let e=c(n);return U(n),e}function u(n){x===d.length&&d.push(d.length+1);let e=x;return x=d[e],d[e]=n,e}var M=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&M.decode();var p=null;function m(){return(p===null||p.byteLength===0)&&(p=new Uint8Array(i.memory.buffer)),p}function b(n,e){return n=n>>>0,M.decode(m().subarray(n,n+e))}function w(n){return n==null}var A=null;function C(){return(A===null||A.byteLength===0)&&(A=new Float64Array(i.memory.buffer)),A}var E=null;function l(){return(E===null||E.byteLength===0)&&(E=new Int32Array(i.memory.buffer)),E}function T(n){let e=typeof n;if(e=="number"||e=="boolean"||n==null)return`${n}`;if(e=="string")return`"${n}"`;if(e=="symbol"){let o=n.description;return o==null?"Symbol":`Symbol(${o})`}if(e=="function"){let o=n.name;return typeof o=="string"&&o.length>0?`Function(${o})`:"Function"}if(Array.isArray(n)){let o=n.length,_="[";o>0&&(_+=T(n[0]));for(let a=1;a1)r=t[1];else return toString.call(n);if(r=="Object")try{return"Object("+JSON.stringify(n)+")"}catch{return"Object"}return n instanceof Error?`${n.name}: ${n.message} +${n.stack}`:r}var g=0,v=typeof TextEncoder<"u"?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},F=typeof v.encodeInto=="function"?function(n,e){return v.encodeInto(n,e)}:function(n,e){let t=v.encode(n);return e.set(t),{read:n.length,written:t.length}};function h(n,e,t){if(t===void 0){let s=v.encode(n),y=e(s.length,1)>>>0;return m().subarray(y,y+s.length).set(s),g=s.length,y}let r=n.length,o=e(r,1)>>>0,_=m(),a=0;for(;a127)break;_[o+a]=s}if(a!==r){a!==0&&(n=n.slice(a)),o=t(o,r,r=a+n.length*3,1)>>>0;let s=m().subarray(o+a,o+r),y=F(n,s);a+=y.written}return g=a,o}function L(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},_=(...a)=>{o.cnt++;let s=o.a;o.a=0;try{return r(s,o.b,...a)}finally{--o.cnt===0?i.__wbindgen_export_2.get(o.dtor)(s,o.b):o.a=s}};return _.original=o,_}function S(n,e){let t=e(n.length*1,1)>>>0;return m().set(n,t/1),g=n.length,t}function B(n,e,t){let r=S(t,i.__wbindgen_malloc),o=g;i.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(n,e,r,o)}function N(n,e,t,r){let o={a:n,b:e,cnt:1,dtor:t},_=(...a)=>{o.cnt++;try{return r(o.a,o.b,...a)}finally{--o.cnt===0&&(i.__wbindgen_export_2.get(o.dtor)(o.a,o.b),o.a=0)}};return _.original=o,_}function $(n,e,t){i.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(n,e,u(t))}function O(n,e){return n=n>>>0,m().subarray(n/1,n/1+e)}function j(n){try{let o=i.__wbindgen_add_to_stack_pointer(-16),_=S(n,i.__wbindgen_malloc),a=g;i.run_ai(o,_,a);var e=l()[o/4+0],t=l()[o/4+1],r=O(e,t).slice();return i.__wbindgen_free(e,t*1,1),r}finally{i.__wbindgen_add_to_stack_pointer(16)}}function D(n){return()=>{throw new Error(`${n} is not defined`)}}var k=null;function V(){return(k===null||k.byteLength===0)&&(k=new Uint32Array(i.memory.buffer)),k}function q(n,e){n=n>>>0;let r=V().subarray(n/4,n/4+e),o=[];for(let _=0;_"u"&&(n=new URL("tic_tac_toe_4d_bg.wasm",location));let e=z();(typeof n=="string"||typeof Request=="function"&&n instanceof Request||typeof URL=="function"&&n instanceof URL)&&(n=fetch(n));let{instance:t,module:r}=await J(await n,e);return H(t,r)}var R=I;R().then(n=>{onmessage=e=>{postMessage(j(e.data))},console.log("background execution ready")});})(); +//# sourceMappingURL=webworker_glue.js.map diff --git a/experiments/tictactoe4d/webworker_glue.js.map b/experiments/tictactoe4d/webworker_glue.js.map new file mode 100644 index 0000000..b89eb57 --- /dev/null +++ b/experiments/tictactoe4d/webworker_glue.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../pkg/tic_tac_toe_4d.js", "../src/webworker_glue.js"], + "sourcesContent": ["let wasm;\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nfunction __wbg_adapter_18(arg0, arg1, arg2) {\n const ptr0 = passArray8ToWasm0(arg2, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.wasm_bindgen__convert__closures__invoke1_mut__h5860e381bcb9706c(arg0, arg1, ptr0, len0);\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_21(arg0, arg1, arg2) {\n wasm.wasm_bindgen__convert__closures__invoke1__h5a4fa13f3ec138ca(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array} state\n* @returns {Uint8Array}\n*/\nexport function run_ai(state) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(state, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.run_ai(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1, 1);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n* @returns {any}\n*/\nexport function main() {\n const ret = wasm.main();\n return takeObject(ret);\n}\n\nlet cachedUint32Memory0 = null;\n\nfunction getUint32Memory0() {\n if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\n\nfunction getArrayJsValueFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n const mem = getUint32Memory0();\n const slice = mem.subarray(ptr / 4, ptr / 4 + len);\n const result = [];\n for (let i = 0; i < slice.length; i++) {\n result.push(takeObject(slice[i]));\n }\n return result;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_object_clone_ref = function(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_wincallback_a6a4fc5b782108cf = typeof win_callback == 'function' ? win_callback : notDefined('win_callback');\n imports.wbg.__wbg_runaibackground_8f0429c82a23ffaf = function(arg0, arg1) {\n var v0 = getArrayU8FromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 1, 1);\n run_ai_background(v0);\n };\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof(obj) === 'number' ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbg_warn_40349716c899750a = function(arg0, arg1) {\n var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice();\n wasm.__wbindgen_free(arg0, arg1 * 4, 4);\n console.warn(...v0);\n };\n imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_body_4579ae140279af20 = function(arg0) {\n const ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_createElement_d15f046703844f09 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createElementNS_11acf9c78d336078 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_createTextNode_18d067bf6369a475 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getElementById_af8feeb3fb877150 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_instanceof_Element_c9423704dd5d9b1d = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Element;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_namespaceURI_9fd9462aeda0a089 = function(arg0, arg1) {\n const ret = getObject(arg1).namespaceURI;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_removeAttribute_8f442821de341f11 = function() { return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2));\n }, arguments) };\n imports.wbg.__wbg_setAttribute_fecb2c0d020f422f = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments) };\n imports.wbg.__wbg_target_ee132da05a9ef949 = function(arg0) {\n const ret = getObject(arg0).target;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_cancelBubble_5739e699df6294b0 = function(arg0) {\n const ret = getObject(arg0).cancelBubble;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_1151978b9ef85f25 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4));\n }, arguments) };\n imports.wbg.__wbg_setchecked_b4c153b5e9fbc166 = function(arg0, arg1) {\n getObject(arg0).checked = arg1 !== 0;\n };\n imports.wbg.__wbg_value_a2e4cbb5179fb3b8 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_f9de54bc4a5880ce = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_value_6b1ddbb6e9155da3 = function(arg0, arg1) {\n const ret = getObject(arg1).value;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_setvalue_5ef50a7282dd6d7e = function(arg0, arg1, arg2) {\n getObject(arg0).value = getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_parentElement_5a7090f336d94c74 = function(arg0) {\n const ret = getObject(arg0).parentElement;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_lastChild_b2bc9e1e4adf0cda = function(arg0) {\n const ret = getObject(arg0).lastChild;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_setnodeValue_7ed608b56bb5f51b = function(arg0, arg1, arg2) {\n getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n };\n imports.wbg.__wbg_appendChild_f60942b2565cb803 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_insertBefore_d8e803d8ba9a41b8 = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_removeChild_38dc2b8a0f4f0a41 = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).removeChild(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_document_17e852b4666eac5e = function(arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_debug_ca7d8917245536d0 = function(arg0, arg1, arg2, arg3) {\n console.debug(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_error_1189b5de6dd1b808 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_error_4a7b91f097a233a5 = function(arg0, arg1, arg2, arg3) {\n console.error(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_info_d4ce670cd6ec6fde = function(arg0, arg1, arg2, arg3) {\n console.info(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_log_50738d2ca2ec904a = function(arg0, arg1, arg2, arg3) {\n console.log(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_warn_2eee9ed96860a8b7 = function(arg0, arg1, arg2, arg3) {\n console.warn(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));\n };\n imports.wbg.__wbg_self_c4a869f7521d7b18 = function() { return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_window_f76bff89ab6e4c74 = function() { return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_globalThis_71824672ea2add7c = function() { return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_global_f78549112bdb0090 = function() { return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_4cbce0ba8003ced4 = function(arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_call_875d4ea9abbec88f = function() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_get_02999bb2caeeff61 = function() { return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments) };\n imports.wbg.__wbg_new_fc6bfaed5ca1b77a = function() {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_valueOf_b57a82897edf3264 = function(arg0) {\n const ret = getObject(arg0).valueOf();\n return ret;\n };\n imports.wbg.__wbg_is_e0a4fb92be049653 = function(arg0, arg1) {\n const ret = Object.is(getObject(arg0), getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_set_3340302df484a06c = function() { return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments) };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_closure_wrapper106 = function(arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 6, __wbg_adapter_18);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper334 = function(arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 119, __wbg_adapter_21);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint32Memory0 = null;\n cachedUint8Memory0 = null;\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === 'undefined') {\n input = new URL('tic_tac_toe_4d_bg.wasm', location);\n }\n const imports = __wbg_get_imports();\n\n if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync }\nexport default __wbg_init;\n", "import wasm_init from \"../pkg/tic_tac_toe_4d\"\nimport * as wasm_api from \"../pkg/tic_tac_toe_4d\"\n\nwasm_init().then(x => {\n onmessage = event => {\n postMessage(wasm_api.run_ai(event.data))\n }\n console.log(\"background execution ready\")\n})"], + "mappings": "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", + "names": ["wasm", "heap", "getObject", "idx", "heap_next", "dropObject", "takeObject", "ret", "addHeapObject", "obj", "cachedTextDecoder", "cachedUint8Memory0", "getUint8Memory0", "getStringFromWasm0", "ptr", "len", "isLikeNone", "x", "cachedFloat64Memory0", "getFloat64Memory0", "cachedInt32Memory0", "getInt32Memory0", "debugString", "val", "type", "description", "name", "length", "debug", "i", "builtInMatches", "className", "WASM_VECTOR_LEN", "cachedTextEncoder", "encodeString", "arg", "view", "buf", "passStringToWasm0", "malloc", "realloc", "mem", "offset", "code", "makeMutClosure", "arg0", "arg1", "dtor", "f", "state", "real", "args", "a", "passArray8ToWasm0", "__wbg_adapter_18", "arg2", "ptr0", "len0", "makeClosure", "__wbg_adapter_21", "getArrayU8FromWasm0", "run_ai", "retptr", "r0", "r1", "v2", "notDefined", "what", "cachedUint32Memory0", "getUint32Memory0", "wasm", "getArrayJsValueFromWasm0", "ptr", "len", "slice", "result", "i", "takeObject", "handleError", "f", "args", "e", "addHeapObject", "__wbg_load", "module", "imports", "bytes", "instance", "__wbg_get_imports", "arg0", "ret", "getObject", "notDefined", "arg1", "v0", "getArrayU8FromWasm0", "getStringFromWasm0", "obj", "getFloat64Memory0", "isLikeNone", "getInt32Memory0", "ptr1", "passStringToWasm0", "len1", "WASM_VECTOR_LEN", "deferred0_0", "deferred0_1", "arg2", "arg3", "arg4", "debugString", "makeMutClosure", "__wbg_adapter_18", "makeClosure", "__wbg_adapter_21", "__wbg_finalize_init", "instance", "module", "wasm", "__wbg_init", "cachedFloat64Memory0", "cachedInt32Memory0", "cachedUint32Memory0", "cachedUint8Memory0", "__wbg_init", "input", "wasm", "imports", "__wbg_get_imports", "instance", "module", "__wbg_load", "__wbg_finalize_init", "tic_tac_toe_4d_default", "__wbg_init", "tic_tac_toe_4d_default", "x", "event", "run_ai"] +} diff --git a/src/page.js b/src/page.js index b798d05..56a3e22 100644 --- a/src/page.js +++ b/src/page.js @@ -151,6 +151,12 @@ window.points = (async () => { conditions: "Recurse to a stack depth of 100 or more on RPNCalc v4", description: "For using RPNCalcV4 as it is meant to be used - highly, highly recursively.", points: 18.324 + }, + ttt4Win: { + title: "Shape Rotator", + conditions: "Win 4D Tic-Tac-Toe", + description: "You won a game of 4D Tic-Tac-Toe against our highly advanced artificial intelligence, showing your utter comprehension of 4D space.", + points: 37.9 } } @@ -407,21 +413,21 @@ if (sidenotes && footnotes) { const notes = [] // read off sidenotes to place for (const item of footnoteItems) { - const itemRect = item.getBoundingClientRect() const link = article.querySelector(`#${item.id.replace(/^fn/, "fnref")}`) const linkRect = link.getBoundingClientRect() item.style.position = "absolute" item.style.left = getComputedStyle(sidenotes).paddingLeft - item.style.marginBottom = item.style.marginTop = `${BORDER / 2}px` + item.style.paddingBottom = item.style.paddingTop = `${BORDER / 2}px` + const itemRect = item.getBoundingClientRect() notes.push({ item, - height: itemRect.height + BORDER, + height: itemRect.height, target: linkRect.top - snRect.top }) } // preliminary placement: place in valid regions going down for (const note of notes) { - const index = inclusions.findLastIndex(inc => (inc.start + note.height) < note.target) + const index = Math.max(inclusions.findLastIndex(inc => (inc.start + note.height) < note.target), 0) const next = inclusions.slice(index) .findIndex(inc => (sum(inc.contents.map(x => x.height)) + note.height) < (inc.end - inc.start)) inclusions[index + next].contents.push(note) @@ -506,6 +512,22 @@ if (sidenotes && footnotes) { window.relayout = relayout } +const fixDetailsSummary = () => { + const el = document.getElementById(window.location.hash.slice(1)) + var parent = el + if (!el) return + while (parent.parentElement) { + if (parent.nodeName === "DETAILS") { + parent.setAttribute("open", true) + } + parent = parent.parentElement + } + el.scrollIntoView() +} + +window.addEventListener("hashchange", fixDetailsSummary) +fixDetailsSummary() + const customStyle = localStorage.getItem("user-stylesheet") let customStyleEl = null if (customStyle) {