cubing 0.65.1 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/chunks/{chunk-PDPPBQ4O.js → chunk-VTD7RU7S.js} +2 -2
- package/dist/bin/order.js +1 -1
- package/dist/bin/puzzle-geometry-bin.js +1 -1
- package/dist/bin/scramble.js +1 -1
- package/dist/bin/svg.js +1 -1
- package/dist/lib/cubing/alg/index.d.ts +2 -2
- package/dist/lib/cubing/alg/index.js +1 -1
- package/dist/lib/cubing/bluetooth/index.d.ts +12 -13
- package/dist/lib/cubing/bluetooth/index.js +5 -5
- package/dist/lib/cubing/chunks/{big-puzzle-orientation-G75BXW2W.js → big-puzzle-orientation-KCHMEEM7.js} +2 -2
- package/dist/lib/cubing/chunks/{chunk-GO2SL6SC.js → chunk-4KLW7Y6J.js} +3 -3
- package/dist/lib/cubing/chunks/{chunk-O2QJENHE.js → chunk-6RZGNWLS.js} +3 -3
- package/dist/lib/cubing/chunks/{chunk-4ADGSRLK.js → chunk-CAQY24I5.js} +5 -5
- package/dist/lib/cubing/chunks/{chunk-YFNXHRNE.js → chunk-CFZLXDM6.js} +58 -24
- package/dist/lib/cubing/chunks/chunk-CFZLXDM6.js.map +7 -0
- package/dist/lib/cubing/chunks/{chunk-5LBACZOM.js → chunk-JL5REGXZ.js} +4 -4
- package/dist/lib/cubing/chunks/{chunk-UWJ575HH.js → chunk-K237RIQJ.js} +3 -3
- package/dist/lib/cubing/chunks/{chunk-THRYJMRP.js → chunk-L6OQRJJX.js} +2 -2
- package/dist/lib/cubing/chunks/{chunk-KHUP3BPA.js → chunk-XAOXLHYH.js} +4 -4
- package/dist/lib/cubing/chunks/{chunk-ALR6ZQFC.js → chunk-ZCZVKGKB.js} +2 -2
- package/dist/lib/cubing/chunks/{chunk-DT3GVMDI.js → chunk-ZV7PYR2S.js} +3 -3
- package/dist/lib/cubing/chunks/{inside-IHWUJJ56.js → inside-BAQGCKLY.js} +14 -14
- package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-YSB3MWLK.js → search-dynamic-sgs-side-events-KPAPKICT.js} +6 -6
- package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-OLK64DE6.js → search-dynamic-sgs-unofficial-WJZ2CWX5.js} +6 -6
- package/dist/lib/cubing/chunks/search-dynamic-sgs-unofficial-WJZ2CWX5.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-2A2XBBWI.js → search-dynamic-solve-4x4x4-OLWUV6G6.js} +7 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-4x4x4-OLWUV6G6.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-solve-fto-ZZKLTONP.js → search-dynamic-solve-fto-WLOW7LAM.js} +2 -2
- package/dist/lib/cubing/chunks/search-dynamic-solve-fto-WLOW7LAM.js.map +7 -0
- package/dist/lib/cubing/chunks/{search-dynamic-solve-kilominx-PUF4PRHS.js → search-dynamic-solve-kilominx-KKUOVW5Y.js} +2 -2
- package/dist/lib/cubing/chunks/search-dynamic-solve-kilominx-KKUOVW5Y.js.map +7 -0
- package/dist/lib/cubing/chunks/search-worker-entry.js +1 -1
- package/dist/lib/cubing/chunks/{twips-LHO3IYJC.js → twips-J732JDZJ.js} +2 -2
- package/dist/lib/cubing/chunks/{twisty-dynamic-3d-A2G22YLA.js → twisty-dynamic-3d-SFR3X64P.js} +105 -90
- package/dist/lib/cubing/chunks/twisty-dynamic-3d-SFR3X64P.js.map +7 -0
- package/dist/lib/cubing/{index-DVoQwgPC.d.ts → index-B2nOJwLe.d.ts} +42 -42
- package/dist/lib/cubing/{index-DO__MgsX.d.ts → index-Bfranlt_.d.ts} +1 -2
- package/dist/lib/cubing/kpuzzle/index.d.ts +2 -2
- package/dist/lib/cubing/kpuzzle/index.js +2 -2
- package/dist/lib/cubing/notation/index.d.ts +1 -2
- package/dist/lib/cubing/notation/index.js +4 -4
- package/dist/lib/cubing/{outside-D6O0WicV.d.ts → outside-BdYfq43N.d.ts} +2 -1
- package/dist/lib/cubing/protocol/index.d.ts +1 -2
- package/dist/lib/cubing/protocol/index.js +4 -4
- package/dist/lib/cubing/puzzle-geometry/index.d.ts +2 -2
- package/dist/lib/cubing/puzzle-geometry/index.js +1 -1
- package/dist/lib/cubing/puzzles/index.d.ts +2 -2
- package/dist/lib/cubing/puzzles/index.js +4 -4
- package/dist/lib/cubing/scramble/index.d.ts +1 -1
- package/dist/lib/cubing/scramble/index.js +6 -6
- package/dist/lib/cubing/search/index.d.ts +3 -4
- package/dist/lib/cubing/search/index.js +6 -6
- package/dist/lib/cubing/stream/index.d.ts +2 -2
- package/dist/lib/cubing/stream/index.js +1 -1
- package/dist/lib/cubing/twisty/index.d.ts +2 -2
- package/dist/lib/cubing/twisty/index.js +6 -6
- package/package.json +10 -9
- package/dist/lib/cubing/chunks/chunk-YFNXHRNE.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-sgs-unofficial-OLK64DE6.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-4x4x4-2A2XBBWI.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-fto-ZZKLTONP.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-kilominx-PUF4PRHS.js.map +0 -7
- package/dist/lib/cubing/chunks/twisty-dynamic-3d-A2G22YLA.js.map +0 -7
- /package/dist/bin/chunks/{chunk-PDPPBQ4O.js.map → chunk-VTD7RU7S.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{big-puzzle-orientation-G75BXW2W.js.map → big-puzzle-orientation-KCHMEEM7.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-GO2SL6SC.js.map → chunk-4KLW7Y6J.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-O2QJENHE.js.map → chunk-6RZGNWLS.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-4ADGSRLK.js.map → chunk-CAQY24I5.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-5LBACZOM.js.map → chunk-JL5REGXZ.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-UWJ575HH.js.map → chunk-K237RIQJ.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-THRYJMRP.js.map → chunk-L6OQRJJX.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-KHUP3BPA.js.map → chunk-XAOXLHYH.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-ALR6ZQFC.js.map → chunk-ZCZVKGKB.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{chunk-DT3GVMDI.js.map → chunk-ZV7PYR2S.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{inside-IHWUJJ56.js.map → inside-BAQGCKLY.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-YSB3MWLK.js.map → search-dynamic-sgs-side-events-KPAPKICT.js.map} +0 -0
- /package/dist/lib/cubing/chunks/{twips-LHO3IYJC.js.map → twips-J732JDZJ.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/cubing/vendor/mit/cs0x7f/cstimer/src/js/lib/mathlib.ts", "../../../../src/cubing/vendor/mit/cs0x7f/cstimer/src/js/scramble/444-solver.ts"],
|
|
4
|
-
"sourcesContent": ["const Cnk: number[][] = [];\nconst fact = [1];\nfor (let i = 0; i < 32; ++i) {\n Cnk[i] = [];\n for (let j = 0; j < 32; ++j) {\n Cnk[i][j] = 0;\n }\n}\nfor (let i = 0; i < 32; ++i) {\n Cnk[i][0] = Cnk[i][i] = 1;\n fact[i + 1] = fact[i] * (i + 1);\n for (let j = 1; j < i; ++j) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n}\n\nfunction circle(arr: number[], ...moreArgs: number[]) {\n const length = moreArgs.length;\n const temp = arr[moreArgs[length - 1]];\n for (let i = length; i > 0; i--) {\n arr[moreArgs[i]] = arr[moreArgs[i - 1]];\n }\n arr[moreArgs[0]] = temp;\n return circle;\n}\n\nfunction set8Perm(arr: number[], idx: number, n?: number, even?: number) {\n n = (n || 8) - 1;\n let val = 0x76543210;\n let prt = 0;\n even ??= 0;\n if (even < 0) {\n idx <<= 1;\n }\n for (let i = 0; i < n; ++i) {\n const p = fact[n - i];\n let v = ~~(idx / p);\n prt ^= v;\n idx %= p;\n v <<= 2;\n arr[i] = (val >> v) & 7;\n const m = (1 << v) - 1;\n val = (val & m) + ((val >> 4) & ~m);\n }\n if (even < 0 && (prt & 1) !== 0) {\n arr[n] = arr[n - 1];\n arr[n - 1] = val & 7;\n } else {\n arr[n] = val & 7;\n }\n return arr;\n}\n\nexport { Cnk, set8Perm, circle };\n", "// @ts-nocheck\n\nimport { Alg } from \"../../../../../../../alg\";\nimport { rawRandom333Scramble } from \"../../../../../../../search/cubing-private\";\nimport { circle, Cnk, set8Perm } from \"../lib/mathlib\";\nimport { randomUIntBelow } from \"random-uint-below\";\n\nfunction createArray(length1: number, length2?: number) {\n const result = new Array<number[]>(length1);\n if (length2 !== undefined) {\n for (let i = 0; i < length1; i++) {\n result[i] = new Array(length2);\n }\n }\n return result;\n}\n\nlet _: any;\nconst seedTable: Record<number, any> = {};\nconst CM$ = {};\nconst Q$Object = 0;\nconst Q$Serializable = 30;\nconst Q$Center1 = 21;\nconst Q$CornerCube = 22;\nconst Q$Edge3 = 23;\nconst Q$FullCube_0 = 24;\nconst Q$FullCube_$1 = 25;\nconst Q$Comparable = 34;\nconst Q$Search_0 = 26;\nconst Q$Object_$1 = 40;\n\nfunction newSeed(id: number) {\n return new seedTable[id]();\n}\n\nfunction defineSeed(\n id: number,\n superSeed: number,\n castableTypeMap: any, // TODO\n ...moreArgs: any[]\n) {\n let seed = seedTable[id];\n if (seed && !seed.___clazz$) {\n _ = seed.prototype;\n } else {\n !seed && (seed = seedTable[id] = function () {});\n _ = seed.prototype = superSeed < 0 ? {} : newSeed(superSeed);\n _.castableTypeMap$ = castableTypeMap;\n }\n for (const arg of moreArgs) {\n arg.prototype = _;\n }\n if (seed.___clazz$) {\n _.___clazz$ = seed.___clazz$;\n seed.___clazz$ = null;\n }\n}\n\nfunction makeCastMap(a: number[]) {\n const result: Record<number, number> = {};\n for (let i_0 = 0, c = a.length; i_0 < c; ++i_0) {\n result[a[i_0]] = 1;\n }\n return result;\n}\n\ndefineSeed(1, -1, CM$);\n\n_.value = null;\n\nfunction Array_0() {}\n\nfunction createFrom(a: any, length_0: number) {\n const result = createFromSeed(0, length_0);\n initValues(a.___clazz$, a.castableTypeMap$, a.queryId$, result);\n return result;\n}\n\nfunction createFromSeed(seedType: number, length_0: number) {\n const array = new Array(length_0);\n if (seedType === 3) {\n for (let i_0 = 0; i_0 < length_0; ++i_0) {\n const value = {\n m: 0,\n l: 0,\n h: 0,\n };\n value.l = value.m = value.h = 0;\n array[i_0] = value;\n }\n } else if (seedType > 0) {\n const value = [null, 0, false][seedType];\n for (let i_0 = 0; i_0 < length_0; ++i_0) {\n array[i_0] = value;\n }\n }\n return array;\n}\n\nfunction initDim(arrayClass, castableTypeMap, queryId, length_0, seedType) {\n const result = createFromSeed(seedType, length_0);\n initValues(arrayClass, castableTypeMap, queryId, result);\n return result;\n}\n\nfunction initValues(arrayClass, castableTypeMap, queryId, array) {\n $clinit_Array$ExpandoWrapper();\n wrapArray(array, expandoNames_0, expandoValues_0);\n array.___clazz$ = arrayClass;\n array.castableTypeMap$ = castableTypeMap;\n array.queryId$ = queryId;\n return array;\n}\n\nfunction setCheck(array, index, value) {\n return (array[index] = value);\n}\n\ndefineSeed(73, 1, {}, Array_0);\n_.queryId$ = 0;\n\nlet ran$clinit_Array$ExpandoWrapper = false;\nfunction $clinit_Array$ExpandoWrapper() {\n if (ran$clinit_Array$ExpandoWrapper) {\n return;\n }\n ran$clinit_Array$ExpandoWrapper = true;\n expandoNames_0 = [];\n expandoValues_0 = [];\n initExpandos(new Array_0(), expandoNames_0, expandoValues_0);\n}\n\nfunction initExpandos(protoType, expandoNames, expandoValues) {\n let i_0 = 0;\n let value;\n for (const name_0 in protoType) {\n if ((value = protoType[name_0])) {\n expandoNames[i_0] = name_0;\n expandoValues[i_0] = value;\n ++i_0;\n }\n }\n}\n\nfunction wrapArray(array, expandoNames, expandoValues) {\n $clinit_Array$ExpandoWrapper();\n for (let i_0 = 0, c = expandoNames.length; i_0 < c; ++i_0) {\n array[expandoNames[i_0]] = expandoValues[i_0];\n }\n}\n\nlet expandoNames_0;\nlet expandoValues_0;\n\nfunction canCast(src, dstId) {\n return src.castableTypeMap$ && !!src.castableTypeMap$[dstId];\n}\n\nfunction instanceOf(src, dstId) {\n return src !== null && canCast(src, dstId);\n}\n\nlet ran$clinit_Center1 = false;\nfunction $clinit_Center1() {\n if (ran$clinit_Center1) {\n return false;\n }\n ran$clinit_Center1 = true;\n ctsmv = createArray(15582, 36);\n sym2raw = createArray(15582);\n csprun = createArray(15582);\n symmult = createArray(48, 48);\n symmove = createArray(48, 36);\n syminv = createArray(48);\n finish_0 = createArray(48);\n}\n\nfunction $$init_1(this$static) {\n this$static.ct = createArray(24);\n}\n\nfunction $equals(this$static, obj) {\n let c;\n let i_0;\n if (instanceOf(obj, Q$Center1)) {\n c = obj;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n if (this$static.ct[i_0] !== c.ct[i_0]) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n\nfunction $get_1(this$static) {\n let i_0;\n let idx;\n let r;\n idx = 0;\n r = 8;\n for (i_0 = 23; i_0 >= 0; --i_0) {\n this$static.ct[i_0] === 1 && (idx += Cnk[i_0][r--]);\n }\n return idx;\n}\n\nfunction $getsym(this$static) {\n let cord;\n let j;\n if (raw2sym !== null) {\n return raw2sym[$get_1(this$static)];\n }\n for (j = 0; j < 48; ++j) {\n cord = raw2sym_0($get_1(this$static));\n if (cord !== -1) {\n return cord * 64 + j;\n }\n $rot(this$static, 0);\n j % 2 === 1 && $rot(this$static, 1);\n j % 8 === 7 && $rot(this$static, 2);\n j % 16 === 15 && $rot(this$static, 3);\n }\n}\n\nfunction $move(this$static, m_0) {\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n break;\n }\n case 1: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n break;\n }\n case 2: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n break;\n }\n case 3: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n break;\n }\n case 4: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n break;\n }\n case 5: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n break;\n }\n case 6: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n swap(this$static.ct, 8, 20, 12, 16, key);\n swap(this$static.ct, 9, 21, 13, 17, key);\n break;\n }\n case 7: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n swap(this$static.ct, 1, 15, 5, 9, key);\n swap(this$static.ct, 2, 12, 6, 10, key);\n break;\n }\n case 8: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n swap(this$static.ct, 2, 19, 4, 21, key);\n swap(this$static.ct, 3, 16, 5, 22, key);\n break;\n }\n case 9: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n swap(this$static.ct, 10, 18, 14, 22, key);\n swap(this$static.ct, 11, 19, 15, 23, key);\n break;\n }\n case 10: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n swap(this$static.ct, 0, 8, 4, 14, key);\n swap(this$static.ct, 3, 11, 7, 13, key);\n break;\n }\n case 11: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n swap(this$static.ct, 1, 20, 7, 18, key);\n swap(this$static.ct, 0, 23, 6, 17, key);\n }\n }\n}\n\nfunction $rot(this$static, r) {\n switch (r) {\n case 0: {\n $move(this$static, 19);\n $move(this$static, 28);\n break;\n }\n case 1: {\n $move(this$static, 21);\n $move(this$static, 32);\n break;\n }\n case 2: {\n swap(this$static.ct, 0, 3, 1, 2, 1);\n swap(this$static.ct, 8, 11, 9, 10, 1);\n swap(this$static.ct, 4, 7, 5, 6, 1);\n swap(this$static.ct, 12, 15, 13, 14, 1);\n swap(this$static.ct, 16, 19, 21, 22, 1);\n swap(this$static.ct, 17, 18, 20, 23, 1);\n break;\n }\n case 3: {\n $move(this$static, 18);\n $move(this$static, 29);\n $move(this$static, 24);\n $move(this$static, 35);\n }\n }\n}\n\nfunction $rotate(this$static, r) {\n let j;\n for (j = 0; j < r; ++j) {\n $rot(this$static, 0);\n j % 2 === 1 && $rot(this$static, 1);\n j % 8 === 7 && $rot(this$static, 2);\n j % 16 === 15 && $rot(this$static, 3);\n }\n}\n\nfunction $set_0(this$static, idx) {\n let i_0;\n let r;\n r = 8;\n for (i_0 = 23; i_0 >= 0; --i_0) {\n this$static.ct[i_0] = 0;\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.ct[i_0] = 1;\n }\n }\n}\n\nfunction $set_1(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this$static.ct[i_0] = c.ct[i_0];\n }\n}\n\nfunction Center1_0() {\n let i_0;\n $$init_1(this);\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this.ct[i_0] = 1;\n }\n for (i_0 = 8; i_0 < 24; ++i_0) {\n this.ct[i_0] = 0;\n }\n}\n\nfunction Center1_1(c, urf) {\n let i_0;\n $$init_1(this);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ct[i_0] = ~~(c.ct[i_0] / 2) === urf ? 1 : 0;\n }\n}\n\nfunction Center1_2(ct) {\n let i_0;\n $$init_1(this);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ct[i_0] = ct[i_0];\n }\n}\n\nfunction createMoveTable() {\n let i_0;\n let m_0;\n const c = new Center1_0();\n const d = new Center1_0();\n for (i_0 = 0; i_0 < 15582; ++i_0) {\n $set_0(d, sym2raw[i_0]);\n for (m_0 = 0; m_0 < 36; ++m_0) {\n $set_1(c, d);\n $move(c, m_0);\n ctsmv[i_0][m_0] = $getsym(c);\n }\n }\n}\n\nfunction createPrun() {\n let check;\n let depth;\n let done;\n let i_0;\n let idx;\n let inv;\n let m_0;\n let select;\n fill_0(csprun);\n csprun[0] = 0;\n depth = 0;\n done = 1;\n while (done !== 15582) {\n inv = depth > 4;\n select = inv ? -1 : depth;\n check = inv ? depth : -1;\n ++depth;\n for (i_0 = 0; i_0 < 15582; ++i_0) {\n if (csprun[i_0] !== select) {\n continue;\n }\n for (m_0 = 0; m_0 < 27; ++m_0) {\n idx = ~~ctsmv[i_0][m_0] >>> 6;\n if (csprun[idx] !== check) {\n continue;\n }\n ++done;\n if (inv) {\n csprun[i_0] = depth;\n break;\n } else {\n csprun[idx] = depth;\n }\n }\n }\n }\n}\n\nfunction getSolvedSym(cube) {\n let check;\n let i_0;\n let j;\n const c = new Center1_2(cube.ct);\n for (j = 0; j < 48; ++j) {\n check = true;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n if (c.ct[i_0] !== ~~(i_0 / 4)) {\n check = false;\n break;\n }\n }\n if (check) {\n return j;\n }\n $rot(c, 0);\n j % 2 === 1 && $rot(c, 1);\n j % 8 === 7 && $rot(c, 2);\n j % 16 === 15 && $rot(c, 3);\n }\n return -1;\n}\n\nfunction initSym_0() {\n let i_0;\n let j;\n let k_0;\n const c = new Center1_0();\n for (i_0 = 0; i_0 < 24; ++i_0) {\n c.ct[i_0] = i_0;\n }\n const d = new Center1_2(c.ct);\n const e = new Center1_2(c.ct);\n const f = new Center1_2(c.ct);\n for (i_0 = 0; i_0 < 48; ++i_0) {\n for (j = 0; j < 48; ++j) {\n for (k_0 = 0; k_0 < 48; ++k_0) {\n if ($equals(c, d)) {\n symmult[i_0][j] = k_0;\n k_0 === 0 && (syminv[i_0] = j);\n }\n $rot(d, 0);\n k_0 % 2 === 1 && $rot(d, 1);\n k_0 % 8 === 7 && $rot(d, 2);\n k_0 % 16 === 15 && $rot(d, 3);\n }\n $rot(c, 0);\n j % 2 === 1 && $rot(c, 1);\n j % 8 === 7 && $rot(c, 2);\n j % 16 === 15 && $rot(c, 3);\n }\n $rot(c, 0);\n i_0 % 2 === 1 && $rot(c, 1);\n i_0 % 8 === 7 && $rot(c, 2);\n i_0 % 16 === 15 && $rot(c, 3);\n }\n for (i_0 = 0; i_0 < 48; ++i_0) {\n $set_1(c, e);\n $rotate(c, syminv[i_0]);\n for (j = 0; j < 36; ++j) {\n $set_1(d, c);\n $move(d, j);\n $rotate(d, i_0);\n for (k_0 = 0; k_0 < 36; ++k_0) {\n $set_1(f, e);\n $move(f, k_0);\n if ($equals(f, d)) {\n symmove[i_0][j] = k_0;\n break;\n }\n }\n }\n }\n $set_0(c, 0);\n for (i_0 = 0; i_0 < 48; ++i_0) {\n finish_0[syminv[i_0]] = $get_1(c);\n $rot(c, 0);\n i_0 % 2 === 1 && $rot(c, 1);\n i_0 % 8 === 7 && $rot(c, 2);\n i_0 % 16 === 15 && $rot(c, 3);\n }\n}\n\nfunction initSym2Raw() {\n let count;\n let i_0;\n let idx;\n let j;\n const c = new Center1_0();\n const occ = createArray(22984);\n for (i_0 = 0; i_0 < 22984; i_0++) {\n occ[i_0] = 0;\n }\n count = 0;\n for (i_0 = 0; i_0 < 735471; ++i_0) {\n if ((occ[~~i_0 >>> 5] & (1 << (i_0 & 31))) === 0) {\n $set_0(c, i_0);\n for (j = 0; j < 48; ++j) {\n idx = $get_1(c);\n occ[~~idx >>> 5] |= 1 << (idx & 31);\n raw2sym !== null && (raw2sym[idx] = (count << 6) | syminv[j]);\n $rot(c, 0);\n j % 2 === 1 && $rot(c, 1);\n j % 8 === 7 && $rot(c, 2);\n j % 16 === 15 && $rot(c, 3);\n }\n sym2raw[count++] = i_0;\n }\n }\n}\n\nfunction raw2sym_0(n) {\n const m_0 = binarySearch_0(sym2raw, n);\n return m_0 >= 0 ? m_0 : -1;\n}\n\ndefineSeed(153, 1, makeCastMap([Q$Center1]), Center1_0, Center1_1, Center1_2);\n\nlet csprun;\nlet ctsmv;\nlet finish_0;\nlet raw2sym = null;\nlet sym2raw;\nlet syminv;\nlet symmove;\nlet symmult;\n\nlet ran$clinit_Center2 = false;\nfunction $clinit_Center2() {\n if (ran$clinit_Center2) {\n return;\n }\n ran$clinit_Center2 = true;\n rlmv = createArray(70, 28);\n ctmv = createArray(6435, 28);\n rlrot = createArray(70, 16);\n ctrot = createArray(6435, 16);\n ctprun = createArray(450450);\n pmv = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,\n 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n ];\n}\n\nfunction $getct(this$static) {\n let i_0;\n let idx;\n let r;\n idx = 0;\n r = 8;\n for (i_0 = 14; i_0 >= 0; --i_0) {\n this$static.ct[i_0] !== this$static.ct[15] && (idx += Cnk[i_0][r--]);\n }\n return idx;\n}\n\nfunction $getrl(this$static) {\n let i_0;\n let idx;\n let r;\n idx = 0;\n r = 4;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n this$static.rl[i_0] !== this$static.rl[7] && (idx += Cnk[i_0][r--]);\n }\n return idx * 2 + this$static.parity;\n}\n\nfunction $move_0(this$static, m_0) {\n this$static.parity ^= pmv[m_0];\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n break;\n }\n case 1: {\n swap(this$static.rl, 0, 1, 2, 3, key);\n break;\n }\n case 2: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n break;\n }\n case 3: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n break;\n }\n case 4: {\n swap(this$static.rl, 4, 5, 6, 7, key);\n break;\n }\n case 5: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n break;\n }\n case 6: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n swap(this$static.rl, 0, 5, 4, 1, key);\n swap(this$static.ct, 8, 9, 12, 13, key);\n break;\n }\n case 7: {\n swap(this$static.rl, 0, 1, 2, 3, key);\n swap(this$static.ct, 1, 15, 5, 9, key);\n swap(this$static.ct, 2, 12, 6, 10, key);\n break;\n }\n case 8: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n swap(this$static.rl, 0, 3, 6, 5, key);\n swap(this$static.ct, 3, 2, 5, 4, key);\n break;\n }\n case 9: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n swap(this$static.rl, 3, 2, 7, 6, key);\n swap(this$static.ct, 11, 10, 15, 14, key);\n break;\n }\n case 10: {\n swap(this$static.rl, 4, 5, 6, 7, key);\n swap(this$static.ct, 0, 8, 4, 14, key);\n swap(this$static.ct, 3, 11, 7, 13, key);\n break;\n }\n case 11: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n swap(this$static.rl, 1, 4, 7, 2, key);\n swap(this$static.ct, 1, 0, 7, 6, key);\n }\n }\n}\n\nfunction $rot_0(this$static, r) {\n switch (r) {\n case 0: {\n $move_0(this$static, 19);\n $move_0(this$static, 28);\n break;\n }\n case 1: {\n $move_0(this$static, 21);\n $move_0(this$static, 32);\n break;\n }\n case 2: {\n swap(this$static.ct, 0, 3, 1, 2, 1);\n swap(this$static.ct, 8, 11, 9, 10, 1);\n swap(this$static.ct, 4, 7, 5, 6, 1);\n swap(this$static.ct, 12, 15, 13, 14, 1);\n swap(this$static.rl, 0, 3, 5, 6, 1);\n swap(this$static.rl, 1, 2, 4, 7, 1);\n }\n }\n}\n\nfunction $set_2(this$static, c, edgeParity) {\n let i_0;\n for (i_0 = 0; i_0 < 16; ++i_0) {\n this$static.ct[i_0] = ~~(c.ct[i_0] / 2);\n }\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this$static.rl[i_0] = c.ct[i_0 + 16];\n }\n this$static.parity = edgeParity;\n}\n\nfunction $setct(this$static, idx) {\n let i_0;\n let r;\n r = 8;\n this$static.ct[15] = 0;\n for (i_0 = 14; i_0 >= 0; --i_0) {\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.ct[i_0] = 1;\n } else {\n this$static.ct[i_0] = 0;\n }\n }\n}\n\nfunction $setrl(this$static, idx) {\n let i_0;\n let r;\n this$static.parity = idx & 1;\n idx >>>= 1;\n r = 4;\n this$static.rl[7] = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.rl[i_0] = 1;\n } else {\n this$static.rl[i_0] = 0;\n }\n }\n}\n\nfunction Center2_0() {\n this.rl = createArray(8);\n this.ct = createArray(16);\n}\n\nfunction init_3() {\n let ct;\n let ctx;\n let depth;\n let done;\n let i_0;\n let idx;\n let j;\n let m_0;\n let rl;\n let rlx;\n const c = new Center2_0();\n for (i_0 = 0; i_0 < 70; ++i_0) {\n for (m_0 = 0; m_0 < 28; ++m_0) {\n $setrl(c, i_0);\n $move_0(c, move2std[m_0]);\n rlmv[i_0][m_0] = $getrl(c);\n }\n }\n for (i_0 = 0; i_0 < 70; ++i_0) {\n $setrl(c, i_0);\n for (j = 0; j < 16; ++j) {\n rlrot[i_0][j] = $getrl(c);\n $rot_0(c, 0);\n j % 2 === 1 && $rot_0(c, 1);\n j % 8 === 7 && $rot_0(c, 2);\n }\n }\n for (i_0 = 0; i_0 < 6435; ++i_0) {\n $setct(c, i_0);\n for (j = 0; j < 16; ++j) {\n ctrot[i_0][j] = $getct(c) & 65535;\n $rot_0(c, 0);\n j % 2 === 1 && $rot_0(c, 1);\n j % 8 === 7 && $rot_0(c, 2);\n }\n }\n for (i_0 = 0; i_0 < 6435; ++i_0) {\n for (m_0 = 0; m_0 < 28; ++m_0) {\n $setct(c, i_0);\n $move_0(c, move2std[m_0]);\n ctmv[i_0][m_0] = $getct(c) & 65535;\n }\n }\n fill_0(ctprun);\n ctprun[0] =\n ctprun[18] =\n ctprun[28] =\n ctprun[46] =\n ctprun[54] =\n ctprun[56] =\n 0;\n depth = 0;\n done = 6;\n\n while (done !== 450450) {\n const inv = depth > 6;\n const select = inv ? -1 : depth;\n const check = inv ? depth : -1;\n ++depth;\n for (i_0 = 0; i_0 < 450450; ++i_0) {\n if (ctprun[i_0] !== select) {\n continue;\n }\n ct = ~~(i_0 / 70);\n rl = i_0 % 70;\n for (m_0 = 0; m_0 < 23; ++m_0) {\n ctx = ctmv[ct][m_0];\n rlx = rlmv[rl][m_0];\n idx = ctx * 70 + rlx;\n if (ctprun[idx] !== check) {\n continue;\n }\n ++done;\n if (inv) {\n ctprun[i_0] = depth;\n break;\n } else {\n ctprun[idx] = depth;\n }\n }\n }\n }\n}\n\ndefineSeed(154, 1, {}, Center2_0);\n_.parity = 0;\nlet ctmv;\nlet ctprun;\nlet ctrot;\nlet pmv;\nlet rlmv;\nlet rlrot;\n\nlet ran$clinit_Center3 = false;\nfunction $clinit_Center3() {\n if (ran$clinit_Center3) {\n return;\n }\n ran$clinit_Center3 = true;\n ctmove = createArray(29400, 20);\n pmove = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1];\n prun_0 = createArray(29400);\n rl2std = [0, 9, 14, 23, 27, 28, 41, 42, 46, 55, 60, 69];\n std2rl = createArray(70);\n}\n\nfunction $getct_0(this$static) {\n let i_0;\n let idx;\n let idxrl;\n let r;\n idx = 0;\n r = 4;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n this$static.ud[i_0] !== this$static.ud[7] && (idx += Cnk[i_0][r--]);\n }\n idx *= 35;\n r = 4;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n this$static.fb[i_0] !== this$static.fb[7] && (idx += Cnk[i_0][r--]);\n }\n idx *= 12;\n const check = this$static.fb[7] ^ this$static.ud[7];\n idxrl = 0;\n r = 4;\n for (i_0 = 7; i_0 >= 0; --i_0) {\n this$static.rl[i_0] !== check && (idxrl += Cnk[i_0][r--]);\n }\n return this$static.parity + 2 * (idx + std2rl[idxrl]);\n}\n\nfunction $move_1(this$static, i_0) {\n this$static.parity ^= pmove[i_0];\n switch (i_0) {\n case 0:\n case 1:\n case 2: {\n swap(this$static.ud, 0, 1, 2, 3, i_0 % 3);\n break;\n }\n case 3: {\n swap(this$static.rl, 0, 1, 2, 3, 1);\n break;\n }\n case 4:\n case 5:\n case 6: {\n swap(this$static.fb, 0, 1, 2, 3, (i_0 - 1) % 3);\n break;\n }\n case 7:\n case 8:\n case 9: {\n swap(this$static.ud, 4, 5, 6, 7, (i_0 - 1) % 3);\n break;\n }\n case 10: {\n swap(this$static.rl, 4, 5, 6, 7, 1);\n break;\n }\n case 11:\n case 12:\n case 13: {\n swap(this$static.fb, 4, 5, 6, 7, (i_0 + 1) % 3);\n break;\n }\n case 14: {\n swap(this$static.ud, 0, 1, 2, 3, 1);\n swap(this$static.rl, 0, 5, 4, 1, 1);\n swap(this$static.fb, 0, 5, 4, 1, 1);\n break;\n }\n case 15: {\n swap(this$static.rl, 0, 1, 2, 3, 1);\n swap(this$static.fb, 1, 4, 7, 2, 1);\n swap(this$static.ud, 1, 6, 5, 2, 1);\n break;\n }\n case 16: {\n swap(this$static.fb, 0, 1, 2, 3, 1);\n swap(this$static.ud, 3, 2, 5, 4, 1);\n swap(this$static.rl, 0, 3, 6, 5, 1);\n break;\n }\n case 17: {\n swap(this$static.ud, 4, 5, 6, 7, 1);\n swap(this$static.rl, 3, 2, 7, 6, 1);\n swap(this$static.fb, 3, 2, 7, 6, 1);\n break;\n }\n case 18: {\n swap(this$static.rl, 4, 5, 6, 7, 1);\n swap(this$static.fb, 0, 3, 6, 5, 1);\n swap(this$static.ud, 0, 3, 4, 7, 1);\n break;\n }\n case 19: {\n swap(this$static.fb, 4, 5, 6, 7, 1);\n swap(this$static.ud, 0, 7, 6, 1, 1);\n swap(this$static.rl, 1, 4, 7, 2, 1);\n }\n }\n}\n\nfunction $set_3(this$static, c, eXc_parity) {\n let i_0;\n const parity =\n (c.ct[0] > c.ct[8] ? 1 : 0) ^\n (c.ct[8] > c.ct[16] ? 1 : 0) ^\n (c.ct[0] > c.ct[16] ? 1 : 0)\n ? 1\n : 0;\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this$static.ud[i_0] = (c.ct[i_0] & 1) ^ 1;\n this$static.fb[i_0] = (c.ct[i_0 + 8] & 1) ^ 1;\n this$static.rl[i_0] = (c.ct[i_0 + 16] & 1) ^ 1 ^ parity;\n }\n this$static.parity = parity ^ eXc_parity;\n}\n\nfunction $setct_0(this$static, idx) {\n let i_0;\n let idxfb;\n let idxrl;\n let r;\n this$static.parity = idx & 1;\n idx >>>= 1;\n idxrl = rl2std[idx % 12];\n idx = ~~(idx / 12);\n r = 4;\n for (i_0 = 7; i_0 >= 0; --i_0) {\n this$static.rl[i_0] = 0;\n if (idxrl >= Cnk[i_0][r]) {\n idxrl -= Cnk[i_0][r--];\n this$static.rl[i_0] = 1;\n }\n }\n idxfb = idx % 35;\n idx = ~~(idx / 35);\n r = 4;\n this$static.fb[7] = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n if (idxfb >= Cnk[i_0][r]) {\n idxfb -= Cnk[i_0][r--];\n this$static.fb[i_0] = 1;\n } else {\n this$static.fb[i_0] = 0;\n }\n }\n r = 4;\n this$static.ud[7] = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n if (idx >= Cnk[i_0][r]) {\n idx -= Cnk[i_0][r--];\n this$static.ud[i_0] = 1;\n } else {\n this$static.ud[i_0] = 0;\n }\n }\n}\n\nfunction Center3_0() {\n this.ud = createArray(8);\n this.rl = createArray(8);\n this.fb = createArray(8);\n}\n\nfunction init_4() {\n let depth;\n let done;\n let i_0;\n let m_0;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n std2rl[rl2std[i_0]] = i_0;\n }\n const c = new Center3_0();\n for (i_0 = 0; i_0 < 29400; ++i_0) {\n for (m_0 = 0; m_0 < 20; ++m_0) {\n $setct_0(c, i_0);\n $move_1(c, m_0);\n ctmove[i_0][m_0] = $getct_0(c) & 65535;\n }\n }\n fill_0(prun_0);\n prun_0[0] = 0;\n depth = 0;\n done = 1;\n while (done !== 29400) {\n for (i_0 = 0; i_0 < 29400; ++i_0) {\n if (prun_0[i_0] !== depth) {\n continue;\n }\n for (m_0 = 0; m_0 < 17; ++m_0) {\n if (prun_0[ctmove[i_0][m_0]] === -1) {\n prun_0[ctmove[i_0][m_0]] = depth + 1;\n ++done;\n }\n }\n }\n ++depth;\n }\n}\n\ndefineSeed(155, 1, {}, Center3_0);\n_.parity = 0;\nlet ctmove;\nlet pmove;\nlet prun_0;\nlet rl2std;\nlet std2rl;\n\nfunction $copy_1(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this$static.ct[i_0] = c.ct[i_0];\n }\n}\n\nfunction $move_2(this$static, m_0) {\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n break;\n }\n case 1: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n break;\n }\n case 2: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n break;\n }\n case 3: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n break;\n }\n case 4: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n break;\n }\n case 5: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n break;\n }\n case 6: {\n swap(this$static.ct, 0, 1, 2, 3, key);\n swap(this$static.ct, 8, 20, 12, 16, key);\n swap(this$static.ct, 9, 21, 13, 17, key);\n break;\n }\n case 7: {\n swap(this$static.ct, 16, 17, 18, 19, key);\n swap(this$static.ct, 1, 15, 5, 9, key);\n swap(this$static.ct, 2, 12, 6, 10, key);\n break;\n }\n case 8: {\n swap(this$static.ct, 8, 9, 10, 11, key);\n swap(this$static.ct, 2, 19, 4, 21, key);\n swap(this$static.ct, 3, 16, 5, 22, key);\n break;\n }\n case 9: {\n swap(this$static.ct, 4, 5, 6, 7, key);\n swap(this$static.ct, 10, 18, 14, 22, key);\n swap(this$static.ct, 11, 19, 15, 23, key);\n break;\n }\n case 10: {\n swap(this$static.ct, 20, 21, 22, 23, key);\n swap(this$static.ct, 0, 8, 4, 14, key);\n swap(this$static.ct, 3, 11, 7, 13, key);\n break;\n }\n case 11: {\n swap(this$static.ct, 12, 13, 14, 15, key);\n swap(this$static.ct, 1, 20, 7, 18, key);\n swap(this$static.ct, 0, 23, 6, 17, key);\n }\n }\n}\n\nfunction CenterCube_0() {\n let i_0;\n this.ct = createArray(24);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ct[i_0] = ~~(i_0 / 4);\n }\n}\n\nfunction CenterCube_1() {\n let i_0;\n let m_0;\n let t;\n CenterCube_0.call(this);\n for (i_0 = 0; i_0 < 23; ++i_0) {\n t = i_0 + randomUIntBelow(24 - i_0);\n if (this.ct[t] !== this.ct[i_0]) {\n m_0 = this.ct[i_0];\n this.ct[i_0] = this.ct[t];\n this.ct[t] = m_0;\n }\n }\n}\n\ndefineSeed(156, 1, {}, CenterCube_0, CenterCube_1);\n\nlet ran$clinit_CornerCube = false;\nfunction $clinit_CornerCube() {\n if (ran$clinit_CornerCube) {\n return;\n }\n ran$clinit_CornerCube = true;\n moveCube_0 = createArray(18);\n initMove_0();\n}\n\nfunction $$init_2(this$static) {\n this$static.cp = [0, 1, 2, 3, 4, 5, 6, 7];\n this$static.co = [0, 0, 0, 0, 0, 0, 0, 0];\n}\n\nfunction $copy_2(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 8; ++i_0) {\n this$static.cp[i_0] = c.cp[i_0];\n this$static.co[i_0] = c.co[i_0];\n }\n}\n\nfunction $move_3(this$static, idx) {\n !this$static.temps && (this$static.temps = new CornerCube_0());\n CornMult_0(this$static, moveCube_0[idx], this$static.temps);\n $copy_2(this$static, this$static.temps);\n}\n\nfunction $setTwist_0(this$static, idx) {\n let i_0;\n let twst;\n twst = 0;\n for (i_0 = 6; i_0 >= 0; --i_0) {\n twst += this$static.co[i_0] = idx % 3;\n idx = ~~(idx / 3);\n }\n this$static.co[7] = (15 - twst) % 3;\n}\n\nfunction CornMult_0(a, b, prod) {\n let corn;\n let ori;\n let oriA;\n let oriB;\n for (corn = 0; corn < 8; ++corn) {\n prod.cp[corn] = a.cp[b.cp[corn]];\n oriA = a.co[b.cp[corn]];\n oriB = b.co[corn];\n ori = oriA;\n ori = ori + (oriA < 3 ? oriB : 6 - oriB);\n ori = ori % 3;\n (oriA >= 3 ? 1 : 0) ^ (oriB >= 3 ? 1 : 0) && (ori = ori + 3);\n prod.co[corn] = ori;\n }\n}\n\nfunction CornerCube_0() {\n $$init_2(this);\n}\n\nfunction CornerCube_1(cperm, twist) {\n $$init_2(this);\n set8Perm(this.cp, cperm);\n $setTwist_0(this, twist);\n}\n\nfunction CornerCube_2() {\n CornerCube_1.call(this, randomUIntBelow(40320), randomUIntBelow(2187));\n}\n\nfunction initMove_0() {\n let a;\n let p_0;\n moveCube_0[0] = new CornerCube_1(15120, 0);\n moveCube_0[3] = new CornerCube_1(21021, 1494);\n moveCube_0[6] = new CornerCube_1(8064, 1236);\n moveCube_0[9] = new CornerCube_1(9, 0);\n moveCube_0[12] = new CornerCube_1(1230, 412);\n moveCube_0[15] = new CornerCube_1(224, 137);\n for (a = 0; a < 18; a += 3) {\n for (p_0 = 0; p_0 < 2; ++p_0) {\n moveCube_0[a + p_0 + 1] = new CornerCube_0();\n CornMult_0(moveCube_0[a + p_0], moveCube_0[a], moveCube_0[a + p_0 + 1]);\n }\n }\n}\n\ndefineSeed(\n 157,\n 1,\n makeCastMap([Q$CornerCube]),\n CornerCube_0,\n CornerCube_1,\n CornerCube_2,\n);\n_.temps = null;\nlet moveCube_0;\n\nlet ran$clinit_Edge3 = false;\nfunction $clinit_Edge3() {\n if (ran$clinit_Edge3) {\n return;\n }\n ran$clinit_Edge3 = true;\n eprun = createArray(1937880);\n sym2raw_0 = createArray(1538);\n symstate = createArray(1538);\n raw2sym_1 = createArray(11880);\n syminv_0 = [0, 1, 6, 3, 4, 5, 2, 7];\n mvrot = createArray(160, 12);\n mvroto = createArray(160, 12);\n factX = [\n 1, 1, 1, 3, 12, 60, 360, 2520, 20160, 181440, 1814400, 19958400, 239500800,\n ];\n FullEdgeMap = [0, 2, 4, 6, 1, 3, 7, 5, 8, 9, 10, 11];\n}\n\nfunction $circlex(this$static, a, b, c, d) {\n const temp = this$static.edgeo[d];\n this$static.edgeo[d] = this$static.edge[c];\n this$static.edge[c] = this$static.edgeo[b];\n this$static.edgeo[b] = this$static.edge[a];\n this$static.edge[a] = temp;\n}\n\nfunction $get_2(this$static, end) {\n let i_0;\n let idx;\n let v;\n let valh;\n let vall;\n this$static.isStd || $std(this$static);\n idx = 0;\n vall = 1985229328;\n valh = 47768;\n for (i_0 = 0; i_0 < end; ++i_0) {\n v = this$static.edge[i_0] << 2;\n idx *= 12 - i_0;\n if (v >= 32) {\n idx += (valh >> (v - 32)) & 15;\n valh -= 4368 << (v - 32);\n } else {\n idx += (vall >> v) & 15;\n valh -= 4369;\n vall -= 286331152 << v;\n }\n }\n return idx;\n}\n\nfunction $getsym_0(this$static) {\n let symcord1x;\n const cord1x = $get_2(this$static, 4);\n symcord1x = raw2sym_1[cord1x];\n const symx = symcord1x & 7;\n symcord1x >>= 3;\n $rotate_0(this$static, symx);\n const cord2x = $get_2(this$static, 10) % 20160;\n return symcord1x * 20160 + cord2x;\n}\n\nfunction $move_4(this$static, i_0) {\n this$static.isStd = false;\n switch (i_0) {\n case 0: {\n circle(this$static.edge, 0, 4, 1, 5);\n circle(this$static.edgeo, 0, 4, 1, 5);\n break;\n }\n case 1: {\n $swap_0(this$static.edge, 0, 4, 1, 5);\n $swap_0(this$static.edgeo, 0, 4, 1, 5);\n break;\n }\n case 2: {\n circle(this$static.edge, 0, 5, 1, 4);\n circle(this$static.edgeo, 0, 5, 1, 4);\n break;\n }\n case 3: {\n $swap_0(this$static.edge, 5, 10, 6, 11);\n $swap_0(this$static.edgeo, 5, 10, 6, 11);\n break;\n }\n case 4: {\n circle(this$static.edge, 0, 11, 3, 8);\n circle(this$static.edgeo, 0, 11, 3, 8);\n break;\n }\n case 5: {\n $swap_0(this$static.edge, 0, 11, 3, 8);\n $swap_0(this$static.edgeo, 0, 11, 3, 8);\n break;\n }\n case 6: {\n circle(this$static.edge, 0, 8, 3, 11);\n circle(this$static.edgeo, 0, 8, 3, 11);\n break;\n }\n case 7: {\n circle(this$static.edge, 2, 7, 3, 6);\n circle(this$static.edgeo, 2, 7, 3, 6);\n break;\n }\n case 8: {\n $swap_0(this$static.edge, 2, 7, 3, 6);\n $swap_0(this$static.edgeo, 2, 7, 3, 6);\n break;\n }\n case 9: {\n circle(this$static.edge, 2, 6, 3, 7);\n circle(this$static.edgeo, 2, 6, 3, 7);\n break;\n }\n case 10: {\n $swap_0(this$static.edge, 4, 8, 7, 9);\n $swap_0(this$static.edgeo, 4, 8, 7, 9);\n break;\n }\n case 11: {\n circle(this$static.edge, 1, 9, 2, 10);\n circle(this$static.edgeo, 1, 9, 2, 10);\n break;\n }\n case 12: {\n $swap_0(this$static.edge, 1, 9, 2, 10);\n $swap_0(this$static.edgeo, 1, 9, 2, 10);\n break;\n }\n case 13: {\n circle(this$static.edge, 1, 10, 2, 9);\n circle(this$static.edgeo, 1, 10, 2, 9);\n break;\n }\n case 14: {\n $swap_0(this$static.edge, 0, 4, 1, 5);\n $swap_0(this$static.edgeo, 0, 4, 1, 5);\n circle(this$static.edge, 9, 11);\n circle(this$static.edgeo, 8, 10);\n break;\n }\n case 15: {\n $swap_0(this$static.edge, 5, 10, 6, 11);\n $swap_0(this$static.edgeo, 5, 10, 6, 11);\n circle(this$static.edge, 1, 3);\n circle(this$static.edgeo, 0, 2);\n break;\n }\n case 16: {\n $swap_0(this$static.edge, 0, 11, 3, 8);\n $swap_0(this$static.edgeo, 0, 11, 3, 8);\n circle(this$static.edge, 5, 7);\n circle(this$static.edgeo, 4, 6);\n break;\n }\n case 17: {\n $swap_0(this$static.edge, 2, 7, 3, 6);\n $swap_0(this$static.edgeo, 2, 7, 3, 6);\n circle(this$static.edge, 8, 10);\n circle(this$static.edgeo, 9, 11);\n break;\n }\n case 18: {\n $swap_0(this$static.edge, 4, 8, 7, 9);\n $swap_0(this$static.edgeo, 4, 8, 7, 9);\n circle(this$static.edge, 0, 2);\n circle(this$static.edgeo, 1, 3);\n break;\n }\n case 19: {\n $swap_0(this$static.edge, 1, 9, 2, 10);\n $swap_0(this$static.edgeo, 1, 9, 2, 10);\n circle(this$static.edge, 4, 6);\n circle(this$static.edgeo, 5, 7);\n }\n }\n}\n\nfunction $rot_1(this$static, r) {\n this$static.isStd = false;\n switch (r) {\n case 0: {\n $move_4(this$static, 14);\n $move_4(this$static, 17);\n break;\n }\n case 1: {\n $circlex(this$static, 11, 5, 10, 6);\n $circlex(this$static, 5, 10, 6, 11);\n $circlex(this$static, 1, 2, 3, 0);\n $circlex(this$static, 4, 9, 7, 8);\n $circlex(this$static, 8, 4, 9, 7);\n $circlex(this$static, 0, 1, 2, 3);\n break;\n }\n case 2: {\n $swapx(this$static, 4, 5);\n $swapx(this$static, 5, 4);\n $swapx(this$static, 11, 8);\n $swapx(this$static, 8, 11);\n $swapx(this$static, 7, 6);\n $swapx(this$static, 6, 7);\n $swapx(this$static, 9, 10);\n $swapx(this$static, 10, 9);\n $swapx(this$static, 1, 1);\n $swapx(this$static, 0, 0);\n $swapx(this$static, 3, 3);\n $swapx(this$static, 2, 2);\n }\n }\n}\n\nfunction $rotate_0(this$static, r) {\n while (r >= 2) {\n r -= 2;\n $rot_1(this$static, 1);\n $rot_1(this$static, 2);\n }\n r !== 0 && $rot_1(this$static, 0);\n}\n\nfunction $set_4(this$static, idx) {\n let i_0;\n let p_0;\n let parity;\n let v;\n let vall;\n let valh;\n vall = 0x76543210;\n valh = 0xba98;\n parity = 0;\n for (i_0 = 0; i_0 < 11; ++i_0) {\n p_0 = factX[11 - i_0];\n v = ~~(idx / p_0);\n idx = idx % p_0;\n parity ^= v;\n v <<= 2;\n if (v >= 32) {\n v = v - 32;\n this$static.edge[i_0] = (valh >> v) & 15;\n const m = (1 << v) - 1;\n valh = (valh & m) + ((valh >> 4) & ~m);\n } else {\n this$static.edge[i_0] = (vall >> v) & 15;\n const m = (1 << v) - 1;\n vall = (vall & m) + ((vall >>> 4) & ~m) + (valh << 28);\n valh = valh >> 4;\n }\n }\n if ((parity & 1) === 0) {\n this$static.edge[11] = vall;\n } else {\n this$static.edge[11] = this$static.edge[10];\n this$static.edge[10] = vall;\n }\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edgeo[i_0] = i_0;\n }\n this$static.isStd = true;\n}\n\nfunction $set_5(this$static, e) {\n let i_0;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edge[i_0] = e.edge[i_0];\n this$static.edgeo[i_0] = e.edgeo[i_0];\n }\n this$static.isStd = e.isStd;\n}\n\nfunction $set_6(this$static, c) {\n let i_0;\n let parity;\n let s;\n let t;\n this$static.temp === null && (this$static.temp = createArray(12));\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.temp[i_0] = i_0;\n this$static.edge[i_0] = c.ep[FullEdgeMap[i_0] + 12] % 12;\n }\n parity = 1;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n while (this$static.edge[i_0] !== i_0) {\n t = this$static.edge[i_0];\n this$static.edge[i_0] = this$static.edge[t];\n this$static.edge[t] = t;\n s = this$static.temp[i_0];\n this$static.temp[i_0] = this$static.temp[t];\n this$static.temp[t] = s;\n parity ^= 1;\n }\n }\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edge[i_0] = this$static.temp[c.ep[FullEdgeMap[i_0]] % 12];\n }\n return parity;\n}\n\nfunction $std(this$static) {\n let i_0;\n this$static.temp === null && (this$static.temp = createArray(12));\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.temp[this$static.edgeo[i_0]] = i_0;\n }\n for (i_0 = 0; i_0 < 12; ++i_0) {\n this$static.edge[i_0] = this$static.temp[this$static.edge[i_0]];\n this$static.edgeo[i_0] = i_0;\n }\n this$static.isStd = true;\n}\n\nfunction $swap_0(arr, a, b, c, d) {\n let temp;\n temp = arr[a];\n arr[a] = arr[c];\n arr[c] = temp;\n temp = arr[b];\n arr[b] = arr[d];\n arr[d] = temp;\n}\n\nfunction $swapx(this$static, x, y) {\n const temp = this$static.edge[x];\n this$static.edge[x] = this$static.edgeo[y];\n this$static.edgeo[y] = temp;\n}\n\nfunction Edge3_0() {\n this.edge = createArray(12);\n this.edgeo = createArray(12);\n}\n\nfunction createPrun_0() {\n let chk;\n let cord1;\n let cord1x;\n let cord2;\n let cord2x;\n let dep1m3;\n let depm3;\n let depth;\n let end;\n let find_0;\n let i_0;\n let i_;\n let idx;\n let idxx;\n let inv;\n let j;\n let m_0;\n let symState;\n let symcord1;\n let symcord1x;\n let symx;\n let val;\n const e = new Edge3_0();\n const f = new Edge3_0();\n const g = new Edge3_0();\n fill_0(eprun);\n depth = 0;\n done_0 = 1;\n setPruning_0(eprun, 0, 0);\n // var start = +new Date;\n while (done_0 !== 31006080) {\n inv = depth > 9;\n depm3 = depth % 3;\n dep1m3 = (depth + 1) % 3;\n find_0 = inv ? 3 : depm3;\n chk = inv ? depm3 : 3;\n if (depth >= 9) {\n break;\n }\n for (i_ = 0; i_ < 31006080; i_ += 16) {\n val = eprun[~~i_ >> 4];\n if (!inv && val === -1) {\n continue;\n }\n for (i_0 = i_, end = i_ + 16; i_0 < end; ++i_0, val >>= 2) {\n if ((val & 3) !== find_0) {\n continue;\n }\n symcord1 = ~~(i_0 / 20160);\n cord1 = sym2raw_0[symcord1];\n cord2 = i_0 % 20160;\n $set_4(e, cord1 * 20160 + cord2);\n for (m_0 = 0; m_0 < 17; ++m_0) {\n cord1x = getmvrot(e.edge, m_0 << 3, 4);\n symcord1x = raw2sym_1[cord1x];\n symx = symcord1x & 7;\n symcord1x >>= 3;\n cord2x = getmvrot(e.edge, (m_0 << 3) | symx, 10) % 20160;\n idx = symcord1x * 20160 + cord2x;\n if (getPruning_0(eprun, idx) !== chk) {\n continue;\n }\n setPruning_0(eprun, inv ? i_0 : idx, dep1m3);\n ++done_0;\n if (inv) {\n break;\n }\n symState = symstate[symcord1x];\n if (symState === 1) {\n continue;\n }\n $set_5(f, e);\n $move_4(f, m_0);\n $rotate_0(f, symx);\n for (j = 1; (symState = (~~symState >> 1) & 65535) !== 0; ++j) {\n if ((symState & 1) !== 1) {\n continue;\n }\n $set_5(g, f);\n $rotate_0(g, j);\n idxx = symcord1x * 20160 + ($get_2(g, 10) % 20160);\n if (getPruning_0(eprun, idxx) === chk) {\n setPruning_0(eprun, idxx, dep1m3);\n ++done_0;\n }\n }\n }\n }\n }\n ++depth;\n // console.log(depth + '\\t' + done_0 + '\\t' + (+new Date - start));\n }\n}\n\nfunction getPruning_0(table, index) {\n return (table[index >> 4] >> ((index & 15) << 1)) & 3;\n}\n\nfunction getmvrot(ep, mrIdx, end) {\n let i_0;\n let idx;\n let v;\n let valh;\n let vall;\n const movo = mvroto[mrIdx];\n const mov = mvrot[mrIdx];\n idx = 0;\n vall = 1985229328;\n valh = 47768;\n for (i_0 = 0; i_0 < end; ++i_0) {\n v = movo[ep[mov[i_0]]] << 2;\n idx *= 12 - i_0;\n if (v >= 32) {\n idx += (valh >> (v - 32)) & 15;\n valh -= 4368 << (v - 32);\n } else {\n idx += (vall >> v) & 15;\n valh -= 4369;\n vall -= 286331152 << v;\n }\n }\n return idx;\n}\n\nfunction getprun(edge) {\n let cord1;\n let cord1x;\n let cord2;\n let cord2x;\n let depm3;\n let depth;\n let idx;\n let m_0;\n let symcord1;\n let symcord1x;\n let symx;\n const e = new Edge3_0();\n depth = 0;\n depm3 = getPruning_0(eprun, edge);\n if (depm3 === 3) {\n return 10;\n }\n while (edge !== 0) {\n depm3 === 0 ? (depm3 = 2) : --depm3;\n symcord1 = ~~(edge / 20160);\n cord1 = sym2raw_0[symcord1];\n cord2 = edge % 20160;\n $set_4(e, cord1 * 20160 + cord2);\n for (m_0 = 0; m_0 < 17; ++m_0) {\n cord1x = getmvrot(e.edge, m_0 << 3, 4);\n symcord1x = raw2sym_1[cord1x];\n symx = symcord1x & 7;\n symcord1x >>= 3;\n cord2x = getmvrot(e.edge, (m_0 << 3) | symx, 10) % 20160;\n idx = symcord1x * 20160 + cord2x;\n if (getPruning_0(eprun, idx) === depm3) {\n ++depth;\n edge = idx;\n break;\n }\n }\n }\n return depth;\n}\n\nfunction getprun_0(edge, prun) {\n const depm3 = getPruning_0(eprun, edge);\n if (depm3 === 3) {\n return 10;\n }\n return (((0x49249249 << depm3) >> prun) & 3) + prun - 1;\n // (depm3 - prun + 16) % 3 + prun - 1;\n}\n\nfunction initMvrot() {\n let i_0;\n let m_0;\n let r;\n const e = new Edge3_0();\n for (m_0 = 0; m_0 < 20; ++m_0) {\n for (r = 0; r < 8; ++r) {\n $set_4(e, 0);\n $move_4(e, m_0);\n $rotate_0(e, r);\n for (i_0 = 0; i_0 < 12; ++i_0) {\n mvrot[(m_0 << 3) | r][i_0] = e.edge[i_0];\n }\n $std(e);\n for (i_0 = 0; i_0 < 12; ++i_0) {\n mvroto[(m_0 << 3) | r][i_0] = e.temp[i_0];\n }\n }\n }\n}\n\nfunction initRaw2Sym() {\n let count;\n let i_0;\n let idx;\n let j;\n const e = new Edge3_0();\n const occ = createArray(1485);\n for (i_0 = 0; i_0 < 1485; i_0++) {\n occ[i_0] = 0;\n }\n count = 0;\n for (i_0 = 0; i_0 < 11880; ++i_0) {\n if ((occ[~~i_0 >>> 3] & (1 << (i_0 & 7))) === 0) {\n $set_4(e, i_0 * factX[8]);\n for (j = 0; j < 8; ++j) {\n idx = $get_2(e, 4);\n idx === i_0 && (symstate[count] = (symstate[count] | (1 << j)) & 65535);\n occ[~~idx >> 3] = occ[~~idx >> 3] | (1 << (idx & 7));\n raw2sym_1[idx] = (count << 3) | syminv_0[j];\n $rot_1(e, 0);\n if (j % 2 === 1) {\n $rot_1(e, 1);\n $rot_1(e, 2);\n }\n }\n sym2raw_0[count++] = i_0;\n }\n }\n}\n\nfunction setPruning_0(table, index, value) {\n table[index >> 4] ^= (3 ^ value) << ((index & 15) << 1);\n}\n\ndefineSeed(158, 1, makeCastMap([Q$Edge3]), Edge3_0);\n_.isStd = true;\n_.temp = null;\nlet FullEdgeMap;\nlet done_0 = 0;\nlet eprun;\nlet factX;\nlet mvrot;\nlet mvroto;\nlet raw2sym_1;\nlet sym2raw_0;\nlet syminv_0;\nlet symstate;\n\nlet ran$clinit_EdgeCube = false;\nfunction $clinit_EdgeCube() {\n if (ran$clinit_EdgeCube) {\n return;\n }\n ran$clinit_EdgeCube = true;\n}\n\nfunction $checkEdge(this$static) {\n let ck;\n let i_0;\n let parity;\n ck = 0;\n parity = false;\n for (i_0 = 0; i_0 < 12; ++i_0) {\n ck |= 1 << this$static.ep[i_0];\n parity = parity !== this$static.ep[i_0] >= 12;\n }\n ck &= ~~ck >> 12;\n return ck === 0 && !parity;\n}\n\nfunction $copy_3(this$static, c) {\n let i_0;\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this$static.ep[i_0] = c.ep[i_0];\n }\n}\n\nfunction $move_5(this$static, m_0) {\n const key = m_0 % 3;\n m_0 = ~~(m_0 / 3);\n switch (m_0) {\n case 0: {\n swap(this$static.ep, 0, 1, 2, 3, key);\n swap(this$static.ep, 12, 13, 14, 15, key);\n break;\n }\n case 1: {\n swap(this$static.ep, 11, 15, 10, 19, key);\n swap(this$static.ep, 23, 3, 22, 7, key);\n break;\n }\n case 2: {\n swap(this$static.ep, 0, 11, 6, 8, key);\n swap(this$static.ep, 12, 23, 18, 20, key);\n break;\n }\n case 3: {\n swap(this$static.ep, 4, 5, 6, 7, key);\n swap(this$static.ep, 16, 17, 18, 19, key);\n break;\n }\n case 4: {\n swap(this$static.ep, 1, 20, 5, 21, key);\n swap(this$static.ep, 13, 8, 17, 9, key);\n break;\n }\n case 5: {\n swap(this$static.ep, 2, 9, 4, 10, key);\n swap(this$static.ep, 14, 21, 16, 22, key);\n break;\n }\n case 6: {\n swap(this$static.ep, 0, 1, 2, 3, key);\n swap(this$static.ep, 12, 13, 14, 15, key);\n swap(this$static.ep, 9, 22, 11, 20, key);\n break;\n }\n case 7: {\n swap(this$static.ep, 11, 15, 10, 19, key);\n swap(this$static.ep, 23, 3, 22, 7, key);\n swap(this$static.ep, 2, 16, 6, 12, key);\n break;\n }\n case 8: {\n swap(this$static.ep, 0, 11, 6, 8, key);\n swap(this$static.ep, 12, 23, 18, 20, key);\n swap(this$static.ep, 3, 19, 5, 13, key);\n break;\n }\n case 9: {\n swap(this$static.ep, 4, 5, 6, 7, key);\n swap(this$static.ep, 16, 17, 18, 19, key);\n swap(this$static.ep, 8, 23, 10, 21, key);\n break;\n }\n case 10: {\n swap(this$static.ep, 1, 20, 5, 21, key);\n swap(this$static.ep, 13, 8, 17, 9, key);\n swap(this$static.ep, 14, 0, 18, 4, key);\n break;\n }\n case 11: {\n swap(this$static.ep, 2, 9, 4, 10, key);\n swap(this$static.ep, 14, 21, 16, 22, key);\n swap(this$static.ep, 7, 15, 1, 17, key);\n }\n }\n}\n\nfunction EdgeCube_0() {\n let i_0;\n this.ep = createArray(24);\n for (i_0 = 0; i_0 < 24; ++i_0) {\n this.ep[i_0] = i_0;\n }\n}\n\nfunction EdgeCube_1() {\n let i_0;\n let m_0;\n let t;\n EdgeCube_0.call(this);\n for (i_0 = 0; i_0 < 23; ++i_0) {\n t = i_0 + randomUIntBelow(24 - i_0);\n if (t !== i_0) {\n m_0 = this.ep[i_0];\n this.ep[i_0] = this.ep[t];\n this.ep[t] = m_0;\n }\n }\n}\n\ndefineSeed(159, 1, {}, EdgeCube_0, EdgeCube_1);\n\nlet ran$clinit_FullCube_0 = false;\nfunction $clinit_FullCube_0() {\n if (ran$clinit_FullCube_0) {\n return;\n }\n ran$clinit_FullCube_0 = true;\n move2rot = [35, 1, 34, 2, 4, 6, 22, 5, 19];\n}\n\nfunction $$init_3(this$static) {\n this$static.moveBuffer = createArray(60);\n}\n\nfunction $compareTo_1(this$static, c) {\n return this$static.value - c.value;\n}\n\nfunction $copy_4(this$static, c) {\n let i_0;\n $copy_3(this$static.edge, c.edge);\n $copy_1(this$static.center, c.center);\n $copy_2(this$static.corner, c.corner);\n this$static.value = c.value;\n this$static.add1 = c.add1;\n this$static.length1 = c.length1;\n this$static.length2 = c.length2;\n this$static.length3 = c.length3;\n this$static.sym = c.sym;\n for (i_0 = 0; i_0 < 60; ++i_0) {\n this$static.moveBuffer[i_0] = c.moveBuffer[i_0];\n }\n this$static.moveLength = c.moveLength;\n this$static.edgeAvail = c.edgeAvail;\n this$static.centerAvail = c.centerAvail;\n this$static.cornerAvail = c.cornerAvail;\n}\n\nfunction $getCenter(this$static) {\n while (this$static.centerAvail < this$static.moveLength) {\n $move_2(\n this$static.center,\n this$static.moveBuffer[this$static.centerAvail++],\n );\n }\n return this$static.center;\n}\n\nfunction $getCorner(this$static) {\n while (this$static.cornerAvail < this$static.moveLength) {\n $move_3(\n this$static.corner,\n this$static.moveBuffer[this$static.cornerAvail++] % 18,\n );\n }\n return this$static.corner;\n}\n\nfunction $getEdge(this$static) {\n while (this$static.edgeAvail < this$static.moveLength) {\n $move_5(this$static.edge, this$static.moveBuffer[this$static.edgeAvail++]);\n }\n return this$static.edge;\n}\n\nfunction $getMoveString(this$static) {\n let i_0;\n let idx;\n let move;\n let rot;\n let sb;\n let sym;\n const fixedMoves = new Array(\n this$static.moveLength - (this$static.add1 ? 2 : 0),\n );\n idx = 0;\n for (i_0 = 0; i_0 < this$static.length1; ++i_0) {\n fixedMoves[idx++] = this$static.moveBuffer[i_0];\n }\n sym = this$static.sym;\n for (\n i_0 = this$static.length1 + (this$static.add1 ? 2 : 0);\n i_0 < this$static.moveLength;\n ++i_0\n ) {\n if (symmove[sym][this$static.moveBuffer[i_0]] >= 27) {\n fixedMoves[idx++] = symmove[sym][this$static.moveBuffer[i_0]] - 9;\n rot = move2rot[symmove[sym][this$static.moveBuffer[i_0]] - 27];\n sym = symmult[sym][rot];\n } else {\n fixedMoves[idx++] = symmove[sym][this$static.moveBuffer[i_0]];\n }\n }\n const finishSym = symmult[syminv[sym]][getSolvedSym($getCenter(this$static))];\n sb = \"\";\n sym = finishSym;\n for (i_0 = idx - 1; i_0 >= 0; --i_0) {\n move = fixedMoves[i_0];\n move = ~~(move / 3) * 3 + (2 - (move % 3));\n if (symmove[sym][move] >= 27) {\n sb = `${sb}${move2str_1[symmove[sym][move] - 9]} `;\n rot = move2rot[symmove[sym][move] - 27];\n sym = symmult[sym][rot];\n } else {\n sb = `${sb}${move2str_1[symmove[sym][move]]} `;\n }\n }\n return sb;\n}\n\nfunction $move_6(this$static, m_0) {\n this$static.moveBuffer[this$static.moveLength++] = m_0;\n return;\n}\n\nfunction FullCube_3() {\n $$init_3(this);\n this.edge = new EdgeCube_0();\n this.center = new CenterCube_0();\n this.corner = new CornerCube_0();\n}\n\nfunction FullCube_4(c) {\n FullCube_3.call(this);\n $copy_4(this, c);\n}\n\nfunction FullCube_5() {\n $$init_3(this);\n this.edge = new EdgeCube_1();\n this.center = new CenterCube_1();\n this.corner = new CornerCube_2();\n}\n\ndefineSeed(\n 160,\n 1,\n makeCastMap([Q$FullCube_0, Q$Comparable]),\n FullCube_3,\n FullCube_4,\n FullCube_5,\n);\n_.compareTo$ = function compareTo_1(c) {\n return $compareTo_1(this, c);\n};\n_.add1 = false;\n_.center = null;\n_.centerAvail = 0;\n_.corner = null;\n_.cornerAvail = 0;\n_.edge = null;\n_.edgeAvail = 0;\n_.length1 = 0;\n_.length2 = 0;\n_.length3 = 0;\n_.moveLength = 0;\n_.sym = 0;\n_.value = 0;\nlet move2rot;\n\nfunction $compare(c1, c2) {\n return c2.value - c1.value;\n}\n\nfunction $compare_0(c1, c2) {\n return $compare(c1, c2);\n}\n\nfunction FullCube$ValueComparator_0() {}\n\ndefineSeed(161, 1, {}, FullCube$ValueComparator_0);\n_.compare = function compare(c1, c2) {\n return $compare_0(c1, c2);\n};\n\nlet ran$clinit_Moves = false;\nfunction $clinit_Moves() {\n if (ran$clinit_Moves) {\n return;\n }\n ran$clinit_Moves = true;\n let i_0;\n let j;\n move2str_1 = [\n \"U \",\n \"U2 \",\n \"U' \",\n \"R \",\n \"R2 \",\n \"R' \",\n \"F \",\n \"F2 \",\n \"F' \",\n \"D \",\n \"D2 \",\n \"D' \",\n \"L \",\n \"L2 \",\n \"L' \",\n \"B \",\n \"B2 \",\n \"B' \",\n \"Uw \",\n \"Uw2\",\n \"Uw'\",\n \"Rw \",\n \"Rw2\",\n \"Rw'\",\n \"Fw \",\n \"Fw2\",\n \"Fw'\",\n \"Dw \",\n \"Dw2\",\n \"Dw'\",\n \"Lw \",\n \"Lw2\",\n \"Lw'\",\n \"Bw \",\n \"Bw2\",\n \"Bw'\",\n ];\n move2std = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 22,\n 23, 25, 28, 30, 31, 32, 34, 36,\n ];\n move3std = [\n 0, 1, 2, 4, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 19, 22, 25, 28, 31, 34, 36,\n ];\n std2move = createArray(37);\n std3move = createArray(37);\n ckmv = createArray(37, 36);\n ckmv2_0 = createArray(29, 28);\n ckmv3 = createArray(21, 20);\n skipAxis = createArray(36);\n skipAxis2 = createArray(28);\n skipAxis3 = createArray(20);\n for (i_0 = 0; i_0 < 29; ++i_0) {\n std2move[move2std[i_0]] = i_0;\n }\n for (i_0 = 0; i_0 < 21; ++i_0) {\n std3move[move3std[i_0]] = i_0;\n }\n for (i_0 = 0; i_0 < 36; ++i_0) {\n for (j = 0; j < 36; ++j) {\n ckmv[i_0][j] =\n ~~(i_0 / 3) === ~~(j / 3) ||\n (~~(i_0 / 3) % 3 === ~~(j / 3) % 3 && i_0 > j);\n }\n ckmv[36][i_0] = false;\n }\n for (i_0 = 0; i_0 < 29; ++i_0) {\n for (j = 0; j < 28; ++j) {\n ckmv2_0[i_0][j] = ckmv[move2std[i_0]][move2std[j]];\n }\n }\n for (i_0 = 0; i_0 < 21; ++i_0) {\n for (j = 0; j < 20; ++j) {\n ckmv3[i_0][j] = ckmv[move3std[i_0]][move3std[j]];\n }\n }\n for (i_0 = 0; i_0 < 36; ++i_0) {\n skipAxis[i_0] = 36;\n for (j = i_0; j < 36; ++j) {\n if (!ckmv[i_0][j]) {\n skipAxis[i_0] = j - 1;\n break;\n }\n }\n }\n for (i_0 = 0; i_0 < 28; ++i_0) {\n skipAxis2[i_0] = 28;\n for (j = i_0; j < 28; ++j) {\n if (!ckmv2_0[i_0][j]) {\n skipAxis2[i_0] = j - 1;\n break;\n }\n }\n }\n for (i_0 = 0; i_0 < 20; ++i_0) {\n skipAxis3[i_0] = 20;\n for (j = i_0; j < 20; ++j) {\n if (!ckmv3[i_0][j]) {\n skipAxis3[i_0] = j - 1;\n break;\n }\n }\n }\n}\n\nlet ckmv;\nlet ckmv2_0;\nlet ckmv3;\nlet move2std;\nlet move2str_1;\nlet move3std;\nlet skipAxis;\nlet skipAxis2;\nlet skipAxis3;\nlet std2move;\nlet std3move;\n\nfunction $doSearch(this$static) {\n let MAX_LENGTH2;\n let MAX_LENGTH3;\n let ct;\n let edge;\n let eparity;\n let i_0;\n let index;\n let length12;\n let length123;\n let prun;\n let s2ct;\n let s2rl;\n this$static.solution = \"\";\n const ud = $getsym(new Center1_1($getCenter(this$static.c), 0));\n const fb = $getsym(new Center1_1($getCenter(this$static.c), 1));\n const rl = $getsym(new Center1_1($getCenter(this$static.c), 2));\n const udprun = csprun[~~ud >> 6];\n const fbprun = csprun[~~fb >> 6];\n const rlprun = csprun[~~rl >> 6];\n this$static.p1SolsCnt = 0;\n this$static.arr2idx = 0;\n $clear(this$static.p1sols.heap);\n for (\n this$static.length1 =\n (udprun < fbprun ? udprun : fbprun) < rlprun\n ? udprun < fbprun\n ? udprun\n : fbprun\n : rlprun;\n this$static.length1 < 100;\n ++this$static.length1\n ) {\n if (\n (rlprun <= this$static.length1 &&\n $search1(\n this$static,\n ~~rl >>> 6,\n rl & 63,\n this$static.length1,\n -1,\n 0,\n )) ||\n (udprun <= this$static.length1 &&\n $search1(\n this$static,\n ~~ud >>> 6,\n ud & 63,\n this$static.length1,\n -1,\n 0,\n )) ||\n (fbprun <= this$static.length1 &&\n $search1(this$static, ~~fb >>> 6, fb & 63, this$static.length1, -1, 0))\n ) {\n break;\n }\n }\n const p1SolsArr = $toArray_1(\n this$static.p1sols,\n initDim(\n _3Lcs_threephase_FullCube_2_classLit,\n makeCastMap([Q$FullCube_$1, Q$Serializable, Q$Object_$1]),\n Q$FullCube_0,\n 0,\n 0,\n ),\n );\n\n p1SolsArr.sort(function (a, b) {\n return a.value - b.value;\n });\n MAX_LENGTH2 = 9;\n do {\n OUT: for (length12 = p1SolsArr[0].value; length12 < 100; ++length12) {\n for (i_0 = 0; i_0 < p1SolsArr.length; ++i_0) {\n if (p1SolsArr[i_0].value > length12) {\n break;\n }\n if (length12 - p1SolsArr[i_0].length1 > MAX_LENGTH2) {\n continue;\n }\n $copy_4(this$static.c1, p1SolsArr[i_0]);\n $set_2(\n this$static.ct2,\n $getCenter(this$static.c1),\n parity_0($getEdge(this$static.c1).ep),\n );\n s2ct = $getct(this$static.ct2);\n s2rl = $getrl(this$static.ct2);\n this$static.length1 = p1SolsArr[i_0].length1;\n this$static.length2 = length12 - p1SolsArr[i_0].length1;\n if ($search2(this$static, s2ct, s2rl, this$static.length2, 28, 0)) {\n break OUT;\n }\n }\n }\n ++MAX_LENGTH2;\n } while (length12 === 100);\n this$static.arr2.sort(function (a, b) {\n return a.value - b.value;\n });\n index = 0;\n MAX_LENGTH3 = 13;\n do {\n OUT2: for (\n length123 = this$static.arr2[0].value;\n length123 < 100;\n ++length123\n ) {\n for (i_0 = 0; i_0 < Math.min(this$static.arr2idx, 100); ++i_0) {\n if (this$static.arr2[i_0].value > length123) {\n break;\n }\n if (\n length123 -\n this$static.arr2[i_0].length1 -\n this$static.arr2[i_0].length2 >\n MAX_LENGTH3\n ) {\n continue;\n }\n eparity = $set_6(this$static.e12, $getEdge(this$static.arr2[i_0]));\n $set_3(\n this$static.ct3,\n $getCenter(this$static.arr2[i_0]),\n eparity ^ parity_0($getCorner(this$static.arr2[i_0]).cp),\n );\n ct = $getct_0(this$static.ct3);\n edge = $get_2(this$static.e12, 10);\n prun = getprun($getsym_0(this$static.e12));\n if (\n prun <=\n length123 -\n this$static.arr2[i_0].length1 -\n this$static.arr2[i_0].length2 &&\n $search3(\n this$static,\n edge,\n ct,\n prun,\n length123 -\n this$static.arr2[i_0].length1 -\n this$static.arr2[i_0].length2,\n 20,\n 0,\n )\n ) {\n index = i_0;\n break OUT2;\n }\n }\n }\n ++MAX_LENGTH3;\n } while (length123 === 100);\n const solcube = new FullCube_4(this$static.arr2[index]);\n this$static.length1 = solcube.length1;\n this$static.length2 = solcube.length2;\n const length_0 = length123 - this$static.length1 - this$static.length2;\n for (i_0 = 0; i_0 < length_0; ++i_0) {\n $move_6(solcube, move3std[this$static.move3[i_0]]);\n }\n this$static.solution = $getMoveString(solcube);\n}\n\nfunction $init2_0(this$static, sym) {\n let i_0;\n let next;\n $copy_4(this$static.c1, this$static.c);\n for (i_0 = 0; i_0 < this$static.length1; ++i_0) {\n $move_6(this$static.c1, this$static.move1[i_0]);\n }\n switch (finish_0[sym]) {\n case 0: {\n $move_6(this$static.c1, 24);\n $move_6(this$static.c1, 35);\n this$static.move1[this$static.length1] = 24;\n this$static.move1[this$static.length1 + 1] = 35;\n this$static.add1 = true;\n sym = 19;\n break;\n }\n case 12869: {\n $move_6(this$static.c1, 18);\n $move_6(this$static.c1, 29);\n this$static.move1[this$static.length1] = 18;\n this$static.move1[this$static.length1 + 1] = 29;\n this$static.add1 = true;\n sym = 34;\n break;\n }\n case 735470: {\n this$static.add1 = false;\n sym = 0;\n }\n }\n $set_2(\n this$static.ct2,\n $getCenter(this$static.c1),\n parity_0($getEdge(this$static.c1).ep),\n );\n const s2ct = $getct(this$static.ct2);\n const s2rl = $getrl(this$static.ct2);\n const ctp = ctprun[s2ct * 70 + s2rl];\n this$static.c1.value = ctp + this$static.length1;\n this$static.c1.length1 = this$static.length1;\n this$static.c1.add1 = this$static.add1;\n this$static.c1.sym = sym;\n ++this$static.p1SolsCnt;\n if (this$static.p1sols.heap.size < 500) {\n next = new FullCube_4(this$static.c1);\n } else {\n next = $poll(this$static.p1sols);\n next.value > this$static.c1.value && $copy_4(next, this$static.c1);\n }\n $add(this$static.p1sols, next);\n return this$static.p1SolsCnt === 10000;\n}\n\nfunction $init3(this$static) {\n let i_0;\n $copy_4(this$static.c2, this$static.c1);\n for (i_0 = 0; i_0 < this$static.length2; ++i_0) {\n $move_6(this$static.c2, this$static.move2[i_0]);\n }\n if (!$checkEdge($getEdge(this$static.c2))) {\n return false;\n }\n const eparity = $set_6(this$static.e12, $getEdge(this$static.c2));\n $set_3(\n this$static.ct3,\n $getCenter(this$static.c2),\n eparity ^ parity_0($getCorner(this$static.c2).cp),\n );\n const ct = $getct_0(this$static.ct3);\n $get_2(this$static.e12, 10);\n const prun = getprun($getsym_0(this$static.e12));\n !this$static.arr2[this$static.arr2idx]\n ? (this$static.arr2[this$static.arr2idx] = new FullCube_4(this$static.c2))\n : $copy_4(this$static.arr2[this$static.arr2idx], this$static.c2);\n this$static.arr2[this$static.arr2idx].value =\n this$static.length1 + this$static.length2 + Math.max(prun, prun_0[ct]);\n this$static.arr2[this$static.arr2idx].length2 = this$static.length2;\n ++this$static.arr2idx;\n return this$static.arr2idx === this$static.arr2.length;\n}\n\nfunction $randomState(this$static) {\n init_5();\n this$static.c = new FullCube_5();\n $doSearch(this$static);\n return this$static.solution;\n}\n\nfunction $search1(this$static, ct, sym, maxl, lm, depth) {\n let axis;\n let ctx;\n let m_0;\n let power;\n let prun;\n let symx;\n if (ct === 0) {\n return maxl === 0 && $init2_0(this$static, sym);\n }\n for (axis = 0; axis < 27; axis += 3) {\n if (axis === lm || axis === lm - 9 || axis === lm - 18) {\n continue;\n }\n for (power = 0; power < 3; ++power) {\n m_0 = axis + power;\n ctx = ctsmv[ct][symmove[sym][m_0]];\n prun = csprun[~~ctx >>> 6];\n if (prun >= maxl) {\n if (prun > maxl) {\n break;\n }\n continue;\n }\n symx = symmult[sym][ctx & 63];\n ctx >>>= 6;\n this$static.move1[depth] = m_0;\n if ($search1(this$static, ctx, symx, maxl - 1, axis, depth + 1)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction $search2(this$static, ct, rl, maxl, lm, depth) {\n let ctx;\n let m_0;\n let prun;\n let rlx;\n if (ct === 0 && ctprun[rl] === 0) {\n return maxl === 0 && $init3(this$static);\n }\n for (m_0 = 0; m_0 < 23; ++m_0) {\n if (ckmv2_0[lm][m_0]) {\n m_0 = skipAxis2[m_0];\n continue;\n }\n ctx = ctmv[ct][m_0];\n rlx = rlmv[rl][m_0];\n prun = ctprun[ctx * 70 + rlx];\n if (prun >= maxl) {\n prun > maxl && (m_0 = skipAxis2[m_0]);\n continue;\n }\n this$static.move2[depth] = move2std[m_0];\n if ($search2(this$static, ctx, rlx, maxl - 1, m_0, depth + 1)) {\n return true;\n }\n }\n return false;\n}\n\nfunction $search3(this$static, edge, ct, prun, maxl, lm, depth) {\n let cord1x;\n let cord2x;\n let ctx;\n let edgex;\n let m_0;\n let prun1;\n let prunx;\n let symcord1x;\n let symx;\n if (maxl === 0) {\n return edge === 0 && ct === 0;\n }\n $set_4(this$static.tempe[depth], edge);\n for (m_0 = 0; m_0 < 17; ++m_0) {\n if (ckmv3[lm][m_0]) {\n m_0 = skipAxis3[m_0];\n continue;\n }\n ctx = ctmove[ct][m_0];\n prun1 = prun_0[ctx];\n if (prun1 >= maxl) {\n prun1 > maxl && m_0 < 14 && (m_0 = skipAxis3[m_0]);\n continue;\n }\n edgex = getmvrot(this$static.tempe[depth].edge, m_0 << 3, 10);\n cord1x = ~~(edgex / 20160);\n symcord1x = raw2sym_1[cord1x];\n symx = symcord1x & 7;\n symcord1x >>= 3;\n cord2x =\n getmvrot(this$static.tempe[depth].edge, (m_0 << 3) | symx, 10) % 20160;\n prunx = getprun_0(symcord1x * 20160 + cord2x, prun);\n if (prunx >= maxl) {\n prunx > maxl && m_0 < 14 && (m_0 = skipAxis3[m_0]);\n continue;\n }\n if ($search3(this$static, edgex, ctx, prunx, maxl - 1, m_0, depth + 1)) {\n this$static.move3[depth] = m_0;\n return true;\n }\n }\n return false;\n}\n\nfunction Search_4() {\n let i_0;\n this.p1sols = new PriorityQueue_0(new FullCube$ValueComparator_0());\n this.move1 = createArray(15);\n this.move2 = createArray(20);\n this.move3 = createArray(20);\n this.c1 = new FullCube_3();\n this.c2 = new FullCube_3();\n this.ct2 = new Center2_0();\n this.ct3 = new Center3_0();\n this.e12 = new Edge3_0();\n this.tempe = createArray(20);\n this.arr2 = createArray(100);\n for (i_0 = 0; i_0 < 20; ++i_0) {\n this.tempe[i_0] = new Edge3_0();\n }\n}\n\nfunction init_5() {\n if (inited_2) {\n return;\n }\n initSym_0();\n raw2sym = createArray(735471);\n initSym2Raw();\n createMoveTable();\n raw2sym = null;\n createPrun();\n init_3();\n init_4();\n initMvrot();\n initRaw2Sym();\n createPrun_0();\n inited_2 = true;\n}\n\ndefineSeed(163, 1, makeCastMap([Q$Search_0]), Search_4);\n_.add1 = false;\n_.arr2idx = 0;\n_.c = null;\n_.length1 = 0;\n_.length2 = 0;\n_.p1SolsCnt = 0;\n_.solution = \"\";\nlet inited_2 = false;\n\nlet ran$clinit_Util_0 = false;\nfunction $clinit_Util_0() {\n if (ran$clinit_Util_0) {\n return;\n }\n ran$clinit_Util_0 = true;\n}\n\nfunction parity_0(arr) {\n let i_0;\n let j;\n let len;\n let parity;\n parity = 0;\n for (i_0 = 0, len = arr.length; i_0 < len; ++i_0) {\n for (j = i_0; j < len; ++j) {\n arr[i_0] > arr[j] && (parity ^= 1);\n }\n }\n return parity;\n}\n\nfunction swap(arr, a, b, c, d, key) {\n let temp;\n switch (key) {\n case 0: {\n temp = arr[d];\n arr[d] = arr[c];\n arr[c] = arr[b];\n arr[b] = arr[a];\n arr[a] = temp;\n return;\n }\n case 1: {\n temp = arr[a];\n arr[a] = arr[c];\n arr[c] = temp;\n temp = arr[b];\n arr[b] = arr[d];\n arr[d] = temp;\n return;\n }\n case 2: {\n temp = arr[a];\n arr[a] = arr[b];\n arr[b] = arr[c];\n arr[c] = arr[d];\n arr[d] = temp;\n return;\n }\n }\n}\n\nfunction Class_0() {}\n\nfunction createForArray(packageName, className, seedId, componentType) {\n const clazz = new Class_0();\n clazz.typeName = packageName + className;\n isInstantiable(seedId !== 0 ? -seedId : 0) &&\n setClassLiteral(seedId !== 0 ? -seedId : 0, clazz);\n clazz.modifiers = 4;\n clazz.superclass = Ljava_lang_Object_2_classLit;\n clazz.componentType = componentType;\n return clazz;\n}\n\nfunction createForClass(packageName, className, seedId, superclass) {\n const clazz = new Class_0();\n clazz.typeName = packageName + className;\n isInstantiable(seedId) && setClassLiteral(seedId, clazz);\n clazz.superclass = superclass;\n return clazz;\n}\n\nfunction getSeedFunction(clazz) {\n const func = seedTable[clazz.seedId];\n clazz = null;\n return func;\n}\n\nfunction isInstantiable(seedId) {\n return typeof seedId === \"number\" && seedId > 0;\n}\n\nfunction setClassLiteral(seedId, clazz) {\n let proto;\n clazz.seedId = seedId;\n if (seedId === 2) {\n proto = String.prototype;\n } else {\n if (seedId > 0) {\n let seed = getSeedFunction(clazz);\n if (seed) {\n proto = seed.prototype;\n } else {\n seed = seedTable[seedId] = function () {};\n seed.___clazz$ = clazz;\n return;\n }\n } else {\n return;\n }\n }\n proto.___clazz$ = clazz;\n}\n\n_.val$outerIter = null;\n\nfunction $add(this$static, o) {\n if ($offer(this$static, o)) {\n return true;\n }\n}\n\nfunction $$init_6(this$static) {\n this$static.array = initDim(\n _3Ljava_lang_Object_2_classLit,\n makeCastMap([Q$Serializable, Q$Object_$1]),\n Q$Object,\n 0,\n 0,\n );\n}\n\nfunction $add_0(this$static, o) {\n setCheck(this$static.array, this$static.size++, o);\n return true;\n}\n\nfunction $clear(this$static) {\n this$static.array = initDim(\n _3Ljava_lang_Object_2_classLit,\n makeCastMap([Q$Serializable, Q$Object_$1]),\n Q$Object,\n 0,\n 0,\n );\n this$static.size = 0;\n}\n\nfunction $get_4(this$static, index) {\n return this$static.array[index];\n}\n\nfunction $remove_0(this$static, index) {\n const previous = this$static.array[index];\n splice_0(this$static.array, index, 1);\n --this$static.size;\n return previous;\n}\n\nfunction $set_7(this$static, index, o) {\n const previous = this$static.array[index];\n setCheck(this$static.array, index, o);\n return previous;\n}\n\nfunction $toArray_0(this$static, out) {\n let i_0;\n out.length < this$static.size && (out = createFrom(out, this$static.size));\n for (i_0 = 0; i_0 < this$static.size; ++i_0) {\n setCheck(out, i_0, this$static.array[i_0]);\n }\n out.length > this$static.size && setCheck(out, this$static.size, null);\n return out;\n}\n\nfunction ArrayList_1() {\n $$init_6(this);\n this.array.length = 500;\n}\n\nfunction splice_0(array, index, deleteCount) {\n array.splice(index, deleteCount);\n}\n_.size = 0;\n\nfunction binarySearch_0(sortedArray, key) {\n let high;\n let low;\n let mid;\n let midVal;\n low = 0;\n high = sortedArray.length - 1;\n while (low <= high) {\n mid = low + (~~(high - low) >> 1);\n midVal = sortedArray[mid];\n if (midVal < key) {\n low = mid + 1;\n } else if (midVal > key) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -low - 1;\n}\n\nfunction fill_0(a) {\n fill_1(a, a.length);\n}\n\nfunction fill_1(a, toIndex) {\n let i_0;\n for (i_0 = 0; i_0 < toIndex; ++i_0) {\n a[i_0] = -1;\n }\n}\n\nfunction $mergeHeaps(this$static, node) {\n let smallestChild;\n let leftChild;\n let rightChild;\n let smallestChild_0;\n const heapSize = this$static.heap.size;\n const value = $get_4(this$static.heap, node);\n while (node * 2 + 1 < heapSize) {\n smallestChild =\n ((leftChild = 2 * node + 1),\n (rightChild = leftChild + 1),\n (smallestChild_0 = leftChild),\n rightChild < heapSize &&\n $compare_0(\n $get_4(this$static.heap, rightChild),\n $get_4(this$static.heap, leftChild),\n ) < 0 &&\n (smallestChild_0 = rightChild),\n smallestChild_0);\n if ($compare_0(value, $get_4(this$static.heap, smallestChild)) < 0) {\n break;\n }\n $set_7(this$static.heap, node, $get_4(this$static.heap, smallestChild));\n node = smallestChild;\n }\n $set_7(this$static.heap, node, value);\n}\n\nfunction $offer(this$static, e) {\n let childNode;\n let node;\n node = this$static.heap.size;\n $add_0(this$static.heap, e);\n while (node > 0) {\n childNode = node;\n node = ~~((node - 1) / 2);\n if ($compare_0($get_4(this$static.heap, node), e) <= 0) {\n $set_7(this$static.heap, childNode, e);\n return true;\n }\n $set_7(this$static.heap, childNode, $get_4(this$static.heap, node));\n }\n $set_7(this$static.heap, node, e);\n return true;\n}\n\nfunction $poll(this$static) {\n if (this$static.heap.size === 0) {\n return null;\n }\n const value = $get_4(this$static.heap, 0);\n $removeAtIndex(this$static);\n return value;\n}\n\nfunction $removeAtIndex(this$static) {\n const lastValue = $remove_0(this$static.heap, this$static.heap.size - 1);\n if (0 < this$static.heap.size) {\n $set_7(this$static.heap, 0, lastValue);\n $mergeHeaps(this$static, 0);\n }\n}\n\nfunction $toArray_1(this$static, a) {\n return $toArray_0(this$static.heap, a);\n}\n\nfunction PriorityQueue_0(cmp) {\n this.heap = new ArrayList_1();\n this.cmp = cmp;\n}\n\ndefineSeed(239, 1, {}, PriorityQueue_0);\n_.cmp = null;\n_.heap = null;\n\nconst Ljava_lang_Object_2_classLit = createForClass(\n \"java.lang.\",\n \"Object\",\n 1,\n null,\n);\nconst _3Ljava_lang_Object_2_classLit = createForArray(\n \"[Ljava.lang.\",\n \"Object;\",\n 356,\n Ljava_lang_Object_2_classLit,\n);\nconst Lcs_threephase_FullCube_2_classLit = createForClass(\n \"cs.threephase.\",\n \"FullCube\",\n 160,\n Ljava_lang_Object_2_classLit,\n);\nconst _3Lcs_threephase_FullCube_2_classLit = createForArray(\n \"[Lcs.threephase.\",\n \"FullCube;\",\n 381,\n Lcs_threephase_FullCube_2_classLit,\n);\n\nlet searcher;\n\nlet raninit = false;\nfunction init() {\n if (raninit) {\n return;\n }\n raninit = true;\n $clinit_Moves();\n $clinit_Util_0();\n $clinit_Center1();\n $clinit_Center2();\n $clinit_Center3();\n $clinit_Edge3();\n $clinit_CornerCube();\n $clinit_EdgeCube();\n $clinit_FullCube_0();\n searcher = new Search_4();\n}\n\nexport function initialize(): void {\n init();\n init_5();\n}\n\nexport async function random444Scramble(): Promise<Alg> {\n init();\n const suffix = Alg.fromString($randomState(searcher));\n return (await rawRandom333Scramble()).concat(suffix);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/cubing/vendor/mit/cs0x7f/fto/scramble_fto_standalone.js"],
|
|
4
|
-
"sourcesContent": ["// @ts-nocheck\n\n// From https://gist.github.com/cs0x7f/1579492aa43c794d529057386c489702\n\n\"use strict\";\n\nimport { randomUIntBelow } from \"random-uint-below\";\nimport { Alg } from \"../../../../../cubing/alg\";\n\n/*\nMIT Licence\n\nCopyright (c) 2024 Chen Shuang\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/*\n\n*/\nvar DEBUG = false;\n\nvar mathlib = (function() {\n\tvar fact = [1];\n\tfor (var i = 0; i < 32; ++i) {\n\t\tfact[i + 1] = fact[i] * (i + 1);\n\t}\n\n\tfunction circle(arr) {\n\t\tvar length = arguments.length - 1,\n\t\t\ttemp = arr[arguments[length]];\n\t\tfor (var i = length; i > 1; i--) {\n\t\t\tarr[arguments[i]] = arr[arguments[i - 1]];\n\t\t}\n\t\tarr[arguments[1]] = temp;\n\t\treturn circle;\n\t}\n\n\tfunction getPruning(table, index) {\n\t\treturn table[index >> 3] >> ((index & 7) << 2) & 15;\n\t}\n\n\tfunction setNPerm(arr, idx, n, even) {\n\t\tvar prt = 0;\n\t\tif (even < 0) {\n\t\t\tidx <<= 1;\n\t\t}\n\t\tif (n >= 16) {\n\t\t\tarr[n - 1] = 0;\n\t\t\tfor (var i = n - 2; i >= 0; i--) {\n\t\t\t\tarr[i] = idx % (n - i);\n\t\t\t\tprt ^= arr[i];\n\t\t\t\tidx = ~~(idx / (n - i));\n\t\t\t\tfor (var j = i + 1; j < n; j--) {\n\t\t\t\t\tarr[j] >= arr[i] && arr[j]++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (even < 0 && (prt & 1) != 0) {\n\t\t\t\tvar tmp = arr[n - 1];\n\t\t\t\tarr[n - 1] = arr[n - 2];\n\t\t\t\tarr[n - 2] = tmp;\n\t\t\t}\n\t\t\treturn arr;\n\t\t}\n\t\tvar vall = 0x76543210;\n\t\tvar valh = 0xfedcba98;\n\t\tfor (var i = 0; i < n - 1; i++) {\n\t\t\tvar p = fact[n - 1 - i];\n\t\t\tvar v = idx / p;\n\t\t\tidx = idx % p;\n\t\t\tprt ^= v;\n\t\t\tv <<= 2;\n\t\t\tif (v >= 32) {\n\t\t\t\tv = v - 32;\n\t\t\t\tarr[i] = valh >> v & 0xf;\n\t\t\t\tvar m = (1 << v) - 1;\n\t\t\t\tvalh = (valh & m) + ((valh >> 4) & ~m);\n\t\t\t} else {\n\t\t\t\tarr[i] = vall >> v & 0xf;\n\t\t\t\tvar m = (1 << v) - 1;\n\t\t\t\tvall = (vall & m) + ((vall >>> 4) & ~m) + (valh << 28);\n\t\t\t\tvalh = valh >> 4;\n\t\t\t}\n\t\t}\n\t\tif (even < 0 && (prt & 1) != 0) {\n\t\t\tarr[n - 1] = arr[n - 2];\n\t\t\tarr[n - 2] = vall & 0xf;\n\t\t} else {\n\t\t\tarr[n - 1] = vall & 0xf;\n\t\t}\n\t\treturn arr;\n\t}\n\n\tfunction getNPerm(arr, n, even) {\n\t\tn = n || arr.length;\n\t\tvar idx = 0;\n\t\tif (n >= 16) {\n\t\t\tfor (var i = 0; i < n - 1; i++) {\n\t\t\t\tidx *= n - i;\n\t\t\t\tfor (var j = i + 1; j < n; j++) {\n\t\t\t\t\tarr[j] < arr[i] && idx++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn even < 0 ? (idx >> 1) : idx;\n\t\t}\n\t\tvar vall = 0x76543210;\n\t\tvar valh = 0xfedcba98;\n\t\tfor (var i = 0; i < n - 1; i++) {\n\t\t\tvar v = arr[i] << 2;\n\t\t\tidx *= n - i;\n\t\t\tif (v >= 32) {\n\t\t\t\tidx += (valh >> (v - 32)) & 0xf;\n\t\t\t\tvalh -= 0x11111110 << (v - 32);\n\t\t\t} else {\n\t\t\t\tidx += (vall >> v) & 0xf;\n\t\t\t\tvalh -= 0x11111111;\n\t\t\t\tvall -= 0x11111110 << v;\n\t\t\t}\n\t\t}\n\t\treturn even < 0 ? (idx >> 1) : idx;\n\t}\n\n\tfunction getNParity(idx, n) {\n\t\tvar i, p;\n\t\tp = 0;\n\t\tfor (i = n - 2; i >= 0; --i) {\n\t\t\tp ^= idx % (n - i);\n\t\t\tidx = ~~(idx / (n - i));\n\t\t}\n\t\treturn p & 1;\n\t}\n\n\tfunction getNOri(arr, n, evenbase) {\n\t\tvar base = Math.abs(evenbase);\n\t\tvar idx = evenbase < 0 ? 0 : arr[0] % base;\n\t\tfor (var i = n - 1; i > 0; i--) {\n\t\t\tidx = idx * base + arr[i] % base;\n\t\t}\n\t\treturn idx;\n\t}\n\n\tfunction setNOri(arr, idx, n, evenbase) {\n\t\tvar base = Math.abs(evenbase);\n\t\tvar parity = base * n;\n\t\tfor (var i = 1; i < n; i++) {\n\t\t\tarr[i] = idx % base;\n\t\t\tparity -= arr[i];\n\t\t\tidx = ~~(idx / base);\n\t\t}\n\t\tarr[0] = (evenbase < 0 ? parity : idx) % base;\n\t\treturn arr;\n\t}\n\n\tfunction bitCount(x) {\n\t\tx -= (x >> 1) & 0x55555555;\n\t\tx = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n\t\treturn ((x + (x >> 4) & 0xf0f0f0f) * 0x1010101) >> 24;\n\t}\n\n\tfunction getMPerm(arr, n, cnts, cums) {\n\t\tvar seen = ~0;\n\t\tvar idx = 0;\n\t\tvar x = 1;\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tvar pi = arr[i];\n\t\t\tidx = idx * (n - i) + bitCount(seen & ((1 << cums[pi]) - 1)) * x;\n\t\t\tx = x * cnts[pi]--;\n\t\t\tseen &= ~(1 << (cums[pi] + cnts[pi]));\n\t\t}\n\t\treturn Math.round(idx / x);\n\t}\n\n\tfunction setMPerm(arr, idx, n, cnts, x) {\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tfor (var j = 0; j < cnts.length; j++) {\n\t\t\t\tif (cnts[j] == 0) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvar x2 = ~~(x * cnts[j] / (n - i));\n\t\t\t\tif (idx < x2) {\n\t\t\t\t\tcnts[j]--;\n\t\t\t\t\tarr[i] = j;\n\t\t\t\t\tx = x2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tidx -= x2;\n\t\t\t}\n\t\t}\n\t\treturn arr;\n\t}\n\n\t// type: 'p' (permutation), 'o' (orientation), 'c' (combination)\n\t// evenbase: base for ori, sign for even parity, cnts for combination\n\tfunction Coord(type, length, evenbase) {\n\t\tthis.length = length;\n\t\tthis.evenbase = evenbase;\n\t\tif (type == 'p') {\n\t\t\tthis.get = function(arr) {\n\t\t\t\treturn getNPerm(arr, this.length, this.evenbase);\n\t\t\t};\n\t\t\tthis.set = function(arr, idx) {\n\t\t\t\treturn setNPerm(arr, idx, this.length, this.evenbase);\n\t\t\t};\n\t\t} else if (type == 'o') {\n\t\t\tthis.get = function(arr) {\n\t\t\t\treturn getNOri(arr, this.length, this.evenbase);\n\t\t\t};\n\t\t\tthis.set = function(arr, idx) {\n\t\t\t\treturn setNOri(arr, idx, this.length, this.evenbase);\n\t\t\t};\n\t\t} else if (type == 'c') {\n\t\t\tvar cnts = evenbase;\n\t\t\tthis.cnts = cnts.slice();\n\t\t\tthis.cntn = this.cnts.length;\n\t\t\tthis.cums = [0];\n\t\t\tfor (var i = 1; i <= this.cntn; i++) {\n\t\t\t\tthis.cums[i] = this.cums[i - 1] + cnts[i - 1];\n\t\t\t}\n\t\t\tthis.n = this.cums[this.cntn];\n\t\t\tvar n = this.n;\n\t\t\tvar x = 1;\n\t\t\tfor (var i = 0; i < this.cntn; i++) {\n\t\t\t\tfor (var j = 1; j <= cnts[i]; j++, n--) {\n\t\t\t\t\tx *= n / j;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.x = Math.round(x);\n\t\t\tthis.get = function(arr) {\n\t\t\t\treturn getMPerm(arr, this.n, this.cnts.slice(), this.cums);\n\t\t\t};\n\t\t\tthis.set = function(arr, idx) {\n\t\t\t\treturn setMPerm(arr, idx, this.n, this.cnts.slice(), this.x);\n\t\t\t};\n\t\t} else { // invalid type\n\t\t\tdebugger;\n\t\t}\n\t}\n\n\tfunction fillFacelet(facelets, f, perm, ori, divcol) {\n\t\tfor (var i = 0; i < facelets.length; i++) {\n\t\t\tvar cubie = facelets[i];\n\t\t\tvar p = perm[i] === undefined ? i : perm[i];\n\t\t\tif (typeof(cubie) == 'number') {\n\t\t\t\tf[cubie] = ~~(facelets[p] / divcol);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar o = ori[i] || 0;\n\t\t\tfor (var j = 0; j < cubie.length; j++) {\n\t\t\t\tf[cubie[(j + o) % cubie.length]] = ~~(facelets[p][j] / divcol);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction detectFacelet(facelets, f, perm, ori, divcol) {\n\t\tfor (var i = 0; i < facelets.length; i++) {\n\t\t\tvar n_ori = facelets[i].length;\n\t\t\touter_loop: for (var j = 0; j < facelets.length + 1; j++) {\n\t\t\t\tif (j == facelets.length) { // not matched\n\t\t\t\t\treturn -1;\n\t\t\t\t} else if (facelets[j].length != n_ori) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (var o = 0; o < n_ori; o++) {\n\t\t\t\t\tvar isMatch = true;\n\t\t\t\t\tfor (var t = 0; t < n_ori; t++) {\n\t\t\t\t\t\tif (~~(facelets[j][t] / divcol) != f[facelets[i][(t + o) % n_ori]]) {\n\t\t\t\t\t\t\tisMatch = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (isMatch) {\n\t\t\t\t\t\tperm[i] = j;\n\t\t\t\t\t\tori[i] = o;\n\t\t\t\t\t\tbreak outer_loop;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\n\tfunction createMoveHash(initState, validMoves, hashFunc, moveFunc) {\n\t\tvar states = [initState];\n\t\tvar hash2idx = {};\n\t\tvar depthEnds = [];\n\t\thash2idx[hashFunc(initState)] = 0;\n\t\tdepthEnds[0] = 1;\n\t\tvar moveTable = [];\n\t\tfor (var m = 0; m < validMoves.length; m++) {\n\t\t\tmoveTable[m] = [];\n\t\t}\n\t\tvar tt = +new Date;\n\t\tfor (var i = 0; i < states.length; i++) {\n\t\t\tif (i == depthEnds[depthEnds.length - 1]) {\n\t\t\t\tdepthEnds.push(states.length);\n\t\t\t}\n\t\t\tif (i % 10000 == 9999) {\n\t\t\t\tDEBUG && console.log(i, 'states scanned, tt=', +new Date - tt);\n\t\t\t}\n\t\t\tvar curState = states[i];\n\t\t\tfor (var m = 0; m < validMoves.length; m++) {\n\t\t\t\tvar newState = moveFunc(curState, validMoves[m]);\n\t\t\t\tif (!newState) {\n\t\t\t\t\tmoveTable[m][i] = -1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvar newHash = hashFunc(newState);\n\t\t\t\tif (!(newHash in hash2idx)) {\n\t\t\t\t\thash2idx[newHash] = states.length;\n\t\t\t\t\tstates.push(newState);\n\t\t\t\t}\n\t\t\t\tmoveTable[m][i] = hash2idx[newHash];\n\t\t\t}\n\t\t}\n\t\tDEBUG && console.log('[move hash] ' + states.length + ' states generated, tt=', +new Date - tt, JSON.stringify(depthEnds));\n\t\treturn [moveTable, hash2idx];\n\t}\n\n\tfunction createPrun(prun, init, size, maxd, doMove, N_MOVES, N_POWER, N_INV) {\n\t\tvar isMoveTable = Array.isArray(doMove);\n\t\tN_MOVES = N_MOVES || 6;\n\t\tN_POWER = N_POWER || 3;\n\t\tN_INV = N_INV || 256;\n\t\tmaxd = maxd || 256;\n\t\tfor (var i = 0, len = (size + 7) >>> 3; i < len; i++) {\n\t\t\tprun[i] = -1;\n\t\t}\n\t\tif (!Array.isArray(init)) {\n\t\t\tinit = [init];\n\t\t}\n\t\tfor (var i = 0; i < init.length; i++) {\n\t\t\tprun[init[i] >> 3] ^= 15 << ((init[i] & 7) << 2);\n\t\t}\n\t\tvar val = 0;\n\t\t// var t = +new Date;\n\t\tfor (var l = 0; l <= maxd; l++) {\n\t\t\tvar done = 0;\n\t\t\tvar inv = l >= N_INV;\n\t\t\tvar fill = (l + 1) ^ 15;\n\t\t\tvar find = inv ? 0xf : l;\n\t\t\tvar check = inv ? l : 0xf;\n\n\t\t\touter_loop: for (var p = 0; p < size; p++, val >>= 4) {\n\t\t\t\tif ((p & 7) == 0) {\n\t\t\t\t\tval = prun[p >> 3];\n\t\t\t\t\tif (!inv && val == -1) {\n\t\t\t\t\t\tp += 7;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ((val & 0xf) != find) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tfor (var m = 0; m < N_MOVES; m++) {\n\t\t\t\t\tvar q = p;\n\t\t\t\t\tfor (var c = 0; c < N_POWER; c++) {\n\t\t\t\t\t\tq = isMoveTable ? doMove[m][q] : doMove(q, m);\n\t\t\t\t\t\tif (q < 0) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (getPruning(prun, q) != check) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t++done;\n\t\t\t\t\t\tif (inv) {\n\t\t\t\t\t\t\tprun[p >> 3] ^= fill << ((p & 7) << 2);\n\t\t\t\t\t\t\tcontinue outer_loop;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprun[q >> 3] ^= fill << ((q & 7) << 2);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (done == 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tDEBUG && console.log('[prun]', done);\n\t\t}\n\t}\n\n\t// ida search algorithm\n\t// isSolved(state) -> boolean, in case isSolved = null, getPrun(idx) == 0 is used\n\t// getPrun(state) -> int\n\t// doMove(state) -> newState\n\t// if ckmv[last_move] >> cur_move & 1, cur_move is skipped\n\tfunction Searcher(isSolved, getPrun, doMove, N_AXIS, N_POWER, ckmv) {\n\t\tthis.isSolved = isSolved || function() { return true; };\n\t\tthis.getPrun = getPrun;\n\t\tthis.doMove = doMove;\n\t\tthis.N_AXIS = N_AXIS;\n\t\tthis.N_POWER = N_POWER;\n\t\tthis.ckmv = ckmv || valuedArray(N_AXIS, function(i) { return 1 << i; } );\n\t}\n\n\tvar _ = Searcher.prototype;\n\n\t_.solve = function(idx, minl, MAXL, callback) {\n\t\tvar sols = this.solveMulti([idx], minl, MAXL, callback);\n\t\treturn sols == null ? null : sols[0];\n\t};\n\n\t_.solveMulti = function(idxs, minl, MAXL, callback) {\n\t\tthis.callback = callback || function() { return true; };\n\t\tvar sol = [];\n\t\touter_loop: for (var l = minl; l <= MAXL; l++) {\n\t\t\tfor (var s = 0; s < idxs.length; s++) {\n\t\t\t\tthis.sidx = s;\n\t\t\t\tif (this.idaSearch(idxs[s], l, -1, sol) == 0) {\n\t\t\t\t\tbreak outer_loop;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.sidx = -1;\n\t\t}\n\t\treturn this.sidx == -1 ? null : [sol, this.sidx];\n\t};\n\n\t_.idaSearch = function(idx, maxl, lm, sol) {\n\t\tvar prun = this.getPrun(idx);\n\t\tif (prun > maxl) {\n\t\t\treturn prun > maxl + 1 ? 2 : 1;\n\t\t}\n\t\tif (maxl == 0) {\n\t\t\treturn this.isSolved(idx) && this.callback(sol, this.sidx) ? 0 : 1;\n\t\t}\n\t\tif (prun == 0 && this.isSolved(idx) && maxl == 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tfor (var axis = 0; axis < this.N_AXIS; axis++) {\n\t\t\tif (this.ckmv[lm] >> axis & 1) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar idx1 = Array.isArray(idx) ? idx.slice() : idx;\n\t\t\tfor (var pow = 0; pow < this.N_POWER; pow++) {\n\t\t\t\tidx1 = this.doMove(idx1, axis);\n\t\t\t\tif (idx1 == null) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tsol.push([axis, pow]);\n\t\t\t\tvar ret = this.idaSearch(idx1, maxl - 1, axis, sol);\n\t\t\t\tif (ret == 0) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tsol.pop();\n\t\t\t\tif (ret == 2) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn 1;\n\t};\n\n\tfunction rn(n) {\n\t\treturn randomUIntBelow(n)\n\t}\n\n\tfunction rndPerm(n, isEven) {\n\t\tvar p = 0;\n\t\tvar arr = [];\n\t\tfor (var i = 0; i < n; i++) {\n\t\t\tarr[i] = i;\n\t\t}\n\t\tfor (var i = 0; i < n - 1; i++) {\n\t\t\tvar k = rn(n - i);\n\t\t\tcircle(arr, i, i + k);\n\t\t\tp ^= k != 0;\n\t\t}\n\t\tif (isEven && p) {\n\t\t\tcircle(arr, 0, 1);\n\t\t}\n\t\treturn arr;\n\t}\n\n\tfunction valuedArray(len, val) {\n\t\tvar ret = [];\n\t\tvar isFun = typeof val == 'function';\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tret[i] = isFun ? val(i) : val;\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction permOriMult(p1, p2, prod, o1, o2, ori, oriMod) {\n\t\tfor (var i = 0; i < p2.length; i++) {\n\t\t\tif (oriMod) {\n\t\t\t\tori[i] = (o1[p2[i]] + o2[i]) % oriMod;\n\t\t\t}\n\t\t\tprod[i] = p1[p2[i]];\n\t\t}\n\t}\n\n\treturn {\n\t\tbitCount: bitCount,\n\t\tgetPruning: getPruning,\n\t\tsetNOri: setNOri,\n\t\tgetNOri: getNOri,\n\t\tgetNPerm: getNPerm,\n\t\tgetNParity: getNParity,\n\t\tCoord: Coord,\n\t\tcreateMoveHash: createMoveHash,\n\t\tcreatePrun: createPrun,\n\t\tfillFacelet: fillFacelet,\n\t\tdetectFacelet: detectFacelet,\n\t\trn: rn,\n\t\tvaluedArray: valuedArray,\n\t\tSearcher: Searcher,\n\t\trndPerm: rndPerm,\n\t\tpermOriMult: permOriMult,\n\t};\n})();\n\nvar ftosolver = (function() {\n\t//face-turning octahedron cube w/o identical pieces\n\tfunction FtoCubie(cp, co, ep, uf, rl) {\n\t\tthis.cp = (cp && cp.slice()) || [0, 1, 2, 3, 4, 5];\n\t\tthis.co = (co && co.slice()) || [0, 0, 0, 0, 0, 0];\n\t\tthis.ep = (ep && ep.slice()) || [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t\tthis.uf = (uf && uf.slice()) || [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t\tthis.rl = (rl && rl.slice()) || [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n\t}\n\n\tvar U = 0, F = 9, r = 18, l = 27, D = 36, B = 45, R = 54, L = 63;\n\n\tvar cornFacelets = [\n\t\t[U + 0, R + 0, F + 0, L + 0],\n\t\t[U + 4, B + 8, r + 4, R + 8],\n\t\t[U + 8, L + 4, l + 8, B + 4],\n\t\t[l + 0, D + 0, r + 0, B + 0],\n\t\t[F + 4, D + 8, l + 4, L + 8],\n\t\t[r + 8, D + 4, F + 8, R + 4]\n\t];\n\n\tvar edgeFacelets = [\n\t\t[U + 1, R + 3], [U + 3, L + 1], [U + 6, B + 6],\n\t\t[l + 1, D + 3], [r + 3, D + 1], [F + 6, D + 6],\n\t\t[F + 3, R + 1], [F + 1, L + 3], [l + 6, L + 6],\n\t\t[l + 3, B + 1], [r + 1, B + 3], [r + 6, R + 6]\n\t];\n\n\tvar ctufFacelets = [\n\t\tU + 2, U + 5, U + 7,\n\t\tF + 2, F + 5, F + 7,\n\t\tr + 2, r + 5, r + 7,\n\t\tl + 2, l + 5, l + 7\n\t];\n\n\tvar ctrlFacelets = [\n\t\tD + 2, D + 5, D + 7,\n\t\tB + 2, B + 5, B + 7,\n\t\tL + 2, L + 5, L + 7,\n\t\tR + 2, R + 5, R + 7\n\t];\n\n\tFtoCubie.prototype.isEqual = function(fc) {\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tif (this.ep[i] != fc.ep[i] || this.uf[i] != fc.uf[i] || this.rl[i] != fc.rl[i]\n\t\t\t\t\t|| i < 6 && (this.cp[i] != fc.cp[i] || this.co[i] != fc.co[i])) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tFtoCubie.prototype.toFaceCube = function(todiv) {\n\t\tvar f = [];\n\t\ttodiv = todiv || 9;\n\t\tvar co = [];\n\t\tfor (var i = 0; i < 6; i++) {\n\t\t\tco[i] = this.co[i] * 2;\n\t\t}\n\t\tmathlib.fillFacelet(cornFacelets, f, this.cp, co, todiv);\n\t\tmathlib.fillFacelet(edgeFacelets, f, this.ep, [], todiv);\n\t\tmathlib.fillFacelet(ctufFacelets, f, this.uf, null, todiv);\n\t\tmathlib.fillFacelet(ctrlFacelets, f, this.rl, null, todiv);\n\t\treturn f;\n\t}\n\n\tFtoCubie.prototype.fromFacelet = function(facelet) {\n\t\tvar count = 0;\n\t\tvar f = [];\n\t\tfor (var i = 0; i < 72; ++i) {\n\t\t\tf[i] = facelet[i];\n\t\t\tcount += Math.pow(16, f[i]);\n\t\t}\n\t\tif (count != 0x99999999) {\n\t\t\treturn -1;\n\t\t}\n\t\tvar co = [];\n\t\tif (mathlib.detectFacelet(cornFacelets, f, this.cp, co, 9) == -1\n\t\t\t\t|| mathlib.detectFacelet(edgeFacelets, f, this.ep, [], 9) == -1) {\n\t\t\treturn -1;\n\t\t}\n\t\tvar parity = 0;\n\t\tfor (var i = 0; i < 6; i++) {\n\t\t\tthis.co[i] = co[i] >> 1;\n\t\t\tparity ^= this.co[i];\n\t\t}\n\t\tif (parity != 0\n\t\t\t\t|| mathlib.getNParity(mathlib.getNPerm(this.cp, 6), 6) != 0\n\t\t\t\t|| mathlib.getNParity(mathlib.getNPerm(this.ep, 12), 12) != 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tvar remainCnts = [3, 3, 3, 3];\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tvar col = f[ctufFacelets[i]];\n\t\t\tif (!(remainCnts[col] > 0)) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tthis.uf[i] = col * 3 + 3 - remainCnts[col];\n\t\t\tremainCnts[col]--;\n\t\t}\n\t\tremainCnts = [3, 3, 3, 3];\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tvar col = [0, 1, 3, 2][f[ctrlFacelets[i]] - 4];\n\t\t\tif (!(remainCnts[col] > 0)) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tthis.rl[i] = col * 3 + 3 - remainCnts[col];\n\t\t\tremainCnts[col]--;\n\t\t}\n\t\tif (mathlib.getNParity(mathlib.getNPerm(this.uf, 12), 12) != 0) {\n\t\t\tfor (var i = 0; i < 12; i++) { // swap 0 and 1 to fix parity\n\t\t\t\tthis.uf[i] ^= this.uf[i] < 2 ? 1 : 0;\n\t\t\t}\n\t\t}\n\t\tif (mathlib.getNParity(mathlib.getNPerm(this.rl, 12), 12) != 0) {\n\t\t\tfor (var i = 0; i < 12; i++) { // swap 0 and 1 to fix parity\n\t\t\t\tthis.rl[i] ^= this.rl[i] < 2 ? 1 : 0;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tFtoCubie.prototype.toString = function(todiv) {\n\t\tvar f = this.toFaceCube(todiv);\n\t\tvar ret = '' +\n\t\t\t' U8 U7 U6 U5 U4 B8 B7 B6 B5 B4\\n' +\n\t\t\t'L4 U3 U2 U1 R8 r4 B3 B2 B1 l8\\n' +\n\t\t\t'L5 L1 U0 R3 R7 r5 r1 B0 l3 l7\\n' +\n\t\t\t'L6 L2 L0 R0 R2 R6 r6 r2 r0 l0 l2 l6\\n' +\n\t\t\t'L7 L3 F0 R1 R5 r7 r3 D0 l1 l5\\n' +\n\t\t\t'L8 F1 F2 F3 R4 r8 D1 D2 D3 l4\\n' +\n\t\t\t' F4 F5 F6 F7 F8 D4 D5 D6 D7 D8';\n\t\tret = ret.replace(/([UFrlDBRL])([0-8])/g, function(m, p1, p2) {\n\t\t\tvar i = 'UFrlDBRL'.indexOf(p1) * 9 + (~~p2);\n\t\t\treturn 'UFrlDBRL' [~~(f[i] / 9)] + (f[i] % 9);\n\t\t});\n\t\treturn ret;\n\t}\n\n\tFtoCubie.FtoMult = function() {\n\t\tvar prod = arguments[arguments.length - 1] || new FtoCubie();\n\t\tfor (var k = 0; k < arguments.length; k++) {\n\t\t\tvar a = arguments[arguments.length - 1 - k];\n\t\t\tfor (var i = 0; i < 6; i++) {\n\t\t\t\tprod.co[i] = k == 0 ? 0 : (a.co[prod.cp[i]] ^ prod.co[i]);\n\t\t\t\tprod.cp[i] = k == 0 ? i : a.cp[prod.cp[i]];\n\t\t\t}\n\t\t\tfor (var i = 0; i < 12; i++) {\n\t\t\t\tprod.ep[i] = k == 0 ? i : a.ep[prod.ep[i]];\n\t\t\t\tprod.uf[i] = k == 0 ? i : a.uf[prod.uf[i]];\n\t\t\t\tprod.rl[i] = k == 0 ? i : a.rl[prod.rl[i]];\n\t\t\t}\n\t\t}\n\t\treturn prod;\n\t}\n\n\tfunction initMoveCube() {\n\t\tvar rotU = new FtoCubie( //move[U]\n\t\t\t[1, 2, 0, 4, 5, 3], [0, 0, 0, 0, 0, 0], [2, 0, 1, 5, 3, 4, 10, 11, 6, 7, 8, 9],\n\t\t\t[1, 2, 0, 7, 8, 6, 10, 11, 9, 4, 5, 3], [2, 0, 1, 8, 6, 7, 11, 9, 10, 5, 3, 4]);\n\t\tvar rotR = new FtoCubie( //move[R]\n\t\t\t[5, 0, 4, 2, 3, 1], [1, 1, 0, 1, 1, 0], [6, 5, 7, 9, 2, 10, 11, 4, 3, 8, 1, 0],\n\t\t\t[5, 3, 4, 8, 6, 7, 2, 0, 1, 11, 9, 10], [4, 5, 3, 7, 8, 6, 1, 2, 0, 10, 11, 9]);\n\n\t\tvar rotUi = FtoCubie.FtoMult(rotU, rotU, null);\n\t\tvar rotRi = FtoCubie.FtoMult(rotR, rotR, null);\n\t\tvar rotL = FtoCubie.FtoMult(rotUi, rotR, rotU, null);\n\t\tvar rotF = FtoCubie.FtoMult(rotR, rotU, rotRi, null);\n\n\t\tvar moveCube = [];\n\t\tmoveCube[0] = new FtoCubie( //moveU\n\t\t\t[1, 2, 0, 3, 4, 5], [0, 0, 0, 0, 0, 0], [2, 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n\t\t\t[1, 2, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11], [0, 1, 2, 3, 6, 7, 11, 9, 8, 5, 10, 4]);\n\t\tmoveCube[2] = new FtoCubie( //moveF\n\t\t\t[4, 1, 2, 3, 5, 0], [1, 0, 0, 0, 1, 0], [0, 1, 2, 3, 4, 6, 7, 5, 8, 9, 10, 11],\n\t\t\t[0, 1, 2, 4, 5, 3, 6, 7, 8, 9, 10, 11], [0, 9, 10, 3, 4, 5, 2, 7, 1, 8, 6, 11]);\n\t\tmoveCube[4] = new FtoCubie( //mover\n\t\t\t[0, 5, 2, 1, 4, 3], [0, 1, 0, 0, 0, 1], [0, 1, 2, 3, 10, 5, 6, 7, 8, 9, 11, 4],\n\t\t\t[0, 1, 2, 3, 4, 5, 7, 8, 6, 9, 10, 11], [5, 3, 2, 11, 4, 10, 6, 7, 8, 9, 0, 1]);\n\t\tmoveCube[6] = new FtoCubie( //movel\n\t\t\t[0, 1, 3, 4, 2, 5], [0, 0, 1, 1, 0, 0], [0, 1, 2, 8, 4, 5, 6, 7, 9, 3, 10, 11],\n\t\t\t[0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 9], [8, 1, 7, 2, 0, 5, 6, 3, 4, 9, 10, 11]);\n\t\tmoveCube[8] = new FtoCubie( //moveD\n\t\t\t[0, 1, 2, 5, 3, 4], [0, 0, 0, 0, 0, 0], [0, 1, 2, 4, 5, 3, 6, 7, 8, 9, 10, 11],\n\t\t\t[0, 1, 2, 3, 9, 10, 5, 7, 4, 8, 6, 11], [1, 2, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11]);\n\t\tmoveCube[10] = new FtoCubie( //moveB\n\t\t\t[0, 3, 1, 2, 4, 5], [0, 1, 1, 0, 0, 0], [0, 1, 10, 3, 4, 5, 6, 7, 8, 2, 9, 11],\n\t\t\t[0, 6, 7, 3, 4, 5, 11, 9, 8, 2, 10, 1], [0, 1, 2, 4, 5, 3, 6, 7, 8, 9, 10, 11]);\n\t\tmoveCube[12] = new FtoCubie( //moveR\n\t\t\t[5, 0, 2, 3, 4, 1], [1, 1, 0, 0, 0, 0], [6, 1, 2, 3, 4, 5, 11, 7, 8, 9, 10, 0],\n\t\t\t[5, 3, 2, 8, 4, 7, 6, 0, 1, 9, 10, 11], [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 9]);\n\t\tmoveCube[14] = new FtoCubie( //moveL\n\t\t\t[2, 1, 4, 3, 0, 5], [1, 0, 1, 0, 0, 0], [0, 8, 2, 3, 4, 5, 6, 1, 7, 9, 10, 11],\n\t\t\t[11, 1, 10, 2, 0, 5, 6, 7, 8, 9, 3, 4], [0, 1, 2, 3, 4, 5, 7, 8, 6, 9, 10, 11]);\n\t\tmoveCube[16] = FtoCubie.FtoMult(rotU, moveCube[8], null); // moveUw = [U] * D\n\t\tmoveCube[18] = FtoCubie.FtoMult(rotF, moveCube[10], null); // moveFw = [F] * B\n\t\tmoveCube[20] = FtoCubie.FtoMult(rotR, moveCube[6], null); // moveRw = [R] * l\n\t\tmoveCube[22] = FtoCubie.FtoMult(rotL, moveCube[4], null); // moveLw = [L] * r\n\n\t\tfor (var i = 1; i < 24; i += 2) {\n\t\t\tmoveCube[i] = new FtoCubie();\n\t\t\tFtoCubie.FtoMult(moveCube[i - 1], moveCube[i - 1], moveCube[i]);\n\t\t}\n\n\t\tvar moveHash = [];\n\t\tfor (var i = 0; i < 24; i ++) {\n\t\t\tmoveHash[i] = moveCube[i].ep.join(',');\n\t\t}\n\t\t//init sym\n\t\tvar symCube = [];\n\t\tvar symMult = [];\n\t\tvar symMulI = [];\n\t\tvar symMulM = [];\n\t\tvar symHash = [];\n\t\tvar fc = new FtoCubie();\n\t\tvar fc2 = new FtoCubie();\n\t\tvar tmp;\n\t\tfor (var s = 0; s < 12; s++) {\n\t\t\tsymCube[s] = new FtoCubie(fc.cp, fc.co, fc.ep, fc.uf, fc.rl);\n\t\t\tsymHash[s] = symCube[s].ep.join(',');\n\t\t\tsymMult[s] = [];\n\t\t\tsymMulI[s] = [];\n\t\t\tfc = FtoCubie.FtoMult(fc, rotU, null);\n\t\t\tif (s % 3 == 2) { // [F] or [R]\n\t\t\t\tfc = FtoCubie.FtoMult(fc, rotR, rotU, null);\n\t\t\t}\n\t\t\tif (s % 6 == 5) {\n\t\t\t\tfc = FtoCubie.FtoMult(fc, rotU, rotR, null);\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tfor (var j = 0; j < 12; j++) {\n\t\t\t\tFtoCubie.FtoMult(symCube[i], symCube[j], fc);\n\t\t\t\tvar k = symHash.indexOf(fc.ep.join(','));\n\t\t\t\tsymMult[i][j] = k;\n\t\t\t\tsymMulI[k][j] = i;\n\t\t\t}\n\t\t}\n\t\tfor (var s = 0; s < 12; s++) {\n\t\t\tsymMulM[s] = [];\n\t\t\tfor (var j = 0; j < 8; j++) {\n\t\t\t\tFtoCubie.FtoMult(symCube[symMulI[0][s]], moveCube[j * 2], symCube[s], fc);\n\t\t\t\tvar k = moveHash.indexOf(fc.ep.join(','));\n\t\t\t\tsymMulM[s][j] = k >> 1;\n\t\t\t}\n\t\t}\n\t\tFtoCubie.moveCube = moveCube;\n\t\tFtoCubie.symCube = symCube;\n\t\tFtoCubie.symMult = symMult;\n\t\tFtoCubie.symMulI = symMulI;\n\t\tFtoCubie.symMulM = symMulM;\n\t};\n\n\tinitMoveCube();\n\n\tfunction ftoPermMove(key, perm, move) {\n\t\tvar ret = [];\n\t\tvar movePerm = FtoCubie.moveCube[move][key];\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tret[i] = perm[movePerm[i]];\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction ftoFullMove(fc, move) {\n\t\treturn FtoCubie.FtoMult(fc, FtoCubie.moveCube[move], null);\n\t}\n\n\tfunction phase1EdgeHash(ep) {\n\t\tvar ret = 0;\n\t\tvar e3fst = -1;\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tif ((0x38 >> ep[i] & 1) == 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (e3fst == -1) {\n\t\t\t\te3fst = ep[i];\n\t\t\t}\n\t\t\tret += ((ep[i] - e3fst + 3) % 3 + 1) << i * 2;\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction phase1CtrlHash(rl) {\n\t\tvar ret = 0;\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tif (rl[i] < 3) {\n\t\t\t\tret |= 1 << i;\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction phase2EdgeHash(ep) {\n\t\tvar edge2group = [0, 1, 2, 3, 3, 3, 0, 1, 1, 2, 2, 0];\n\t\tvar groups = [[0, 6, 11], [1, 7, 8], [2, 9, 10], [3, 4, 5]];\n\t\tvar ret = 0;\n\t\tvar egoff = [-1, -1, -1, -1];\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tvar g = edge2group[ep[i]];\n\t\t\tvar gidx = groups[g].indexOf(ep[i]);\n\t\t\tif (egoff[g] == -1) {\n\t\t\t\tegoff[g] = gidx;\n\t\t\t}\n\t\t\tret += (g * 4 + (gidx - egoff[g] + 3) % 3) * Math.pow(16, i);\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction phase2CtHash(ct) {\n\t\tvar ret = 0;\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tret |= ~~(ct[i] / 3) << (i * 2);\n\t\t}\n\t\treturn ret;\n\t}\n\n\tfunction phase3EdgeHash(ep) {\n\t\treturn String.fromCharCode.apply(null, ep);\n\t}\n\n\tfunction phase3CcufHash(fc) {\n\t\treturn String.fromCharCode.apply(null, [].concat(fc.cp, fc.co));\n\t}\n\n\tfunction randomMoves(validMoves, len) {\n\t\tvar scramble = [];\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tscramble.push(validMoves[~~(Math.random() * validMoves.length)]);\n\t\t}\n\t\tvar fc = new FtoCubie();\n\t\tfor (var i = 0; i < scramble.length; i++) {\n\t\t\tfc = FtoCubie.FtoMult(fc, FtoCubie.moveCube[scramble[i]], null);\n\t\t}\n\t\treturn [fc, scramble];\n\t}\n\n\tfunction genCkmv(moves) {\n\t\tvar ckmv = [];\n\t\tvar tmp1 = new FtoCubie();\n\t\tvar tmp2 = new FtoCubie();\n\t\tfor (var m1 = 0; m1 < moves.length; m1++) {\n\t\t\tckmv[m1] = 1 << m1;\n\t\t\tfor (var m2 = 0; m2 < m1; m2++) {\n\t\t\t\tFtoCubie.FtoMult(FtoCubie.moveCube[moves[m1]], FtoCubie.moveCube[moves[m2]], tmp1);\n\t\t\t\tFtoCubie.FtoMult(FtoCubie.moveCube[moves[m2]], FtoCubie.moveCube[moves[m1]], tmp2);\n\t\t\t\tif (tmp1.isEqual(tmp2)) {\n\t\t\t\t\tckmv[m1] |= 1 << m2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn ckmv;\n\t}\n\n\tvar phase1Moves = [0, 2, 22, 6, 16, 10, 12, 14]; // keep the (D, DR) edge\n\tvar p1epMoves = null;\n\tvar p1rlMoves = null;\n\tvar ckmv1 = null;\n\tvar solv1 = null;\n\n\tvar pyraSymCube = [];\n\tfor (var i = 0; i < 12; i++) {\n\t\tpyraSymCube.push(new FtoCubie(\n\t\t\tFtoCubie.symCube[i].cp,\n\t\t\tFtoCubie.symCube[i].co,\n\t\t\tnull,\n\t\t\tFtoCubie.symCube[i].uf,\n\t\t\tnull\n\t\t));\n\t}\n\n\tfunction phase1Init() {\n\t\tvar fc = new FtoCubie();\n\t\tp1epMoves = mathlib.createMoveHash(fc.ep.slice(), phase1Moves, phase1EdgeHash, ftoPermMove.bind(null, 'ep'));\n\t\tp1rlMoves = mathlib.createMoveHash(fc.rl.slice(), phase1Moves, phase1CtrlHash, ftoPermMove.bind(null, 'rl'));\n\t\tvar N_P1EP = p1epMoves[0][0].length;\n\t\tvar N_P1RL = p1rlMoves[0][0].length;\n\t\tDEBUG && console.log('p1ep len=' + N_P1EP + ' p1rl len=' + N_P1RL);\n\n\t\tckmv1 = genCkmv(phase1Moves);\n\t\tvar p1eprlPrun = [];\n\t\tmathlib.createPrun(p1eprlPrun, 0, N_P1EP * N_P1RL, 14, function(idx, move) {\n\t\t\tvar rl = ~~(idx / N_P1EP);\n\t\t\tvar ep = idx % N_P1EP;\n\t\t\treturn p1rlMoves[0][move][rl] * N_P1EP + p1epMoves[0][move][ep];\n\t\t}, phase1Moves.length, 2);\n\n\t\tsolv1 = new mathlib.Searcher(null, function(idx) {\n\t\t\treturn mathlib.getPruning(p1eprlPrun, idx[1] * N_P1EP + idx[0]);\n\t\t}, function(idx, move) {\n\t\t\treturn [\n\t\t\t\tp1epMoves[0][move][idx[0]],\n\t\t\t\tp1rlMoves[0][move][idx[1]]\n\t\t\t];\n\t\t}, 8, 2, ckmv1);\n\t}\n\n\tfunction phase1GenIdxs(fc) {\n\t\tvar idxs = [];\n\t\tvar syms = [];\n\t\tvar fc2 = new FtoCubie();\n\t\tvar fc3 = new FtoCubie();\n\n\t\tfor (var sidx = 0; sidx < 12; sidx += 3) {\n\t\t\tFtoCubie.FtoMult(FtoCubie.symCube[sidx % 12], fc, fc2);\n\t\t\tvar rot;\n\t\t\tfor (rot = 0; rot < 12; rot++) {\n\t\t\t\tFtoCubie.FtoMult(fc2, FtoCubie.symCube[rot], fc3);\n\t\t\t\tif (fc3.ep[4] == 4) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar epidxs = [];\n\t\t\tvar rlidxs = [];\n\t\t\tidxs.push([\n\t\t\t\tp1epMoves[1][phase1EdgeHash(fc3.ep)],\n\t\t\t\tp1rlMoves[1][phase1CtrlHash(fc3.rl)]\n\t\t\t]);\n\t\t\tsyms.push([sidx, rot]);\n\t\t}\n\t\treturn [idxs, syms];\n\t}\n\n\tfunction phase1ProcSol(sol, solsym, fc) {\n\t\tfor (var i = 0; i < sol.length; i++) {\n\t\t\tsol[i] = phase1Moves[sol[i][0]] + sol[i][1];\n\t\t}\n\t\tvar std = move2std(sol);\n\t\tfor (var i = 0; i < std[0].length; i++) {\n\t\t\tvar move = std[0][i];\n\t\t\tsol[i] = FtoCubie.symMulM[FtoCubie.symMulI[0][solsym[1]]][move >> 1] * 2 + (move & 1);\n\t\t\tfc = FtoCubie.FtoMult(fc, FtoCubie.moveCube[sol[i]], null);\n\t\t}\n\t\tsolsym[1] = FtoCubie.symMulI[solsym[1]][std[1]];\n\t\tfc = FtoCubie.FtoMult(\n\t\t\tpyraSymCube[~~(solsym[0] / 12)], FtoCubie.symCube[solsym[0] % 12],\n\t\t\tfc, FtoCubie.symCube[solsym[1]], null\n\t\t);\n\t\treturn [fc, sol, solsym[0], solsym[1]];\n\t}\n\n\tvar N_PHASE1_SOLS = 1000;\n\n\tfunction solvePhase1(fc) {\n\t\tif (!solv1) {\n\t\t\tphase1Init();\n\t\t}\n\n\t\tvar tt = performance.now();\n\t\tvar idxs = phase1GenIdxs(fc);\n\t\tvar syms = idxs[1];\n\t\tidxs = idxs[0];\n\n\t\tvar p1sols = [];\n\n\t\tvar sol1s = solv1.solveMulti(idxs, 0, 12, function(sol, sidx) {\n\t\t\tvar param = phase1ProcSol(sol.slice(), syms[sidx].slice(), fc);\n\t\t\tp1sols.push(param);\n\t\t\treturn p1sols.length >= N_PHASE1_SOLS;\n\t\t});\n\n\t\ttt = performance.now() - tt;\n\t\tfor (var i = 0; i < p1sols.length; i++) {\n\t\t\tp1sols[i].push(tt);\n\t\t}\n\t\treturn p1sols;\n\t}\n\n\tvar phase2Moves = [0, 12, 14, 8, 10];\n\tvar p2epMoves = null;\n\tvar p2rlMoves = null;\n\tvar p2ccMoves = null;\n\tvar p2cc2ufBit = {};\n\tvar ckmv2 = null;\n\tvar solv2 = null;\n\tvar P2EPRL_MAXL = 11;\n\tvar p2symMap = [];\n\tvar ufStd2Raw = [];\n\tvar ufRaw2Std = [];\n\tvar p2ufCoord = new mathlib.Coord('c', 12, [3, 3, 3, 3]);\n\n\tvar cornExFacelets = [\n\t\t[U + 2, R + 2, F + 2, L + 2],\n\t\t[U + 5, B + 7, r + 5, R + 7],\n\t\t[U + 7, L + 5, l + 7, B + 5],\n\t\t[l + 2, D + 2, r + 2, B + 2],\n\t\t[F + 5, D + 7, l + 5, L + 7],\n\t\t[r + 7, D + 5, F + 7, R + 5]\n\t];\n\n\tfunction phase2CpcoHash(fc) {\n\t\tvar ret = String.fromCharCode.apply(null, [].concat(fc.cp, fc.co));\n\t\tif (!(ret in p2cc2ufBit)) {\n\t\t\tvar co = [];\n\t\t\tfor (var i = 0; i < 6; i++) {\n\t\t\t\tco[i] = fc.co[i] * 2;\n\t\t\t}\n\t\t\tvar facelet = fc.toFaceCube();\n\t\t\tmathlib.fillFacelet(cornExFacelets, facelet, fc.cp, co, 9);\n\t\t\tvar fc2 = new FtoCubie().fromFacelet(facelet);\n\t\t\tp2cc2ufBit[ret] = phase2CtHash(fc2.uf);\n\t\t}\n\t\treturn ret;\n\t}\n\n\t// re-color the cube s.t. uf is minimized in lexicographical order\n\tfunction phase2ufStd(uf, symMap) {\n\t\tvar col1 = uf[0], col2 = -1;\n\t\tfor (var i = 1; i < 12; i++) {\n\t\t\tif (uf[i] != col1) {\n\t\t\t\tcol2 = uf[i];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar sym = symMap[col1 * 4 + col2];\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tuf[i] = ~~(FtoCubie.symCube[sym].uf[uf[i] * 3] / 3);\n\t\t}\n\t\treturn sym;\n\t}\n\n\tfunction getPhase2ufIdx(uf) {\n\t\tvar ufstd = [];\n\t\tfor (var i = 0; i < 12; i++) {\n\t\t\tufstd[i] = ~~(uf[i] / 3);\n\t\t}\n\t\tvar sym = phase2ufStd(ufstd, p2symMap);\n\t\treturn ufRaw2Std[p2ufCoord.get(ufstd)] << 4 | sym;\n\t}\n\n\tfunction phase2Init() {\n\t\tvar fc = new FtoCubie();\n\t\tp2epMoves = mathlib.createMoveHash(fc.ep.slice(), phase2Moves, phase2EdgeHash, ftoPermMove.bind(null, 'ep'));\n\t\tp2rlMoves = mathlib.createMoveHash(fc.rl.slice(), phase2Moves, phase2CtHash, ftoPermMove.bind(null, 'rl'));\n\t\tp2ccMoves = mathlib.createMoveHash(fc, phase2Moves, phase2CpcoHash, ftoFullMove);\n\n\t\tvar arr = [];\n\t\tvar arr2 = [];\n\t\tvar p2ufMoveStd = [[], [], [], [], []];\n\t\tvar ufStd2Bit = [];\n\t\tvar p2ccRecol = [];\n\t\tfor (var s = 0; s < 12; s++) {\n\t\t\tvar uf = FtoCubie.symCube[s].uf;\n\t\t\tvar col1 = ~~(uf.indexOf(0) / 3);\n\t\t\tvar col2 = ~~(uf.indexOf(3) / 3);\n\t\t\tp2symMap[col1 * 4 + col2] = s;\n\t\t\tp2ccRecol[s] = [];\n\t\t}\n\t\tout: for (var i = 0; i < 42000; i++) {\n\t\t\tp2ufCoord.set(arr, i);\n\t\t\tfor (var j = 1; j < 12; j++) {\n\t\t\t\tif (arr[j] > 1) {\n\t\t\t\t\tcontinue out;\n\t\t\t\t} else if (arr[j] == 1) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tufRaw2Std[i] = ufStd2Raw.length;\n\t\t\tufStd2Raw.push(i);\n\t\t}\n\t\tfor (var i = 0; i < ufStd2Raw.length; i++) {\n\t\t\tp2ufCoord.set(arr, ufStd2Raw[i]);\n\t\t\tvar hash = 0;\n\t\t\tfor (var j = 0; j < 12; j++) {\n\t\t\t\thash |= arr[j] << (j * 2);\n\t\t\t}\n\t\t\tufStd2Bit[i] = hash;\n\t\t\tfor (var m = 0; m < phase2Moves.length; m++) {\n\t\t\t\tmathlib.permOriMult(arr, FtoCubie.moveCube[phase2Moves[m]].uf, arr2);\n\t\t\t\tvar sym = phase2ufStd(arr2, p2symMap);\n\t\t\t\tp2ufMoveStd[m][i] = ufRaw2Std[p2ufCoord.get(arr2)] << 4 | sym;\n\t\t\t}\n\t\t}\n\t\tvar cc2Bit = [];\n\t\tfor (var key in p2ccMoves[1]) {\n\t\t\tvar idx = p2ccMoves[1][key];\n\t\t\tcc2Bit[idx] = p2cc2ufBit[key];\n\t\t\tvar cpco = [];\n\t\t\tfor (var s = 0; s < 12; s++) {\n\t\t\t\tvar sc = FtoCubie.symCube[s];\n\t\t\t\tfor (var i = 0; i < 6; i++) {\n\t\t\t\t\tvar scpi = key.charCodeAt(i);\n\t\t\t\t\tcpco[i] = sc.cp[scpi];\n\t\t\t\t\tcpco[i + 6] = sc.co[scpi] ^ key.charCodeAt(i + 6);\n\t\t\t\t}\n\t\t\t\tvar hash = String.fromCharCode.apply(null, cpco);\n\t\t\t\tp2ccRecol[s][idx] = p2ccMoves[1][hash];\n\t\t\t}\n\t\t}\n\t\tvar p2necPrun = [ // idx = a * 7 + b, a: #mismatch 3 U corners, b: other corners\n\t\t\t0, 0, 3, 4, 5, 6, 8,\n\t\t\t0, 2, 3, 4, 5, 6, 8,\n\t\t\t1, 2, 4, 4, 5, 6, 8,\n\t\t\t1, 3, 4, 5, 6, 7, 8,\n\t\t\t3, 3, 4, 5, 6, 7, 9,\n\t\t\t4, 4, 5, 6, 7, 8, 9,\n\t\t\t5, 5, 6, 7, 8, 9, 10\n\t\t];\n\n\t\tvar N_P2EP = p2epMoves[0][0].length;\n\t\tvar N_P2RL = p2rlMoves[0][0].length;\n\t\tvar p2eprlPrun = [];\n\t\tmathlib.createPrun(p2eprlPrun, 0, N_P2EP * N_P2RL, P2EPRL_MAXL - 2, function(idx, move) {\n\t\t\tvar rl = ~~(idx / N_P2EP);\n\t\t\tvar ep = idx % N_P2EP;\n\t\t\treturn p2rlMoves[0][move][rl] * N_P2EP + p2epMoves[0][move][ep];\n\t\t}, phase2Moves.length, 2);\n\t\tckmv2 = genCkmv(phase2Moves);\n\n\t\tsolv2 = new mathlib.Searcher(function(idx) {\n\t\t\treturn ufStd2Bit[idx[3] >> 4] == cc2Bit[p2ccRecol[idx[3] & 0xf][idx[2]]];\n\t\t}, function(idx) {\n\t\t\tvar xors = ufStd2Bit[idx[3] >> 4] ^ cc2Bit[p2ccRecol[idx[3] & 0xf][idx[2]]];\n\t\t\txors = (xors | xors >> 1) & 0x555555;\n\t\t\tvar necIdx = mathlib.bitCount(xors & 0xc0c0ff) * 7 + mathlib.bitCount(xors & 0x3f3f00);\n\t\t\treturn Math.max(\n\t\t\t\tMath.min(P2EPRL_MAXL, mathlib.getPruning(p2eprlPrun, idx[1] * N_P2EP + idx[0])),\n\t\t\t\tp2necPrun[necIdx]\n\t\t\t);\n\t\t}, function(idx, move) {\n\t\t\tvar ufidx1 = p2ufMoveStd[move][idx[3] >> 4];\n\t\t\tvar ufcol = FtoCubie.symMult[ufidx1 & 0xf][idx[3] & 0xf];\n\t\t\treturn [\n\t\t\t\tp2epMoves[0][move][idx[0]],\n\t\t\t\tp2rlMoves[0][move][idx[1]],\n\t\t\t\tp2ccMoves[0][move][idx[2]],\n\t\t\t\tufidx1 & ~0xf | ufcol,\n\t\t\t];\n\t\t}, phase2Moves.length, 2, ckmv2);\n\t}\n\n\tfunction solvePhase2(solvInfos) {\n\t\tif (!solv2) {\n\t\t\tphase2Init();\n\t\t}\n\t\tvar tt = performance.now();\n\t\tvar idxs = [];\n\t\tfor (var i = 0; i < solvInfos.length; i++) {\n\t\t\tidxs.push([\n\t\t\t\tp2epMoves[1][phase2EdgeHash(solvInfos[i][0].ep)],\n\t\t\t\tp2rlMoves[1][phase2CtHash(solvInfos[i][0].rl)],\n\t\t\t\tp2ccMoves[1][phase2CpcoHash(solvInfos[i][0])],\n\t\t\t\tgetPhase2ufIdx(solvInfos[i][0].uf)\n\t\t\t]);\n\t\t}\n\t\tvar sol2s = solv2.solveMulti(idxs, 0, 25);\n\t\tvar sol = sol2s[0];\n\t\tvar src = sol2s[1];\n\t\tvar solvInfo = solvInfos[src];\n\t\tvar fc = solvInfo[0];\n\t\tfor (var i = 0; i < sol.length; i++) {\n\t\t\tvar move = phase2Moves[sol[i][0]] + sol[i][1];\n\t\t\tsol[i] = FtoCubie.symMulM[FtoCubie.symMulI[0][solvInfo[3]]][move >> 1] * 2 + (move & 1);\n\t\t\tfc = FtoCubie.FtoMult(fc, FtoCubie.moveCube[move], null);\n\t\t}\n\t\treturn [fc, sol, solvInfo[2], solvInfo[3], src, performance.now() - tt];\n\t}\n\n\tvar phase3Moves = [8, 10, 12, 14];\n\tvar p3epMoves = null;\n\tvar p3ufMoves = null;\n\tvar p3epPrun = null;\n\tvar p3ufPrun = null;\n\tvar ckmv3 = null;\n\tvar solv3 = null;\n\n\tfunction phase3Init() {\n\t\tvar fc = new FtoCubie();\n\t\tp3epMoves = mathlib.createMoveHash(fc.ep.slice(), phase3Moves, phase3EdgeHash, ftoPermMove.bind(null, 'ep'));\n\t\tp3ufMoves = mathlib.createMoveHash(new FtoCubie(), phase3Moves, phase3CcufHash, ftoFullMove);\n\t\tp3epPrun = [];\n\t\tp3ufPrun = [];\n\t\tmathlib.createPrun(p3epPrun, 0, 81, 14, p3epMoves[0], 4, 2);\n\t\tmathlib.createPrun(p3ufPrun, 0, 11520, 14, p3ufMoves[0], 4, 2);\n\t\tckmv3 = genCkmv(phase3Moves);\n\n\t\tsolv3 = new mathlib.Searcher(null, function(idx) {\n\t\t\treturn Math.max(\n\t\t\t\tmathlib.getPruning(p3epPrun, idx[0]),\n\t\t\t\tmathlib.getPruning(p3ufPrun, idx[1])\n\t\t\t);\n\t\t}, function(idx, move) {\n\t\t\treturn [p3epMoves[0][move][idx[0]], p3ufMoves[0][move][idx[1]]];\n\t\t}, 4, 2, ckmv3);\n\t}\n\n\tfunction solvePhase3(solvInfo) {\n\t\tvar fc = solvInfo[0];\n\t\tif (!p3epPrun) {\n\t\t\tphase3Init();\n\t\t}\n\n\t\tvar tt = performance.now();\n\t\tvar p3epidx = p3epMoves[1][phase3EdgeHash(fc.ep)];\n\t\tvar p3ufidx = p3ufMoves[1][phase3CcufHash(fc)];\n\n\t\tvar sol = solv3.solve([p3epidx, p3ufidx], 0, 25);\n\n\t\tfor (var i = 0; i < sol.length; i++) {\n\t\t\tvar move = phase3Moves[sol[i][0]] + sol[i][1];\n\t\t\tsol[i] = FtoCubie.symMulM[FtoCubie.symMulI[0][solvInfo[3]]][move >> 1] * 2 + (move & 1);\n\n\t\t\tfc = FtoCubie.FtoMult(fc, FtoCubie.moveCube[move], null);\n\t\t}\n\t\treturn [fc, sol, solvInfo[2], solvInfo[3], performance.now() - tt];\n\t}\n\n\t// convert wide moves to face moves\n\tfunction move2std(moves) {\n\t\tvar sym = 0;\n\t\tvar ret = [];\n\t\t// Uw = [U] * D, Fw = [F] * B, Rw = [R] * l, Lw = [L] * r\n\t\tvar w2axis = [4, 5, 3, 2];\n\t\tvar w2rot = [1, 10, 5, 11];\n\t\tfor (var i = 0; i < moves.length; i++) {\n\t\t\tvar rot = 0;\n\t\t\tvar axis = moves[i] >> 1;\n\t\t\tvar pow = moves[i] & 1;\n\t\t\tif (axis >= 8) {\n\t\t\t\trot = w2rot[axis - 8];\n\t\t\t\taxis = w2axis[axis - 8];\n\t\t\t}\n\t\t\tif (!pow) {\n\t\t\t\trot = FtoCubie.symMult[rot][rot];\n\t\t\t}\n\t\t\tret.push(FtoCubie.symMulM[sym][axis] * 2 + pow);\n\t\t\tsym = FtoCubie.symMult[rot][sym];\n\t\t}\n\t\treturn [ret, sym];\n\t}\n\n\tfunction applyMoves(fc, moves) {\n\t\tfor (var i = 0; i < moves.length; i++) {\n\t\t\tfc = FtoCubie.FtoMult(fc, FtoCubie.moveCube[moves[i]], null);\n\t\t}\n\t\treturn fc;\n\t}\n\n\tvar move2str = [\"U\", \"U'\", \"F\", \"F'\", \"r\", \"r'\", \"l\", \"l'\", \"D\", \"D'\", \"B\", \"B'\", \"R\", \"R'\", \"L\", \"L'\"]\n\n\tfunction prettyMoves(moves) {\n\t\tvar buf = [];\n\t\tfor (var i = 0; i < moves.length; i++) {\n\t\t\tbuf[i] = move2str[moves[i]];\n\t\t}\n\t\treturn buf.join(' ').replace(/l/g, 'BL').replace(/r/g, 'BR');\n\t}\n\n\tfunction FtoSolver() {}\n\n\tFtoSolver.prototype.solveFto = function(fc, invSol) {\n\t\tif (!solv1) {\n\t\t\tvar tt = performance.now();\n\t\t\tphase1Init();\n\t\t\tphase2Init();\n\t\t\tphase3Init();\n\t\t\tDEBUG && console.log('[ftosolver] init time:', performance.now() - tt);\n\t\t}\n\t\tvar solvInfos = solvePhase1(fc);\n\n\t\tvar solvInfo2 = solvePhase2(solvInfos);\n\n\t\tvar solvInfo1 = solvInfos[solvInfo2[4]];\n\t\tthis.sol1 = solvInfo1[1].slice();\n\t\tthis.tt1 = solvInfo1[4];\n\t\tvar sym1Idx = solvInfo1[2];\n\n\t\tthis.sol2 = solvInfo2[1].slice();\n\t\tthis.tt2 = solvInfo2[5];\n\t\tsolvInfo2[0] = FtoCubie.FtoMult(pyraSymCube[FtoCubie.symMulI[0][~~(sym1Idx / 12)]], solvInfo2[0], null);\n\n\t\tvar solvInfo3 = solvePhase3(solvInfo2);\n\t\tthis.sol3 = solvInfo3[1].slice();\n\t\tthis.tt3 = solvInfo3[4];\n\n\t\tvar sol = [].concat(this.sol1, this.sol2, this.sol3);\n\t\tif (invSol) {\n\t\t\tfor (var i = 0; i < sol.length; i++) {\n\t\t\t\tsol[i] ^= 1;\n\t\t\t}\n\t\t\tsol.reverse();\n\t\t}\n\t\treturn prettyMoves(sol);\n\t}\n\n\tvar solver = new FtoSolver();\n\n\tfunction solveTest(n_moves) {\n\t\tvar solvInfo = randomMoves([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], n_moves);\n\n\t\tvar scramble = prettyMoves(solvInfo[1].slice());\n\t\tvar solution = solver.solveFto(solvInfo[0]);\n\n\t\tvar fc = solvInfo[0];\n\t\tDEBUG && console.log('scrambled state\\n', fc.toString(1));\n\t\tfc = applyMoves(fc, solver.sol1);\n\t\tDEBUG && console.log('after phase 1 (' + prettyMoves(solver.sol1) + '):\\n', fc.toString(1));\n\t\tfc = applyMoves(fc, solver.sol2);\n\t\tDEBUG && console.log('after phase 2 (' + prettyMoves(solver.sol2) + '):\\n', fc.toString(1));\n\t\tfc = applyMoves(fc, solver.sol3);\n\t\tDEBUG && console.log('after phase 3 (' + prettyMoves(solver.sol3) + '):\\n', fc.toString(1));\n\n\t\tvar facelets = fc.toFaceCube();\n\t\tvar isSolved = true;\n\t\touter_loop: for (var i = 0; i < 8; i++) {\n\t\t\tfor (var j = 1; j < 9; j++) {\n\t\t\t\tif (facelets[i * 9 + j] != facelets[i * 9]) {\n\t\t\t\t\tisSolved = false;\n\t\t\t\t\tbreak outer_loop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!isSolved) {\n\t\t\tconsole.log('error, FTO not solved!!!');\n\t\t}\n\n\t\tDEBUG && console.log(scramble, solution);\n\t\treturn [\n\t\t\tsolver.sol1.length + solver.sol2.length + solver.sol3.length,\n\t\t\tsolver.sol1.length,\n\t\t\tsolver.sol2.length,\n\t\t\tsolver.sol3.length,\n\t\t\tsolver.tt1,\n\t\t\tsolver.tt2,\n\t\t\tsolver.tt3\n\t\t];\n\t}\n\n\tfunction testbench(ntest) {\n\t\tntest = ntest || 100;\n\t\tvar cumlen = [];\n\t\tfor (var nsolv = 0; nsolv < ntest; nsolv++) {\n\t\t\tvar lengths = solveTest(200);\n\t\t\tfor (var i = 0; i < lengths.length; i++) {\n\t\t\t\tcumlen[i] = (cumlen[i] || 0) + lengths[i];\n\t\t\t}\n\t\t\tconsole.log('AvgL: ', cumlen[0] / (nsolv + 1));\n\t\t}\n\t\tconsole.log('AvgL1:', cumlen[1] / ntest);\n\t\tconsole.log('AvgL2:', cumlen[2] / ntest);\n\t\tconsole.log('AvgL3:', cumlen[3] / ntest);\n\t\tconsole.log('AvgT1:', cumlen[4] / ntest);\n\t\tconsole.log('AvgT2:', cumlen[5] / ntest);\n\t\tconsole.log('AvgT3:', cumlen[6] / ntest);\n\t}\n\n\tfunction solveFacelet(facelet, invSol) {\n\t\tvar fc = new FtoCubie();\n\t\tif (fc.fromFacelet(facelet) == -1) {\n\t\t\treturn \"FTO Solver ERROR!\";\n\t\t}\n\t\treturn solver.solveFto(fc, invSol);\n\t}\n\n\treturn {\n\t\tsolveFacelet: solveFacelet,\n\t\tFtoCubie: FtoCubie,\n\t\ttestbench: testbench\n\t};\n})();\n\nvar fto_scrambler = (function() {\n\n\tfunction getRandomScramble(solvedEdge, solvedCenter, solvedCorner) {\n\t\tvar fc = new ftosolver.FtoCubie();\n\t\tif (!solvedEdge) {\n\t\t\tfc.ep = mathlib.rndPerm(12, true);\n\t\t}\n\t\tif (!solvedCenter) {\n\t\t\tfc.uf = mathlib.rndPerm(12, true);\n\t\t\tfc.rl = mathlib.rndPerm(12, true);\n\t\t}\n\t\tif (!solvedCorner) {\n\t\t\tfc.cp = mathlib.rndPerm(6, true);\n\t\t\tmathlib.setNOri(fc.co, mathlib.rn(32), 6, -2);\n\t\t}\n\t\treturn new Alg(ftosolver.solveFacelet(fc.toFaceCube(), true));\n\t}\n\n\tfunction getLNTScramble(ufs) {\n\t\tvar solved = false;\n\t\tvar nCorn = ufs.length >> 1;\n\t\tvar fc = new ftosolver.FtoCubie();\n\t\tvar cp, co, uf;\n\t\tdo {\n\t\t\tcp = mathlib.rndPerm(nCorn, true);\n\t\t\tco = mathlib.setNOri([], mathlib.rn(1 << nCorn >> 1), nCorn, -2);\n\t\t\tuf = mathlib.rndPerm(ufs.length, true);\n\t\t\tsolved = true;\n\t\t\tfor (var i = 0; i < ufs.length; i++) {\n\t\t\t\tsolved = solved && (~~(ufs[uf[i]] / 3) == ~~(ufs[i] / 3));\n\t\t\t}\n\t\t\tfor (var i = 0; i < nCorn; i++) {\n\t\t\t\tsolved = solved && cp[i] == i && co[i] == 0;\n\t\t\t}\n\t\t} while (solved);\n\t\tfor (var i = 0; i < nCorn; i++) {\n\t\t\tfc.cp[i] = cp[i];\n\t\t\tfc.co[i] = co[i];\n\t\t}\n\t\tfor (var i = 0; i < ufs.length; i++) {\n\t\t\tfc.uf[ufs[i]] = ufs[uf[i]];\n\t\t}\n\t\treturn ftosolver.solveFacelet(fc.toFaceCube(), true);\n\t}\n\n\treturn {\n\t\tgetRandomScramble: getRandomScramble.bind(null, false, false, false)\n\t};\n})();\n\n// TODO: solve an externally generated random state\nexport function getRandomFTOScramble() {\n\treturn fto_scrambler.getRandomScramble();\n};\n\n// export function setRandomGen(gen) {\n// \tmathlib.setRandomGen(gen);\n// };\n\n// export function fto_testbench() {\n// \tftosolver.testbench();\n// };\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["i", "idx"]
|
|
7
|
-
}
|