cubing 0.34.5 → 0.35.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.
Files changed (1011) hide show
  1. package/dist/esm/alg/index.js +1 -1
  2. package/dist/esm/bluetooth/index.js +6 -6
  3. package/dist/esm/bluetooth/index.js.map +3 -3
  4. package/dist/esm/{chunk-XNFY5XVP.js → chunk-6SLFKBHE.js} +8 -12
  5. package/dist/esm/chunk-6SLFKBHE.js.map +7 -0
  6. package/dist/esm/{chunk-P7STLPTG.js → chunk-DR2VL2TJ.js} +3 -3
  7. package/dist/esm/{chunk-P7STLPTG.js.map → chunk-DR2VL2TJ.js.map} +0 -0
  8. package/dist/esm/{chunk-KJUHIZ2G.js → chunk-EV25IJFC.js} +2 -2
  9. package/dist/esm/{chunk-KJUHIZ2G.js.map → chunk-EV25IJFC.js.map} +1 -1
  10. package/dist/esm/{chunk-SXI3BVQT.js → chunk-IBO5KL3F.js} +4 -4
  11. package/dist/esm/chunk-IBO5KL3F.js.map +7 -0
  12. package/dist/esm/{chunk-P6GSDAYY.js → chunk-IN66QSRW.js} +2 -2
  13. package/dist/esm/{chunk-P6GSDAYY.js.map → chunk-IN66QSRW.js.map} +0 -0
  14. package/dist/esm/{chunk-JXIKYWF4.js → chunk-KHUSW5UE.js} +16 -16
  15. package/dist/esm/chunk-KHUSW5UE.js.map +7 -0
  16. package/dist/esm/{chunk-HBJNS3VF.js → chunk-KLI2E737.js} +2 -2
  17. package/dist/esm/{chunk-HBJNS3VF.js.map → chunk-KLI2E737.js.map} +0 -0
  18. package/dist/esm/{chunk-YUBK6NHL.js → chunk-NB7Q5BQU.js} +18 -17
  19. package/dist/esm/chunk-NB7Q5BQU.js.map +7 -0
  20. package/dist/esm/{chunk-WN53PIUG.js → chunk-UETKZMZ2.js} +6 -6
  21. package/dist/esm/{chunk-WN53PIUG.js.map → chunk-UETKZMZ2.js.map} +1 -1
  22. package/dist/esm/{chunk-STXBFKP7.js → chunk-UMKR43AG.js} +2 -2
  23. package/dist/esm/{chunk-STXBFKP7.js.map → chunk-UMKR43AG.js.map} +0 -0
  24. package/dist/esm/{chunk-RMIAXF22.js → chunk-VHWWAFLV.js} +42 -9
  25. package/dist/esm/chunk-VHWWAFLV.js.map +7 -0
  26. package/dist/esm/{chunk-ELZ5WICP.js → chunk-VZP3KFTU.js} +6 -6
  27. package/dist/esm/chunk-VZP3KFTU.js.map +7 -0
  28. package/dist/esm/{chunk-DFZ2CYSE.js → chunk-Z6WT2ASL.js} +4 -7
  29. package/dist/esm/{chunk-DFZ2CYSE.js.map → chunk-Z6WT2ASL.js.map} +2 -2
  30. package/dist/esm/kpuzzle/index.js +2 -2
  31. package/dist/esm/notation/index.js +2 -2
  32. package/dist/esm/protocol/index.js +4 -4
  33. package/dist/esm/puzzle-geometry/index.js +1 -1
  34. package/dist/esm/puzzle-geometry/index.js.map +1 -1
  35. package/dist/esm/puzzles/index.js +4 -4
  36. package/dist/esm/{puzzles-dynamic-side-events-T2YVO2CD.js → puzzles-dynamic-side-events-D2VNVUXH.js} +62 -60
  37. package/dist/esm/puzzles-dynamic-side-events-D2VNVUXH.js.map +7 -0
  38. package/dist/esm/scramble/index.js +9 -9
  39. package/dist/esm/search/index.js +9 -9
  40. package/dist/esm/{search-dynamic-sgs-side-events-RBT77KLU.js → search-dynamic-sgs-side-events-6N5XFNFV.js} +6 -6
  41. package/dist/esm/{search-dynamic-sgs-side-events-RBT77KLU.js.map → search-dynamic-sgs-side-events-6N5XFNFV.js.map} +0 -0
  42. package/dist/esm/{search-dynamic-sgs-unofficial-XVCNTLBX.js → search-dynamic-sgs-unofficial-KUQPD44L.js} +7 -7
  43. package/dist/esm/{search-dynamic-sgs-unofficial-XVCNTLBX.js.map → search-dynamic-sgs-unofficial-KUQPD44L.js.map} +2 -2
  44. package/dist/esm/{search-dynamic-solve-3x3x3-QAWYKBYP.js → search-dynamic-solve-3x3x3-VY7R3CDP.js} +2 -2
  45. package/dist/esm/{search-dynamic-solve-3x3x3-QAWYKBYP.js.map → search-dynamic-solve-3x3x3-VY7R3CDP.js.map} +2 -2
  46. package/dist/esm/{search-dynamic-solve-4x4x4-6D3X6JPU.js → search-dynamic-solve-4x4x4-YFSKEFQT.js} +8 -8
  47. package/dist/esm/search-dynamic-solve-4x4x4-YFSKEFQT.js.map +7 -0
  48. package/dist/esm/{search-dynamic-solve-fto-L5CX2BTQ.js → search-dynamic-solve-fto-JJ32OJVM.js} +2 -2
  49. package/dist/esm/{search-dynamic-solve-fto-L5CX2BTQ.js.map → search-dynamic-solve-fto-JJ32OJVM.js.map} +1 -1
  50. package/dist/esm/{search-dynamic-solve-kilominx-ACTR53H2.js → search-dynamic-solve-kilominx-5GTXKEAX.js} +3 -3
  51. package/dist/esm/search-dynamic-solve-kilominx-5GTXKEAX.js.map +7 -0
  52. package/dist/esm/{search-dynamic-solve-master_tetraminx-4R5R7LC5.js → search-dynamic-solve-master_tetraminx-UF5FKJW6.js} +2 -2
  53. package/dist/esm/{search-dynamic-solve-master_tetraminx-4R5R7LC5.js.map → search-dynamic-solve-master_tetraminx-UF5FKJW6.js.map} +1 -1
  54. package/dist/esm/{search-dynamic-solve-sq1-CBPKRTVA.js → search-dynamic-solve-sq1-S6V3FTO2.js} +2 -2
  55. package/dist/esm/{search-dynamic-solve-sq1-CBPKRTVA.js.map → search-dynamic-solve-sq1-S6V3FTO2.js.map} +1 -1
  56. package/dist/esm/search-worker-inside-generated-string-QNTWOW3E.js +4110 -0
  57. package/dist/esm/search-worker-inside-generated-string-QNTWOW3E.js.map +7 -0
  58. package/dist/esm/search-worker-js-entry-EM5PNXKC.js +17 -0
  59. package/dist/esm/search-worker-js-entry-EM5PNXKC.js.map +7 -0
  60. package/dist/esm/{search-worker-ts-entry-JODGBUUR.js → search-worker-ts-entry-WJXJ5FQI.js} +4 -4
  61. package/dist/esm/search-worker-ts-entry-WJXJ5FQI.js.map +7 -0
  62. package/dist/esm/stream/index.js +1 -1
  63. package/dist/esm/twisty/index.js +58 -24
  64. package/dist/esm/twisty/index.js.map +2 -2
  65. package/dist/esm/{twisty-dynamic-3d-ANH7V4CU.js → twisty-dynamic-3d-26UAWO4J.js} +6 -6
  66. package/dist/esm/{twisty-dynamic-3d-ANH7V4CU.js.map → twisty-dynamic-3d-26UAWO4J.js.map} +1 -1
  67. package/dist/esm/{twsearch-T6KOUE6W.js → twsearch-H72D4ZDN.js} +6 -5
  68. package/dist/esm/twsearch-H72D4ZDN.js.map +7 -0
  69. package/dist/esm/twsearch-VUC3P72V-BNSTYRDR.js +3155 -0
  70. package/dist/esm/twsearch-VUC3P72V-BNSTYRDR.js.map +7 -0
  71. package/dist/types/{Alg-8b4e9255.d.ts → Alg-c6770822.d.ts} +6 -6
  72. package/dist/types/{KState-0da22515.d.ts → KState-fa1880c8.d.ts} +17 -17
  73. package/dist/types/{TwizzleLink-f790571d.d.ts → TwizzleLink-9873b9f1.d.ts} +82 -61
  74. package/dist/types/alg/index.d.ts +5 -5
  75. package/dist/types/bluetooth/index.d.ts +6 -6
  76. package/dist/types/{bluetooth-puzzle-62e2b423.d.ts → bluetooth-puzzle-1cb7db76.d.ts} +2 -2
  77. package/dist/types/kpuzzle/index.d.ts +2 -2
  78. package/dist/types/notation/index.d.ts +1 -1
  79. package/dist/types/{outside-074a0f79.d.ts → outside-f29a27bc.d.ts} +2 -2
  80. package/dist/types/parseAlg-d2c83795.d.ts +9 -0
  81. package/dist/types/protocol/index.d.ts +3 -3
  82. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  83. package/dist/types/puzzles/index.d.ts +5 -5
  84. package/dist/types/scramble/index.d.ts +3 -3
  85. package/dist/types/search/index.d.ts +3 -3
  86. package/dist/types/stream/index.d.ts +5 -5
  87. package/dist/types/twisty/index.d.ts +5 -5
  88. package/package.json +23 -23
  89. package/src/README.md +10 -0
  90. package/dist/esm/chunk-ELZ5WICP.js.map +0 -7
  91. package/dist/esm/chunk-JXIKYWF4.js.map +0 -7
  92. package/dist/esm/chunk-RMIAXF22.js.map +0 -7
  93. package/dist/esm/chunk-SXI3BVQT.js.map +0 -7
  94. package/dist/esm/chunk-XNFY5XVP.js.map +0 -7
  95. package/dist/esm/chunk-YUBK6NHL.js.map +0 -7
  96. package/dist/esm/puzzles-dynamic-side-events-T2YVO2CD.js.map +0 -7
  97. package/dist/esm/search-dynamic-solve-4x4x4-6D3X6JPU.js.map +0 -7
  98. package/dist/esm/search-dynamic-solve-kilominx-ACTR53H2.js.map +0 -7
  99. package/dist/esm/search-worker-inside-generated-string-A5J72AEN.js +0 -4068
  100. package/dist/esm/search-worker-inside-generated-string-A5J72AEN.js.map +0 -7
  101. package/dist/esm/search-worker-js-entry-6JKK757U.js +0 -17
  102. package/dist/esm/search-worker-js-entry-6JKK757U.js.map +0 -7
  103. package/dist/esm/search-worker-ts-entry-JODGBUUR.js.map +0 -7
  104. package/dist/esm/twsearch-PTN3QM26-XSTDBYFP.js +0 -3163
  105. package/dist/esm/twsearch-PTN3QM26-XSTDBYFP.js.map +0 -7
  106. package/dist/esm/twsearch-T6KOUE6W.js.map +0 -7
  107. package/dist/types/parseAlg-2dd4194b.d.ts +0 -9
  108. package/dist/types/script/bin/screenshot-src/main.d.ts +0 -2
  109. package/dist/types/script/bin/screenshot-src/main.d.ts.map +0 -1
  110. package/dist/types/script/bin/screenshot.d.ts +0 -3
  111. package/dist/types/script/bin/screenshot.d.ts.map +0 -1
  112. package/dist/types/script/build/main.d.ts +0 -2
  113. package/dist/types/script/build/main.d.ts.map +0 -1
  114. package/dist/types/script/build/targets.d.ts +0 -241
  115. package/dist/types/script/build/targets.d.ts.map +0 -1
  116. package/dist/types/script/build/temp.d.ts +0 -3
  117. package/dist/types/script/build/temp.d.ts.map +0 -1
  118. package/dist/types/script/deploy/experiments.d.ts +0 -2
  119. package/dist/types/script/deploy/experiments.d.ts.map +0 -1
  120. package/dist/types/script/deploy/rsync.d.ts +0 -2
  121. package/dist/types/script/deploy/rsync.d.ts.map +0 -1
  122. package/dist/types/script/deploy/twizzle.d.ts +0 -2
  123. package/dist/types/script/deploy/twizzle.d.ts.map +0 -1
  124. package/dist/types/script/deploy/typedoc.d.ts +0 -2
  125. package/dist/types/script/deploy/typedoc.d.ts.map +0 -1
  126. package/dist/types/script/fix-vendored-twsearch.d.ts +0 -2
  127. package/dist/types/script/fix-vendored-twsearch.d.ts.map +0 -1
  128. package/dist/types/script/initial-setup/main.d.ts +0 -2
  129. package/dist/types/script/initial-setup/main.d.ts.map +0 -1
  130. package/dist/types/script/lib/execPromise.d.ts +0 -5
  131. package/dist/types/script/lib/execPromise.d.ts.map +0 -1
  132. package/dist/types/script/lib/experiments-server/index.d.ts +0 -2
  133. package/dist/types/script/lib/experiments-server/index.d.ts.map +0 -1
  134. package/dist/types/script/lib/need-folder.d.ts +0 -2
  135. package/dist/types/script/lib/need-folder.d.ts.map +0 -1
  136. package/dist/types/script/lib/packages.d.ts +0 -3
  137. package/dist/types/script/lib/packages.d.ts.map +0 -1
  138. package/dist/types/script/quick-setup/main.d.ts +0 -2
  139. package/dist/types/script/quick-setup/main.d.ts.map +0 -1
  140. package/dist/types/script/test/dist/experiments/main.d.ts +0 -2
  141. package/dist/types/script/test/dist/experiments/main.d.ts.map +0 -1
  142. package/dist/types/script/test/src/does-not-import-dist/expected-import-prefixes.d.ts +0 -2
  143. package/dist/types/script/test/src/does-not-import-dist/expected-import-prefixes.d.ts.map +0 -1
  144. package/dist/types/script/test/src/does-not-import-dist/main.d.ts +0 -2
  145. package/dist/types/script/test/src/does-not-import-dist/main.d.ts.map +0 -1
  146. package/dist/types/script/test/src/internal-import-restrictions/main.d.ts +0 -2
  147. package/dist/types/script/test/src/internal-import-restrictions/main.d.ts.map +0 -1
  148. package/dist/types/script/test/src/internal-import-restrictions/target-infos.d.ts +0 -70
  149. package/dist/types/script/test/src/internal-import-restrictions/target-infos.d.ts.map +0 -1
  150. package/dist/types/script/test/src/scripts-consistency/main.d.ts +0 -2
  151. package/dist/types/script/test/src/scripts-consistency/main.d.ts.map +0 -1
  152. package/dist/types/src/bin/import-restrictions-mermaid-diagram.d.ts +0 -2
  153. package/dist/types/src/bin/import-restrictions-mermaid-diagram.d.ts.map +0 -1
  154. package/dist/types/src/bin/order.d.ts +0 -2
  155. package/dist/types/src/bin/order.d.ts.map +0 -1
  156. package/dist/types/src/bin/puzzle-geometry-bin.d.ts +0 -2
  157. package/dist/types/src/bin/puzzle-geometry-bin.d.ts.map +0 -1
  158. package/dist/types/src/cubing/alg/Alg.d.ts +0 -176
  159. package/dist/types/src/cubing/alg/Alg.d.ts.map +0 -1
  160. package/dist/types/src/cubing/alg/Alg.spec.d.ts +0 -2
  161. package/dist/types/src/cubing/alg/Alg.spec.d.ts.map +0 -1
  162. package/dist/types/src/cubing/alg/AlgBuilder.d.ts +0 -13
  163. package/dist/types/src/cubing/alg/AlgBuilder.d.ts.map +0 -1
  164. package/dist/types/src/cubing/alg/Serializable.d.ts +0 -1
  165. package/dist/types/src/cubing/alg/Serializable.d.ts.map +0 -1
  166. package/dist/types/src/cubing/alg/alg-nodes/AlgNode.d.ts +0 -14
  167. package/dist/types/src/cubing/alg/alg-nodes/AlgNode.d.ts.map +0 -1
  168. package/dist/types/src/cubing/alg/alg-nodes/QuantumWithAmount.d.ts +0 -12
  169. package/dist/types/src/cubing/alg/alg-nodes/QuantumWithAmount.d.ts.map +0 -1
  170. package/dist/types/src/cubing/alg/alg-nodes/containers/Commutator.d.ts +0 -16
  171. package/dist/types/src/cubing/alg/alg-nodes/containers/Commutator.d.ts.map +0 -1
  172. package/dist/types/src/cubing/alg/alg-nodes/containers/Conjugate.d.ts +0 -16
  173. package/dist/types/src/cubing/alg/alg-nodes/containers/Conjugate.d.ts.map +0 -1
  174. package/dist/types/src/cubing/alg/alg-nodes/containers/Grouping.d.ts +0 -23
  175. package/dist/types/src/cubing/alg/alg-nodes/containers/Grouping.d.ts.map +0 -1
  176. package/dist/types/src/cubing/alg/alg-nodes/index.d.ts +0 -12
  177. package/dist/types/src/cubing/alg/alg-nodes/index.d.ts.map +0 -1
  178. package/dist/types/src/cubing/alg/alg-nodes/leaves/LineComment.d.ts +0 -14
  179. package/dist/types/src/cubing/alg/alg-nodes/leaves/LineComment.d.ts.map +0 -1
  180. package/dist/types/src/cubing/alg/alg-nodes/leaves/LineComment.spec.d.ts +0 -2
  181. package/dist/types/src/cubing/alg/alg-nodes/leaves/LineComment.spec.d.ts.map +0 -1
  182. package/dist/types/src/cubing/alg/alg-nodes/leaves/Move.d.ts +0 -52
  183. package/dist/types/src/cubing/alg/alg-nodes/leaves/Move.d.ts.map +0 -1
  184. package/dist/types/src/cubing/alg/alg-nodes/leaves/Move.spec.d.ts +0 -2
  185. package/dist/types/src/cubing/alg/alg-nodes/leaves/Move.spec.d.ts.map +0 -1
  186. package/dist/types/src/cubing/alg/alg-nodes/leaves/Newline.d.ts +0 -11
  187. package/dist/types/src/cubing/alg/alg-nodes/leaves/Newline.d.ts.map +0 -1
  188. package/dist/types/src/cubing/alg/alg-nodes/leaves/Pause.d.ts +0 -13
  189. package/dist/types/src/cubing/alg/alg-nodes/leaves/Pause.d.ts.map +0 -1
  190. package/dist/types/src/cubing/alg/common.d.ts +0 -20
  191. package/dist/types/src/cubing/alg/common.d.ts.map +0 -1
  192. package/dist/types/src/cubing/alg/cubing-private/index.d.ts +0 -3
  193. package/dist/types/src/cubing/alg/cubing-private/index.d.ts.map +0 -1
  194. package/dist/types/src/cubing/alg/debug.d.ts +0 -11
  195. package/dist/types/src/cubing/alg/debug.d.ts.map +0 -1
  196. package/dist/types/src/cubing/alg/example.d.ts +0 -15
  197. package/dist/types/src/cubing/alg/example.d.ts.map +0 -1
  198. package/dist/types/src/cubing/alg/index.d.ts +0 -23
  199. package/dist/types/src/cubing/alg/index.d.ts.map +0 -1
  200. package/dist/types/src/cubing/alg/is.d.ts +0 -5
  201. package/dist/types/src/cubing/alg/is.d.ts.map +0 -1
  202. package/dist/types/src/cubing/alg/iteration.d.ts +0 -10
  203. package/dist/types/src/cubing/alg/iteration.d.ts.map +0 -1
  204. package/dist/types/src/cubing/alg/keyboard.d.ts +0 -3
  205. package/dist/types/src/cubing/alg/keyboard.d.ts.map +0 -1
  206. package/dist/types/src/cubing/alg/limits.d.ts +0 -5
  207. package/dist/types/src/cubing/alg/limits.d.ts.map +0 -1
  208. package/dist/types/src/cubing/alg/parseAlg.d.ts +0 -13
  209. package/dist/types/src/cubing/alg/parseAlg.d.ts.map +0 -1
  210. package/dist/types/src/cubing/alg/parseAlg.spec.d.ts +0 -2
  211. package/dist/types/src/cubing/alg/parseAlg.spec.d.ts.map +0 -1
  212. package/dist/types/src/cubing/alg/simplify/append.d.ts +0 -7
  213. package/dist/types/src/cubing/alg/simplify/append.d.ts.map +0 -1
  214. package/dist/types/src/cubing/alg/simplify/append.spec.d.ts +0 -2
  215. package/dist/types/src/cubing/alg/simplify/append.spec.d.ts.map +0 -1
  216. package/dist/types/src/cubing/alg/simplify/index.d.ts +0 -4
  217. package/dist/types/src/cubing/alg/simplify/index.d.ts.map +0 -1
  218. package/dist/types/src/cubing/alg/simplify/options.d.ts +0 -36
  219. package/dist/types/src/cubing/alg/simplify/options.d.ts.map +0 -1
  220. package/dist/types/src/cubing/alg/simplify/simplify.d.ts +0 -5
  221. package/dist/types/src/cubing/alg/simplify/simplify.d.ts.map +0 -1
  222. package/dist/types/src/cubing/alg/simplify/simplify.spec.d.ts +0 -2
  223. package/dist/types/src/cubing/alg/simplify/simplify.spec.d.ts.map +0 -1
  224. package/dist/types/src/cubing/alg/traversal.d.ts +0 -37
  225. package/dist/types/src/cubing/alg/traversal.d.ts.map +0 -1
  226. package/dist/types/src/cubing/alg/url.d.ts +0 -13
  227. package/dist/types/src/cubing/alg/url.d.ts.map +0 -1
  228. package/dist/types/src/cubing/alg/url.spec.d.ts +0 -2
  229. package/dist/types/src/cubing/alg/url.spec.d.ts.map +0 -1
  230. package/dist/types/src/cubing/alg/validation.d.ts +0 -20
  231. package/dist/types/src/cubing/alg/validation.d.ts.map +0 -1
  232. package/dist/types/src/cubing/alg/warnOnce.d.ts +0 -2
  233. package/dist/types/src/cubing/alg/warnOnce.d.ts.map +0 -1
  234. package/dist/types/src/cubing/bluetooth/connect/index.d.ts +0 -7
  235. package/dist/types/src/cubing/bluetooth/connect/index.d.ts.map +0 -1
  236. package/dist/types/src/cubing/bluetooth/debug.d.ts +0 -3
  237. package/dist/types/src/cubing/bluetooth/debug.d.ts.map +0 -1
  238. package/dist/types/src/cubing/bluetooth/index.d.ts +0 -12
  239. package/dist/types/src/cubing/bluetooth/index.d.ts.map +0 -1
  240. package/dist/types/src/cubing/bluetooth/keyboard.d.ts +0 -17
  241. package/dist/types/src/cubing/bluetooth/keyboard.d.ts.map +0 -1
  242. package/dist/types/src/cubing/bluetooth/smart-puzzle/Heykube.d.ts +0 -19
  243. package/dist/types/src/cubing/bluetooth/smart-puzzle/Heykube.d.ts.map +0 -1
  244. package/dist/types/src/cubing/bluetooth/smart-puzzle/bluetooth-puzzle.d.ts +0 -45
  245. package/dist/types/src/cubing/bluetooth/smart-puzzle/bluetooth-puzzle.d.ts.map +0 -1
  246. package/dist/types/src/cubing/bluetooth/smart-puzzle/connect.d.ts +0 -5
  247. package/dist/types/src/cubing/bluetooth/smart-puzzle/connect.d.ts.map +0 -1
  248. package/dist/types/src/cubing/bluetooth/smart-puzzle/endianness.d.ts +0 -2
  249. package/dist/types/src/cubing/bluetooth/smart-puzzle/endianness.d.ts.map +0 -1
  250. package/dist/types/src/cubing/bluetooth/smart-puzzle/gan.d.ts +0 -36
  251. package/dist/types/src/cubing/bluetooth/smart-puzzle/gan.d.ts.map +0 -1
  252. package/dist/types/src/cubing/bluetooth/smart-puzzle/giiker.d.ts +0 -23
  253. package/dist/types/src/cubing/bluetooth/smart-puzzle/giiker.d.ts.map +0 -1
  254. package/dist/types/src/cubing/bluetooth/smart-puzzle/giiker.spec.d.ts +0 -2
  255. package/dist/types/src/cubing/bluetooth/smart-puzzle/giiker.spec.d.ts.map +0 -1
  256. package/dist/types/src/cubing/bluetooth/smart-puzzle/gocube.d.ts +0 -24
  257. package/dist/types/src/cubing/bluetooth/smart-puzzle/gocube.d.ts.map +0 -1
  258. package/dist/types/src/cubing/bluetooth/smart-robot/GanRobot.d.ts +0 -37
  259. package/dist/types/src/cubing/bluetooth/smart-robot/GanRobot.d.ts.map +0 -1
  260. package/dist/types/src/cubing/bluetooth/smart-robot/index.d.ts +0 -7
  261. package/dist/types/src/cubing/bluetooth/smart-robot/index.d.ts.map +0 -1
  262. package/dist/types/src/cubing/bluetooth/smart-timer/GanTimer.d.ts +0 -21
  263. package/dist/types/src/cubing/bluetooth/smart-timer/GanTimer.d.ts.map +0 -1
  264. package/dist/types/src/cubing/bluetooth/smart-timer/index.d.ts +0 -7
  265. package/dist/types/src/cubing/bluetooth/smart-timer/index.d.ts.map +0 -1
  266. package/dist/types/src/cubing/bluetooth/transformer.d.ts +0 -10
  267. package/dist/types/src/cubing/bluetooth/transformer.d.ts.map +0 -1
  268. package/dist/types/src/cubing/kpuzzle/KPuzzle.d.ts +0 -23
  269. package/dist/types/src/cubing/kpuzzle/KPuzzle.d.ts.map +0 -1
  270. package/dist/types/src/cubing/kpuzzle/KPuzzleDefinition.d.ts +0 -27
  271. package/dist/types/src/cubing/kpuzzle/KPuzzleDefinition.d.ts.map +0 -1
  272. package/dist/types/src/cubing/kpuzzle/KState.d.ts +0 -24
  273. package/dist/types/src/cubing/kpuzzle/KState.d.ts.map +0 -1
  274. package/dist/types/src/cubing/kpuzzle/KTransformation.d.ts +0 -25
  275. package/dist/types/src/cubing/kpuzzle/KTransformation.d.ts.map +0 -1
  276. package/dist/types/src/cubing/kpuzzle/calculate.d.ts +0 -16
  277. package/dist/types/src/cubing/kpuzzle/calculate.d.ts.map +0 -1
  278. package/dist/types/src/cubing/kpuzzle/calculate.spec.d.ts +0 -2
  279. package/dist/types/src/cubing/kpuzzle/calculate.spec.d.ts.map +0 -1
  280. package/dist/types/src/cubing/kpuzzle/combine.d.ts +0 -4
  281. package/dist/types/src/cubing/kpuzzle/combine.d.ts.map +0 -1
  282. package/dist/types/src/cubing/kpuzzle/construct.d.ts +0 -6
  283. package/dist/types/src/cubing/kpuzzle/construct.d.ts.map +0 -1
  284. package/dist/types/src/cubing/kpuzzle/index.d.ts +0 -5
  285. package/dist/types/src/cubing/kpuzzle/index.d.ts.map +0 -1
  286. package/dist/types/src/cubing/notation/CountAnimatedLeaves.d.ts +0 -3
  287. package/dist/types/src/cubing/notation/CountAnimatedLeaves.d.ts.map +0 -1
  288. package/dist/types/src/cubing/notation/CountMoves.d.ts +0 -5
  289. package/dist/types/src/cubing/notation/CountMoves.d.ts.map +0 -1
  290. package/dist/types/src/cubing/notation/index.d.ts +0 -3
  291. package/dist/types/src/cubing/notation/index.d.ts.map +0 -1
  292. package/dist/types/src/cubing/protocol/binary/binary3x3x3.d.ts +0 -25
  293. package/dist/types/src/cubing/protocol/binary/binary3x3x3.d.ts.map +0 -1
  294. package/dist/types/src/cubing/protocol/binary/binary3x3x3.spec.d.ts +0 -2
  295. package/dist/types/src/cubing/protocol/binary/binary3x3x3.spec.d.ts.map +0 -1
  296. package/dist/types/src/cubing/protocol/binary/hex.d.ts +0 -3
  297. package/dist/types/src/cubing/protocol/binary/hex.d.ts.map +0 -1
  298. package/dist/types/src/cubing/protocol/binary/hex.spec.d.ts +0 -2
  299. package/dist/types/src/cubing/protocol/binary/hex.spec.d.ts.map +0 -1
  300. package/dist/types/src/cubing/protocol/binary/orbit-indexing.d.ts +0 -6
  301. package/dist/types/src/cubing/protocol/binary/orbit-indexing.d.ts.map +0 -1
  302. package/dist/types/src/cubing/protocol/binary/orbit-indexing.spec.d.ts +0 -2
  303. package/dist/types/src/cubing/protocol/binary/orbit-indexing.spec.d.ts.map +0 -1
  304. package/dist/types/src/cubing/protocol/index.d.ts +0 -3
  305. package/dist/types/src/cubing/protocol/index.d.ts.map +0 -1
  306. package/dist/types/src/cubing/puzzle-geometry/FaceNameSwizzler.d.ts +0 -13
  307. package/dist/types/src/cubing/puzzle-geometry/FaceNameSwizzler.d.ts.map +0 -1
  308. package/dist/types/src/cubing/puzzle-geometry/Options.d.ts +0 -46
  309. package/dist/types/src/cubing/puzzle-geometry/Options.d.ts.map +0 -1
  310. package/dist/types/src/cubing/puzzle-geometry/PGPuzzles.d.ts +0 -6
  311. package/dist/types/src/cubing/puzzle-geometry/PGPuzzles.d.ts.map +0 -1
  312. package/dist/types/src/cubing/puzzle-geometry/PGPuzzles.spec.d.ts +0 -2
  313. package/dist/types/src/cubing/puzzle-geometry/PGPuzzles.spec.d.ts.map +0 -1
  314. package/dist/types/src/cubing/puzzle-geometry/Perm.d.ts +0 -19
  315. package/dist/types/src/cubing/puzzle-geometry/Perm.d.ts.map +0 -1
  316. package/dist/types/src/cubing/puzzle-geometry/PermOriSet.d.ts +0 -75
  317. package/dist/types/src/cubing/puzzle-geometry/PermOriSet.d.ts.map +0 -1
  318. package/dist/types/src/cubing/puzzle-geometry/PlatonicGenerator.d.ts +0 -11
  319. package/dist/types/src/cubing/puzzle-geometry/PlatonicGenerator.d.ts.map +0 -1
  320. package/dist/types/src/cubing/puzzle-geometry/PuzzleGeometry.d.ts +0 -181
  321. package/dist/types/src/cubing/puzzle-geometry/PuzzleGeometry.d.ts.map +0 -1
  322. package/dist/types/src/cubing/puzzle-geometry/Quat.d.ts +0 -44
  323. package/dist/types/src/cubing/puzzle-geometry/Quat.d.ts.map +0 -1
  324. package/dist/types/src/cubing/puzzle-geometry/Quat.spec.d.ts +0 -2
  325. package/dist/types/src/cubing/puzzle-geometry/Quat.spec.d.ts.map +0 -1
  326. package/dist/types/src/cubing/puzzle-geometry/SchreierSims.d.ts +0 -3
  327. package/dist/types/src/cubing/puzzle-geometry/SchreierSims.d.ts.map +0 -1
  328. package/dist/types/src/cubing/puzzle-geometry/index.d.ts +0 -8
  329. package/dist/types/src/cubing/puzzle-geometry/index.d.ts.map +0 -1
  330. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts +0 -11
  331. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/FTONotationMapper.d.ts.map +0 -1
  332. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts +0 -13
  333. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/FaceRenamingMapper.d.ts.map +0 -1
  334. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts +0 -9
  335. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.d.ts.map +0 -1
  336. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/NotationMapper.d.ts +0 -8
  337. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/NotationMapper.d.ts.map +0 -1
  338. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/NullMapper.d.ts +0 -7
  339. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/NullMapper.d.ts.map +0 -1
  340. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts +0 -9
  341. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/NxNxNCubeMapper.d.ts.map +0 -1
  342. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts +0 -16
  343. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/PyraminxNotationMapper.d.ts.map +0 -1
  344. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts +0 -10
  345. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/SkewbNotationMapper.d.ts.map +0 -1
  346. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/index.d.ts +0 -9
  347. package/dist/types/src/cubing/puzzle-geometry/notation-mapping/index.d.ts.map +0 -1
  348. package/dist/types/src/cubing/puzzle-geometry/orientcenters.spec.d.ts +0 -2
  349. package/dist/types/src/cubing/puzzle-geometry/orientcenters.spec.d.ts.map +0 -1
  350. package/dist/types/src/cubing/puzzles/PuzzleLoader.d.ts +0 -24
  351. package/dist/types/src/cubing/puzzles/PuzzleLoader.d.ts.map +0 -1
  352. package/dist/types/src/cubing/puzzles/async/async-pg3d.d.ts +0 -37
  353. package/dist/types/src/cubing/puzzles/async/async-pg3d.d.ts.map +0 -1
  354. package/dist/types/src/cubing/puzzles/async/lazy-cached.d.ts +0 -2
  355. package/dist/types/src/cubing/puzzles/async/lazy-cached.d.ts.map +0 -1
  356. package/dist/types/src/cubing/puzzles/cubing-private/index.d.ts +0 -14
  357. package/dist/types/src/cubing/puzzles/cubing-private/index.d.ts.map +0 -1
  358. package/dist/types/src/cubing/puzzles/customPGPuzzleLoader.d.ts +0 -12
  359. package/dist/types/src/cubing/puzzles/customPGPuzzleLoader.d.ts.map +0 -1
  360. package/dist/types/src/cubing/puzzles/events.d.ts +0 -13
  361. package/dist/types/src/cubing/puzzles/events.d.ts.map +0 -1
  362. package/dist/types/src/cubing/puzzles/implementations/2x2x2/index.d.ts +0 -4
  363. package/dist/types/src/cubing/puzzles/implementations/2x2x2/index.d.ts.map +0 -1
  364. package/dist/types/src/cubing/puzzles/implementations/3x3x3/index.d.ts +0 -4
  365. package/dist/types/src/cubing/puzzles/implementations/3x3x3/index.d.ts.map +0 -1
  366. package/dist/types/src/cubing/puzzles/implementations/3x3x3/puzzle-specific-simplifications.d.ts +0 -3
  367. package/dist/types/src/cubing/puzzles/implementations/3x3x3/puzzle-specific-simplifications.d.ts.map +0 -1
  368. package/dist/types/src/cubing/puzzles/implementations/4x4x4/index.d.ts +0 -4
  369. package/dist/types/src/cubing/puzzles/implementations/4x4x4/index.d.ts.map +0 -1
  370. package/dist/types/src/cubing/puzzles/implementations/clock/index.d.ts +0 -3
  371. package/dist/types/src/cubing/puzzles/implementations/clock/index.d.ts.map +0 -1
  372. package/dist/types/src/cubing/puzzles/implementations/dynamic/2x2x2/puzzle-orientation.d.ts +0 -17
  373. package/dist/types/src/cubing/puzzles/implementations/dynamic/2x2x2/puzzle-orientation.d.ts.map +0 -1
  374. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts +0 -2
  375. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3-ll.kpuzzle.svg.d.ts.map +0 -1
  376. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.json.d.ts +0 -3
  377. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.json.d.ts.map +0 -1
  378. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.json.spec.d.ts +0 -2
  379. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.json.spec.d.ts.map +0 -1
  380. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.svg.d.ts +0 -2
  381. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/3x3x3.kpuzzle.svg.d.ts.map +0 -1
  382. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/puzzle-orientation.d.ts +0 -9
  383. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/puzzle-orientation.d.ts.map +0 -1
  384. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/puzzles-dynamic-3x3x3.d.ts +0 -3
  385. package/dist/types/src/cubing/puzzles/implementations/dynamic/3x3x3/puzzles-dynamic-3x3x3.d.ts.map +0 -1
  386. package/dist/types/src/cubing/puzzles/implementations/dynamic/4x4x4/4x4x4-ll.kpuzzle.svg.d.ts +0 -2
  387. package/dist/types/src/cubing/puzzles/implementations/dynamic/4x4x4/4x4x4-ll.kpuzzle.svg.d.ts.map +0 -1
  388. package/dist/types/src/cubing/puzzles/implementations/dynamic/4x4x4/puzzles-dynamic-4x4x4.d.ts +0 -2
  389. package/dist/types/src/cubing/puzzles/implementations/dynamic/4x4x4/puzzles-dynamic-4x4x4.d.ts.map +0 -1
  390. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/2x2x2.kpuzzle.json.d.ts +0 -3
  391. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/2x2x2.kpuzzle.json.d.ts.map +0 -1
  392. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/2x2x2.kpuzzle.svg.d.ts +0 -2
  393. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/2x2x2.kpuzzle.svg.d.ts.map +0 -1
  394. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/clock.kpuzzle.json.d.ts +0 -3
  395. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/clock.kpuzzle.json.d.ts.map +0 -1
  396. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/clock.kpuzzle.svg.d.ts +0 -2
  397. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/clock.kpuzzle.svg.d.ts.map +0 -1
  398. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/melindas2x2x2x2.kpuzzle.json.d.ts +0 -3
  399. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/melindas2x2x2x2.kpuzzle.json.d.ts.map +0 -1
  400. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/melindas2x2x2x2.kpuzzle.svg.d.ts +0 -2
  401. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/melindas2x2x2x2.kpuzzle.svg.d.ts.map +0 -1
  402. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/puzzles-dynamic-side-events.d.ts +0 -10
  403. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/puzzles-dynamic-side-events.d.ts.map +0 -1
  404. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/pyraminx.kpuzzle.svg.d.ts +0 -2
  405. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/pyraminx.kpuzzle.svg.d.ts.map +0 -1
  406. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/sq1-hyperorbit.kpuzzle.json.d.ts +0 -3
  407. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/sq1-hyperorbit.kpuzzle.json.d.ts.map +0 -1
  408. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/sq1-hyperorbit.kpuzzle.svg.d.ts +0 -2
  409. package/dist/types/src/cubing/puzzles/implementations/dynamic/side-events/sq1-hyperorbit.kpuzzle.svg.d.ts.map +0 -1
  410. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/fto.kpuzzle.svg.d.ts +0 -2
  411. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/fto.kpuzzle.svg.d.ts.map +0 -1
  412. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/kilominx.kpuzzle.svg.d.ts +0 -2
  413. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/kilominx.kpuzzle.svg.d.ts.map +0 -1
  414. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/puzzles-dynamic-unofficial.d.ts +0 -5
  415. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/puzzles-dynamic-unofficial.d.ts.map +0 -1
  416. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/redi_cube.kpuzzle.json.d.ts +0 -3
  417. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/redi_cube.kpuzzle.json.d.ts.map +0 -1
  418. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/redi_cube.kpuzzle.svg.d.ts +0 -2
  419. package/dist/types/src/cubing/puzzles/implementations/dynamic/unofficial/redi_cube.kpuzzle.svg.d.ts.map +0 -1
  420. package/dist/types/src/cubing/puzzles/implementations/fto/index.d.ts +0 -13
  421. package/dist/types/src/cubing/puzzles/implementations/fto/index.d.ts.map +0 -1
  422. package/dist/types/src/cubing/puzzles/implementations/kilominx/index.d.ts +0 -3
  423. package/dist/types/src/cubing/puzzles/implementations/kilominx/index.d.ts.map +0 -1
  424. package/dist/types/src/cubing/puzzles/implementations/megaminx/index.d.ts +0 -12
  425. package/dist/types/src/cubing/puzzles/implementations/megaminx/index.d.ts.map +0 -1
  426. package/dist/types/src/cubing/puzzles/implementations/melindas2x2x2x2/index.d.ts +0 -3
  427. package/dist/types/src/cubing/puzzles/implementations/melindas2x2x2x2/index.d.ts.map +0 -1
  428. package/dist/types/src/cubing/puzzles/implementations/pyraminx/index.d.ts +0 -8
  429. package/dist/types/src/cubing/puzzles/implementations/pyraminx/index.d.ts.map +0 -1
  430. package/dist/types/src/cubing/puzzles/implementations/redi-cube/index.d.ts +0 -3
  431. package/dist/types/src/cubing/puzzles/implementations/redi-cube/index.d.ts.map +0 -1
  432. package/dist/types/src/cubing/puzzles/implementations/square1/index.d.ts +0 -3
  433. package/dist/types/src/cubing/puzzles/implementations/square1/index.d.ts.map +0 -1
  434. package/dist/types/src/cubing/puzzles/index.d.ts +0 -9
  435. package/dist/types/src/cubing/puzzles/index.d.ts.map +0 -1
  436. package/dist/types/src/cubing/puzzles/stickerings/cube-like-stickerings.d.ts +0 -6
  437. package/dist/types/src/cubing/puzzles/stickerings/cube-like-stickerings.d.ts.map +0 -1
  438. package/dist/types/src/cubing/puzzles/stickerings/fto-stickerings.d.ts +0 -6
  439. package/dist/types/src/cubing/puzzles/stickerings/fto-stickerings.d.ts.map +0 -1
  440. package/dist/types/src/cubing/puzzles/stickerings/mask.d.ts +0 -54
  441. package/dist/types/src/cubing/puzzles/stickerings/mask.d.ts.map +0 -1
  442. package/dist/types/src/cubing/puzzles/stickerings/megaminx-stickerings.d.ts +0 -6
  443. package/dist/types/src/cubing/puzzles/stickerings/megaminx-stickerings.d.ts.map +0 -1
  444. package/dist/types/src/cubing/puzzles/stickerings/puzzle-stickerings.d.ts +0 -5
  445. package/dist/types/src/cubing/puzzles/stickerings/puzzle-stickerings.d.ts.map +0 -1
  446. package/dist/types/src/cubing/scramble/index.d.ts +0 -9
  447. package/dist/types/src/cubing/scramble/index.d.ts.map +0 -1
  448. package/dist/types/src/cubing/search/cubing-private/index.d.ts +0 -2
  449. package/dist/types/src/cubing/search/cubing-private/index.d.ts.map +0 -1
  450. package/dist/types/src/cubing/search/index.d.ts +0 -3
  451. package/dist/types/src/cubing/search/index.d.ts.map +0 -1
  452. package/dist/types/src/cubing/search/inside/api.d.ts +0 -24
  453. package/dist/types/src/cubing/search/inside/api.d.ts.map +0 -1
  454. package/dist/types/src/cubing/search/inside/api.spec.d.ts +0 -2
  455. package/dist/types/src/cubing/search/inside/api.spec.d.ts.map +0 -1
  456. package/dist/types/src/cubing/search/inside/inside-worker.d.ts +0 -3
  457. package/dist/types/src/cubing/search/inside/inside-worker.d.ts.map +0 -1
  458. package/dist/types/src/cubing/search/inside/search-worker-js-entry.d.ts +0 -2
  459. package/dist/types/src/cubing/search/inside/search-worker-js-entry.d.ts.map +0 -1
  460. package/dist/types/src/cubing/search/inside/search-worker-ts-entry-path-getter.d.ts +0 -2
  461. package/dist/types/src/cubing/search/inside/search-worker-ts-entry-path-getter.d.ts.map +0 -1
  462. package/dist/types/src/cubing/search/inside/search-worker-ts-entry.d.ts +0 -2
  463. package/dist/types/src/cubing/search/inside/search-worker-ts-entry.d.ts.map +0 -1
  464. package/dist/types/src/cubing/search/inside/solve/addOrientationSuffix.d.ts +0 -3
  465. package/dist/types/src/cubing/search/inside/solve/addOrientationSuffix.d.ts.map +0 -1
  466. package/dist/types/src/cubing/search/inside/solve/parseSGS.d.ts +0 -19
  467. package/dist/types/src/cubing/search/inside/solve/parseSGS.d.ts.map +0 -1
  468. package/dist/types/src/cubing/search/inside/solve/puzzles/2x2x2.d.ts +0 -9
  469. package/dist/types/src/cubing/search/inside/solve/puzzles/2x2x2.d.ts.map +0 -1
  470. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/convert.d.ts +0 -3
  471. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/convert.d.ts.map +0 -1
  472. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/filter.d.ts +0 -5
  473. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/filter.d.ts.map +0 -1
  474. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/index.d.ts +0 -9
  475. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/index.d.ts.map +0 -1
  476. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts +0 -2
  477. package/dist/types/src/cubing/search/inside/solve/puzzles/3x3x3/legacy-sgs.d.ts.map +0 -1
  478. package/dist/types/src/cubing/search/inside/solve/puzzles/4x4x4.d.ts +0 -5
  479. package/dist/types/src/cubing/search/inside/solve/puzzles/4x4x4.d.ts.map +0 -1
  480. package/dist/types/src/cubing/search/inside/solve/puzzles/5x5x5.d.ts +0 -3
  481. package/dist/types/src/cubing/search/inside/solve/puzzles/5x5x5.d.ts.map +0 -1
  482. package/dist/types/src/cubing/search/inside/solve/puzzles/big-cubes.d.ts +0 -3
  483. package/dist/types/src/cubing/search/inside/solve/puzzles/big-cubes.d.ts.map +0 -1
  484. package/dist/types/src/cubing/search/inside/solve/puzzles/clock.d.ts +0 -2
  485. package/dist/types/src/cubing/search/inside/solve/puzzles/clock.d.ts.map +0 -1
  486. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/3x3x3/index.d.ts +0 -2
  487. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/3x3x3/index.d.ts.map +0 -1
  488. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/3x3x3/search-dynamic-solve-3x3x3.d.ts +0 -2
  489. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/3x3x3/search-dynamic-solve-3x3x3.d.ts.map +0 -1
  490. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/index.d.ts +0 -2
  491. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/index.d.ts.map +0 -1
  492. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/search-dynamic-solve-4x4x4.d.ts +0 -2
  493. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/4x4x4/search-dynamic-solve-4x4x4.d.ts.map +0 -1
  494. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/fto/index.d.ts +0 -2
  495. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/fto/index.d.ts.map +0 -1
  496. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/fto/search-dynamic-solve-fto.d.ts +0 -2
  497. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/fto/search-dynamic-solve-fto.d.ts.map +0 -1
  498. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/kilominx/index.d.ts +0 -2
  499. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/kilominx/index.d.ts.map +0 -1
  500. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/kilominx/search-dynamic-solve-kilominx.d.ts +0 -2
  501. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/kilominx/search-dynamic-solve-kilominx.d.ts.map +0 -1
  502. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/master_tetraminx/index.d.ts +0 -2
  503. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/master_tetraminx/index.d.ts.map +0 -1
  504. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/master_tetraminx/search-dynamic-solve-master_tetraminx.d.ts +0 -2
  505. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/master_tetraminx/search-dynamic-solve-master_tetraminx.d.ts.map +0 -1
  506. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-defs.spec.d.ts +0 -2
  507. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-defs.spec.d.ts.map +0 -1
  508. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/2x2x2.sgs.d.ts +0 -4
  509. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/2x2x2.sgs.d.ts.map +0 -1
  510. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/index.d.ts +0 -2
  511. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/index.d.ts.map +0 -1
  512. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/megaminx.sgs.d.ts +0 -6
  513. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/megaminx.sgs.d.ts.map +0 -1
  514. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/pyraminx.sgs.d.ts +0 -4
  515. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/pyraminx.sgs.d.ts.map +0 -1
  516. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/search-dynamic-sgs-side-events.d.ts +0 -5
  517. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/search-dynamic-sgs-side-events.d.ts.map +0 -1
  518. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/skewb.sgs.d.ts +0 -6
  519. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-side-events/skewb.sgs.d.ts.map +0 -1
  520. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/fto.sgs.d.ts +0 -3
  521. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/fto.sgs.d.ts.map +0 -1
  522. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/index.d.ts +0 -2
  523. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/index.d.ts.map +0 -1
  524. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/search-dynamic-sgs-unofficial.d.ts +0 -3
  525. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/search-dynamic-sgs-unofficial.d.ts.map +0 -1
  526. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sq1/index.d.ts +0 -2
  527. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sq1/index.d.ts.map +0 -1
  528. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sq1/search-dynamic-solve-sq1.d.ts +0 -2
  529. package/dist/types/src/cubing/search/inside/solve/puzzles/dynamic/sq1/search-dynamic-solve-sq1.d.ts.map +0 -1
  530. package/dist/types/src/cubing/search/inside/solve/puzzles/fto.d.ts +0 -6
  531. package/dist/types/src/cubing/search/inside/solve/puzzles/fto.d.ts.map +0 -1
  532. package/dist/types/src/cubing/search/inside/solve/puzzles/kilominx.d.ts +0 -3
  533. package/dist/types/src/cubing/search/inside/solve/puzzles/kilominx.d.ts.map +0 -1
  534. package/dist/types/src/cubing/search/inside/solve/puzzles/master_tetraminx.d.ts +0 -3
  535. package/dist/types/src/cubing/search/inside/solve/puzzles/master_tetraminx.d.ts.map +0 -1
  536. package/dist/types/src/cubing/search/inside/solve/puzzles/megaminx.d.ts +0 -5
  537. package/dist/types/src/cubing/search/inside/solve/puzzles/megaminx.d.ts.map +0 -1
  538. package/dist/types/src/cubing/search/inside/solve/puzzles/pyraminx.d.ts +0 -7
  539. package/dist/types/src/cubing/search/inside/solve/puzzles/pyraminx.d.ts.map +0 -1
  540. package/dist/types/src/cubing/search/inside/solve/puzzles/redi_cube.d.ts +0 -3
  541. package/dist/types/src/cubing/search/inside/solve/puzzles/redi_cube.d.ts.map +0 -1
  542. package/dist/types/src/cubing/search/inside/solve/puzzles/skewb.d.ts +0 -7
  543. package/dist/types/src/cubing/search/inside/solve/puzzles/skewb.d.ts.map +0 -1
  544. package/dist/types/src/cubing/search/inside/solve/puzzles/sq1.d.ts +0 -3
  545. package/dist/types/src/cubing/search/inside/solve/puzzles/sq1.d.ts.map +0 -1
  546. package/dist/types/src/cubing/search/inside/solve/puzzles/wca-minx.d.ts +0 -2
  547. package/dist/types/src/cubing/search/inside/solve/puzzles/wca-minx.d.ts.map +0 -1
  548. package/dist/types/src/cubing/search/inside/solve/tremble.d.ts +0 -14
  549. package/dist/types/src/cubing/search/inside/solve/tremble.d.ts.map +0 -1
  550. package/dist/types/src/cubing/search/inside/solve/twsearch.d.ts +0 -11
  551. package/dist/types/src/cubing/search/inside/solve/twsearch.d.ts.map +0 -1
  552. package/dist/types/src/cubing/search/inside/worker-guard.d.ts +0 -4
  553. package/dist/types/src/cubing/search/inside/worker-guard.d.ts.map +0 -1
  554. package/dist/types/src/cubing/search/instantiator.d.ts +0 -13
  555. package/dist/types/src/cubing/search/instantiator.d.ts.map +0 -1
  556. package/dist/types/src/cubing/search/outside.d.ts +0 -29
  557. package/dist/types/src/cubing/search/outside.d.ts.map +0 -1
  558. package/dist/types/src/cubing/search/search-worker-inside-generated-string.d.ts +0 -2
  559. package/dist/types/src/cubing/search/search-worker-inside-generated-string.d.ts.map +0 -1
  560. package/dist/types/src/cubing/stream/index.d.ts +0 -9
  561. package/dist/types/src/cubing/stream/index.d.ts.map +0 -1
  562. package/dist/types/src/cubing/stream/process/ReorientedStream.d.ts +0 -21
  563. package/dist/types/src/cubing/stream/process/ReorientedStream.d.ts.map +0 -1
  564. package/dist/types/src/cubing/stream/proxy-event.d.ts +0 -14
  565. package/dist/types/src/cubing/stream/proxy-event.d.ts.map +0 -1
  566. package/dist/types/src/cubing/stream/twizzle/TwizzleStream.d.ts +0 -19
  567. package/dist/types/src/cubing/stream/twizzle/TwizzleStream.d.ts.map +0 -1
  568. package/dist/types/src/cubing/stream/twizzle/stream-types.d.ts +0 -33
  569. package/dist/types/src/cubing/stream/twizzle/stream-types.d.ts.map +0 -1
  570. package/dist/types/src/cubing/stream/websocket-proxy.d.ts +0 -22
  571. package/dist/types/src/cubing/stream/websocket-proxy.d.ts.map +0 -1
  572. package/dist/types/src/cubing/twisty/controllers/AnimationTypes.d.ts +0 -33
  573. package/dist/types/src/cubing/twisty/controllers/AnimationTypes.d.ts.map +0 -1
  574. package/dist/types/src/cubing/twisty/controllers/RenderScheduler.d.ts +0 -14
  575. package/dist/types/src/cubing/twisty/controllers/RenderScheduler.d.ts.map +0 -1
  576. package/dist/types/src/cubing/twisty/controllers/TwistyAnimationController.d.ts +0 -37
  577. package/dist/types/src/cubing/twisty/controllers/TwistyAnimationController.d.ts.map +0 -1
  578. package/dist/types/src/cubing/twisty/controllers/TwistyPlayerController.d.ts +0 -16
  579. package/dist/types/src/cubing/twisty/controllers/TwistyPlayerController.d.ts.map +0 -1
  580. package/dist/types/src/cubing/twisty/controllers/easing.d.ts +0 -2
  581. package/dist/types/src/cubing/twisty/controllers/easing.d.ts.map +0 -1
  582. package/dist/types/src/cubing/twisty/controllers/indexer/AlgDuration.d.ts +0 -18
  583. package/dist/types/src/cubing/twisty/controllers/indexer/AlgDuration.d.ts.map +0 -1
  584. package/dist/types/src/cubing/twisty/controllers/indexer/AlgIndexer.d.ts +0 -37
  585. package/dist/types/src/cubing/twisty/controllers/indexer/AlgIndexer.d.ts.map +0 -1
  586. package/dist/types/src/cubing/twisty/controllers/indexer/SimpleAlgIndexer.d.ts +0 -20
  587. package/dist/types/src/cubing/twisty/controllers/indexer/SimpleAlgIndexer.d.ts.map +0 -1
  588. package/dist/types/src/cubing/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts +0 -23
  589. package/dist/types/src/cubing/twisty/controllers/indexer/simultaneous-moves/SimultaneousMoveIndexer.d.ts.map +0 -1
  590. package/dist/types/src/cubing/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts +0 -26
  591. package/dist/types/src/cubing/twisty/controllers/indexer/simultaneous-moves/simul-moves.d.ts.map +0 -1
  592. package/dist/types/src/cubing/twisty/controllers/indexer/tree/AlgWalker.d.ts +0 -64
  593. package/dist/types/src/cubing/twisty/controllers/indexer/tree/AlgWalker.d.ts.map +0 -1
  594. package/dist/types/src/cubing/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts +0 -21
  595. package/dist/types/src/cubing/twisty/controllers/indexer/tree/TreeAlgIndexer.d.ts.map +0 -1
  596. package/dist/types/src/cubing/twisty/controllers/indexer/tree/chunkAlgs.d.ts +0 -3
  597. package/dist/types/src/cubing/twisty/controllers/indexer/tree/chunkAlgs.d.ts.map +0 -1
  598. package/dist/types/src/cubing/twisty/controllers/stream/timeline-move-calculation-draft.d.ts +0 -16
  599. package/dist/types/src/cubing/twisty/controllers/stream/timeline-move-calculation-draft.d.ts.map +0 -1
  600. package/dist/types/src/cubing/twisty/cubing-private/index.d.ts +0 -2
  601. package/dist/types/src/cubing/twisty/cubing-private/index.d.ts.map +0 -1
  602. package/dist/types/src/cubing/twisty/debug.d.ts +0 -6
  603. package/dist/types/src/cubing/twisty/debug.d.ts.map +0 -1
  604. package/dist/types/src/cubing/twisty/heavy-code-imports/3d.d.ts +0 -3
  605. package/dist/types/src/cubing/twisty/heavy-code-imports/3d.d.ts.map +0 -1
  606. package/dist/types/src/cubing/twisty/heavy-code-imports/dynamic-entries/twisty-dynamic-3d.d.ts +0 -12
  607. package/dist/types/src/cubing/twisty/heavy-code-imports/dynamic-entries/twisty-dynamic-3d.d.ts.map +0 -1
  608. package/dist/types/src/cubing/twisty/index.d.ts +0 -24
  609. package/dist/types/src/cubing/twisty/index.d.ts.map +0 -1
  610. package/dist/types/src/cubing/twisty/model/PromiseFreshener.d.ts +0 -14
  611. package/dist/types/src/cubing/twisty/model/PromiseFreshener.d.ts.map +0 -1
  612. package/dist/types/src/cubing/twisty/model/TwistyPlayerModel.d.ts +0 -90
  613. package/dist/types/src/cubing/twisty/model/TwistyPlayerModel.d.ts.map +0 -1
  614. package/dist/types/src/cubing/twisty/model/TwistyPlayerModel.spec.d.ts +0 -2
  615. package/dist/types/src/cubing/twisty/model/TwistyPlayerModel.spec.d.ts.map +0 -1
  616. package/dist/types/src/cubing/twisty/model/TwistySceneModel.d.ts +0 -46
  617. package/dist/types/src/cubing/twisty/model/TwistySceneModel.d.ts.map +0 -1
  618. package/dist/types/src/cubing/twisty/model/TwistySceneModel.spec.d.ts +0 -2
  619. package/dist/types/src/cubing/twisty/model/TwistySceneModel.spec.d.ts.map +0 -1
  620. package/dist/types/src/cubing/twisty/model/UserVisibleErrorTracker.d.ts +0 -11
  621. package/dist/types/src/cubing/twisty/model/UserVisibleErrorTracker.d.ts.map +0 -1
  622. package/dist/types/src/cubing/twisty/model/helpers.d.ts +0 -5
  623. package/dist/types/src/cubing/twisty/model/helpers.d.ts.map +0 -1
  624. package/dist/types/src/cubing/twisty/model/props/TwistyProp.d.ts +0 -62
  625. package/dist/types/src/cubing/twisty/model/props/TwistyProp.d.ts.map +0 -1
  626. package/dist/types/src/cubing/twisty/model/props/TwistyProp.spec.d.ts +0 -2
  627. package/dist/types/src/cubing/twisty/model/props/TwistyProp.spec.d.ts.map +0 -1
  628. package/dist/types/src/cubing/twisty/model/props/general/ArbitraryStringProp.d.ts +0 -5
  629. package/dist/types/src/cubing/twisty/model/props/general/ArbitraryStringProp.d.ts.map +0 -1
  630. package/dist/types/src/cubing/twisty/model/props/general/URLProp.d.ts +0 -6
  631. package/dist/types/src/cubing/twisty/model/props/general/URLProp.d.ts.map +0 -1
  632. package/dist/types/src/cubing/twisty/model/props/puzzle/display/FaceletScaleProp.d.ts +0 -6
  633. package/dist/types/src/cubing/twisty/model/props/puzzle/display/FaceletScaleProp.d.ts.map +0 -1
  634. package/dist/types/src/cubing/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts +0 -6
  635. package/dist/types/src/cubing/twisty/model/props/puzzle/display/FoundationDisplayProp.d.ts.map +0 -1
  636. package/dist/types/src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.d.ts +0 -11
  637. package/dist/types/src/cubing/twisty/model/props/puzzle/display/HintFaceletProp.d.ts.map +0 -1
  638. package/dist/types/src/cubing/twisty/model/props/puzzle/display/InitialHintFaceletsAnimationProp.d.ts +0 -6
  639. package/dist/types/src/cubing/twisty/model/props/puzzle/display/InitialHintFaceletsAnimationProp.d.ts.map +0 -1
  640. package/dist/types/src/cubing/twisty/model/props/puzzle/display/SpriteProp.d.ts +0 -10
  641. package/dist/types/src/cubing/twisty/model/props/puzzle/display/SpriteProp.d.ts.map +0 -1
  642. package/dist/types/src/cubing/twisty/model/props/puzzle/display/StickeringMaskProp.d.ts +0 -15
  643. package/dist/types/src/cubing/twisty/model/props/puzzle/display/StickeringMaskProp.d.ts.map +0 -1
  644. package/dist/types/src/cubing/twisty/model/props/puzzle/display/StickeringMaskRequestProp.d.ts +0 -7
  645. package/dist/types/src/cubing/twisty/model/props/puzzle/display/StickeringMaskRequestProp.d.ts.map +0 -1
  646. package/dist/types/src/cubing/twisty/model/props/puzzle/display/StickeringRequestProp.d.ts +0 -9
  647. package/dist/types/src/cubing/twisty/model/props/puzzle/display/StickeringRequestProp.d.ts.map +0 -1
  648. package/dist/types/src/cubing/twisty/model/props/puzzle/display/parseSerializedStickeringMask.d.ts +0 -3
  649. package/dist/types/src/cubing/twisty/model/props/puzzle/display/parseSerializedStickeringMask.d.ts.map +0 -1
  650. package/dist/types/src/cubing/twisty/model/props/puzzle/state/AlgProp.d.ts +0 -27
  651. package/dist/types/src/cubing/twisty/model/props/puzzle/state/AlgProp.d.ts.map +0 -1
  652. package/dist/types/src/cubing/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts +0 -12
  653. package/dist/types/src/cubing/twisty/model/props/puzzle/state/AlgTransformationProp.d.ts.map +0 -1
  654. package/dist/types/src/cubing/twisty/model/props/puzzle/state/AnchorTransformationProp.d.ts +0 -15
  655. package/dist/types/src/cubing/twisty/model/props/puzzle/state/AnchorTransformationProp.d.ts.map +0 -1
  656. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts +0 -11
  657. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CatchUpMoveProp.d.ts.map +0 -1
  658. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts +0 -17
  659. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CurrentLeavesSimplified.d.ts.map +0 -1
  660. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CurrentMoveInfoProp.d.ts +0 -14
  661. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CurrentMoveInfoProp.d.ts.map +0 -1
  662. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CurrentStateProp.d.ts +0 -15
  663. package/dist/types/src/cubing/twisty/model/props/puzzle/state/CurrentStateProp.d.ts.map +0 -1
  664. package/dist/types/src/cubing/twisty/model/props/puzzle/state/DragInputProp.d.ts +0 -10
  665. package/dist/types/src/cubing/twisty/model/props/puzzle/state/DragInputProp.d.ts.map +0 -1
  666. package/dist/types/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts +0 -20
  667. package/dist/types/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorProp.d.ts.map +0 -1
  668. package/dist/types/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts +0 -12
  669. package/dist/types/src/cubing/twisty/model/props/puzzle/state/IndexerConstructorRequestProp.d.ts.map +0 -1
  670. package/dist/types/src/cubing/twisty/model/props/puzzle/state/IndexerProp.d.ts +0 -15
  671. package/dist/types/src/cubing/twisty/model/props/puzzle/state/IndexerProp.d.ts.map +0 -1
  672. package/dist/types/src/cubing/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts +0 -12
  673. package/dist/types/src/cubing/twisty/model/props/puzzle/state/LegacyPositionProp.d.ts.map +0 -1
  674. package/dist/types/src/cubing/twisty/model/props/puzzle/state/MovePressCancelOptions.d.ts +0 -6
  675. package/dist/types/src/cubing/twisty/model/props/puzzle/state/MovePressCancelOptions.d.ts.map +0 -1
  676. package/dist/types/src/cubing/twisty/model/props/puzzle/state/MovePressInputProp.d.ts +0 -11
  677. package/dist/types/src/cubing/twisty/model/props/puzzle/state/MovePressInputProp.d.ts.map +0 -1
  678. package/dist/types/src/cubing/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts +0 -10
  679. package/dist/types/src/cubing/twisty/model/props/puzzle/state/NaiveMoveCountProp.d.ts.map +0 -1
  680. package/dist/types/src/cubing/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +0 -14
  681. package/dist/types/src/cubing/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts.map +0 -1
  682. package/dist/types/src/cubing/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts +0 -10
  683. package/dist/types/src/cubing/twisty/model/props/puzzle/state/SetupAnchorProp.d.ts.map +0 -1
  684. package/dist/types/src/cubing/twisty/model/props/puzzle/state/SetupTransformationProp.d.ts +0 -6
  685. package/dist/types/src/cubing/twisty/model/props/puzzle/state/SetupTransformationProp.d.ts.map +0 -1
  686. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/KPuzzleProp.d.ts +0 -11
  687. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/KPuzzleProp.d.ts.map +0 -1
  688. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts +0 -6
  689. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleDescriptionProp.d.ts.map +0 -1
  690. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts +0 -11
  691. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDProp.d.ts.map +0 -1
  692. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +0 -27
  693. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts.map +0 -1
  694. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts +0 -13
  695. package/dist/types/src/cubing/twisty/model/props/puzzle/structure/PuzzleLoaderProp.d.ts.map +0 -1
  696. package/dist/types/src/cubing/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts +0 -25
  697. package/dist/types/src/cubing/twisty/model/props/timeline/CoarseTimelineInfoProp.d.ts.map +0 -1
  698. package/dist/types/src/cubing/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts +0 -24
  699. package/dist/types/src/cubing/twisty/model/props/timeline/DetailedTimelineInfoProp.d.ts.map +0 -1
  700. package/dist/types/src/cubing/twisty/model/props/timeline/PlayingInfoProp.d.ts +0 -15
  701. package/dist/types/src/cubing/twisty/model/props/timeline/PlayingInfoProp.d.ts.map +0 -1
  702. package/dist/types/src/cubing/twisty/model/props/timeline/TempoScaleProp.d.ts +0 -6
  703. package/dist/types/src/cubing/twisty/model/props/timeline/TempoScaleProp.d.ts.map +0 -1
  704. package/dist/types/src/cubing/twisty/model/props/timeline/TimestampRequestProp.d.ts +0 -17
  705. package/dist/types/src/cubing/twisty/model/props/timeline/TimestampRequestProp.d.ts.map +0 -1
  706. package/dist/types/src/cubing/twisty/model/props/viewer/BackViewProp.d.ts +0 -12
  707. package/dist/types/src/cubing/twisty/model/props/viewer/BackViewProp.d.ts.map +0 -1
  708. package/dist/types/src/cubing/twisty/model/props/viewer/BackgroundProp.d.ts +0 -12
  709. package/dist/types/src/cubing/twisty/model/props/viewer/BackgroundProp.d.ts.map +0 -1
  710. package/dist/types/src/cubing/twisty/model/props/viewer/ButtonAppearanceProp.d.ts +0 -22
  711. package/dist/types/src/cubing/twisty/model/props/viewer/ButtonAppearanceProp.d.ts.map +0 -1
  712. package/dist/types/src/cubing/twisty/model/props/viewer/ControlPanelProp.d.ts +0 -11
  713. package/dist/types/src/cubing/twisty/model/props/viewer/ControlPanelProp.d.ts.map +0 -1
  714. package/dist/types/src/cubing/twisty/model/props/viewer/DOMElementReferenceProp.d.ts +0 -5
  715. package/dist/types/src/cubing/twisty/model/props/viewer/DOMElementReferenceProp.d.ts.map +0 -1
  716. package/dist/types/src/cubing/twisty/model/props/viewer/DarkModeProp.d.ts +0 -10
  717. package/dist/types/src/cubing/twisty/model/props/viewer/DarkModeProp.d.ts.map +0 -1
  718. package/dist/types/src/cubing/twisty/model/props/viewer/DarkModeRequestProp.d.ts +0 -11
  719. package/dist/types/src/cubing/twisty/model/props/viewer/DarkModeRequestProp.d.ts.map +0 -1
  720. package/dist/types/src/cubing/twisty/model/props/viewer/LatitudeLimit.d.ts +0 -6
  721. package/dist/types/src/cubing/twisty/model/props/viewer/LatitudeLimit.d.ts.map +0 -1
  722. package/dist/types/src/cubing/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts +0 -29
  723. package/dist/types/src/cubing/twisty/model/props/viewer/OrbitCoordinatesProp.d.ts.map +0 -1
  724. package/dist/types/src/cubing/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts +0 -15
  725. package/dist/types/src/cubing/twisty/model/props/viewer/OrbitCoordinatesRequestProp.d.ts.map +0 -1
  726. package/dist/types/src/cubing/twisty/model/props/viewer/TimeRangeProp.d.ts +0 -11
  727. package/dist/types/src/cubing/twisty/model/props/viewer/TimeRangeProp.d.ts.map +0 -1
  728. package/dist/types/src/cubing/twisty/model/props/viewer/ViewerLinkProp.d.ts +0 -12
  729. package/dist/types/src/cubing/twisty/model/props/viewer/ViewerLinkProp.d.ts.map +0 -1
  730. package/dist/types/src/cubing/twisty/model/props/viewer/VisualizationProp.d.ts +0 -13
  731. package/dist/types/src/cubing/twisty/model/props/viewer/VisualizationProp.d.ts.map +0 -1
  732. package/dist/types/src/cubing/twisty/model/props/viewer/VisualizationStrategyProp.d.ts +0 -13
  733. package/dist/types/src/cubing/twisty/model/props/viewer/VisualizationStrategyProp.d.ts.map +0 -1
  734. package/dist/types/src/cubing/twisty/views/2D/KPuzzleSVGWrapper.d.ts +0 -19
  735. package/dist/types/src/cubing/twisty/views/2D/KPuzzleSVGWrapper.d.ts.map +0 -1
  736. package/dist/types/src/cubing/twisty/views/2D/Twisty2DPuzzle.css.d.ts +0 -3
  737. package/dist/types/src/cubing/twisty/views/2D/Twisty2DPuzzle.css.d.ts.map +0 -1
  738. package/dist/types/src/cubing/twisty/views/2D/Twisty2DPuzzle.d.ts +0 -28
  739. package/dist/types/src/cubing/twisty/views/2D/Twisty2DPuzzle.d.ts.map +0 -1
  740. package/dist/types/src/cubing/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts +0 -16
  741. package/dist/types/src/cubing/twisty/views/2D/Twisty2DPuzzleWrapper.d.ts.map +0 -1
  742. package/dist/types/src/cubing/twisty/views/2D/Twisty2DSceneWrapper.d.ts +0 -20
  743. package/dist/types/src/cubing/twisty/views/2D/Twisty2DSceneWrapper.d.ts.map +0 -1
  744. package/dist/types/src/cubing/twisty/views/3D/DragTracker.d.ts +0 -31
  745. package/dist/types/src/cubing/twisty/views/3D/DragTracker.d.ts.map +0 -1
  746. package/dist/types/src/cubing/twisty/views/3D/RendererPool.d.ts +0 -5
  747. package/dist/types/src/cubing/twisty/views/3D/RendererPool.d.ts.map +0 -1
  748. package/dist/types/src/cubing/twisty/views/3D/TAU.d.ts +0 -3
  749. package/dist/types/src/cubing/twisty/views/3D/TAU.d.ts.map +0 -1
  750. package/dist/types/src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts +0 -22
  751. package/dist/types/src/cubing/twisty/views/3D/Twisty3DPuzzleWrapper.d.ts.map +0 -1
  752. package/dist/types/src/cubing/twisty/views/3D/Twisty3DRenderTarget.d.ts +0 -4
  753. package/dist/types/src/cubing/twisty/views/3D/Twisty3DRenderTarget.d.ts.map +0 -1
  754. package/dist/types/src/cubing/twisty/views/3D/Twisty3DScene.d.ts +0 -15
  755. package/dist/types/src/cubing/twisty/views/3D/Twisty3DScene.d.ts.map +0 -1
  756. package/dist/types/src/cubing/twisty/views/3D/Twisty3DSceneWrapper.d.ts +0 -36
  757. package/dist/types/src/cubing/twisty/views/3D/Twisty3DSceneWrapper.d.ts.map +0 -1
  758. package/dist/types/src/cubing/twisty/views/3D/Twisty3DVantage.css.d.ts +0 -3
  759. package/dist/types/src/cubing/twisty/views/3D/Twisty3DVantage.css.d.ts.map +0 -1
  760. package/dist/types/src/cubing/twisty/views/3D/Twisty3DVantage.d.ts +0 -37
  761. package/dist/types/src/cubing/twisty/views/3D/Twisty3DVantage.d.ts.map +0 -1
  762. package/dist/types/src/cubing/twisty/views/3D/TwistyOrbitControls.d.ts +0 -24
  763. package/dist/types/src/cubing/twisty/views/3D/TwistyOrbitControls.d.ts.map +0 -1
  764. package/dist/types/src/cubing/twisty/views/3D/TwistyOrbitControls.spec.d.ts +0 -2
  765. package/dist/types/src/cubing/twisty/views/3D/TwistyOrbitControls.spec.d.ts.map +0 -1
  766. package/dist/types/src/cubing/twisty/views/3D/puzzles/Cube3D.d.ts +0 -61
  767. package/dist/types/src/cubing/twisty/views/3D/puzzles/Cube3D.d.ts.map +0 -1
  768. package/dist/types/src/cubing/twisty/views/3D/puzzles/PG3D.d.ts +0 -67
  769. package/dist/types/src/cubing/twisty/views/3D/puzzles/PG3D.d.ts.map +0 -1
  770. package/dist/types/src/cubing/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts +0 -8
  771. package/dist/types/src/cubing/twisty/views/3D/puzzles/Twisty3DPuzzle.d.ts.map +0 -1
  772. package/dist/types/src/cubing/twisty/views/ClassListManager.d.ts +0 -11
  773. package/dist/types/src/cubing/twisty/views/ClassListManager.d.ts.map +0 -1
  774. package/dist/types/src/cubing/twisty/views/InitialValueTracker.d.ts +0 -7
  775. package/dist/types/src/cubing/twisty/views/InitialValueTracker.d.ts.map +0 -1
  776. package/dist/types/src/cubing/twisty/views/ManagedCustomElement.d.ts +0 -20
  777. package/dist/types/src/cubing/twisty/views/ManagedCustomElement.d.ts.map +0 -1
  778. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/LeafTokens.d.ts +0 -18
  779. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/LeafTokens.d.ts.map +0 -1
  780. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts +0 -3
  781. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.css.d.ts.map +0 -1
  782. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts +0 -47
  783. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.d.ts.map +0 -1
  784. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts +0 -2
  785. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/TwistyAlgEditor.spec.d.ts.map +0 -1
  786. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/model.d.ts +0 -61
  787. package/dist/types/src/cubing/twisty/views/TwistyAlgEditor/model.d.ts.map +0 -1
  788. package/dist/types/src/cubing/twisty/views/TwistyAlgViewer.css.d.ts +0 -3
  789. package/dist/types/src/cubing/twisty/views/TwistyAlgViewer.css.d.ts.map +0 -1
  790. package/dist/types/src/cubing/twisty/views/TwistyAlgViewer.d.ts +0 -59
  791. package/dist/types/src/cubing/twisty/views/TwistyAlgViewer.d.ts.map +0 -1
  792. package/dist/types/src/cubing/twisty/views/TwistyPlayer.css.d.ts +0 -3
  793. package/dist/types/src/cubing/twisty/views/TwistyPlayer.css.d.ts.map +0 -1
  794. package/dist/types/src/cubing/twisty/views/TwistyPlayer.d.ts +0 -173
  795. package/dist/types/src/cubing/twisty/views/TwistyPlayer.d.ts.map +0 -1
  796. package/dist/types/src/cubing/twisty/views/TwistyPlayerSettable.d.ts +0 -99
  797. package/dist/types/src/cubing/twisty/views/TwistyPlayerSettable.d.ts.map +0 -1
  798. package/dist/types/src/cubing/twisty/views/TwistyViewerWrapper.css.d.ts +0 -3
  799. package/dist/types/src/cubing/twisty/views/TwistyViewerWrapper.css.d.ts.map +0 -1
  800. package/dist/types/src/cubing/twisty/views/canvas.d.ts +0 -3
  801. package/dist/types/src/cubing/twisty/views/canvas.d.ts.map +0 -1
  802. package/dist/types/src/cubing/twisty/views/control-panel/TwistyButtons.css.d.ts +0 -4
  803. package/dist/types/src/cubing/twisty/views/control-panel/TwistyButtons.css.d.ts.map +0 -1
  804. package/dist/types/src/cubing/twisty/views/control-panel/TwistyButtons.d.ts +0 -36
  805. package/dist/types/src/cubing/twisty/views/control-panel/TwistyButtons.d.ts.map +0 -1
  806. package/dist/types/src/cubing/twisty/views/control-panel/TwistyScrubber.css.d.ts +0 -3
  807. package/dist/types/src/cubing/twisty/views/control-panel/TwistyScrubber.css.d.ts.map +0 -1
  808. package/dist/types/src/cubing/twisty/views/control-panel/TwistyScrubber.d.ts +0 -19
  809. package/dist/types/src/cubing/twisty/views/control-panel/TwistyScrubber.d.ts.map +0 -1
  810. package/dist/types/src/cubing/twisty/views/control-panel/webkit-fullscreen.d.ts +0 -15
  811. package/dist/types/src/cubing/twisty/views/control-panel/webkit-fullscreen.d.ts.map +0 -1
  812. package/dist/types/src/cubing/twisty/views/document.d.ts +0 -2
  813. package/dist/types/src/cubing/twisty/views/document.d.ts.map +0 -1
  814. package/dist/types/src/cubing/twisty/views/node-custom-element-shims.d.ts +0 -5
  815. package/dist/types/src/cubing/twisty/views/node-custom-element-shims.d.ts.map +0 -1
  816. package/dist/types/src/cubing/twisty/views/screenshot.d.ts +0 -12
  817. package/dist/types/src/cubing/twisty/views/screenshot.d.ts.map +0 -1
  818. package/dist/types/src/cubing/twisty/views/stream/TwistyStreamSource.css.d.ts +0 -3
  819. package/dist/types/src/cubing/twisty/views/stream/TwistyStreamSource.css.d.ts.map +0 -1
  820. package/dist/types/src/cubing/twisty/views/stream/TwistyStreamSource.d.ts +0 -18
  821. package/dist/types/src/cubing/twisty/views/stream/TwistyStreamSource.d.ts.map +0 -1
  822. package/dist/types/src/cubing/twisty/views/twizzle/TwizzleLink.css.d.ts +0 -4
  823. package/dist/types/src/cubing/twisty/views/twizzle/TwizzleLink.css.d.ts.map +0 -1
  824. package/dist/types/src/cubing/twisty/views/twizzle/TwizzleLink.d.ts +0 -22
  825. package/dist/types/src/cubing/twisty/views/twizzle/TwizzleLink.d.ts.map +0 -1
  826. package/dist/types/src/cubing/twisty/views/twizzle/url-params.d.ts +0 -20
  827. package/dist/types/src/cubing/twisty/views/twizzle/url-params.d.ts.map +0 -1
  828. package/dist/types/src/cubing/vendor/comlink-everywhere/inside/index.d.ts +0 -5
  829. package/dist/types/src/cubing/vendor/comlink-everywhere/inside/index.d.ts.map +0 -1
  830. package/dist/types/src/cubing/vendor/comlink-everywhere/node-adapter.d.ts +0 -7
  831. package/dist/types/src/cubing/vendor/comlink-everywhere/node-adapter.d.ts.map +0 -1
  832. package/dist/types/src/cubing/vendor/comlink-everywhere/outside/index.d.ts +0 -6
  833. package/dist/types/src/cubing/vendor/comlink-everywhere/outside/index.d.ts.map +0 -1
  834. package/dist/types/src/cubing/vendor/cstimer/src/js/lib/mathlib.d.ts +0 -5
  835. package/dist/types/src/cubing/vendor/cstimer/src/js/lib/mathlib.d.ts.map +0 -1
  836. package/dist/types/src/cubing/vendor/cstimer/src/js/scramble/444-solver.d.ts +0 -4
  837. package/dist/types/src/cubing/vendor/cstimer/src/js/scramble/444-solver.d.ts.map +0 -1
  838. package/dist/types/src/cubing/vendor/min2phase/3x3x3-min2phase.d.ts +0 -3
  839. package/dist/types/src/cubing/vendor/min2phase/3x3x3-min2phase.d.ts.map +0 -1
  840. package/dist/types/src/cubing/vendor/p-lazy/p-lazy.d.ts +0 -10
  841. package/dist/types/src/cubing/vendor/p-lazy/p-lazy.d.ts.map +0 -1
  842. package/dist/types/src/cubing/vendor/sq12phase/sq1-solver.d.ts +0 -2
  843. package/dist/types/src/cubing/vendor/sq12phase/sq1-solver.d.ts.map +0 -1
  844. package/dist/types/src/cubing/vendor/three/examples/jsm/libs/stats.modified.module.d.ts +0 -33
  845. package/dist/types/src/cubing/vendor/three/examples/jsm/libs/stats.modified.module.d.ts.map +0 -1
  846. package/dist/types/src/cubing/vendor/twsearch/index.d.ts +0 -24
  847. package/dist/types/src/cubing/vendor/twsearch/index.d.ts.map +0 -1
  848. package/dist/types/src/cubing/vendor/twsearch/twsearch-PTN3QM26.d.ts +0 -3
  849. package/dist/types/src/cubing/vendor/twsearch/twsearch-PTN3QM26.d.ts.map +0 -1
  850. package/dist/types/src/cubing/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts +0 -4
  851. package/dist/types/src/cubing/vendor/unsafe-raw-aes/unsafe-raw-aes.d.ts.map +0 -1
  852. package/dist/types/src/cubing/vendor/xyzzy/fto-solver-original.d.ts +0 -149
  853. package/dist/types/src/cubing/vendor/xyzzy/fto-solver-original.d.ts.map +0 -1
  854. package/dist/types/src/cubing/vendor/xyzzy/fto-solver.d.ts +0 -2
  855. package/dist/types/src/cubing/vendor/xyzzy/fto-solver.d.ts.map +0 -1
  856. package/dist/types/src/cubing/vendor/xyzzy/kilosolver.d.ts +0 -3
  857. package/dist/types/src/cubing/vendor/xyzzy/kilosolver.d.ts.map +0 -1
  858. package/dist/types/src/cubing/vendor/xyzzy/master_tetraminx-solver.d.ts +0 -2
  859. package/dist/types/src/cubing/vendor/xyzzy/master_tetraminx-solver.d.ts.map +0 -1
  860. package/dist/types/src/cubing/vendor/xyzzy/redi_cube.d.ts +0 -3
  861. package/dist/types/src/cubing/vendor/xyzzy/redi_cube.d.ts.map +0 -1
  862. package/dist/types/src/sites/alpha.twizzle.net/edit/app.d.ts +0 -55
  863. package/dist/types/src/sites/alpha.twizzle.net/edit/app.d.ts.map +0 -1
  864. package/dist/types/src/sites/alpha.twizzle.net/edit/dom.d.ts +0 -3
  865. package/dist/types/src/sites/alpha.twizzle.net/edit/dom.d.ts.map +0 -1
  866. package/dist/types/src/sites/alpha.twizzle.net/edit/examples.d.ts +0 -3
  867. package/dist/types/src/sites/alpha.twizzle.net/edit/examples.d.ts.map +0 -1
  868. package/dist/types/src/sites/alpha.twizzle.net/edit/main.d.ts +0 -2
  869. package/dist/types/src/sites/alpha.twizzle.net/edit/main.d.ts.map +0 -1
  870. package/dist/types/src/sites/alpha.twizzle.net/edit/strings.d.ts +0 -2
  871. package/dist/types/src/sites/alpha.twizzle.net/edit/strings.d.ts.map +0 -1
  872. package/dist/types/src/sites/alpha.twizzle.net/edit/supported-puzzles.d.ts +0 -32
  873. package/dist/types/src/sites/alpha.twizzle.net/edit/supported-puzzles.d.ts.map +0 -1
  874. package/dist/types/src/sites/alpha.twizzle.net/explore/TwistyPuzzleDescriptionInput.d.ts +0 -19
  875. package/dist/types/src/sites/alpha.twizzle.net/explore/TwistyPuzzleDescriptionInput.d.ts.map +0 -1
  876. package/dist/types/src/sites/alpha.twizzle.net/explore/app.d.ts +0 -35
  877. package/dist/types/src/sites/alpha.twizzle.net/explore/app.d.ts.map +0 -1
  878. package/dist/types/src/sites/alpha.twizzle.net/explore/main.d.ts +0 -2
  879. package/dist/types/src/sites/alpha.twizzle.net/explore/main.d.ts.map +0 -1
  880. package/dist/types/src/sites/alpha.twizzle.net/explore/prop-inputs.d.ts +0 -3
  881. package/dist/types/src/sites/alpha.twizzle.net/explore/prop-inputs.d.ts.map +0 -1
  882. package/dist/types/src/sites/alpha.twizzle.net/explore/twisty-player.d.ts +0 -3
  883. package/dist/types/src/sites/alpha.twizzle.net/explore/twisty-player.d.ts.map +0 -1
  884. package/dist/types/src/sites/alpha.twizzle.net/explore/url-params.d.ts +0 -25
  885. package/dist/types/src/sites/alpha.twizzle.net/explore/url-params.d.ts.map +0 -1
  886. package/dist/types/src/sites/experiments.cubing.net/cubing.js/3x3x3-formats/convert.d.ts +0 -9
  887. package/dist/types/src/sites/experiments.cubing.net/cubing.js/3x3x3-formats/convert.d.ts.map +0 -1
  888. package/dist/types/src/sites/experiments.cubing.net/cubing.js/3x3x3-formats/index.d.ts +0 -3
  889. package/dist/types/src/sites/experiments.cubing.net/cubing.js/3x3x3-formats/index.d.ts.map +0 -1
  890. package/dist/types/src/sites/experiments.cubing.net/cubing.js/3x3x3-formats/tests.d.ts +0 -2
  891. package/dist/types/src/sites/experiments.cubing.net/cubing.js/3x3x3-formats/tests.d.ts.map +0 -1
  892. package/dist/types/src/sites/experiments.cubing.net/cubing.js/alg/extractor.d.ts +0 -3
  893. package/dist/types/src/sites/experiments.cubing.net/cubing.js/alg/extractor.d.ts.map +0 -1
  894. package/dist/types/src/sites/experiments.cubing.net/cubing.js/alg/inspector.d.ts +0 -2
  895. package/dist/types/src/sites/experiments.cubing.net/cubing.js/alg/inspector.d.ts.map +0 -1
  896. package/dist/types/src/sites/experiments.cubing.net/cubing.js/applet-wrappers/AnimCube/TwistyAnimCube.d.ts +0 -9
  897. package/dist/types/src/sites/experiments.cubing.net/cubing.js/applet-wrappers/AnimCube/TwistyAnimCube.d.ts.map +0 -1
  898. package/dist/types/src/sites/experiments.cubing.net/cubing.js/bluetooth/index.d.ts +0 -2
  899. package/dist/types/src/sites/experiments.cubing.net/cubing.js/bluetooth/index.d.ts.map +0 -1
  900. package/dist/types/src/sites/experiments.cubing.net/cubing.js/console/index.d.ts +0 -25
  901. package/dist/types/src/sites/experiments.cubing.net/cubing.js/console/index.d.ts.map +0 -1
  902. package/dist/types/src/sites/experiments.cubing.net/cubing.js/flag/index.d.ts +0 -1
  903. package/dist/types/src/sites/experiments.cubing.net/cubing.js/flag/index.d.ts.map +0 -1
  904. package/dist/types/src/sites/experiments.cubing.net/cubing.js/kpuzzle/svg.d.ts +0 -2
  905. package/dist/types/src/sites/experiments.cubing.net/cubing.js/kpuzzle/svg.d.ts.map +0 -1
  906. package/dist/types/src/sites/experiments.cubing.net/cubing.js/mark3/index.d.ts +0 -2
  907. package/dist/types/src/sites/experiments.cubing.net/cubing.js/mark3/index.d.ts.map +0 -1
  908. package/dist/types/src/sites/experiments.cubing.net/cubing.js/multi-alg/index.d.ts +0 -2
  909. package/dist/types/src/sites/experiments.cubing.net/cubing.js/multi-alg/index.d.ts.map +0 -1
  910. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/index.d.ts +0 -2
  911. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/index.d.ts.map +0 -1
  912. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/input/SwipeGrid.d.ts +0 -25
  913. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/input/SwipeGrid.d.ts.map +0 -1
  914. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/input/SwipeTracker.d.ts +0 -21
  915. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/input/SwipeTracker.d.ts.map +0 -1
  916. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/input/SwipeyPuzzle.d.ts +0 -22
  917. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/input/SwipeyPuzzle.d.ts.map +0 -1
  918. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/url-params.d.ts +0 -20
  919. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/url-params.d.ts.map +0 -1
  920. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/websocket-proxy.d.ts +0 -7
  921. package/dist/types/src/sites/experiments.cubing.net/cubing.js/play/websocket-proxy.d.ts.map +0 -1
  922. package/dist/types/src/sites/experiments.cubing.net/cubing.js/robot/index.d.ts +0 -2
  923. package/dist/types/src/sites/experiments.cubing.net/cubing.js/robot/index.d.ts.map +0 -1
  924. package/dist/types/src/sites/experiments.cubing.net/cubing.js/robot/logs/index.d.ts +0 -2
  925. package/dist/types/src/sites/experiments.cubing.net/cubing.js/robot/logs/index.d.ts.map +0 -1
  926. package/dist/types/src/sites/experiments.cubing.net/cubing.js/robot/logs/normalize.d.ts +0 -3
  927. package/dist/types/src/sites/experiments.cubing.net/cubing.js/robot/logs/normalize.d.ts.map +0 -1
  928. package/dist/types/src/sites/experiments.cubing.net/cubing.js/scramble/index.d.ts +0 -2
  929. package/dist/types/src/sites/experiments.cubing.net/cubing.js/scramble/index.d.ts.map +0 -1
  930. package/dist/types/src/sites/experiments.cubing.net/cubing.js/screenshot/index.d.ts +0 -2
  931. package/dist/types/src/sites/experiments.cubing.net/cubing.js/screenshot/index.d.ts.map +0 -1
  932. package/dist/types/src/sites/experiments.cubing.net/cubing.js/spec/binary/index.d.ts +0 -4
  933. package/dist/types/src/sites/experiments.cubing.net/cubing.js/spec/binary/index.d.ts.map +0 -1
  934. package/dist/types/src/sites/experiments.cubing.net/cubing.js/speechcubing/index.d.ts +0 -2
  935. package/dist/types/src/sites/experiments.cubing.net/cubing.js/speechcubing/index.d.ts.map +0 -1
  936. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stream/reorient.d.ts +0 -3
  937. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stream/reorient.d.ts.map +0 -1
  938. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stress-tests/2x2x2-devils-alg.d.ts +0 -2
  939. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stress-tests/2x2x2-devils-alg.d.ts.map +0 -1
  940. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stress-tests/40x40x40.d.ts +0 -2
  941. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stress-tests/40x40x40.d.ts.map +0 -1
  942. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stub/stub.d.ts +0 -2
  943. package/dist/types/src/sites/experiments.cubing.net/cubing.js/stub/stub.d.ts.map +0 -1
  944. package/dist/types/src/sites/experiments.cubing.net/cubing.js/svg-state-editor/index.d.ts +0 -2
  945. package/dist/types/src/sites/experiments.cubing.net/cubing.js/svg-state-editor/index.d.ts.map +0 -1
  946. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/2d-stickering.d.ts +0 -2
  947. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/2d-stickering.d.ts.map +0 -1
  948. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/attributes.d.ts +0 -2
  949. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/attributes.d.ts.map +0 -1
  950. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/cube3d-stickering.d.ts +0 -2
  951. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/cube3d-stickering.d.ts.map +0 -1
  952. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/demo-player.d.ts +0 -2
  953. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/demo-player.d.ts.map +0 -1
  954. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/demo-spin-camera.d.ts +0 -4
  955. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/demo-spin-camera.d.ts.map +0 -1
  956. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/inline.d.ts +0 -2
  957. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/inline.d.ts.map +0 -1
  958. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/ll.d.ts +0 -2
  959. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/ll.d.ts.map +0 -1
  960. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/puzzle-description.d.ts +0 -2
  961. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/puzzle-description.d.ts.map +0 -1
  962. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/simultaneous.d.ts +0 -2
  963. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/simultaneous.d.ts.map +0 -1
  964. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/stickering-demo-algs.d.ts +0 -3
  965. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/stickering-demo-algs.d.ts.map +0 -1
  966. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/svg.d.ts +0 -2
  967. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/svg.d.ts.map +0 -1
  968. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-alg-editor/index.d.ts +0 -2
  969. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-alg-editor/index.d.ts.map +0 -1
  970. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-alg-viewer.d.ts +0 -2
  971. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-alg-viewer.d.ts.map +0 -1
  972. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-player-config.d.ts +0 -2
  973. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-player-config.d.ts.map +0 -1
  974. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-player-props/TwistyPropDebugger.d.ts +0 -27
  975. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-player-props/TwistyPropDebugger.d.ts.map +0 -1
  976. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-player-props/index.d.ts +0 -2
  977. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty-player-props/index.d.ts.map +0 -1
  978. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty.d.ts +0 -2
  979. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twisty/twisty.d.ts.map +0 -1
  980. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twizzle-diaries/intro/index.d.ts +0 -1
  981. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twizzle-diaries/intro/index.d.ts.map +0 -1
  982. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twizzle-diaries/intro/jszip-wrapper.d.ts +0 -2
  983. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twizzle-diaries/intro/jszip-wrapper.d.ts.map +0 -1
  984. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twizzle-diaries/intro/svg/index.d.ts +0 -12
  985. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twizzle-diaries/intro/svg/index.d.ts.map +0 -1
  986. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twsearch/benchmark.d.ts +0 -2
  987. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twsearch/benchmark.d.ts.map +0 -1
  988. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twsearch/index.d.ts +0 -2
  989. package/dist/types/src/sites/experiments.cubing.net/cubing.js/twsearch/index.d.ts.map +0 -1
  990. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/config.d.ts +0 -7
  991. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/config.d.ts.map +0 -1
  992. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/index.d.ts +0 -1
  993. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/index.d.ts.map +0 -1
  994. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/proxy/index.d.ts +0 -2
  995. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/proxy/index.d.ts.map +0 -1
  996. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/room.d.ts +0 -12
  997. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/room.d.ts.map +0 -1
  998. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-cube.d.ts +0 -1
  999. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-cube.d.ts.map +0 -1
  1000. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-input.d.ts +0 -35
  1001. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-input.d.ts.map +0 -1
  1002. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-pg3d.d.ts +0 -1
  1003. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-pg3d.d.ts.map +0 -1
  1004. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-puzzle.d.ts +0 -6
  1005. package/dist/types/src/sites/experiments.cubing.net/cubing.js/vr/vr-puzzle.d.ts.map +0 -1
  1006. package/dist/types/src/test/chai-workarounds/Alg.chai.d.ts +0 -22
  1007. package/dist/types/src/test/chai-workarounds/Alg.chai.d.ts.map +0 -1
  1008. package/dist/types/src/test/chai-workarounds/chai.d.ts +0 -4
  1009. package/dist/types/src/test/chai-workarounds/chai.d.ts.map +0 -1
  1010. package/dist/types/src/test/chai-workarounds/index.d.ts +0 -11
  1011. package/dist/types/src/test/chai-workarounds/index.d.ts.map +0 -1
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cubing/puzzle-geometry/FaceNameSwizzler.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/NullMapper.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/FTONotationMapper.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/FaceRenamingMapper.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/MegaminxScramblingNotationMapper.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/NxNxNCubeMapper.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/PyraminxNotationMapper.ts", "../../../src/cubing/puzzle-geometry/notation-mapping/SkewbNotationMapper.ts", "../../../src/cubing/puzzle-geometry/Options.ts", "../../../src/cubing/puzzle-geometry/Perm.ts", "../../../src/cubing/puzzle-geometry/PermOriSet.ts", "../../../src/cubing/puzzle-geometry/PGPuzzles.ts", "../../../src/cubing/puzzle-geometry/Quat.ts", "../../../src/cubing/puzzle-geometry/PlatonicGenerator.ts", "../../../src/cubing/puzzle-geometry/SchreierSims.ts", "../../../src/cubing/puzzle-geometry/PuzzleGeometry.ts"],
4
4
  "sourcesContent": ["// Manages a set of face names. Detects whether they are prefix-free.\n// Implements greedy splitting into face names and comparisons between\n// concatenated face names and grip names.\n\nexport class FaceNameSwizzler {\n public prefixFree: boolean = true;\n public gripnames: string[] = [];\n constructor(public facenames: string[], gripnames_arg?: string[]) {\n if (gripnames_arg) {\n this.gripnames = gripnames_arg;\n }\n for (let i = 0; this.prefixFree && i < facenames.length; i++) {\n for (let j = 0; this.prefixFree && j < facenames.length; j++) {\n if (i !== j && facenames[i].startsWith(facenames[j])) {\n this.prefixFree = false;\n }\n }\n }\n }\n\n public setGripNames(names: string[]): void {\n this.gripnames = names;\n }\n\n // split a string into face names and return a list of\n // indices.\n public splitByFaceNames(s: string): number[] {\n const r = [];\n let at = 0;\n while (at < s.length) {\n if (at > 0 && at < s.length && s[at] === \"_\") {\n at++;\n }\n let currentMatch = -1;\n for (let i = 0; i < this.facenames.length; i++) {\n if (\n s.substr(at).startsWith(this.facenames[i]) &&\n (currentMatch < 0 ||\n this.facenames[i].length > this.facenames[currentMatch].length)\n ) {\n currentMatch = i;\n }\n }\n if (currentMatch >= 0) {\n r.push(currentMatch);\n at += this.facenames[currentMatch].length;\n } else {\n throw new Error(`Could not split ${s} into face names.`);\n }\n }\n return r;\n }\n\n // cons a grip from an array of numbers.\n public joinByFaceIndices(list: number[]): string {\n let sep = \"\";\n const r = [];\n for (let i = 0; i < list.length; i++) {\n r.push(sep);\n r.push(this.facenames[list[i]]);\n if (!this.prefixFree) {\n sep = \"_\";\n }\n }\n return r.join(\"\");\n }\n\n /*\n * Try to match something the user gave us with some geometric\n * feature. We used to have strict requirements:\n *\n * a) The set of face names are prefix free\n * b) When specifying a corner, all coincident planes were\n * specified\n *\n * But, to allow megaminx to have more reasonable and\n * conventional names, and to permit shorter canonical\n * names, we are relaxing these requirements and adding\n * new syntax. Now:\n *\n * a) Face names need not be syntax free.\n * b) When parsing a geometric name, we use greedy\n * matching, so the longest name that matches the\n * user string at the current position is the one\n * assumed to match.\n * c) Underscores are permitted to separate face names\n * (both in user input and in geometric\n * descriptions).\n * d) Default names of corner moves where corners have\n * more than three corners, need only include three\n * of the corners.\n *\n * This code is not performance-sensitive so we can do it a\n * slow and simple way.\n */\n public spinmatch(userinput: string, longname: string): boolean {\n // are these the same rotationally?\n if (userinput === longname) {\n return true;\n }\n try {\n const e1 = this.splitByFaceNames(userinput);\n const e2 = this.splitByFaceNames(longname);\n // All elements of userinput need to be in the longname.\n // There should be no duplicate elements in the userinput.\n // if both have length 1 or length 2, the sets must be equal.\n // if both have length 3 or more, then the first set must be\n // a subset of the second. Order doesn't matter.\n if (e1.length !== e2.length && e1.length < 3) {\n return false;\n }\n for (let i = 0; i < e1.length; i++) {\n for (let j = 0; j < i; j++) {\n if (e1[i] === e1[j]) {\n return false;\n }\n }\n let found = false;\n for (let j = 0; j < e2.length; j++) {\n if (e1[i] === e2[j]) {\n found = true;\n break;\n }\n }\n if (!found) {\n return false;\n }\n }\n return true;\n } catch (e) {\n return false;\n }\n }\n\n /* same as above, but permit both to have v's on the end. */\n public spinmatchv(userinput: string, longname: string): boolean {\n if (userinput.endsWith(\"v\") && longname.endsWith(\"v\")) {\n return this.spinmatch(\n userinput.slice(0, userinput.length - 1),\n longname.slice(0, longname.length - 1),\n );\n } else {\n return this.spinmatch(userinput, longname);\n }\n }\n\n public unswizzle(s: string): string {\n if ((s.endsWith(\"v\") || s.endsWith(\"w\")) && s[0] <= \"Z\") {\n s = s.slice(0, s.length - 1);\n }\n const upperCaseGrip = s.toUpperCase();\n for (let i = 0; i < this.gripnames.length; i++) {\n const g = this.gripnames[i];\n if (this.spinmatch(upperCaseGrip, g)) {\n return g;\n }\n }\n return s;\n }\n}\n", "import type { Move } from \"../../alg\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\nexport class NullMapper implements NotationMapper {\n public notationToInternal(move: Move): Move | null {\n return move;\n }\n\n public notationToExternal(move: Move): Move | null {\n return move;\n }\n}\n", "import { Move, QuantumMove } from \"../../alg\";\nimport type { FaceNameSwizzler } from \"../FaceNameSwizzler\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\nexport class FTONotationMapper implements NotationMapper {\n constructor(private child: NotationMapper, private sw: FaceNameSwizzler) {}\n\n public notationToInternal(move: Move): Move | null {\n if (\n move.family === \"T\" &&\n move.innerLayer === undefined &&\n move.outerLayer === undefined\n ) {\n return new Move(\n new QuantumMove(\"FLRv\", move.innerLayer, move.outerLayer),\n move.amount,\n );\n } else {\n const r = this.child.notationToInternal(move);\n return r;\n }\n }\n\n // we never rewrite click moves to these moves.\n public notationToExternal(move: Move): Move | null {\n let fam = move.family;\n if (fam.length > 0 && fam[fam.length - 1] === \"v\") {\n fam = fam.substring(0, fam.length - 1);\n }\n if (this.sw.spinmatch(fam, \"FLUR\")) {\n return new Move(\n new QuantumMove(\"T\", move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n return this.child.notationToExternal(move);\n }\n}\n", "// face renaming mapper. Accepts two face name remappers. We\n// work between the two.\n\nimport { Move, QuantumMove } from \"../../alg\";\nimport type { FaceNameSwizzler } from \"../FaceNameSwizzler\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\nexport class FaceRenamingMapper implements NotationMapper {\n constructor(\n public internalNames: FaceNameSwizzler,\n public externalNames: FaceNameSwizzler,\n ) {}\n\n // TODO: consider putting a cache in front of this\n public convertString(\n grip: string,\n a: FaceNameSwizzler,\n b: FaceNameSwizzler,\n ): string {\n let suffix = \"\";\n if ((grip.endsWith(\"v\") || grip.endsWith(\"v\")) && grip <= \"_\") {\n suffix = grip.slice(grip.length - 1);\n grip = grip.slice(0, grip.length - 1);\n }\n const upper = grip.toUpperCase();\n let isLowerCase = false;\n if (grip !== upper) {\n isLowerCase = true;\n grip = upper;\n }\n grip = b.joinByFaceIndices(a.splitByFaceNames(grip));\n if (isLowerCase) {\n grip = grip.toLowerCase();\n }\n return grip + suffix;\n }\n\n public convert(move: Move, a: FaceNameSwizzler, b: FaceNameSwizzler): Move {\n const grip = move.family;\n const ngrip = this.convertString(grip, a, b);\n if (grip === ngrip) {\n return move;\n } else {\n return new Move(\n new QuantumMove(ngrip, move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n }\n\n public notationToInternal(move: Move): Move {\n const r = this.convert(move, this.externalNames, this.internalNames);\n return r;\n }\n\n public notationToExternal(move: Move): Move {\n return this.convert(move, this.internalNames, this.externalNames);\n }\n}\n", "// Sits on top of a (possibly null) notation mapper, and\n\nimport { Move, QuantumMove } from \"../../alg\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\n// adds R++/R--/D++/D-- notation mapping.\nexport class MegaminxScramblingNotationMapper implements NotationMapper {\n constructor(private child: NotationMapper) {}\n\n public notationToInternal(move: Move): Move | null {\n if (move.innerLayer === undefined && move.outerLayer === undefined) {\n if (Math.abs(move.amount) === 1) {\n if (move.family === \"R++\") {\n return new Move(new QuantumMove(\"L\", 3, 2), -2 * move.amount);\n } else if (move.family === \"R--\") {\n return new Move(new QuantumMove(\"L\", 3, 2), 2 * move.amount);\n } else if (move.family === \"D++\") {\n return new Move(new QuantumMove(\"U\", 3, 2), -2 * move.amount);\n } else if (move.family === \"D--\") {\n return new Move(new QuantumMove(\"U\", 3, 2), 2 * move.amount);\n }\n\n // TODO: Figure out if `cubing/alg` should parse `R++` to a family of `R++`.\n if (move.family === \"R_PLUSPLUS_\") {\n return new Move(new QuantumMove(\"L\", 3, 2), -2 * move.amount);\n } else if (move.family === \"D_PLUSPLUS_\") {\n return new Move(new QuantumMove(\"U\", 3, 2), -2 * move.amount);\n }\n }\n if (move.family === \"y\") {\n return new Move(\"Uv\", move.amount);\n }\n if (move.family === \"x\" && Math.abs(move.amount) === 2) {\n return new Move(\"ERv\", move.amount / 2);\n }\n }\n return this.child.notationToInternal(move);\n }\n\n // we never rewrite click moves to these moves.\n public notationToExternal(move: Move): Move | null {\n if (move.family === \"ERv\" && Math.abs(move.amount) === 1) {\n return new Move(\n new QuantumMove(\"x\", move.innerLayer, move.outerLayer),\n move.amount * 2,\n );\n }\n if (move.family === \"ILv\" && Math.abs(move.amount) === 1) {\n return new Move(\n new QuantumMove(\"x\", move.innerLayer, move.outerLayer),\n -move.amount * 2,\n );\n }\n if (move.family === \"Uv\") {\n return new Move(\n new QuantumMove(\"y\", move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n if (move.family === \"Dv\") {\n return new Move(\"y\", -move.amount);\n }\n return this.child.notationToExternal(move);\n }\n}\n", "import { Move, QuantumMove } from \"../../alg\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\nexport class NxNxNCubeMapper implements NotationMapper {\n constructor(public slices: number) {}\n\n public notationToInternal(move: Move): Move {\n const grip = move.family;\n if (!(move.innerLayer || move.outerLayer)) {\n if (grip === \"x\") {\n move = new Move(\"Rv\", move.amount);\n } else if (grip === \"y\") {\n move = new Move(\"Uv\", move.amount);\n } else if (grip === \"z\") {\n move = new Move(\"Fv\", move.amount);\n }\n if ((this.slices & 1) === 1) {\n if (grip === \"E\") {\n move = new Move(\n new QuantumMove(\"D\", (this.slices + 1) / 2),\n move.amount,\n );\n } else if (grip === \"M\") {\n move = new Move(\n new QuantumMove(\"L\", (this.slices + 1) / 2),\n move.amount,\n );\n } else if (grip === \"S\") {\n move = new Move(\n new QuantumMove(\"F\", (this.slices + 1) / 2),\n move.amount,\n );\n }\n }\n if (this.slices > 2) {\n if (grip === \"e\") {\n move = new Move(\n new QuantumMove(\"D\", this.slices - 1, 2),\n move.amount,\n );\n } else if (grip === \"m\") {\n move = new Move(\n new QuantumMove(\"L\", this.slices - 1, 2),\n move.amount,\n );\n } else if (grip === \"s\") {\n move = new Move(\n new QuantumMove(\"F\", this.slices - 1, 2),\n move.amount,\n );\n }\n }\n }\n return move;\n }\n\n // do we want to map slice moves to E/M/S instead of 2U/etc.?\n public notationToExternal(move: Move): Move {\n const grip = move.family;\n if (!(move.innerLayer || move.outerLayer)) {\n if (grip === \"Rv\") {\n return new Move(\"x\", move.amount);\n } else if (grip === \"Uv\") {\n return new Move(\"y\", move.amount);\n } else if (grip === \"Fv\") {\n return new Move(\"z\", move.amount);\n } else if (grip === \"Lv\") {\n return new Move(\"x\", -move.amount);\n } else if (grip === \"Dv\") {\n return new Move(\"y\", -move.amount);\n } else if (grip === \"Bv\") {\n return new Move(\"z\", -move.amount);\n }\n }\n return move;\n }\n}\n", "import { Move, QuantumMove } from \"../../alg\";\nimport type { FaceNameSwizzler } from \"../FaceNameSwizzler\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\nconst pyraminxFamilyMap: Record<string, string> = {\n U: \"frl\",\n L: \"fld\",\n R: \"fdr\",\n B: \"dlr\",\n u: \"FRL\",\n l: \"FLD\",\n r: \"FDR\",\n b: \"DLR\",\n Uv: \"FRLv\",\n Lv: \"FLDv\",\n Rv: \"FDRv\",\n Bv: \"DLRv\",\n D: \"D\",\n F: \"F\",\n BL: \"L\",\n BR: \"R\",\n};\nconst tetraminxFamilyMap: Record<string, string> = {\n U: \"FRL\",\n L: \"FLD\",\n R: \"FDR\",\n B: \"DLR\",\n u: \"frl\",\n l: \"fld\",\n r: \"fdr\",\n b: \"dlr\",\n Uv: \"FRLv\",\n Lv: \"FLDv\",\n Rv: \"FDRv\",\n Bv: \"DLRv\",\n D: \"D\",\n F: \"F\",\n BL: \"L\",\n BR: \"R\",\n d: \"d\",\n f: \"f\",\n bl: \"l\",\n br: \"r\",\n};\n\nconst pyraminxFamilyMapWCA: Record<string, string> = {\n U: \"FRL\",\n L: \"FLD\",\n R: \"FDR\",\n B: \"DLR\",\n};\n\nconst pyraminxExternalQuantumY = new QuantumMove(\"y\");\nconst pyraminxInternalQuantumY = new QuantumMove(\"Dv\");\n\nexport class PyraminxNotationMapper implements NotationMapper {\n protected wcaHack: boolean = false;\n map: Record<string, string> = pyraminxFamilyMap;\n\n constructor(private child: FaceNameSwizzler) {}\n\n public notationToInternal(move: Move): Move | null {\n if (this.wcaHack && move.innerLayer === 2 && move.outerLayer === null) {\n const newFamilyWCA = pyraminxFamilyMapWCA[move.family];\n if (newFamilyWCA) {\n return new Move(\n new QuantumMove(newFamilyWCA, move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n }\n const newFamily = this.map[move.family];\n\n if (newFamily) {\n return new Move(\n new QuantumMove(newFamily, move.innerLayer, move.outerLayer),\n move.amount,\n );\n } else if (pyraminxExternalQuantumY.isIdentical(move.quantum)) {\n return new Move(pyraminxInternalQuantumY, -move.amount);\n } else {\n return null;\n }\n }\n\n // we never rewrite click moves to these moves.\n public notationToExternal(move: Move): Move | null {\n if (this.wcaHack && move.innerLayer === 2 && move.outerLayer === null) {\n for (const [external, internal] of Object.entries(pyraminxFamilyMapWCA)) {\n if (this.child.spinmatch(move.family, internal)) {\n return new Move(\n new QuantumMove(external, move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n }\n }\n for (const [external, internal] of Object.entries(this.map)) {\n if (this.child.spinmatch(move.family, internal)) {\n return new Move(\n new QuantumMove(external, move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n }\n if (pyraminxInternalQuantumY.isIdentical(move.quantum)) {\n return new Move(pyraminxExternalQuantumY, -move.amount);\n } else {\n return null;\n }\n }\n}\n\nexport class TetraminxNotationMapper extends PyraminxNotationMapper {\n protected override wcaHack = true;\n\n constructor(child: FaceNameSwizzler) {\n super(child);\n this.map = tetraminxFamilyMap;\n }\n}\n", "import { Move, QuantumMove } from \"../../alg\";\nimport type { FaceNameSwizzler } from \"../FaceNameSwizzler\";\nimport type { NotationMapper } from \"./NotationMapper\";\n\nconst skewbFamilyMap: Record<string, string> = {\n U: \"UBL\",\n UL: \"ULF\",\n F: \"UFR\",\n UR: \"URB\",\n B: \"DBL\",\n D: \"DFR\",\n L: \"DLF\",\n R: \"DRB\",\n Uv: \"UBLv\",\n ULv: \"ULFv\",\n Fv: \"UFRv\",\n URv: \"URBv\",\n Bv: \"DBLv\",\n Dv: \"DFRv\",\n Lv: \"DLFv\",\n Rv: \"DRBv\",\n};\n\n// TODO: combine using a similar table.\nconst skewbExternalQuantumX = new QuantumMove(\"x\");\nconst skewbInternalQuantumX = new QuantumMove(\"Rv\");\nconst skewbInternalQuantumXPrime = new QuantumMove(\"Lv\");\nconst skewbExternalQuantumY = new QuantumMove(\"y\");\nconst skewbInternalQuantumY = new QuantumMove(\"Uv\");\nconst skewbInternalQuantumYPrime = new QuantumMove(\"Dv\");\nconst skewbExternalQuantumZ = new QuantumMove(\"z\");\nconst skewbInternalQuantumZ = new QuantumMove(\"Fv\");\nconst skewbInternalQuantumZPrime = new QuantumMove(\"Bv\");\n\nexport class SkewbNotationMapper implements NotationMapper {\n constructor(private child: FaceNameSwizzler) {}\n\n public notationToInternal(move: Move): Move | null {\n if (move.innerLayer || move.outerLayer) {\n return null;\n }\n const newFamily = skewbFamilyMap[move.family];\n if (newFamily) {\n return new Move(\n new QuantumMove(newFamily, move.outerLayer, move.innerLayer),\n move.amount,\n );\n }\n if (skewbExternalQuantumX.isIdentical(move.quantum)) {\n return new Move(skewbInternalQuantumX, move.amount);\n }\n if (skewbExternalQuantumY.isIdentical(move.quantum)) {\n return new Move(skewbInternalQuantumY, move.amount);\n }\n if (skewbExternalQuantumZ.isIdentical(move.quantum)) {\n return new Move(skewbInternalQuantumZ, move.amount);\n }\n return null;\n /*\n * (1) We are not including x/y/z in Skewb; they aren't WCA notation and\n * it's unclear anyone needs them for reconstructions.\n *\n } else if (move.family === \"x\") {\n return new BlockMove(move.outerLayer, move.innerLayer, \"Rv\", move.amount);\n } else if (move.family === \"y\") {\n return new BlockMove(move.outerLayer, move.innerLayer, \"Uv\", move.amount);\n } else if (move.family === \"z\") {\n return new BlockMove(move.outerLayer, move.innerLayer, \"Fv\", move.amount);\n */\n }\n\n // we never rewrite click moves to these moves.\n public notationToExternal(move: Move): Move | null {\n for (const [external, internal] of Object.entries(skewbFamilyMap)) {\n if (this.child.spinmatchv(move.family, internal)) {\n return new Move(\n new QuantumMove(external, move.innerLayer, move.outerLayer),\n move.amount,\n );\n }\n }\n if (skewbInternalQuantumX.isIdentical(move.quantum)) {\n return new Move(skewbExternalQuantumX, move.amount);\n }\n if (skewbInternalQuantumXPrime.isIdentical(move.quantum)) {\n return new Move(skewbExternalQuantumX, -move.amount);\n }\n if (skewbInternalQuantumY.isIdentical(move.quantum)) {\n return new Move(skewbExternalQuantumY, move.amount);\n }\n if (skewbInternalQuantumYPrime.isIdentical(move.quantum)) {\n return new Move(skewbExternalQuantumY, -move.amount);\n }\n if (skewbInternalQuantumZ.isIdentical(move.quantum)) {\n return new Move(skewbExternalQuantumZ, move.amount);\n }\n if (skewbInternalQuantumZPrime.isIdentical(move.quantum)) {\n return new Move(skewbExternalQuantumZ, -move.amount);\n }\n return null;\n /*\n * See (1) above.\n *\n if (move.family === \"Rv\") {\n return new BlockMove(move.outerLayer, move.innerLayer, \"x\", move.amount);\n } else if (move.family === \"Uv\") {\n return new BlockMove(move.outerLayer, move.innerLayer, \"y\", move.amount);\n } else if (move.family === \"Fv\") {\n return new BlockMove(move.outerLayer, move.innerLayer, \"z\", move.amount);\n */\n // } else {\n // return null;\n // }\n }\n}\n", "import { parsePuzzleDescription, PuzzleDescription } from \"./PuzzleGeometry\";\n\nexport function parseOptions(argv: string[]): {\n puzzleDescription: PuzzleDescription | null;\n options: PuzzleGeometryOptions;\n} {\n let argp = 0;\n const options: PuzzleGeometryOptions = {};\n while (argp < argv.length && argv[argp][0] === \"-\") {\n const option = argv[argp++];\n if (option === \"--rotations\") {\n options.addRotations = true;\n } else if (option === \"--allmoves\") {\n options.allMoves = true;\n } else if (option === \"--outerblockmoves\") {\n options.outerBlockMoves = true;\n } else if (option === \"--vertexmoves\") {\n options.vertexMoves = true;\n } else if (option === \"--nocorners\") {\n options.includeCornerOrbits = false;\n } else if (option === \"--noedges\") {\n options.includeEdgeOrbits = false;\n } else if (option === \"--noorientation\") {\n options.fixedOrientation = true;\n } else if (option === \"--nocenters\") {\n options.includeCenterOrbits = false;\n } else if (option === \"--omit\") {\n options.excludeOrbits = argv[argp].split(\",\");\n argp++;\n } else if (option === \"--moves\") {\n options.moveList = argv[argp].split(\",\");\n argp++;\n } else if (option === \"--optimize\") {\n options.optimizeOrbits = true;\n } else if (option === \"--scramble\") {\n options.scrambleAmount = 100;\n } else if (option === \"--fixcorner\") {\n options.fixedPieceType = \"v\";\n } else if (option === \"--fixedge\") {\n options.fixedPieceType = \"e\";\n } else if (option === \"--fixcenter\") {\n options.fixedPieceType = \"f\";\n } else if (option === \"--orientcenters\") {\n options.orientCenters = true;\n } else if (option === \"--puzzleorientation\") {\n options.puzzleOrientation = JSON.parse(argv[argp]); // TODO: Validate input.\n argp++;\n } else {\n throw new Error(`Bad option: ${option}`);\n }\n }\n const puzzleDescription = parsePuzzleDescription(argv.slice(argp).join(\" \"));\n return { puzzleDescription, options };\n}\n\ntype FaceName = string;\ntype OrientationDirection = [number, number, number];\nexport type FaceBasedOrientationDescription = [\n [FaceName, OrientationDirection],\n [FaceName, OrientationDirection],\n];\nexport type BaseFaceCount = 4 | 6 | 8 | 12 | 20;\nexport type FaceBasedOrientationDescriptionLookup = Record<\n BaseFaceCount,\n FaceBasedOrientationDescription\n>;\n\nfunction asstructured(v: any): any {\n if (typeof v === \"string\") {\n return JSON.parse(v);\n }\n return v;\n}\nfunction asboolean(v: any): boolean {\n if (typeof v === \"string\") {\n if (v === \"false\") {\n return false;\n }\n return true;\n } else {\n return v ? true : false;\n }\n}\n\nexport class PuzzleGeometryFullOptions {\n verbosity: number = 0; // verbosity (console.log)\n\n allMoves: boolean = false; // generate all slice moves in ksolve\n outerBlockMoves: boolean; // generate outer block moves\n vertexMoves: boolean = false; // generate vertex moves\n addRotations: boolean = false; // add symmetry information to ksolve output\n moveList: string[] | null = null; // move list to generate\n\n fixedOrientation: boolean = false; // eliminate any orientations\n fixedPieceType: null | \"e\" | \"v\" | \"f\" = null; // fix a piece?\n orientCenters: boolean = false; // orient centers?\n\n // TODO: Group these into a single object?\n includeCornerOrbits: boolean = true; // include corner orbits\n includeCenterOrbits: boolean = true; // include center orbits\n includeEdgeOrbits: boolean = true; // include edge orbits\n // Overrides the previous options.\n excludeOrbits: string[] = []; // exclude these orbits\n optimizeOrbits: boolean = false; // optimize PermOri\n\n grayCorners: boolean = false; // make corner sets gray\n grayCenters: boolean = false; // make center sets gray\n grayEdges: boolean = false; // make edge sets gray\n\n puzzleOrientation: FaceBasedOrientationDescription | null = null; // single puzzle orientation from options\n puzzleOrientations: FaceBasedOrientationDescriptionLookup | null = null; // puzzle orientation override object from options // TODO: is this needed?\n\n scrambleAmount: number = 0; // scramble?\n\n constructor(options: PuzzleGeometryOptions = {}) {\n Object.assign(this, options);\n }\n}\n\nexport type PuzzleGeometryOptions = Partial<PuzzleGeometryFullOptions>;\n\nexport function parsePGOptionList(optionlist?: any[]): PuzzleGeometryOptions {\n const options: PuzzleGeometryOptions = {};\n if (optionlist !== undefined) {\n if (optionlist.length % 2 !== 0) {\n throw new Error(\"Odd length in option list?\");\n }\n for (let i = 0; i < optionlist.length; i += 2) {\n if (optionlist[i] === \"verbose\") {\n options.verbosity = (options.verbosity ?? 0) + 1;\n } else if (optionlist[i] === \"quiet\") {\n options.verbosity = 0;\n } else if (optionlist[i] === \"allmoves\") {\n options.allMoves = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"outerblockmoves\") {\n options.outerBlockMoves = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"vertexmoves\") {\n options.vertexMoves = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"rotations\") {\n options.addRotations = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"cornersets\") {\n options.includeCornerOrbits = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"centersets\") {\n options.includeCenterOrbits = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"edgesets\") {\n options.includeEdgeOrbits = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"omit\") {\n options.excludeOrbits = optionlist[i + 1];\n } else if (optionlist[i] === \"graycorners\") {\n options.grayCorners = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"graycenters\") {\n options.grayCenters = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"grayedges\") {\n options.grayEdges = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"movelist\") {\n options.moveList = asstructured(optionlist[i + 1]);\n } else if (optionlist[i] === \"killorientation\") {\n options.fixedOrientation = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"optimize\") {\n options.optimizeOrbits = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"scramble\") {\n options.scrambleAmount = optionlist[i + 1];\n } else if (optionlist[i] === \"fix\") {\n options.fixedPieceType = optionlist[i + 1];\n } else if (optionlist[i] === \"orientcenters\") {\n options.orientCenters = asboolean(optionlist[i + 1]);\n } else if (optionlist[i] === \"puzzleorientation\") {\n options.puzzleOrientation = asstructured(optionlist[i + 1]);\n } else if (optionlist[i] === \"puzzleorientations\") {\n options.puzzleOrientations = asstructured(optionlist[i + 1]);\n } else {\n throw new Error(\n `Bad option while processing option list ${optionlist[i]}`,\n );\n }\n }\n }\n return options;\n}\n", "const zeroCache: number[][] = [];\nconst iotaCache: number[][] = [];\n\nexport function zeros(n: number): number[] {\n if (!zeroCache[n]) {\n const c = Array(n);\n for (let i = 0; i < n; i++) {\n c[i] = 0;\n }\n zeroCache[n] = c;\n }\n return zeroCache[n];\n}\n\nexport function iota(n: number): number[] {\n if (!iotaCache[n]) {\n const c = Array(n);\n for (let i = 0; i < n; i++) {\n c[i] = i;\n }\n iotaCache[n] = c;\n }\n return iotaCache[n];\n}\n\nexport function identity(n: number): Perm {\n return new Perm(iota(n));\n}\n\nexport function random(n: number): Perm {\n // random\n const c = Array(n);\n for (let i = 0; i < n; i++) {\n c[i] = i;\n }\n for (let i = 0; i < n; i++) {\n const j = i + Math.floor((n - i) * Math.random());\n const t = c[i];\n c[i] = c[j];\n c[j] = t;\n }\n return new Perm(c);\n}\n\nexport function factorial(a: number): bigint {\n let r = BigInt(1);\n while (a > 1) {\n r *= BigInt(a);\n a--;\n }\n return r;\n}\n\nfunction gcd(a: number, b: number): number {\n if (a > b) {\n const t = a;\n a = b;\n b = t;\n }\n while (a > 0) {\n const m = b % a;\n b = a;\n a = m;\n }\n return b;\n}\n\nexport function lcm(a: number, b: number): number {\n return (a / gcd(a, b)) * b;\n}\n\nexport class Perm {\n public n: number; // length\n public p: number[]; // The permutation itself\n constructor(a: number[]) {\n this.n = a.length;\n this.p = a;\n }\n\n public toString(): string {\n // stringify\n return `Perm[${this.p.join(\" \")}]`;\n }\n\n public mul(p2: Perm): Perm {\n // multiply\n const c: number[] = Array(this.n);\n for (let i = 0; i < this.n; i++) {\n c[i] = p2.p[this.p[i]];\n }\n return new Perm(c);\n }\n\n public rmul(p2: Perm): Perm {\n // multiply the other way\n const c = Array(this.n);\n for (let i = 0; i < this.n; i++) {\n c[i] = this.p[p2.p[i]];\n }\n return new Perm(c);\n }\n\n public inv(): Perm {\n const c = Array(this.n);\n for (let i = 0; i < this.n; i++) {\n c[this.p[i]] = i;\n }\n return new Perm(c);\n }\n\n public compareTo(p2: Perm): number {\n // comparison\n for (let i = 0; i < this.n; i++) {\n if (this.p[i] !== p2.p[i]) {\n return this.p[i] - p2.p[i];\n }\n }\n return 0;\n }\n\n public toGap(): string {\n const cyc = new Array<string>();\n const seen = new Array<boolean>(this.n);\n for (let i = 0; i < this.p.length; i++) {\n if (seen[i] || this.p[i] === i) {\n continue;\n }\n const incyc = new Array<number>();\n for (let j = i; !seen[j]; j = this.p[j]) {\n incyc.push(1 + j);\n seen[j] = true;\n }\n cyc.push(`(${incyc.join(\",\")})`);\n }\n return cyc.join(\"\");\n }\n\n public order(): number {\n let r = 1;\n const seen = new Array<boolean>(this.n);\n for (let i = 0; i < this.p.length; i++) {\n if (seen[i] || this.p[i] === i) {\n continue;\n }\n let cs = 0;\n for (let j = i; !seen[j]; j = this.p[j]) {\n cs++;\n seen[j] = true;\n }\n r = lcm(r, cs);\n }\n return r;\n }\n}\n", "import { Move } from \"../alg\";\nimport type { KPuzzleDefinition, KTransformationData } from \"../kpuzzle\"; // TODO\nimport { NullMapper } from \"./notation-mapping\";\nimport type { NotationMapper } from \"./notation-mapping/NotationMapper\";\n/* tslint:disable no-bitwise */\n/* tslint:disable prefer-for-of */ import {\n factorial,\n iota,\n lcm,\n Perm,\n zeros,\n} from \"./Perm\";\nexport class PGOrbitDef {\n constructor(public size: number, public mod: number) {}\n public reassemblySize(): bigint {\n return factorial(this.size) * BigInt(this.mod) ** BigInt(this.size);\n }\n}\n\nlet lastGlobalDefinitionCounter = 0;\n\nexport function externalName(\n mapper: NotationMapper,\n moveString: string,\n): string {\n const mv = Move.fromString(moveString);\n const mv2 = mapper.notationToExternal(mv);\n if (mv2 === null || mv === mv2) {\n return moveString;\n }\n return mv2.toString();\n}\n\nexport class PGOrbitsDef {\n constructor(\n public orbitnames: string[],\n private orbitdefs: PGOrbitDef[],\n public solved: VisibleState,\n public movenames: string[],\n public moveops: PGTransform[],\n public isRotation: boolean[],\n public forcenames: boolean[],\n ) {}\n\n public transformToKTransformationData(t: PGTransform): KTransformationData {\n const mp: { [orbitName: string]: any } = {};\n for (let j = 0; j < this.orbitnames.length; j++) {\n mp[this.orbitnames[j]] = t.orbits[j].toKPuzzle();\n }\n return mp;\n }\n\n public static transformToKTransformationData(\n orbitnames: string[],\n t: PGTransform,\n ): KTransformationData {\n const mp: { [orbitName: string]: any } = {};\n for (let j = 0; j < orbitnames.length; j++) {\n mp[orbitnames[j]] = t.orbits[j].toKPuzzle();\n }\n return mp;\n }\n\n private describeSet(s: number, r: string[], mapper: NotationMapper): void {\n const n = this.orbitdefs[s].size;\n const m = new Array(n);\n for (let i = 0; i < n; i++) {\n m[i] = [];\n }\n for (let i = 0; i < this.movenames.length; i++) {\n if (this.isRotation[i]) {\n continue;\n }\n let mvname = this.movenames[i];\n if (!this.forcenames[i]) {\n mvname = externalName(mapper, mvname);\n if (mvname[mvname.length - 1] === \"'\") {\n mvname = mvname.substring(0, mvname.length - 1);\n }\n }\n const pd = this.moveops[i].orbits[s];\n for (let j = 0; j < n; j++) {\n if (pd.perm[j] !== j || pd.ori[j] !== 0) {\n m[j].push(mvname);\n }\n }\n }\n for (let j = 0; j < n; j++) {\n r.push(`# ${j + 1} ${m[j].join(\" \")}`);\n }\n }\n\n public toKsolve(\n name: string,\n mapper: NotationMapper = new NullMapper(),\n ): string[] {\n const result = [];\n result.push(`Name ${name}`);\n result.push(\"\");\n for (let i = 0; i < this.orbitnames.length; i++) {\n result.push(\n `Set ${this.orbitnames[i]} ${this.orbitdefs[i].size} ${this.orbitdefs[i].mod}`,\n );\n this.describeSet(i, result, mapper);\n }\n result.push(\"\");\n result.push(\"Solved\");\n for (let i = 0; i < this.orbitnames.length; i++) {\n this.solved.orbits[i].appendDefinition(\n result,\n this.orbitnames[i],\n false,\n false,\n );\n }\n result.push(\"End\");\n for (let i = 0; i < this.movenames.length; i++) {\n result.push(\"\");\n let name = this.movenames[i];\n if (!this.forcenames[i]) {\n name = externalName(mapper, this.movenames[i]);\n }\n let doinv = false;\n if (name[name.length - 1] === \"'\") {\n doinv = true;\n name = name.substring(0, name.length - 1);\n }\n result.push(`Move ${name}`);\n for (let j = 0; j < this.orbitnames.length; j++) {\n if (doinv) {\n this.moveops[i].orbits[j]\n .inv()\n .appendDefinition(result, this.orbitnames[j], true);\n } else {\n this.moveops[i].orbits[j].appendDefinition(\n result,\n this.orbitnames[j],\n true,\n );\n }\n }\n result.push(\"End\");\n }\n // extra blank line on end lets us use join(\"\\n\") to terminate all\n return result;\n }\n\n // TODO: return type.\n public toKPuzzleDefinition(includemoves: boolean): KPuzzleDefinition {\n const orbits: KPuzzleDefinition[\"orbits\"] = {};\n const start: KPuzzleDefinition[\"startStateData\"] = {};\n for (let i = 0; i < this.orbitnames.length; i++) {\n orbits[this.orbitnames[i]] = {\n numPieces: this.orbitdefs[i].size,\n numOrientations: this.orbitdefs[i].mod,\n };\n const startTransformation = this.solved.orbits[i].toKPuzzle();\n start[this.orbitnames[i]] = {\n pieces: startTransformation.permutation,\n orientation: startTransformation.orientation,\n };\n }\n const moves: { [moveName: string]: any } = {};\n if (includemoves) {\n for (let i = 0; i < this.movenames.length; i++) {\n moves[this.movenames[i]] = this.transformToKTransformationData(\n this.moveops[i],\n );\n }\n }\n return {\n name: `PG3D #${++lastGlobalDefinitionCounter}`,\n orbits,\n startStateData: start,\n moves,\n };\n }\n\n public optimize(): PGOrbitsDef {\n const neworbitnames: string[] = [];\n const neworbitdefs: PGOrbitDef[] = [];\n const newsolved: PGOrbit[] = [];\n const newmoveops: PGOrbit[][] = [];\n for (let j = 0; j < this.moveops.length; j++) {\n newmoveops.push([]);\n }\n for (let i = 0; i < this.orbitdefs.length; i++) {\n const om = this.orbitdefs[i].mod;\n const n = this.orbitdefs[i].size;\n const du = new DisjointUnion(n);\n const changed = new Array<boolean>(this.orbitdefs[i].size);\n for (let k = 0; k < n; k++) {\n changed[k] = false;\n }\n // don't consider rotations when optimizing\n for (let j = 0; j < this.moveops.length; j++) {\n if (!this.isRotation[j]) {\n for (let k = 0; k < n; k++) {\n if (\n this.moveops[j].orbits[i].perm[k] !== k ||\n this.moveops[j].orbits[i].ori[k] !== 0\n ) {\n changed[k] = true;\n du.union(k, this.moveops[j].orbits[i].perm[k]);\n }\n }\n }\n }\n let keepori = true;\n // right now we kill ori only if solved is unique and\n // if we can kill it completely. This is not all the optimization\n // we can perform.\n if (om > 1) {\n keepori = false;\n const duo = new DisjointUnion(this.orbitdefs[i].size * om);\n for (let j = 0; j < this.moveops.length; j++) {\n for (let k = 0; k < n; k++) {\n if (\n this.moveops[j].orbits[i].perm[k] !== k ||\n this.moveops[j].orbits[i].ori[k] !== 0\n ) {\n for (let o = 0; o < om; o++) {\n duo.union(\n k * om + o,\n this.moveops[j].orbits[i].perm[k] * om +\n ((o + this.moveops[j].orbits[i].ori[k]) % om),\n );\n }\n }\n }\n }\n for (let j = 0; !keepori && j < n; j++) {\n for (let o = 1; o < om; o++) {\n if (duo.find(j * om) === duo.find(j * om + o)) {\n keepori = true;\n }\n }\n }\n for (let j = 0; !keepori && j < n; j++) {\n for (let k = 0; k < j; k++) {\n if (\n this.solved.orbits[i].perm[j] === this.solved.orbits[i].perm[k]\n ) {\n keepori = true;\n }\n }\n }\n }\n // is there just one result set, or more than one?\n let nontriv = -1;\n let multiple = false;\n for (let j = 0; j < this.orbitdefs[i].size; j++) {\n if (changed[j]) {\n const h = du.find(j);\n if (nontriv < 0) {\n nontriv = h;\n } else if (nontriv !== h) {\n multiple = true;\n }\n }\n }\n for (let j = 0; j < this.orbitdefs[i].size; j++) {\n if (!changed[j]) {\n continue;\n }\n const h = du.find(j);\n if (h !== j) {\n continue;\n }\n const no: number[] = [];\n const on: number[] = [];\n let nv = 0;\n for (let k = 0; k < this.orbitdefs[i].size; k++) {\n if (du.find(k) === j) {\n no[nv] = k;\n on[k] = nv;\n nv++;\n }\n }\n if (multiple) {\n neworbitnames.push(`${this.orbitnames[i]}_p${j}`);\n } else {\n neworbitnames.push(this.orbitnames[i]);\n }\n if (keepori) {\n neworbitdefs.push(new PGOrbitDef(nv, this.orbitdefs[i].mod));\n newsolved.push(this.solved.orbits[i].remapVS(no, nv));\n for (let k = 0; k < this.moveops.length; k++) {\n newmoveops[k].push(this.moveops[k].orbits[i].remap(no, on, nv));\n }\n } else {\n neworbitdefs.push(new PGOrbitDef(nv, 1));\n newsolved.push(this.solved.orbits[i].remapVS(no, nv).killOri());\n for (let k = 0; k < this.moveops.length; k++) {\n newmoveops[k].push(\n this.moveops[k].orbits[i].remap(no, on, nv).killOri(),\n );\n }\n }\n }\n }\n return new PGOrbitsDef(\n neworbitnames,\n neworbitdefs,\n new VisibleState(newsolved),\n this.movenames,\n newmoveops.map((_) => new PGTransform(_)),\n this.isRotation,\n this.forcenames,\n );\n }\n\n // replace the solved state with a new scrambled state.\n public scramble(n: number): void {\n this.solved = this.solved.mul(this.getScrambleTransformation(n));\n }\n\n // generate a new \"random\" position based on an entropy pool\n // this should be significantly faster and more random than just\n // doing a large number of random moves, especially on big puzzles.\n public getScrambleTransformation(n: number): PGTransform {\n // don't let n be too tiny\n if (n < 100) {\n n = 100;\n }\n const pool: PGTransform[] = [];\n for (let i = 0; i < this.moveops.length; i++) {\n pool[i] = this.moveops[i];\n }\n for (let i = 0; i < pool.length; i++) {\n const j = Math.floor(Math.random() * pool.length);\n const t = pool[i];\n pool[i] = pool[j];\n pool[j] = t;\n }\n if (n < pool.length) {\n n = pool.length;\n }\n for (let i = 0; i < n; i++) {\n const ri = Math.floor(Math.random() * pool.length);\n const rj = Math.floor(Math.random() * pool.length);\n const rm = Math.floor(Math.random() * this.moveops.length);\n pool[ri] = pool[ri].mul(pool[rj]).mul(this.moveops[rm]);\n if (Math.random() < 0.1) {\n // break up parity\n pool[ri] = pool[ri].mul(this.moveops[rm]);\n }\n }\n let s = pool[0];\n for (let i = 1; i < pool.length; i++) {\n s = s.mul(pool[i]);\n }\n return s;\n }\n\n public reassemblySize(): bigint {\n let n = BigInt(1);\n for (let i = 0; i < this.orbitdefs.length; i++) {\n n *= this.orbitdefs[i].reassemblySize();\n }\n return n;\n }\n}\n\nexport class PGOrbit {\n private static kcache: Record<string, number[]>[] = [];\n\n public static e(n: number, mod: number): PGOrbit {\n return new PGOrbit(iota(n), zeros(n), mod);\n }\n\n constructor(\n public perm: number[],\n public ori: number[],\n public orimod: number,\n ) {}\n\n public mul(b: PGOrbit): PGOrbit {\n const n = this.perm.length;\n const newPerm = new Array<number>(n);\n if (this.orimod === 1) {\n for (let i = 0; i < n; i++) {\n newPerm[i] = this.perm[b.perm[i]];\n }\n return new PGOrbit(newPerm, this.ori, this.orimod);\n } else {\n const newOri = new Array<number>(n);\n for (let i = 0; i < n; i++) {\n newPerm[i] = this.perm[b.perm[i]];\n newOri[i] = (this.ori[b.perm[i]] + b.ori[i]) % this.orimod;\n }\n return new PGOrbit(newPerm, newOri, this.orimod);\n }\n }\n\n public inv(): PGOrbit {\n const n = this.perm.length;\n const newPerm = new Array<number>(n);\n const newOri = new Array<number>(n);\n for (let i = 0; i < n; i++) {\n newPerm[this.perm[i]] = i;\n newOri[this.perm[i]] = (this.orimod - this.ori[i]) % this.orimod;\n }\n return new PGOrbit(newPerm, newOri, this.orimod);\n }\n\n public equal(b: PGOrbit): boolean {\n const n = this.perm.length;\n for (let i = 0; i < n; i++) {\n if (this.perm[i] !== b.perm[i] || this.ori[i] !== b.ori[i]) {\n return false;\n }\n }\n return true;\n }\n\n // in-place mutator\n public killOri(): this {\n const n = this.perm.length;\n for (let i = 0; i < n; i++) {\n this.ori[i] = 0;\n }\n this.orimod = 1;\n return this;\n }\n\n public toPerm(): Perm {\n const o = this.orimod;\n if (o === 1) {\n return new Perm(this.perm);\n }\n const n = this.perm.length;\n const newPerm = new Array<number>(n * o);\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < o; j++) {\n newPerm[i * o + j] = o * this.perm[i] + ((this.ori[i] + j) % o);\n }\n }\n return new Perm(newPerm);\n }\n\n // returns tuple of sets of identical pieces in this orbit\n public identicalPieces(): number[][] {\n const done: boolean[] = [];\n const n = this.perm.length;\n const r: number[][] = [];\n for (let i = 0; i < n; i++) {\n const v = this.perm[i];\n if (done[v] === undefined) {\n const s: number[] = [i];\n done[v] = true;\n for (let j = i + 1; j < n; j++) {\n if (this.perm[j] === v) {\n s.push(j);\n }\n }\n r.push(s);\n }\n }\n return r;\n }\n\n public order(): number {\n // can be made more efficient\n return this.toPerm().order();\n }\n\n public isIdentity(): boolean {\n const n = this.perm.length;\n if (this.perm === iota(n) && this.ori === zeros(n)) {\n return true;\n }\n for (let i = 0; i < n; i++) {\n if (this.perm[i] !== i || this.ori[i] !== 0) {\n return false;\n }\n }\n return true;\n }\n\n private zeroOris(): boolean {\n const n = this.perm.length;\n if (this.ori === zeros(n)) {\n return true;\n }\n for (let i = 0; i < n; i++) {\n if (this.ori[i] !== 0) {\n return false;\n }\n }\n return true;\n }\n\n public remap(no: number[], on: number[], nv: number): PGOrbit {\n const newPerm = new Array<number>(nv);\n const newOri = new Array<number>(nv);\n for (let i = 0; i < nv; i++) {\n newPerm[i] = on[this.perm[no[i]]];\n newOri[i] = this.ori[no[i]];\n }\n return new PGOrbit(newPerm, newOri, this.orimod);\n }\n\n public remapVS(no: number[], nv: number): PGOrbit {\n const newPerm = new Array<number>(nv);\n const newOri = new Array<number>(nv);\n let nextNew = 0;\n const reassign = [];\n for (let i = 0; i < nv; i++) {\n const ov = this.perm[no[i]];\n if (reassign[ov] === undefined) {\n reassign[ov] = nextNew++;\n }\n newPerm[i] = reassign[ov];\n newOri[i] = this.ori[no[i]];\n }\n return new PGOrbit(newPerm, newOri, this.orimod);\n }\n\n public appendDefinition(\n result: string[],\n name: string,\n useVS: boolean,\n concise: boolean = true,\n ): void {\n if (concise && this.isIdentity()) {\n return;\n }\n result.push(name);\n result.push(this.perm.map((_: number) => _ + 1).join(\" \"));\n if (!this.zeroOris()) {\n if (useVS) {\n const newori = new Array<number>(this.ori.length);\n for (let i = 0; i < newori.length; i++) {\n newori[this.perm[i]] = this.ori[i];\n }\n result.push(newori.join(\" \"));\n } else {\n result.push(this.ori.join(\" \"));\n }\n }\n }\n\n // TODO: return type\n public toKPuzzle(): Record<string, number[]> {\n const n = this.perm.length;\n if (this.isIdentity()) {\n if (!PGOrbit.kcache[n]) {\n PGOrbit.kcache[n] = { permutation: iota(n), orientation: zeros(n) };\n }\n return PGOrbit.kcache[n];\n } else {\n return { permutation: this.perm, orientation: this.ori };\n }\n }\n}\nexport class PGTransformBase {\n constructor(public orbits: PGOrbit[]) {}\n public internalMul(b: PGTransformBase): PGOrbit[] {\n const newOrbits: PGOrbit[] = [];\n for (let i = 0; i < this.orbits.length; i++) {\n newOrbits.push(this.orbits[i].mul(b.orbits[i]));\n }\n return newOrbits;\n }\n\n protected internalInv(): PGOrbit[] {\n const newOrbits: PGOrbit[] = [];\n for (const orbit of this.orbits) {\n newOrbits.push(orbit.inv());\n }\n return newOrbits;\n }\n\n public equal(b: PGTransformBase): boolean {\n for (let i = 0; i < this.orbits.length; i++) {\n if (!this.orbits[i].equal(b.orbits[i])) {\n return false;\n }\n }\n return true;\n }\n\n protected killOri(): this {\n for (const orbit of this.orbits) {\n orbit.killOri();\n }\n return this;\n }\n\n public toPerm(): Perm {\n const perms = new Array<Perm>();\n let n = 0;\n for (const orbit of this.orbits) {\n const p = orbit.toPerm();\n perms.push(p);\n n += p.n;\n }\n const newPerm = new Array<number>(n);\n n = 0;\n for (const p of perms) {\n for (let j = 0; j < p.n; j++) {\n newPerm[n + j] = n + p.p[j];\n }\n n += p.n;\n }\n return new Perm(newPerm);\n }\n\n public identicalPieces(): number[][] {\n const r: number[][] = [];\n let n = 0;\n for (const orbit of this.orbits) {\n const o = orbit.orimod;\n const s = orbit.identicalPieces();\n for (let j = 0; j < s.length; j++) {\n r.push(s[j].map((_) => _ * o + n));\n }\n n += o * orbit.perm.length;\n }\n return r;\n }\n\n public order(): number {\n let r = 1;\n for (const orbit of this.orbits) {\n r = lcm(r, orbit.order());\n }\n return r;\n }\n}\nexport class PGTransform extends PGTransformBase {\n constructor(orbits: PGOrbit[]) {\n super(orbits);\n }\n\n public mul(b: PGTransform): PGTransform {\n return new PGTransform(this.internalMul(b));\n }\n\n public mulScalar(n: number): PGTransform {\n if (n === 0) {\n return this.e();\n }\n let t: PGTransform = this;\n if (n < 0) {\n t = t.inv();\n n = -n;\n }\n while ((n & 1) === 0) {\n t = t.mul(t);\n n >>= 1;\n }\n if (n === 1) {\n return t;\n }\n let s = t;\n let r = this.e();\n while (n > 0) {\n if (n & 1) {\n r = r.mul(s);\n }\n if (n > 1) {\n s = s.mul(s);\n }\n n >>= 1;\n }\n return r;\n }\n\n public inv(): PGTransform {\n return new PGTransform(this.internalInv());\n }\n\n public e(): PGTransform {\n return new PGTransform(\n this.orbits.map((_: PGOrbit) => PGOrbit.e(_.perm.length, _.orimod)),\n );\n }\n}\nexport class VisibleState extends PGTransformBase {\n constructor(orbits: PGOrbit[]) {\n super(orbits);\n }\n\n public mul(b: PGTransform): VisibleState {\n return new VisibleState(this.internalMul(b));\n }\n}\n// Disjoint set union implementation.\nclass DisjointUnion {\n private heads: number[];\n constructor(public n: number) {\n this.heads = new Array<number>(n);\n for (let i = 0; i < n; i++) {\n this.heads[i] = i;\n }\n }\n\n public find(v: number): number {\n let h = this.heads[v];\n if (this.heads[h] === h) {\n return h;\n }\n h = this.find(this.heads[h]);\n this.heads[v] = h;\n return h;\n }\n\n public union(a: number, b: number): void {\n const ah = this.find(a);\n const bh = this.find(b);\n if (ah < bh) {\n this.heads[bh] = ah;\n } else if (ah > bh) {\n this.heads[ah] = bh;\n }\n }\n}\nexport function showcanon(g: PGOrbitsDef, disp: (s: string) => void): void {\n // show information for canonical move derivation\n const n = g.moveops.length;\n if (n > 30) {\n throw new Error(\"Canon info too big for bitmask\");\n }\n const orders = [];\n const commutes = [];\n for (let i = 0; i < n; i++) {\n const permA = g.moveops[i];\n orders.push(permA.order());\n let bits = 0;\n for (let j = 0; j < n; j++) {\n if (j === i) {\n continue;\n }\n const permB = g.moveops[j];\n if (permA.mul(permB).equal(permB.mul(permA))) {\n bits |= 1 << j;\n }\n }\n commutes.push(bits);\n }\n let curlev: any = {};\n curlev[0] = 1;\n for (let d = 0; d < 100; d++) {\n let sum = 0;\n const nextlev: any = {};\n let uniq = 0;\n for (const sti in curlev) {\n const st = +sti; // string to number\n const cnt = curlev[st];\n sum += cnt;\n uniq++;\n for (let mv = 0; mv < orders.length; mv++) {\n if (\n ((st >> mv) & 1) === 0 &&\n (st & commutes[mv] & ((1 << mv) - 1)) === 0\n ) {\n const nst = (st & commutes[mv]) | (1 << mv);\n if (nextlev[nst] === undefined) {\n nextlev[nst] = 0;\n }\n nextlev[nst] += (orders[mv] - 1) * cnt;\n }\n }\n }\n disp(`${d}: canonseq ${sum} states ${uniq}`);\n curlev = nextlev;\n }\n}\n// This is a less effective canonicalization (that happens to work fine\n// for the 3x3x3). We include this only for comparison.\nexport function showcanon0(g: PGOrbitsDef, disp: (s: string) => void): void {\n // show information for canonical move derivation\n const n = g.moveops.length;\n if (n > 30) {\n throw new Error(\"Canon info too big for bitmask\");\n }\n const orders = [];\n const commutes = [];\n for (let i = 0; i < n; i++) {\n const permA = g.moveops[i];\n orders.push(permA.order());\n let bits = 0;\n for (let j = 0; j < n; j++) {\n if (j === i) {\n continue;\n }\n const permB = g.moveops[j];\n if (permA.mul(permB).equal(permB.mul(permA))) {\n bits |= 1 << j;\n }\n }\n commutes.push(bits);\n }\n let curlev: any = {};\n disp(\"0: canonseq 1\");\n for (let x = 0; x < orders.length; x++) {\n curlev[x] = orders[x] - 1;\n }\n for (let d = 1; d < 100; d++) {\n let sum = 0;\n const nextlev: any = {};\n let uniq = 0;\n for (const sti in curlev) {\n const st = +sti; // string to number\n const cnt = curlev[st];\n sum += cnt;\n uniq++;\n for (let mv = 0; mv < orders.length; mv++) {\n if (mv === st || (commutes[mv] & (1 << st) && mv < st)) {\n continue;\n }\n if (nextlev[mv] === undefined) {\n nextlev[mv] = 0;\n }\n nextlev[mv] += (orders[mv] - 1) * cnt;\n }\n }\n disp(`${d}\": canonseq ${sum} states ${uniq}`);\n curlev = nextlev;\n }\n}\n", "export type PuzzleDescriptionString = string;\n\nexport const PGPuzzles: { [name: string]: PuzzleDescriptionString } = {\n \"2x2x2\": \"c f 0\",\n \"3x3x3\": \"c f 0.333333333333333\",\n \"4x4x4\": \"c f 0.5 f 0\",\n \"5x5x5\": \"c f 0.6 f 0.2\",\n \"6x6x6\": \"c f 0.666666666666667 f 0.333333333333333 f 0\",\n \"7x7x7\": \"c f 0.714285714285714 f 0.428571428571429 f 0.142857142857143\",\n \"8x8x8\": \"c f 0.75 f 0.5 f 0.25 f 0\",\n \"9x9x9\":\n \"c f 0.777777777777778 f 0.555555555555556 f 0.333333333333333 f 0.111111111111111\",\n \"10x10x10\": \"c f 0.8 f 0.6 f 0.4 f 0.2 f 0\",\n \"11x11x11\":\n \"c f 0.818181818181818 f 0.636363636363636 f 0.454545454545455 f 0.272727272727273 f 0.0909090909090909\",\n \"12x12x12\":\n \"c f 0.833333333333333 f 0.666666666666667 f 0.5 f 0.333333333333333 f 0.166666666666667 f 0\",\n \"13x13x13\":\n \"c f 0.846153846153846 f 0.692307692307692 f 0.538461538461538 f 0.384615384615385 f 0.230769230769231 f 0.0769230769230769\",\n \"20x20x20\": \"c f 0 f .1 f .2 f .3 f .4 f .5 f .6 f .7 f .8 f .9\",\n \"30x30x30\":\n \"c f 0 f .066667 f .133333 f .2 f .266667 f .333333 f .4 f .466667 f .533333 f .6 f .666667 f .733333 f .8 f .866667 f .933333\",\n \"40x40x40\":\n \"c f 0 f .05 f .1 f .15 f .2 f .25 f .3 f .35 f .4 f .45 f .5 f .55 f .6 f .65 f .7 f .75 f .8 f .85 f .9 f .95\",\n skewb: \"c v 0\",\n \"master skewb\": \"c v 0.275\",\n \"professor skewb\": \"c v 0 v 0.38\",\n \"compy cube\": \"c v 0.915641442663986\",\n helicopter: \"c e 0.707106781186547\",\n \"curvy copter\": \"c e 0.83\",\n dino: \"c v 0.577350269189626\",\n \"little chop\": \"c e 0\",\n pyramorphix: \"t e 0\",\n mastermorphix: \"t e 0.346184634065199\",\n pyraminx: \"t v 0.333333333333333 v 1.66666666666667\",\n tetraminx: \"t v 0.333333333333333\",\n \"master pyraminx\": \"t v 0 v 1 v 2\",\n \"master tetraminx\": \"t v 0 v 1\",\n \"professor pyraminx\": \"t v -0.2 v 0.6 v 1.4 v 2.2\",\n \"professor tetraminx\": \"t v -0.2 v 0.6 v 1.4\",\n \"Jing pyraminx\": \"t f 0\",\n \"master pyramorphix\": \"t e 0.866025403784437\",\n megaminx: \"d f 0.7\",\n gigaminx: \"d f 0.64 f 0.82\",\n teraminx: \"d f 0.64 f 0.76 f 0.88\",\n petaminx: \"d f 0.64 f 0.73 f 0.82 f 0.91\",\n examinx: \"d f 0.64 f 0.712 f 0.784 f 0.856 f 0.928\",\n zetaminx: \"d f 0.64 f 0.7 f 0.76 f 0.82 f 0.88 f 0.94\",\n yottaminx: \"d f 0.64 f 0.6914 f 0.7429 f 0.7943 f 0.8457 f 0.8971 f 0.9486\",\n pentultimate: \"d f 0\",\n \"master pentultimate\": \"d f 0.1\",\n \"elite pentultimate\": \"d f 0 f 0.145905\",\n // exact value for starminx is sqrt(5(5-2 sqrt(5))/3)\n starminx: \"d v 0.937962370425399\",\n \"starminx 2\": \"d f 0.23606797749979\",\n \"pyraminx crystal\": \"d f 0.447213595499989\",\n chopasaurus: \"d v 0\",\n \"big chop\": \"d e 0\",\n \"skewb diamond\": \"o f 0\",\n FTO: \"o f 0.333333333333333\",\n \"master FTO\": \"o f 0.5 f 0\",\n \"Christopher's jewel\": \"o v 0.577350269189626\",\n octastar: \"o e 0\",\n \"Trajber's octahedron\": \"o v 0.433012701892219\",\n \"radio chop\": \"i f 0\",\n icosamate: \"i v 0\",\n \"icosahedron 2\": \"i v 0.18759247376021\",\n \"icosahedron 3\": \"i v 0.18759247376021 e 0\",\n \"icosahedron static faces\": \"i v 0.84\",\n \"icosahedron moving faces\": \"i v 0.73\",\n \"Eitan's star\": \"i f 0.61803398874989\",\n \"2x2x2 + dino\": \"c f 0 v 0.577350269189626\",\n \"2x2x2 + little chop\": \"c f 0 e 0\",\n \"dino + little chop\": \"c v 0.577350269189626 e 0\",\n \"2x2x2 + dino + little chop\": \"c f 0 v 0.577350269189626 e 0\",\n \"megaminx + chopasaurus\": \"d f 0.61803398875 v 0\",\n \"starminx combo\": \"d f 0.23606797749979 v 0.937962370425399\",\n};\n\nexport type PuzzleName = keyof typeof PGPuzzles;\n", "/* tslint:disable no-bitwise */\n/* tslint:disable prefer-for-of */ // TODO\n\n// We need a quaternion class. We use this to represent rotations,\n// planes, and points.\n\nconst eps = 1e-9; // TODO: Deduplicate with `PuzzleGeometry`?\n\nexport function centermassface(face: Quat[]): Quat {\n // calculate a center of a face by averaging points\n let s = new Quat(0, 0, 0, 0);\n for (let i = 0; i < face.length; i++) {\n s = s.sum(face[i]);\n }\n return s.smul(1.0 / face.length);\n}\n\nexport function solvethreeplanes(\n p1: number,\n p2: number,\n p3: number,\n planes: Quat[],\n): any {\n // find intersection of three planes but only if interior\n // Takes three indices into a plane array, and returns the point at the\n // intersection of all three, but only if it is internal to all planes.\n const p = planes[p1].intersect3(planes[p2], planes[p3]);\n if (!p) {\n return p;\n }\n for (let i = 0; i < planes.length; i++) {\n if (i !== p1 && i !== p2 && i !== p3) {\n const dt = planes[i].b * p.b + planes[i].c * p.c + planes[i].d * p.d;\n if (\n (planes[i].a > 0 && dt > planes[i].a) ||\n (planes[i].a < 0 && dt < planes[i].a)\n ) {\n return false;\n }\n }\n }\n return p;\n}\n\nexport class Quat {\n constructor(\n public a: number,\n public b: number,\n public c: number,\n public d: number,\n ) {}\n\n public mul(q: Quat): Quat {\n // Quaternion multiplication\n return new Quat(\n this.a * q.a - this.b * q.b - this.c * q.c - this.d * q.d,\n this.a * q.b + this.b * q.a + this.c * q.d - this.d * q.c,\n this.a * q.c - this.b * q.d + this.c * q.a + this.d * q.b,\n this.a * q.d + this.b * q.c - this.c * q.b + this.d * q.a,\n );\n }\n\n public toString(): string {\n return `Q[${this.a},${this.b},${this.c},${this.d}]`;\n }\n\n public dist(q: Quat): number {\n // Euclidean distance\n return Math.hypot(this.a - q.a, this.b - q.b, this.c - q.c, this.d - q.d);\n }\n\n public len(): number {\n // Euclidean length\n return Math.hypot(this.a, this.b, this.c, this.d);\n }\n\n public cross(q: Quat): Quat {\n // cross product\n return new Quat(\n 0,\n this.c * q.d - this.d * q.c,\n this.d * q.b - this.b * q.d,\n this.b * q.c - this.c * q.b,\n );\n }\n\n public dot(q: Quat): number {\n // dot product of two quaternions\n return this.b * q.b + this.c * q.c + this.d * q.d;\n }\n\n public normalize(): Quat {\n // make the magnitude be 1\n const d = Math.sqrt(this.dot(this));\n return new Quat(this.a / d, this.b / d, this.c / d, this.d / d);\n }\n\n public makenormal(): Quat {\n // make a normal vector from a plane or quat or point\n return new Quat(0, this.b, this.c, this.d).normalize();\n }\n\n public normalizeplane(): Quat {\n // normalize a plane\n const d = Math.hypot(this.b, this.c, this.d);\n return new Quat(this.a / d, this.b / d, this.c / d, this.d / d);\n }\n\n public smul(m: number): Quat {\n // scalar multiplication\n return new Quat(this.a * m, this.b * m, this.c * m, this.d * m);\n }\n\n public sum(q: Quat): Quat {\n // quaternion sum\n return new Quat(this.a + q.a, this.b + q.b, this.c + q.c, this.d + q.d);\n }\n\n public sub(q: Quat): Quat {\n // difference\n return new Quat(this.a - q.a, this.b - q.b, this.c - q.c, this.d - q.d);\n }\n\n public angle(): number {\n // quaternion angle\n return 2 * Math.acos(this.a);\n }\n\n public invrot(): Quat {\n // quaternion inverse rotation\n return new Quat(this.a, -this.b, -this.c, -this.d);\n }\n\n public det3x3(\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number,\n ): number {\n // 3x3 determinant\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n }\n\n public rotateplane(q: Quat): Quat {\n // rotate a plane using a quaternion\n const t = q.mul(new Quat(0, this.b, this.c, this.d)).mul(q.invrot());\n t.a = this.a;\n return t;\n }\n\n // return any vector orthogonal to the given one. Find the smallest\n // component (in absolute value) and return the cross product of that\n // axis with the given vector.\n public orthogonal(): Quat {\n const ab = Math.abs(this.b);\n const ac = Math.abs(this.c);\n const ad = Math.abs(this.d);\n if (ab < ac && ab < ad) {\n return this.cross(new Quat(0, 1, 0, 0)).normalize();\n } else if (ac < ab && ac < ad) {\n return this.cross(new Quat(0, 0, 1, 0)).normalize();\n } else {\n return this.cross(new Quat(0, 0, 0, 1)).normalize();\n }\n }\n\n // return the Quaternion that will rotate the this vector\n // to the b vector through rotatepoint.\n public pointrotation(b: Quat): Quat {\n const a = this.normalize();\n b = b.normalize();\n if (a.sub(b).len() < eps) {\n return new Quat(1, 0, 0, 0);\n }\n let h = a.sum(b);\n if (h.len() < eps) {\n h = h.orthogonal();\n } else {\n h = h.normalize();\n }\n const r = a.cross(h);\n r.a = a.dot(h);\n return r;\n }\n\n // given two vectors, return the portion of the first that\n // is not in the direction of the second.\n public unproject(b: Quat): Quat {\n return this.sum(b.smul(-this.dot(b) / (this.len() * b.len())));\n }\n\n public rotatepoint(q: Quat): Quat {\n // rotate a point\n return q.mul(this).mul(q.invrot());\n }\n\n public rotateface(face: Quat[]): Quat[] {\n // rotate a face by this Q.\n return face.map((_: Quat) => _.rotatepoint(this));\n }\n\n public intersect3(p2: Quat, p3: Quat): Quat | false {\n // intersect three planes if there is one\n const det = this.det3x3(\n this.b,\n this.c,\n this.d,\n p2.b,\n p2.c,\n p2.d,\n p3.b,\n p3.c,\n p3.d,\n );\n if (Math.abs(det) < eps) {\n return false; // TODO: Change to `null` or `undefined`?\n }\n return new Quat(\n 0,\n this.det3x3(this.a, this.c, this.d, p2.a, p2.c, p2.d, p3.a, p3.c, p3.d) /\n det,\n this.det3x3(this.b, this.a, this.d, p2.b, p2.a, p2.d, p3.b, p3.a, p3.d) /\n det,\n this.det3x3(this.b, this.c, this.a, p2.b, p2.c, p2.a, p3.b, p3.c, p3.a) /\n det,\n );\n }\n\n public side(x: number): number {\n // is this point close to the origin, or on one or the other side?\n if (x > eps) {\n return 1;\n }\n if (x < -eps) {\n return -1;\n }\n return 0;\n }\n\n /**\n * Cuts a face by this plane, or returns null if there\n * is no intersection.\n * @param face The face to cut.\n */\n public cutface(face: Quat[]): Quat[][] | null {\n const d = this.a;\n let seen = 0;\n let r = null;\n for (let i = 0; i < face.length; i++) {\n seen |= 1 << (this.side(face[i].dot(this) - d) + 1);\n }\n if ((seen & 5) === 5) {\n r = [];\n // saw both sides\n const inout = face.map((_: Quat) => this.side(_.dot(this) - d));\n for (let s = -1; s <= 1; s += 2) {\n const nface = [];\n for (let k = 0; k < face.length; k++) {\n if (inout[k] === s || inout[k] === 0) {\n nface.push(face[k]);\n }\n const kk = (k + 1) % face.length;\n if (inout[k] + inout[kk] === 0 && inout[k] !== 0) {\n const vk = face[k].dot(this) - d;\n const vkk = face[kk].dot(this) - d;\n const r = vk / (vk - vkk);\n const pt = face[k].smul(1 - r).sum(face[kk].smul(r));\n nface.push(pt);\n }\n }\n r.push(nface);\n }\n }\n return r;\n }\n\n public cutfaces(faces: Quat[][]): Quat[][] {\n // Cut a set of faces by a plane and return new set\n const nfaces = [];\n for (let j = 0; j < faces.length; j++) {\n const face = faces[j];\n const t = this.cutface(face);\n if (t) {\n nfaces.push(t[0]);\n nfaces.push(t[1]);\n } else {\n nfaces.push(face);\n }\n }\n return nfaces;\n }\n\n public faceside(face: Quat[]): number {\n // which side of a plane is a face on?\n const d = this.a;\n for (let i = 0; i < face.length; i++) {\n const s = this.side(face[i].dot(this) - d);\n if (s !== 0) {\n return s;\n }\n }\n throw new Error(\"Could not determine side of plane in faceside\");\n }\n\n public sameplane(p: Quat): boolean {\n // are two planes the same?\n const a = this.normalize();\n const b = p.normalize();\n return a.dist(b) < eps || a.dist(b.smul(-1)) < eps;\n }\n\n public makecut(r: number): Quat {\n // make a cut from a normal vector\n return new Quat(r, this.b, this.c, this.d);\n }\n}\n", "/* tslint:disable prefer-for-of */ // TODO\n\nimport { Quat, solvethreeplanes } from \"./Quat\";\n\n// Next we define a class that yields quaternion generators for each of\n// the five platonic solids. The quaternion generators chosen are\n// chosen specifically so that the first quaternion doubles as a plane\n// description that yields the given Platonic solid (so for instance, the\n// cubical group and octahedral group are identical in math, but we\n// give distinct representations choosing the first quaternion so that\n// we get the desired figure.) Our convention is one vertex of the\n// shape points precisely down.\n\n// This class is static.\n\nconst eps = 1e-9; // TODO: Deduplicate with `PuzzleGeometry`?\n\nexport function cube(): Quat[] {\n const s5 = Math.sqrt(0.5);\n return [new Quat(s5, s5, 0, 0), new Quat(s5, 0, s5, 0)];\n}\n\nexport function tetrahedron(): Quat[] {\n return [new Quat(0.5, 0.5, 0.5, 0.5), new Quat(0.5, 0.5, 0.5, -0.5)];\n}\n\nexport function dodecahedron(): Quat[] {\n const d36 = (2 * Math.PI) / 10;\n let dx = 0.5 + 0.3 * Math.sqrt(5);\n let dy = 0.5 + 0.1 * Math.sqrt(5);\n const dd = Math.sqrt(dx * dx + dy * dy);\n dx /= dd;\n dy /= dd;\n return [\n new Quat(Math.cos(d36), dx * Math.sin(d36), dy * Math.sin(d36), 0),\n new Quat(0.5, 0.5, 0.5, 0.5),\n ];\n}\n\nexport function icosahedron(): Quat[] {\n let dx = 1 / 6 + Math.sqrt(5) / 6;\n let dy = 2 / 3 + Math.sqrt(5) / 3;\n const dd = Math.sqrt(dx * dx + dy * dy);\n dx /= dd;\n dy /= dd;\n const ang = (2 * Math.PI) / 6;\n return [\n new Quat(Math.cos(ang), dx * Math.sin(ang), dy * Math.sin(ang), 0),\n new Quat(Math.cos(ang), -dx * Math.sin(ang), dy * Math.sin(ang), 0),\n ];\n}\n\nexport function octahedron(): Quat[] {\n const s5 = Math.sqrt(0.5);\n return [new Quat(0.5, 0.5, 0.5, 0.5), new Quat(s5, 0, 0, s5)];\n}\n\nexport function closure(g: Quat[]): Quat[] {\n // compute the closure of a set of generators\n // This is quadratic in the result size. Also, it has no protection\n // against you providing a bogus set of generators that would generate\n // an infinite group.\n const q = [new Quat(1, 0, 0, 0)];\n for (let i = 0; i < q.length; i++) {\n for (let j = 0; j < g.length; j++) {\n const ns = g[j].mul(q[i]);\n const negns = ns.smul(-1);\n let wasseen = false;\n for (let k = 0; k < q.length; k++) {\n if (ns.dist(q[k]) < eps || negns.dist(q[k]) < eps) {\n wasseen = true;\n break;\n }\n }\n if (!wasseen) {\n q.push(ns);\n }\n }\n }\n return q;\n}\n\nexport function uniqueplanes(p: Quat, g: Quat[]): Quat[] {\n // compute unique plane rotations\n // given a rotation group and a plane, find the rotations that\n // generate unique planes. This is quadratic in the return size.\n const planes = [];\n const planerot = [];\n for (let i = 0; i < g.length; i++) {\n const p2 = p.rotateplane(g[i]);\n let wasseen = false;\n for (let j = 0; j < planes.length; j++) {\n if (p2.dist(planes[j]) < eps) {\n wasseen = true;\n break;\n }\n }\n if (!wasseen) {\n planes.push(p2);\n planerot.push(g[i]);\n }\n }\n return planerot;\n}\n\nexport function getface(planes: Quat[]): Quat[] {\n // compute a face given a set of planes\n // The face returned will be a set of points that lie in the first plane\n // in the given array, that are on the surface of the polytope defined\n // by all the planes, and will be returned in clockwise order.\n // This is O(planes^2 * return size + return_size^2).\n const face: Quat[] = [];\n for (let i = 1; i < planes.length; i++) {\n for (let j = i + 1; j < planes.length; j++) {\n const p = solvethreeplanes(0, i, j, planes);\n if (p) {\n let wasseen = false;\n for (let k = 0; k < face.length; k++) {\n if (p.dist(face[k]) < eps) {\n wasseen = true;\n break;\n }\n }\n if (!wasseen) {\n face.push(p);\n }\n }\n }\n }\n for (;;) {\n let changed = false;\n for (let i = 0; i < face.length; i++) {\n const j: number = (i + 1) % face.length;\n if (planes[0].dot(face[i].cross(face[j])) < 0) {\n const t: Quat = face[i];\n face[i] = face[j];\n face[j] = t;\n changed = true;\n }\n }\n if (!changed) {\n break;\n }\n }\n return face;\n}\n", "import { identity, Perm } from \"./Perm\";\n\nclass FactoredNumber {\n public mult: number[];\n constructor() {\n this.mult = [];\n }\n\n public multiply(n: number): void {\n for (let f = 2; f * f <= n; f++) {\n while (n % f === 0) {\n if (undefined !== this.mult[f]) {\n this.mult[f]++;\n } else {\n this.mult[f] = 1;\n }\n n /= f;\n }\n }\n if (n > 1) {\n if (undefined !== this.mult[n]) {\n this.mult[n]++;\n } else {\n this.mult[n] = 1;\n }\n }\n }\n\n public toString(): string {\n let r = \"\";\n for (let i = 0; i < this.mult.length; i++) {\n if (undefined !== this.mult[i]) {\n if (r !== \"\") {\n r += \"*\";\n }\n r += i;\n if (this.mult[i] > 1) {\n r += `^${this.mult[i]}`;\n }\n }\n }\n return r;\n }\n}\n\nexport function schreierSims(g: Perm[], disp: (s: string) => void): bigint {\n const n = g[0].p.length;\n const e = identity(n);\n let sgs: Perm[][] = [];\n let sgsi: Perm[][] = [];\n let sgslen: number[][] = [];\n let Tk: Perm[][] = [];\n let Tklen: number[][] = [];\n function resolve(p: Perm): boolean {\n for (let i = p.p.length - 1; i >= 0; i--) {\n const j = p.p[i];\n if (j !== i) {\n if (!sgs[i][j]) {\n return false;\n }\n p = p.mul(sgsi[i][j]);\n }\n }\n return true;\n }\n function knutha(k: number, p: Perm, len: number): void {\n Tk[k].push(p);\n Tklen[k].push(len);\n for (let i = 0; i < sgs[k].length; i++) {\n if (sgs[k][i]) {\n knuthb(k, sgs[k][i].mul(p), len + sgslen[k][i]);\n }\n }\n }\n function knuthb(k: number, p: Perm, len: number): void {\n const j = p.p[k];\n if (!sgs[k][j]) {\n sgs[k][j] = p;\n sgsi[k][j] = p.inv();\n sgslen[k][j] = len;\n for (let i = 0; i < Tk[k].length; i++) {\n knuthb(k, p.mul(Tk[k][i]), len + Tklen[k][i]);\n }\n return;\n }\n const p2 = p.mul(sgsi[k][j]);\n if (!resolve(p2)) {\n knutha(k - 1, p2, len + sgslen[k][j]);\n }\n }\n function getsgs(): bigint {\n sgs = [];\n sgsi = [];\n Tk = [];\n sgslen = [];\n Tklen = [];\n for (let i = 0; i < n; i++) {\n sgs.push([]);\n sgsi.push([]);\n sgslen.push([]);\n Tk.push([]);\n Tklen.push([]);\n sgs[i][i] = e;\n sgsi[i][i] = e;\n sgslen[i][i] = 0;\n }\n let none = 0;\n let sz = BigInt(1);\n for (let i = 0; i < g.length; i++) {\n knutha(n - 1, g[i], 1);\n sz = BigInt(1);\n let tks = 0;\n let sollen = 0;\n const avgs = [];\n const mults = new FactoredNumber();\n for (let j = 0; j < n; j++) {\n let cnt = 0;\n let lensum = 0;\n for (let k = 0; k < n; k++) {\n if (sgs[j][k]) {\n cnt++;\n lensum += sgslen[j][k];\n if (j !== k) {\n none++;\n }\n }\n }\n tks += Tk[j].length;\n sz *= BigInt(cnt);\n if (cnt > 1) {\n mults.multiply(cnt);\n }\n const avg = lensum / cnt;\n avgs.push(avg);\n sollen += avg;\n }\n disp(\n `${i}: sz ${sz} T ${tks} sol ${sollen} none ${none} mults ${mults.toString()}`,\n );\n }\n return sz;\n }\n return getsgs();\n}\n", "import { Move, QuantumMove } from \"../alg\";\nimport type { KPuzzleDefinition, KTransformationData } from \"../kpuzzle\";\nimport { FaceNameSwizzler } from \"./FaceNameSwizzler\";\nimport {\n FaceRenamingMapper,\n FTONotationMapper,\n MegaminxScramblingNotationMapper,\n NotationMapper,\n NullMapper,\n NxNxNCubeMapper,\n PyraminxNotationMapper,\n SkewbNotationMapper,\n TetraminxNotationMapper,\n} from \"./notation-mapping\";\nimport {\n BaseFaceCount,\n FaceBasedOrientationDescription,\n FaceBasedOrientationDescriptionLookup,\n PuzzleGeometryFullOptions,\n PuzzleGeometryOptions,\n} from \"./Options\";\nimport { iota, Perm, zeros } from \"./Perm\";\nimport {\n externalName,\n PGOrbit,\n PGOrbitDef,\n PGOrbitsDef,\n PGTransform,\n showcanon,\n VisibleState,\n} from \"./PermOriSet\";\nimport { PGPuzzles, PuzzleDescriptionString, PuzzleName } from \"./PGPuzzles\";\nimport {\n closure,\n cube,\n dodecahedron,\n getface,\n icosahedron,\n octahedron,\n tetrahedron,\n uniqueplanes,\n} from \"./PlatonicGenerator\";\nimport { centermassface, Quat } from \"./Quat\";\nimport { schreierSims } from \"./SchreierSims\";\n\nexport interface TextureMapper {\n getuv(fn: number, threed: number[]): number[];\n}\n\nexport interface StickerDatSticker {\n coords: number[];\n color: string;\n orbit: string;\n ord: number;\n ori: number;\n face: number;\n isDup?: boolean;\n}\n\nexport interface StickerDatFace {\n coords: number[];\n name: string;\n}\n\nexport type StickerDatAxis = {\n coordinates: number[];\n quantumMove: Move;\n order: number;\n};\n\nexport interface StickerDat {\n stickers: StickerDatSticker[];\n faces: StickerDatFace[];\n axis: StickerDatAxis[];\n unswizzle(mv: Move): Move | null;\n notationMapper: NotationMapper;\n textureMapper: TextureMapper;\n}\n\n// you can fill these in to help with timing if you want\nfunction tstart(s: string): string {\n return s;\n}\n\nfunction tend(_: string): void {}\n\nclass Face {\n private coords: number[];\n public length: number;\n constructor(q: Quat[]) {\n this.coords = new Array(q.length * 3);\n for (let i = 0; i < q.length; i++) {\n this.coords[3 * i] = q[i].b;\n this.coords[3 * i + 1] = q[i].c;\n this.coords[3 * i + 2] = q[i].d;\n }\n this.length = q.length;\n }\n\n get(off: number): Quat {\n return new Quat(\n 0,\n this.coords[3 * off],\n this.coords[3 * off + 1],\n this.coords[3 * off + 2],\n );\n }\n\n centermass(): Quat {\n let sx = 0;\n let sy = 0;\n let sz = 0;\n for (let i = 0; i < this.length; i++) {\n sx += this.coords[3 * i];\n sy += this.coords[3 * i + 1];\n sz += this.coords[3 * i + 2];\n }\n return new Quat(0, sx / this.length, sy / this.length, sz / this.length);\n }\n\n rotate(q: Quat): Face {\n const a = [];\n for (let i = 0; i < this.length; i++) {\n a.push(this.get(i).rotatepoint(q));\n }\n return new Face(a);\n }\n\n rotateforward(): Face {\n const a = [];\n for (let i = 1; i < this.length; i++) {\n a.push(this.get(i));\n }\n a.push(this.get(0));\n return new Face(a);\n }\n}\n\nexport class FaceTree {\n constructor(\n private face: Quat[],\n private left?: FaceTree,\n private right?: FaceTree,\n ) {}\n\n public split(q: Quat): FaceTree {\n const t = q.cutface(this.face);\n if (t !== null) {\n if (this.left === undefined) {\n this.left = new FaceTree(t[0]);\n this.right = new FaceTree(t[1]);\n } else {\n this.left = this.left?.split(q);\n this.right = this.right?.split(q);\n }\n }\n return this;\n }\n\n public collect(arr: Face[], leftfirst: boolean): Face[] {\n if (this.left === undefined) {\n arr.push(new Face(this.face));\n } else if (leftfirst) {\n this.left?.collect(arr, false);\n this.right?.collect(arr, true);\n } else {\n this.right?.collect(arr, false);\n this.left?.collect(arr, true);\n }\n return arr;\n }\n}\n\nexport function expandfaces(rots: Quat[], faces: Face[]): Face[] {\n // given a set of faces, expand by rotation set\n const nfaces = [];\n for (const rot of rots) {\n for (const face of faces) {\n nfaces.push(face.rotate(rot));\n }\n }\n return nfaces;\n}\n\n// Now we have a geometry class that does the 3D goemetry to calculate\n// individual sticker information from a Platonic solid and a set of\n// cuts. The cuts must have the same symmetry as the Platonic solid;\n// we even restrict them further to be either vertex-normal,\n// edge-normal, or face-parallel cuts. Right now our constructor takes\n// a character solid indicator (one of c(ube), o(ctahedron), i(cosahedron),\n// t(etradron), or d(odecahedron), followed by an array of cuts.\n// Each cut is a character normal indicator that is either f(ace),\n// e(dge), or v(ertex), followed by a floating point value that gives\n// the depth of the cut where 0 is the center and 1 is the outside\n// border of the shape in that direction.\n\n// This is a heavyweight class with lots of members and construction\n// is slow. Be gentle.\n\n// Everything except a very few methods should be considered private.\n\nconst eps: number = 1e-9;\nconst copyright = \"PuzzleGeometry 0.1 Copyright 2018 Tomas Rokicki.\";\nconst permissivieMoveParsing = false;\n\n// This is a description of the nets and the external names we give each\n// face. The names should be a set of prefix-free upper-case alphabetics\n// so\n// we can easily also name and distinguish vertices and edges, but we\n// may change this in the future. The nets consist of a list of lists.\n// Each list gives the name of a face, and then the names of the\n// faces connected to that face (in the net) in clockwise order.\n// The length of each list should be one more than the number of\n// edges in the regular polygon for that face. All polygons must\n// have the same number of edges.\n// The first two faces in the first list must describe a horizontal edge\n// that is at the bottom of a regular polygon. The first two faces in\n// every subsequent list for a given polytope must describe a edge that\n// is directly connected in the net and has already been described (this\n// sets the location and orientation of the polygon for that face.\n// Any edge that is not directly connected in the net should be given\n// the empty string as the other face. All faces do not need to have\n// a list starting with that face; just enough to describe the full\n// connectivity of the net.\n//\n// TODO: change this back to a const JSON definition.\nfunction defaultnets(): any {\n return {\n // four faces: tetrahedron\n 4: [[\"F\", \"D\", \"L\", \"R\"]],\n // six faces: cube\n 6: [\n [\"F\", \"D\", \"L\", \"U\", \"R\"],\n [\"R\", \"F\", \"\", \"B\", \"\"],\n ],\n // eight faces: octahedron\n 8: [\n [\"F\", \"D\", \"L\", \"R\"],\n [\"D\", \"F\", \"BR\", \"\"],\n [\"BR\", \"D\", \"\", \"BB\"],\n [\"BB\", \"BR\", \"U\", \"BL\"],\n ],\n // twelve faces: dodecahedron; U/F/R/F/BL/BR from megaminx\n 12: [\n [\"U\", \"F\", \"\", \"\", \"\", \"\"],\n [\"F\", \"U\", \"R\", \"C\", \"A\", \"L\"],\n [\"R\", \"F\", \"\", \"\", \"E\", \"\"],\n [\"E\", \"R\", \"\", \"BF\", \"\", \"\"],\n [\"BF\", \"E\", \"BR\", \"BL\", \"I\", \"D\"],\n ],\n // twenty faces: icosahedron\n 20: [\n [\"R\", \"C\", \"F\", \"E\"],\n [\"F\", \"R\", \"L\", \"U\"],\n [\"L\", \"F\", \"A\", \"\"],\n [\"E\", \"R\", \"G\", \"I\"],\n [\"I\", \"E\", \"S\", \"H\"],\n [\"S\", \"I\", \"J\", \"B\"],\n [\"B\", \"S\", \"K\", \"D\"],\n [\"K\", \"B\", \"M\", \"O\"],\n [\"O\", \"K\", \"P\", \"N\"],\n [\"P\", \"O\", \"Q\", \"\"],\n ],\n };\n}\n\n// TODO: change this back to a const JSON definition.\nfunction defaultcolors(): any {\n return {\n // the colors should use the same naming convention as the nets, above.\n 4: { F: \"#00ff00\", D: \"#ffff00\", L: \"#ff0000\", R: \"#0000ff\" },\n 6: {\n U: \"#ffffff\",\n F: \"#00ff00\",\n R: \"#ff0000\",\n D: \"#ffff00\",\n B: \"#0000ff\",\n L: \"#ff8000\",\n },\n 8: {\n U: \"#ffffff\",\n F: \"#ff0000\",\n R: \"#00bb00\",\n D: \"#ffff00\",\n BB: \"#1122ff\",\n L: \"#9524c5\",\n BL: \"#ff8800\",\n BR: \"#aaaaaa\",\n },\n 12: {\n U: \"#ffffff\",\n F: \"#006633\",\n R: \"#ff0000\",\n C: \"#ffffd0\",\n A: \"#3399ff\",\n L: \"#660099\",\n E: \"#ff66cc\",\n BF: \"#99ff00\",\n BR: \"#0000ff\",\n BL: \"#ffff00\",\n I: \"#ff6633\",\n D: \"#999999\",\n },\n 20: {\n R: \"#db69f0\",\n C: \"#178fde\",\n F: \"#23238b\",\n E: \"#9cc726\",\n L: \"#2c212d\",\n U: \"#177fa7\",\n A: \"#e0de7f\",\n G: \"#2b57c0\",\n I: \"#41126b\",\n S: \"#4b8c28\",\n H: \"#7c098d\",\n J: \"#7fe7b4\",\n B: \"#85fb74\",\n K: \"#3f4bc3\",\n D: \"#0ff555\",\n M: \"#f1c2c8\",\n O: \"#58d340\",\n P: \"#c514f2\",\n N: \"#14494e\",\n Q: \"#8b1be1\",\n },\n };\n}\n\n// Orientation conventions are specified here. For each of the five platonic\n// solids, by face count, we have three lists of \"cubie names\" consisting of\n// a concatenation of face names. For vertex (corner) and edge cubies, the\n// first face in the concatenated name is the one that will be marked.\n// For center orientations, the first face specifies which center we are\n// referring to, and the second face specifies the direction of the mark for\n// that face.\n\nconst orientationDefaults = {\n 4: {\n v: [\"DFR\", \"DLF\", \"DRL\", \"FLR\"],\n e: [\"FR\", \"LF\", \"DF\", \"DL\", \"RD\", \"RL\"],\n c: [\"DF\", \"FD\", \"RL\", \"LR\"],\n },\n 6: {\n v: [\"URF\", \"UBR\", \"ULB\", \"UFL\", \"DFR\", \"DRB\", \"DBL\", \"DLF\"],\n e: [\"UF\", \"UR\", \"UB\", \"UL\", \"DF\", \"DR\", \"DB\", \"DL\", \"FR\", \"FL\", \"BR\", \"BL\"],\n c: [\"UB\", \"LU\", \"FU\", \"RU\", \"BU\", \"DF\"],\n },\n 8: {\n v: [\"UBBBRR\", \"URFL\", \"ULBLBB\", \"DBRBBBL\", \"DBLLF\", \"DFRBR\"],\n e: [\n \"UL\",\n \"UBB\",\n \"UR\",\n \"BRD\",\n \"BLD\",\n \"FD\",\n \"BRR\",\n \"FR\",\n \"FL\",\n \"BLL\",\n \"BLBB\",\n \"BRBB\",\n ],\n c: [\"BBU\", \"LU\", \"RU\", \"BRD\", \"FD\", \"BLD\", \"DF\", \"UBB\"],\n },\n 12: {\n v: [\n \"URF\",\n \"UFL\",\n \"ULBL\",\n \"UBLBR\",\n \"UBRR\",\n \"DEBF\",\n \"DBFI\",\n \"DIA\",\n \"DAC\",\n \"DCE\",\n \"LAI\",\n \"ALF\",\n \"FCA\",\n \"CFR\",\n \"REC\",\n \"ERBR\",\n \"BRBFE\",\n \"BFBRBL\",\n \"BLIBF\",\n \"IBLL\",\n ],\n e: [\n \"UF\",\n \"UR\",\n \"UBR\",\n \"UBL\",\n \"UL\",\n \"ER\",\n \"EBR\",\n \"EBF\",\n \"ED\",\n \"EC\",\n \"IBF\",\n \"IBL\",\n \"IL\",\n \"IA\",\n \"ID\",\n \"AC\",\n \"CF\",\n \"FA\",\n \"BFBR\",\n \"BRBL\",\n \"BLBF\",\n \"CD\",\n \"AD\",\n \"AL\",\n \"FL\",\n \"FR\",\n \"CR\",\n \"BFD\",\n \"BRR\",\n \"BLL\",\n ],\n c: [\n \"UF\",\n \"FU\",\n \"DBF\",\n \"BFD\",\n \"AD\",\n \"CD\",\n \"BRU\",\n \"BLU\",\n \"LA\",\n \"RA\",\n \"EBR\",\n \"IBL\",\n ],\n },\n 20: {\n v: [\n \"FLPQU\",\n \"FUGER\",\n \"FRCAL\",\n \"HCREI\",\n \"ISBDH\",\n \"JSIEG\",\n \"BSJMK\",\n \"MQPOK\",\n \"ONDBK\",\n \"NOPLA\",\n \"UQMJG\",\n \"DNACH\",\n ],\n e: [\n \"FU\",\n \"FL\",\n \"FR\",\n \"EG\",\n \"ER\",\n \"EI\",\n \"SJ\",\n \"SI\",\n \"SB\",\n \"KM\",\n \"KB\",\n \"KO\",\n \"PQ\",\n \"PO\",\n \"PL\",\n \"UG\",\n \"JG\",\n \"MQ\",\n \"UQ\",\n \"HC\",\n \"HD\",\n \"ND\",\n \"NA\",\n \"JM\",\n \"CA\",\n \"AL\",\n \"CR\",\n \"HI\",\n \"DB\",\n \"NO\",\n ],\n c: [\n \"FU\",\n \"UF\",\n \"GE\",\n \"EG\",\n \"JS\",\n \"SJ\",\n \"MK\",\n \"KM\",\n \"QP\",\n \"PQ\",\n \"LA\",\n \"AL\",\n \"RC\",\n \"CR\",\n \"IH\",\n \"HI\",\n \"BD\",\n \"DB\",\n \"ON\",\n \"NO\",\n ],\n },\n};\n\n/*\n * Default orientations for the puzzles in 3D space. Can be overridden\n * by puzzleOrientation or puzzleOrientations options.\n *\n * These are defined to have a strong intuitive vertical (y) direction\n * since 3D orbital controls need this. In comments, we list the\n * preferred initial camera orientation for each puzzle for twizzle;\n * this information is explicitly given in the twizzle app file.\n */\n// TODO: change this back to a const JSON definition.\nfunction defaultOrientations(): FaceBasedOrientationDescriptionLookup {\n return {\n 4: [\n [\"FLR\", [0, 1, 0]],\n [\"F\", [0, 0, 1]],\n ], // FLR towards viewer\n 6: [\n [\"U\", [0, 1, 0]],\n [\"F\", [0, 0, 1]],\n ], // URF towards viewer\n 8: [\n [\"U\", [0, 1, 0]],\n [\"F\", [0, 0, 1]],\n ], // FLUR towards viewer\n 12: [\n [\"U\", [0, 1, 0]],\n [\"F\", [0, 0, 1]],\n ], // F towards viewer\n 20: [\n [\"GUQMJ\", [0, 1, 0]],\n [\"F\", [0, 0, 1]],\n ], // F towards viewer\n };\n}\n\nfunction findelement(a: Quat[][], p: Quat): number {\n // find something in facenames, vertexnames, edgenames\n for (let i = 0; i < a.length; i++) {\n if (a[i][0].dist(p) < eps) {\n return i;\n }\n }\n throw new Error(\"Element not found\");\n}\n\nexport function getPG3DNamedPuzzles(): {\n [s: string]: PuzzleDescriptionString;\n} {\n // get some simple definitions of basic puzzles\n return PGPuzzles;\n}\n\nexport function getPuzzleDescriptionString(\n puzzleName: PuzzleName,\n): PuzzleDescriptionString {\n // get some simple definitions of basic puzzles\n return PGPuzzles[puzzleName];\n}\n\nexport const PUZZLE_BASE_SHAPES = [\"c\", \"t\", \"o\", \"d\", \"i\"] as const;\nexport type PuzzleBaseShape = typeof PUZZLE_BASE_SHAPES[number];\n\nexport const PUZZLE_CUT_TYPES = [\"f\", \"v\", \"e\"] as const;\nexport type PuzzleCutType = typeof PUZZLE_CUT_TYPES[number];\n\nexport type PuzzleCutDescription = { cutType: PuzzleCutType; distance: number };\nexport type PuzzleDescription = {\n shape: PuzzleBaseShape;\n cuts: PuzzleCutDescription[];\n};\n\nexport function parsePuzzleDescription(\n s: PuzzleDescriptionString,\n): PuzzleDescription | null {\n // parse a text description\n const a = s.split(/ /).filter(Boolean);\n if (a.length % 2 === 0) {\n return null;\n }\n const shape = a[0];\n if (\n shape !== \"o\" &&\n shape !== \"c\" &&\n shape !== \"i\" &&\n shape !== \"d\" &&\n shape !== \"t\"\n ) {\n return null;\n }\n const cuts: PuzzleCutDescription[] = [];\n for (let i = 1; i < a.length; i += 2) {\n if (a[i] !== \"f\" && a[i] !== \"v\" && a[i] !== \"e\") {\n return null;\n }\n cuts.push({\n cutType: a[i] as PuzzleCutType,\n distance: parseFloat(a[i + 1]),\n });\n }\n return { shape, cuts };\n}\n\nexport function getPuzzleGeometryByDesc(\n desc: string,\n options: PuzzleGeometryOptions = {},\n): PuzzleGeometry {\n const parsed = parsePuzzleDescription(desc);\n if (parsed === null) {\n throw new Error(\"Could not parse the puzzle description\");\n }\n const pg = new PuzzleGeometry(\n parsed,\n Object.assign({}, { allMoves: true } as PuzzleGeometryOptions, options),\n );\n pg.allstickers();\n pg.genperms();\n return pg;\n}\n\nexport function getPuzzleGeometryByName(\n puzzleName: PuzzleName,\n options?: PuzzleGeometryOptions,\n): PuzzleGeometry {\n return getPuzzleGeometryByDesc(PGPuzzles[puzzleName], options);\n}\n\nfunction getmovename(\n geo: any,\n bits: number[],\n slices: number,\n): [string, boolean] {\n // generate a move name based on bits, slice, and geo\n // if the move name is from the opposite face, say so.\n // find the face that's turned.\n let inverted = false;\n if (slices - bits[1] < bits[0]) {\n // flip if most of the move is on the other side\n geo = [geo[2], geo[3], geo[0], geo[1]];\n bits = [slices - bits[1], slices - bits[0]];\n inverted = true;\n }\n let movenameFamily = geo[0] as string;\n let movenamePrefix = \"\";\n if (bits[0] === 0 && bits[1] === slices) {\n movenameFamily = `${movenameFamily}v`;\n } else if (bits[0] === bits[1]) {\n if (bits[1] > 0) {\n movenamePrefix = String(bits[1] + 1);\n }\n } else if (bits[0] === 0) {\n movenameFamily = movenameFamily.toLowerCase();\n if (bits[1] > 1) {\n movenamePrefix = String(bits[1] + 1);\n }\n } else {\n throw new Error(\n `We only support slice and outer block moves right now. ${bits}`,\n );\n }\n return [movenamePrefix + movenameFamily, inverted];\n}\n\n// split a geometrical element into face names. Do greedy match.\n// Permit underscores between names.\nfunction splitByFaceNames(s: string, facenames: [Quat[], string][]): string[] {\n const r: string[] = [];\n let at = 0;\n while (at < s.length) {\n if (at > 0 && at < s.length && s[at] === \"_\") {\n at++;\n }\n let currentMatch = \"\";\n for (const facename of facenames) {\n if (\n s.substr(at).startsWith(facename[1]) &&\n facename[1].length > currentMatch.length\n ) {\n currentMatch = facename[1];\n }\n }\n if (currentMatch !== \"\") {\n r.push(currentMatch);\n at += currentMatch.length;\n } else {\n throw new Error(`Could not split ${s} into face names.`);\n }\n }\n return r;\n}\n\nfunction toCoords(q: Quat, maxdist: number): number[] {\n return [q.b / maxdist, -q.c / maxdist, q.d / maxdist];\n}\n\nfunction toFaceCoords(q: Face, maxdist: number): number[] {\n const r = [];\n const n = q.length;\n for (let i = 0; i < n; i++) {\n const pt = toCoords(q.get(n - i - 1), maxdist);\n r[3 * i] = pt[0];\n r[3 * i + 1] = pt[1];\n r[3 * i + 2] = pt[2];\n }\n return r;\n}\n\n/** @category PuzzleGeometry */\nexport class PuzzleGeometry {\n private rotations: Quat[]; // all members of the rotation group\n public baseplanerot: Quat[]; // unique rotations of the baseplane\n private baseplanes: Quat[]; // planes, corresponding to faces\n private facenames: [Quat[], string][]; // face names\n private faceplanes: [Quat, string][]; // face planes\n private edgenames: [Quat, string][]; // edge names\n private vertexnames: [Quat, string][]; // vertexnames\n private geonormals: [Quat, string, string][]; // all geometric directions, with names and types\n private moveplanes: Quat[]; // the planes that split moves\n private moveplanes2: Quat[]; // the planes that split moves, filtered\n public moveplanesets: Quat[][]; // the move planes, in parallel sets\n private moveplanenormals: Quat[]; // one move plane\n public movesetorders: number[]; // the order of rotations for each move set\n public movesetgeos: [string, string, string, string, number][]; // geometric feature information for move sets\n private basefaces: Face[]; // polytope faces before cuts\n private faces: Face[]; // all the stickers\n private facecentermass: Quat[]; // center of mass of all faces\n private baseFaceCount: BaseFaceCount; // number of base faces\n public stickersperface: number; // number of stickers per face\n public shortedge: number; // number of stickers per face\n private markedface: number[]; // given a bitmap of faces, identify the marked one\n public cubies: number[][]; // the cubies\n private vertexdistance: number; // vertex distance\n private edgedistance: number; // edge distance\n private facetocubie: number[]; // map a face to a cubie index\n private facetoord: number[]; // map a face to a cubie ord\n private moverotations: Quat[][]; // move rotations\n private facelisthash: Map<string, number[]>; // face list by key\n private cubiesetnames: string[]; // cubie set names\n private cubieords: number[]; // the size of each orbit\n private cubiesetnums: number[];\n private cubieordnums: number[];\n private orbitoris: number[]; // the orientation size of each orbit\n private cubievaluemap: number[]; // the map for identical cubies\n private cubiesetcubies: number[][]; // cubies in each cubie set\n public cmovesbyslice: number[][][] = []; // cmoves as perms by slice\n public parsedmovelist: [\n string | undefined,\n number,\n number,\n number,\n boolean,\n number,\n ][]; // parsed move list\n\n private duplicatedFaces: number[] = []; // which faces are duplicated\n private duplicatedCubies: number[] = []; // which cubies are duplicated\n private fixedCubie: number = -1; // fixed cubie, if any\n private net: string[][] = [];\n private colors: any = [];\n private swizzler: FaceNameSwizzler;\n public notationMapper: NotationMapper = new NullMapper();\n private addNotationMapper: string = \"\";\n private setReidOrder: boolean = false;\n\n private options: PuzzleGeometryFullOptions;\n\n constructor(\n public puzzleDescription: PuzzleDescription,\n options: PuzzleGeometryOptions,\n ) {\n const t1 = tstart(\"genperms\");\n this.options = new PuzzleGeometryFullOptions(options);\n if (this.options.verbosity > 0) {\n console.log(this.header(\"# \"));\n }\n this.create(puzzleDescription);\n tend(t1);\n }\n\n public create(puzzleDescription: PuzzleDescription): void {\n const { shape, cuts } = puzzleDescription;\n\n // create the shape, doing all the essential geometry\n // create only goes far enough to figure out how many stickers per\n // face, and what the short edge is. If the short edge is too short,\n // we probably don't want to display or manipulate this one. How\n // short is too short is hard to say.\n this.moveplanes = [];\n this.moveplanes2 = [];\n this.faces = [];\n this.cubies = [];\n let g = null;\n switch (shape) {\n case \"c\": {\n g = cube();\n break;\n }\n case \"o\": {\n g = octahedron();\n break;\n }\n case \"i\": {\n g = icosahedron();\n break;\n }\n case \"t\": {\n g = tetrahedron();\n break;\n }\n case \"d\": {\n g = dodecahedron();\n break;\n }\n default:\n throw new Error(`Bad shape argument: ${shape}`);\n }\n this.rotations = closure(g);\n if (this.options.verbosity) {\n console.log(`# Rotations: ${this.rotations.length}`);\n }\n const baseplane = g[0];\n this.baseplanerot = uniqueplanes(baseplane, this.rotations);\n const baseplanes = this.baseplanerot.map((_) => baseplane.rotateplane(_));\n this.baseplanes = baseplanes;\n this.baseFaceCount = baseplanes.length as BaseFaceCount;\n const net = defaultnets()[baseplanes.length];\n this.net = net;\n this.colors = defaultcolors()[baseplanes.length];\n if (this.options.verbosity > 0) {\n console.log(`# Base planes: ${baseplanes.length}`);\n }\n const baseface = getface(baseplanes);\n const zero = new Quat(0, 0, 0, 0);\n if (this.options.verbosity > 0) {\n console.log(`# Face vertices: ${baseface.length}`);\n }\n const facenormal = baseplanes[0].makenormal();\n const edgenormal = baseface[0].sum(baseface[1]).makenormal();\n const vertexnormal = baseface[0].makenormal();\n const boundary = new Quat(1, facenormal.b, facenormal.c, facenormal.d);\n if (this.options.verbosity > 0) {\n console.log(`# Boundary is ${boundary}`);\n }\n const planerot = uniqueplanes(boundary, this.rotations);\n const planes = planerot.map((_) => boundary.rotateplane(_));\n const firstface = getface(planes);\n this.edgedistance = firstface[0]\n .sum(firstface[1])\n .smul(0.5)\n .dist(zero);\n this.vertexdistance = firstface[0].dist(zero);\n const cutplanes = [];\n const intersects = [];\n let sawface = false; // what cuts did we see?\n let sawedge = false;\n let sawvertex = false;\n for (const cut of cuts) {\n let normal = null;\n let distance = 0;\n switch (cut.cutType) {\n case \"f\": {\n normal = facenormal;\n distance = 1;\n sawface = true;\n break;\n }\n case \"v\": {\n normal = vertexnormal;\n distance = this.vertexdistance;\n sawvertex = true;\n break;\n }\n case \"e\": {\n normal = edgenormal;\n distance = this.edgedistance;\n sawedge = true;\n break;\n }\n default:\n throw new Error(`Bad cut argument: ${cut.cutType}`);\n }\n cutplanes.push(normal.makecut(cut.distance));\n intersects.push(cut.distance < distance);\n }\n if (this.options.addRotations) {\n if (!sawface) {\n cutplanes.push(facenormal.makecut(10));\n }\n if (!sawvertex) {\n cutplanes.push(vertexnormal.makecut(10));\n }\n if (!sawedge) {\n cutplanes.push(edgenormal.makecut(10));\n }\n }\n this.basefaces = [];\n for (const baseplanerot of this.baseplanerot) {\n const face = baseplanerot.rotateface(firstface);\n this.basefaces.push(new Face(face));\n }\n //\n // Determine names for edges, vertices, and planes. Planes are defined\n // by the plane normal/distance; edges are defined by the midpoint;\n // vertices are defined by actual point. In each case we define a name.\n // Note that edges have two potential names, and corners have n! where\n // n planes meet at a vertex. We set names by choosing the marked face\n // first, and going counterclockwise around.\n //\n const facenames: [Quat[], string][] = [];\n const faceplanes: [Quat, string][] = [];\n const vertexnames: any[] = [];\n const edgenames: any[] = [];\n const edgesperface = firstface.length;\n function searchaddelement(a: any[], p: Quat, name: any): void {\n for (const el of a) {\n if (el[0].dist(p) < eps) {\n el.push(name);\n return;\n }\n }\n a.push([p, name]);\n }\n for (let i = 0; i < this.baseplanerot.length; i++) {\n const face = this.baseplanerot[i].rotateface(firstface);\n for (let j = 0; j < face.length; j++) {\n const jj = (j + 1) % face.length;\n const midpoint = face[j].sum(face[jj]).smul(0.5);\n searchaddelement(edgenames, midpoint, i);\n }\n }\n const otherfaces = [];\n for (let i = 0; i < this.baseplanerot.length; i++) {\n const face = this.baseplanerot[i].rotateface(firstface);\n const facelist = [];\n for (let j = 0; j < face.length; j++) {\n const jj = (j + 1) % face.length;\n const midpoint = face[j].sum(face[jj]).smul(0.5);\n const el = edgenames[findelement(edgenames, midpoint)];\n if (i === el[1]) {\n facelist.push(el[2]);\n } else if (i === el[2]) {\n facelist.push(el[1]);\n } else {\n throw new Error(\"Could not find edge\");\n }\n }\n otherfaces.push(facelist);\n }\n const facenametoindex: any = {};\n const faceindextoname: string[] = [];\n faceindextoname.push(net[0][0]);\n facenametoindex[net[0][0]] = 0;\n faceindextoname[otherfaces[0][0]] = net[0][1];\n facenametoindex[net[0][1]] = otherfaces[0][0];\n for (const neti of net) {\n const f0 = neti[0];\n const fi = facenametoindex[f0];\n if (fi === undefined) {\n throw new Error(\"Bad edge description; first edge not connected\");\n }\n let ii = -1;\n for (let j = 0; j < otherfaces[fi].length; j++) {\n const fn2 = faceindextoname[otherfaces[fi][j]];\n if (fn2 !== undefined && fn2 === neti[1]) {\n ii = j;\n break;\n }\n }\n if (ii < 0) {\n throw new Error(\"First element of a net not known\");\n }\n for (let j = 2; j < neti.length; j++) {\n if (neti[j] === \"\") {\n continue;\n }\n const of = otherfaces[fi][(j + ii - 1) % edgesperface];\n const fn2 = faceindextoname[of];\n if (fn2 !== undefined && fn2 !== neti[j]) {\n throw new Error(\"Face mismatch in net\");\n }\n faceindextoname[of] = neti[j];\n facenametoindex[neti[j]] = of;\n }\n }\n for (let i = 0; i < this.baseplanerot.length; i++) {\n const face = this.baseplanerot[i].rotateface(firstface);\n const faceplane = boundary.rotateplane(this.baseplanerot[i]);\n const facename = faceindextoname[i];\n facenames.push([face, facename]);\n faceplanes.push([faceplane, facename]);\n }\n for (let i = 0; i < this.baseplanerot.length; i++) {\n const face = this.baseplanerot[i].rotateface(firstface);\n const facename = faceindextoname[i];\n for (let j = 0; j < face.length; j++) {\n const jj = (j + 1) % face.length;\n const midpoint = face[j].sum(face[jj]).smul(0.5);\n const jjj = (j + 2) % face.length;\n const midpoint2 = face[jj].sum(face[jjj]).smul(0.5);\n const e1 = findelement(edgenames, midpoint);\n const e2 = findelement(edgenames, midpoint2);\n searchaddelement(vertexnames, face[jj], [facename, e2, e1]);\n }\n }\n this.swizzler = new FaceNameSwizzler(facenames.map((_) => _[1]));\n const sep = this.swizzler.prefixFree ? \"\" : \"_\";\n // fix the edge names; use face precedence order\n const oridata = orientationDefaults[this.baseFaceCount];\n const markedface = [];\n for (let i = 0; i < this.baseFaceCount; i++) {\n markedface[1 << i] = i;\n }\n // FIXME eliminate the duplications below\n {\n const oriprefs = oridata[\"v\"];\n for (const name of oriprefs) {\n const fn = this.swizzler.splitByFaceNames(name);\n let bits = 0;\n for (const i of fn) {\n bits |= 1 << i;\n }\n markedface[bits] = fn[0];\n }\n }\n {\n const oriprefs = oridata[\"e\"];\n for (const name of oriprefs) {\n const fn = this.swizzler.splitByFaceNames(name);\n let bits = 0;\n for (const i of fn) {\n bits |= 1 << i;\n }\n markedface[bits] = fn[0];\n }\n }\n {\n const oriprefs = oridata[\"c\"];\n for (const name of oriprefs) {\n const fn = this.swizzler.splitByFaceNames(name);\n const bits = (1 << fn[0]) | (1 << this.baseFaceCount);\n markedface[bits] = fn[1];\n }\n }\n for (let i = 0; i < edgenames.length; i++) {\n if (edgenames[i].length !== 3) {\n throw new Error(`Bad length in edge names ${edgenames[i]}`);\n }\n const f1 = edgenames[i][1];\n const f2 = edgenames[i][2];\n let c1 = faceindextoname[f1];\n const c2 = faceindextoname[f2];\n const bits = (1 << f1) | (1 << f2);\n if (markedface[bits] === f1) {\n c1 = c1 + sep + c2;\n } else {\n c1 = c2 + sep + c1;\n }\n edgenames[i] = [edgenames[i][0], c1];\n }\n // fix the vertex names; counterclockwise rotations; proper orientation.\n for (let i = 0; i < vertexnames.length; i++) {\n let bits = 0;\n if (vertexnames[i].length < 4) {\n throw new Error(\"Bad length in vertex names\");\n }\n for (let j = 1; j < vertexnames[i].length; j++) {\n bits |= 1 << facenametoindex[vertexnames[i][j][0]];\n }\n const fi = markedface[bits];\n let st = -1;\n for (let j = 1; j < vertexnames[i].length; j++) {\n if (fi === facenametoindex[vertexnames[i][j][0]]) {\n st = j;\n }\n }\n if (st < 0) {\n throw new Error(\n \"Internal error; couldn't find face name when fixing corners\",\n );\n }\n let r = \"\";\n for (let j = 1; j < vertexnames[i].length; j++) {\n if (j === 1) {\n r = vertexnames[i][st][0];\n } else {\n r = r + sep + vertexnames[i][st][0];\n }\n for (let k = 1; k < vertexnames[i].length; k++) {\n if (vertexnames[i][st][1] === vertexnames[i][k][2]) {\n st = k;\n break;\n }\n }\n }\n vertexnames[i] = [vertexnames[i][0], r];\n }\n this.markedface = markedface;\n if (this.options.verbosity > 1) {\n console.log(`# Face names: ${facenames.map((_) => _[1]).join(\" \")}`);\n // TODO\n console.log(`# Edge names: ${edgenames.map((_) => _[1]).join(\" \")}`);\n // TODO\n console.log(`# Vertex names: ${vertexnames.map((_) => _[1]).join(\" \")}`);\n }\n const geonormals: [Quat, string, string][] = [];\n for (const faceplane of faceplanes) {\n geonormals.push([faceplane[0].makenormal(), faceplane[1], \"f\"]);\n }\n for (const edgename of edgenames) {\n geonormals.push([edgename[0].makenormal(), edgename[1], \"e\"]);\n }\n for (const vertexname of vertexnames) {\n geonormals.push([vertexname[0].makenormal(), vertexname[1], \"v\"]);\n }\n this.facenames = facenames;\n this.faceplanes = faceplanes;\n this.edgenames = edgenames;\n this.vertexnames = vertexnames;\n this.geonormals = geonormals;\n const geonormalnames = geonormals.map((_) => _[1]);\n this.swizzler.setGripNames(geonormalnames);\n if (this.options.verbosity > 0) {\n console.log(\n `# Distances: face ${1} edge ${this.edgedistance} vertex ${\n this.vertexdistance\n }`,\n );\n }\n // expand cutplanes by rotations. We only work with one face here.\n for (let c = 0; c < cutplanes.length; c++) {\n for (const rotation of this.rotations) {\n const q = cutplanes[c].rotateplane(rotation);\n let wasseen = false;\n for (const moveplane of this.moveplanes) {\n if (q.sameplane(moveplane)) {\n wasseen = true;\n break;\n }\n }\n if (!wasseen) {\n this.moveplanes.push(q);\n if (intersects[c]) {\n this.moveplanes2.push(q);\n }\n }\n }\n }\n let ft = new FaceTree(firstface);\n const tar = this.moveplanes2.slice();\n // we want to use Math.random() here but we can't, because when\n // we call multiple times we'll get different orbits/layouts.\n // to resolve this, we use a very simple linear congruential\n // generator. for our purposes, the numbers don't need to be\n // very random.\n let rval = 31;\n for (let i = 0; i < tar.length; i++) {\n const j = i + Math.floor((tar.length - i) * (rval / 65536.0));\n ft = ft.split(tar[j]);\n tar[j] = tar[i];\n rval = (rval * 1657 + 101) % 65536;\n }\n const faces = ft.collect([], true);\n this.faces = faces;\n if (this.options.verbosity > 0) {\n console.log(`# Faces is now ${faces.length}`);\n }\n this.stickersperface = faces.length;\n // the faces when rotated don't preserve the vertex order at this\n // point. to improve 3d rendering speed, we would like to preserve\n // vertex order on rotation. First, let's see what rotations preserve\n // the base face; these are the ones we want to work with.\n const simplerot: Quat[] = [];\n const cm = centermassface(firstface);\n for (const rotation of this.rotations) {\n const f = rotation.rotateface(firstface);\n if (cm.dist(centermassface(f)) < eps) {\n simplerot.push(rotation);\n }\n }\n const finished = new Array<boolean>(faces.length);\n const sortme: [number, Quat, number][] = [];\n for (let i = 0; i < faces.length; i++) {\n const cm2 = faces[i].centermass();\n sortme.push([cm.dist(cm2), cm2, i]);\n }\n sortme.sort((a, b) => a[0] - b[0]);\n for (let ii = 0; ii < faces.length; ii++) {\n const i = sortme[ii][2];\n if (!finished[i]) {\n finished[i] = true;\n for (const rot of simplerot) {\n const f2 = faces[i].rotate(rot);\n const cm = f2.centermass();\n for (let kk = ii + 1; kk < faces.length; kk++) {\n if (sortme[kk][0] - sortme[ii][0] > eps) {\n break;\n }\n const k = sortme[kk][2];\n if (!finished[k] && cm.dist(sortme[kk][1]) < eps) {\n finished[k] = true;\n faces[k] = f2;\n break;\n }\n }\n }\n }\n }\n // Find and report the shortest edge in any of the faces. If this\n // is small the puzzle is probably not practical or displayable.\n this.shortedge = 1e99;\n for (const face of faces) {\n for (let j = 0; j < face.length; j++) {\n const k = (j + 1) % face.length;\n const t = face.get(j).dist(face.get(k));\n if (t < this.shortedge) {\n this.shortedge = t;\n }\n }\n }\n if (this.options.verbosity > 0) {\n console.log(`# Short edge is ${this.shortedge}`);\n }\n // add nxnxn cube notation if it has cube face moves\n if (shape === \"c\" && sawface && !sawedge && !sawvertex) {\n // In this case the mapper adding is deferred until we\n // know the number of slices.\n this.addNotationMapper = \"NxNxNCubeMapper\";\n // try to set Reid order of the cubies within an orbit\n this.setReidOrder = true;\n }\n if (shape === \"c\" && sawvertex && !sawface && !sawedge) {\n this.addNotationMapper = \"SkewbMapper\";\n }\n if (shape === \"t\" && (sawvertex || sawface) && !sawedge) {\n this.addNotationMapper = \"PyraminxOrTetraminxMapper\";\n }\n if (shape === \"o\" && sawface) {\n this.notationMapper = new FaceRenamingMapper(\n this.swizzler,\n new FaceNameSwizzler([\"F\", \"D\", \"L\", \"BL\", \"R\", \"U\", \"BR\", \"B\"]),\n );\n if (!(sawedge || sawvertex)) {\n this.addNotationMapper = \"FTOMapper\";\n }\n }\n if (shape === \"d\" && sawface) {\n this.addNotationMapper = \"MegaminxMapper\";\n this.notationMapper = new FaceRenamingMapper(\n this.swizzler,\n new FaceNameSwizzler([\n \"U\",\n \"F\",\n \"L\",\n \"BL\",\n \"BR\",\n \"R\",\n \"FR\",\n \"FL\",\n \"DL\",\n \"B\",\n \"DR\",\n \"D\",\n ]),\n );\n }\n }\n\n private keyface(face: Face): string {\n return this.keyface2(face.centermass());\n }\n\n private keyface2(cm: Quat): string {\n // take a face and figure out the sides of each move plane\n let s = \"\";\n const sfcc = String.fromCharCode;\n for (const moveplaneset of this.moveplanesets) {\n if (moveplaneset.length > 0) {\n const dv = cm.dot(moveplaneset[0]);\n let t = 0;\n let b = 1;\n while (b * 2 <= moveplaneset.length) {\n b *= 2;\n }\n for (; b > 0; b >>= 1) {\n if (t + b <= moveplaneset.length && dv > moveplaneset[t + b - 1].a) {\n t += b;\n }\n }\n if (t < 47) {\n s = s + sfcc(33 + t);\n } else if (t < 47 + 47 * 47) {\n s = s + sfcc(33 + 47 + Math.floor(t / 47) - 1) + sfcc(33 + (t % 47));\n } else if (t < 47 + 47 * 47 + 47 * 47 * 47) {\n s =\n s +\n sfcc(33 + 47 + Math.floor((t - 47) / (47 * 47) - 1)) +\n sfcc(33 + 47 + (Math.floor((t - 47) / 47) % 47)) +\n sfcc(33 + (t % 47));\n } else {\n throw Error(\"Too many slices for cubie encoding\");\n }\n }\n }\n return s;\n }\n\n // same as above, but instead of returning an encoded string, return\n // an array with offsets.\n private keyface3(face: Face): number[] {\n const cm = face.centermass();\n // take a face and figure out the sides of each move plane\n const r = [];\n for (const moveplaneset of this.moveplanesets) {\n if (moveplaneset.length > 0) {\n const dv = cm.dot(moveplaneset[0]);\n let t = 0;\n let b = 1;\n while (b * 2 <= moveplaneset.length) {\n b *= 2;\n }\n for (; b > 0; b >>= 1) {\n if (t + b <= moveplaneset.length && dv > moveplaneset[t + b - 1].a) {\n t += b;\n }\n }\n r.push(t);\n }\n }\n return r;\n }\n\n private findface(cm: Quat): number {\n const key = this.keyface2(cm);\n const arr = this.facelisthash.get(key)!;\n if (arr.length === 1) {\n return arr[0];\n }\n for (let i = 0; i + 1 < arr.length; i++) {\n const face2 = this.facelisthash.get(key)![i];\n if (Math.abs(cm.dist(this.facecentermass[face2])) < eps) {\n return face2;\n }\n }\n return arr[arr.length - 1];\n }\n\n private project2d(\n facen: number,\n edgen: number,\n targvec: Quat[],\n ): [Quat, Quat, Quat] {\n // calculate geometry to map a particular edge of a particular\n // face to a given 2D vector. The face is given as an index into the\n // facenames/baseplane arrays, and the edge is given as an offset into\n // the vertices.\n const face = this.facenames[facen][0];\n const edgen2 = (edgen + 1) % face.length;\n const plane = this.baseplanes[facen];\n let x0 = face[edgen2].sub(face[edgen]);\n const olen = x0.len();\n x0 = x0.normalize();\n const y0 = x0.cross(plane).normalize();\n let delta = targvec[1].sub(targvec[0]);\n const len = delta.len() / olen;\n delta = delta.normalize();\n const cosr = delta.b;\n const sinr = delta.c;\n const x1 = x0.smul(cosr).sub(y0.smul(sinr)).smul(len);\n const y1 = y0.smul(cosr).sum(x0.smul(sinr)).smul(len);\n const off = new Quat(\n 0,\n targvec[0].b - x1.dot(face[edgen]),\n targvec[0].c - y1.dot(face[edgen]),\n 0,\n );\n return [x1, y1, off];\n }\n\n public allstickers(): void {\n const t1 = tstart(\"allstickers\");\n // next step is to calculate all the stickers and orbits\n // We do enough work here to display the cube on the screen.\n // take our newly split base face and expand it by the rotation matrix.\n // this generates our full set of \"stickers\".\n this.faces = expandfaces(this.baseplanerot, this.faces);\n if (this.options.verbosity > 0) {\n console.log(`# Total stickers is now ${this.faces.length}`);\n }\n this.facecentermass = new Array(this.faces.length);\n for (let i = 0; i < this.faces.length; i++) {\n this.facecentermass[i] = this.faces[i].centermass();\n }\n // Split moveplanes into a list of parallel planes.\n const moveplanesets: Quat[][] = [];\n const moveplanenormals: Quat[] = [];\n // get the normals, first, from unfiltered moveplanes.\n for (const q of this.moveplanes) {\n const qnormal = q.makenormal();\n let wasseen = false;\n for (const moveplanenormal of moveplanenormals) {\n if (qnormal.sameplane(moveplanenormal.makenormal())) {\n wasseen = true;\n }\n }\n if (!wasseen) {\n moveplanenormals.push(qnormal);\n moveplanesets.push([]);\n }\n }\n for (const q of this.moveplanes2) {\n const qnormal = q.makenormal();\n for (let j = 0; j < moveplanenormals.length; j++) {\n if (qnormal.sameplane(moveplanenormals[j])) {\n moveplanesets[j].push(q);\n break;\n }\n }\n }\n // make the normals all face the same way in each set.\n for (let i = 0; i < moveplanesets.length; i++) {\n const q: Quat[] = moveplanesets[i].map((_) => _.normalizeplane());\n const goodnormal = moveplanenormals[i];\n for (let j = 0; j < q.length; j++) {\n if (q[j].makenormal().dist(goodnormal) > eps) {\n q[j] = q[j].smul(-1);\n }\n }\n q.sort((a, b) => a.a - b.a);\n moveplanesets[i] = q;\n }\n this.moveplanesets = moveplanesets;\n this.moveplanenormals = moveplanenormals;\n const sizes = moveplanesets.map((_) => _.length);\n if (this.options.verbosity > 0) {\n console.log(`# Move plane sets: ${sizes}`);\n }\n // for each of the move planes, find the rotations that are relevant\n const moverotations: Quat[][] = [];\n for (let i = 0; i < moveplanesets.length; i++) {\n moverotations.push([]);\n }\n for (const q of this.rotations) {\n if (Math.abs(Math.abs(q.a) - 1) < eps) {\n continue;\n }\n const qnormal = q.makenormal();\n for (let j = 0; j < moveplanesets.length; j++) {\n if (qnormal.sameplane(moveplanenormals[j])) {\n moverotations[j].push(q);\n break;\n }\n }\n }\n this.moverotations = moverotations;\n // Sort the rotations by the angle of rotation. A bit tricky because\n // while the norms should be the same, they need not be. So we start\n // by making the norms the same, and then sorting.\n for (let i = 0; i < moverotations.length; i++) {\n const r = moverotations[i];\n const goodnormal = r[0].makenormal();\n for (let j = 0; j < r.length; j++) {\n if (goodnormal.dist(r[j].makenormal()) > eps) {\n r[j] = r[j].smul(-1);\n }\n }\n r.sort((a, b) => a.angle() - b.angle());\n if (moverotations[i][0].dot(moveplanenormals[i]) < 0) {\n r.reverse();\n }\n }\n const sizes2 = moverotations.map((_) => 1 + _.length);\n this.movesetorders = sizes2;\n const movesetgeos: [string, string, string, string, number][] = [];\n let gtype = \"?\";\n for (let i = 0; i < moveplanesets.length; i++) {\n const p0 = moveplanenormals[i];\n let neg = null;\n let pos = null;\n for (const geonormal of this.geonormals) {\n const d = p0.dot(geonormal[0]);\n if (Math.abs(d - 1) < eps) {\n pos = [geonormal[1], geonormal[2]];\n gtype = geonormal[2];\n } else if (Math.abs(d + 1) < eps) {\n neg = [geonormal[1], geonormal[2]];\n gtype = geonormal[2];\n }\n }\n if (pos === null || neg === null) {\n throw new Error(\"Saw positive or negative sides as null\");\n }\n movesetgeos.push([\n pos[0],\n pos[1],\n neg[0],\n neg[1],\n 1 + moveplanesets[i].length,\n ]);\n if (this.addNotationMapper === \"NxNxNCubeMapper\" && gtype === \"f\") {\n this.notationMapper = new NxNxNCubeMapper(1 + moveplanesets[i].length);\n this.addNotationMapper = \"\";\n }\n if (\n this.addNotationMapper === \"SkewbMapper\" &&\n moveplanesets[0].length === 1\n ) {\n this.notationMapper = new SkewbNotationMapper(this.swizzler);\n this.addNotationMapper = \"\";\n }\n if (this.addNotationMapper === \"PyraminxOrTetraminxMapper\") {\n if (\n moveplanesets[0].length === 2 &&\n moveplanesets[0][0].a === 0.333333333333333 &&\n moveplanesets[0][1].a === 1.66666666666667\n ) {\n this.notationMapper = new PyraminxNotationMapper(this.swizzler);\n this.addNotationMapper = \"\";\n } else {\n this.notationMapper = new TetraminxNotationMapper(this.swizzler);\n this.addNotationMapper = \"\";\n }\n }\n if (this.addNotationMapper === \"MegaminxMapper\" && gtype === \"f\") {\n if (1 + moveplanesets[i].length === 3) {\n this.notationMapper = new MegaminxScramblingNotationMapper(\n this.notationMapper,\n );\n }\n this.addNotationMapper = \"\";\n }\n if (this.addNotationMapper === \"FTOMapper\" && gtype === \"f\") {\n if (1 + moveplanesets[i].length === 3) {\n this.notationMapper = new FTONotationMapper(\n this.notationMapper,\n this.swizzler,\n );\n }\n this.addNotationMapper = \"\";\n }\n }\n this.movesetgeos = movesetgeos;\n // Cubies are split by move plane sets. For each cubie we can\n // average its points to find a point on the interior of that\n // cubie. We can then check that point against all the move\n // planes and from that derive a coordinate for the cubie.\n // This also works for faces; no face should ever lie on a move\n // plane. This allows us to take a set of stickers and break\n // them up into cubie sets.\n const facelisthash = new Map();\n const faces = this.faces;\n for (let i = 0; i < faces.length; i++) {\n const face = faces[i];\n const s = this.keyface(face);\n if (!facelisthash.get(s)) {\n facelisthash.set(s, [i]);\n } else {\n const arr = facelisthash.get(s)!;\n arr.push(i);\n // If we find a core cubie, split it up into multiple cubies,\n // because ksolve doesn't handle orientations that are not\n // cyclic, and the rotation group of the core is not cyclic.\n if (arr.length === this.baseFaceCount) {\n if (this.options.verbosity > 0) {\n console.log(\"# Splitting core.\");\n }\n for (let suff = 0; suff < arr.length; suff++) {\n const s2 = `${s} ${suff}`;\n facelisthash.set(s2, [arr[suff]]);\n }\n }\n }\n }\n this.facelisthash = facelisthash;\n if (this.options.verbosity > 0) {\n console.log(`# Cubies: ${facelisthash.size}`);\n }\n const cubies: number[][] = [];\n const facetocubie = [];\n const facetoord = [];\n for (const facelist of facelisthash.values()) {\n if (facelist.length === this.baseFaceCount) {\n // this is the original \"cubie\" of a split core; we ignore it.\n continue;\n }\n // Sort the faces around each corner so they are counterclockwise. Only\n // relevant for cubies that actually are corners (three or more\n // faces). In general cubies might have many faces; for icosohedrons\n // there are five faces on the corner cubies.\n if (facelist.length > 1) {\n const cm = facelist.map((_: number) => faces[_].centermass());\n const cmall = centermassface(cm);\n for (let looplimit = 0; facelist.length > 2; looplimit++) {\n let changed = false;\n for (let i = 0; i < facelist.length; i++) {\n const j = (i + 1) % facelist.length;\n // var ttt = cmall.dot(cm[i].cross(cm[j])) ; // TODO\n if (cmall.dot(cm[i].cross(cm[j])) < 0) {\n const u = cm[i];\n cm[i] = cm[j];\n cm[j] = u;\n const v = facelist[i];\n facelist[i] = facelist[j];\n facelist[j] = v;\n changed = true;\n }\n }\n if (!changed) {\n break;\n }\n if (looplimit > 1000) {\n throw new Error(\"Bad epsilon math; too close to border\");\n }\n }\n // set the orientations by finding the marked face and putting it first.\n let bits = 0;\n for (const f of facelist) {\n bits |= 1 << Math.floor(f / this.stickersperface);\n }\n const markedface = this.markedface[bits]!;\n let mini = -1;\n for (let i = 0; i < facelist.length; i++) {\n if (Math.floor(facelist[i] / this.stickersperface) === markedface) {\n mini = i;\n }\n }\n if (mini < 0) {\n throw new Error(\"Could not find marked face in list\");\n }\n if (mini !== 0) {\n const ofacelist = facelist.slice();\n for (let i = 0; i < facelist.length; i++) {\n facelist[i] = ofacelist[(mini + i) % facelist.length];\n }\n }\n }\n for (let j = 0; j < facelist.length; j++) {\n const k = facelist[j];\n facetocubie[k] = cubies.length;\n facetoord[k] = j;\n }\n cubies.push(facelist);\n }\n this.cubies = cubies;\n this.facetocubie = facetocubie;\n this.facetoord = facetoord;\n // Calculate the orbits of each cubie. Assumes we do all moves.\n // Also calculates which cubies are identical.\n const typenames = [\"?\", \"CENTERS\", \"EDGES\", \"CORNERS\", \"C4RNER\", \"C5RNER\"];\n const cubiesetnames = [];\n const cubietypecounts = [0, 0, 0, 0, 0, 0];\n const orbitoris = [];\n const seen = [];\n let cubiesetnum = 0;\n const cubiesetnums = [];\n const cubieordnums = [];\n const cubieords = [];\n const cubievaluemap = [];\n // Later we will make this smarter to use a get color for face function\n // so we support puzzles with multiple faces the same color\n const getcolorkey = (cubienum: number): string => {\n return cubies[cubienum].map((_) => this.getfaceindex(_)).join(\" \");\n };\n const cubiesetcubies: any = [];\n for (let i = 0; i < cubies.length; i++) {\n const cubie = cubies[i];\n if (cubie.length === 0) {\n continue;\n }\n if (seen[i]) {\n continue;\n }\n const cubiekeymap: any = {};\n let cubievalueid = 0;\n cubieords.push(0);\n cubiesetcubies.push([]);\n const facecnt = cubie.length;\n const typectr = cubietypecounts[facecnt]++;\n let typename = typenames[facecnt];\n if (typename === undefined || facecnt === this.baseFaceCount) {\n typename = \"CORE\";\n }\n typename = typename + (typectr === 0 ? \"\" : typectr + 1);\n cubiesetnames[cubiesetnum] = typename;\n orbitoris[cubiesetnum] = facecnt;\n const queue = [i];\n let qg = 0;\n seen[i] = true;\n while (qg < queue.length) {\n const cind = queue[qg++];\n const cubiecolorkey = getcolorkey(cind);\n if (cubie.length > 1 || cubiekeymap[cubiecolorkey] === undefined) {\n cubiekeymap[cubiecolorkey] = cubievalueid++;\n }\n cubievaluemap[cind] = cubiekeymap[cubiecolorkey];\n cubiesetnums[cind] = cubiesetnum;\n cubiesetcubies[cubiesetnum].push(cind);\n cubieordnums[cind] = cubieords[cubiesetnum]++;\n if (queue.length < this.rotations.length) {\n const cm = this.facecentermass[cubies[cind][0]];\n for (const moverotation of moverotations) {\n const tq =\n this.facetocubie[this.findface(cm.rotatepoint(moverotation[0]))];\n if (!seen[tq]) {\n queue.push(tq);\n seen[tq] = true;\n }\n }\n }\n }\n cubiesetnum++;\n }\n if (\n this.setReidOrder &&\n 4 <= this.stickersperface &&\n this.stickersperface <= 9\n ) {\n const reidorder = [\n [\n \"UF\",\n \"UR\",\n \"UB\",\n \"UL\",\n \"DF\",\n \"DR\",\n \"DB\",\n \"DL\",\n \"FR\",\n \"FL\",\n \"BR\",\n \"BL\",\n ],\n [\"UFR\", \"URB\", \"UBL\", \"ULF\", \"DRF\", \"DFL\", \"DLB\", \"DBR\"],\n [\"U\", \"L\", \"F\", \"R\", \"B\", \"D\"],\n ];\n const reidmap: { [key: number]: number } = {};\n for (const cubie of reidorder) {\n for (let j = 0; j < cubie.length; j++) {\n let mask = 0;\n for (let k = 0; k < cubie[j].length; k++) {\n mask |= 1 << (cubie[j].charCodeAt(k) - 65);\n }\n reidmap[mask] = j;\n }\n }\n for (const cubieset of cubiesetcubies) {\n for (const cubienum of cubieset) {\n let mask = 0;\n for (const cubie of cubies[cubienum]) {\n mask |=\n 1 <<\n (this.facenames[this.getfaceindex(cubie)][1].charCodeAt(0) - 65);\n }\n cubieordnums[cubienum] = reidmap[mask];\n }\n }\n }\n this.cubiesetnums = cubiesetnums;\n this.cubieordnums = cubieordnums;\n this.cubiesetnames = cubiesetnames;\n this.cubieords = cubieords;\n this.orbitoris = orbitoris;\n this.cubievaluemap = cubievaluemap;\n this.cubiesetcubies = cubiesetcubies;\n // if we fix a cubie, find a cubie to fix\n if (this.options.fixedPieceType !== null) {\n for (let i = 0; i < cubies.length; i++) {\n if (\n (this.options.fixedPieceType === \"v\" && cubies[i].length > 2) ||\n (this.options.fixedPieceType === \"e\" && cubies[i].length === 2) ||\n (this.options.fixedPieceType === \"f\" && cubies[i].length === 1)\n ) {\n this.fixedCubie = i;\n break;\n }\n }\n if (this.fixedCubie < 0) {\n throw new Error(\n `Could not find a cubie of type ${this.options.fixedPieceType} to fix.`,\n );\n }\n }\n // show the orbits\n if (this.options.verbosity > 0) {\n console.log(`# Cubie orbit sizes ${cubieords}`);\n }\n tend(t1);\n }\n\n public unswizzle(mv: Move): Move | null {\n const newmv = this.notationMapper.notationToInternal(mv);\n if (newmv === null) {\n return null;\n }\n return newmv.modified({ family: this.swizzler.unswizzle(newmv.family) });\n }\n\n // We use an extremely permissive parse here; any character but\n // digits are allowed in a family name.\n private stringToBlockMove(mv: string): Move {\n // parse a move from the command line\n const re = RegExp(\"^(([0-9]+)-)?([0-9]+)?([^0-9]+)([0-9]+'?)?$\");\n const p = mv.match(re);\n if (p === null) {\n throw new Error(`Bad move passed ${mv}`);\n }\n const grip = p[4];\n let loslice = undefined;\n let hislice = undefined;\n if (p[2] !== undefined) {\n if (p[3] === undefined) {\n throw new Error(\"Missing second number in range\");\n }\n loslice = parseInt(p[2], 10);\n }\n if (p[3] !== undefined) {\n hislice = parseInt(p[3], 10);\n }\n let amountstr = \"1\";\n let amount = 1;\n if (p[5] !== undefined) {\n amountstr = p[5];\n if (amountstr[0] === \"'\") {\n amountstr = `-${amountstr.substring(1)}`;\n }\n amount = parseInt(amountstr, 10);\n }\n return new Move(new QuantumMove(grip, hislice, loslice), amount);\n }\n\n public parseMove(\n move: Move,\n ): [string | undefined, number, number, number, boolean, number] {\n const bm = this.notationMapper.notationToInternal(move); // pluggable notation\n if (bm === null) {\n throw new Error(`Bad move ${move.family}`);\n }\n move = bm;\n let grip = move.family;\n let fullrotation = false;\n if (grip.endsWith(\"v\") && grip[0] <= \"Z\") {\n if (move.innerLayer !== undefined || move.outerLayer !== undefined) {\n throw new Error(\"Cannot use a prefix with full cube rotations\");\n }\n grip = grip.slice(0, -1);\n fullrotation = true;\n }\n if (grip.endsWith(\"w\") && grip[0] <= \"Z\") {\n grip = grip.slice(0, -1).toLowerCase();\n }\n let geo;\n let msi = -1;\n const geoname = this.swizzler.unswizzle(grip);\n let firstgrip = false;\n for (let i = 0; i < this.movesetgeos.length; i++) {\n const g = this.movesetgeos[i];\n if (geoname === g[0]) {\n firstgrip = true;\n geo = g;\n msi = i;\n }\n if (geoname === g[2]) {\n firstgrip = false;\n geo = g;\n msi = i;\n }\n }\n let loslice = 1;\n let hislice = 1;\n if (grip.toUpperCase() !== grip) {\n hislice = 2;\n }\n if (geo === undefined) {\n throw new Error(`Bad grip in move ${move.family}`);\n }\n if (move.outerLayer !== undefined) {\n loslice = move.outerLayer;\n }\n if (move.innerLayer !== undefined) {\n if (move.outerLayer === undefined) {\n hislice = move.innerLayer;\n // big assumption here! if outerlayer not specified, but inner\n // layer is (like 2U), we use the case of the family (upper vs\n // lower) to decide if it should be a slice turn or a wide turn.\n if (grip <= \"Z\") {\n // uppercase; slice move\n loslice = hislice;\n } else {\n // lowercase; wide move\n loslice = 1;\n }\n } else {\n hislice = move.innerLayer;\n }\n }\n loslice--;\n hislice--;\n if (fullrotation) {\n loslice = 0;\n hislice = this.moveplanesets[msi].length;\n }\n if (\n loslice < 0 ||\n loslice > this.moveplanesets[msi].length ||\n hislice < 0 ||\n hislice > this.moveplanesets[msi].length\n ) {\n throw new Error(\n `Bad slice spec ${loslice} ${hislice} vs ${this.moveplanesets[msi].length}`,\n );\n }\n if (\n !permissivieMoveParsing &&\n loslice === 0 &&\n hislice === this.moveplanesets[msi].length &&\n !fullrotation\n ) {\n throw new Error(\n \"! full puzzle rotations must be specified with v suffix.\",\n );\n }\n return [undefined, msi, loslice, hislice, firstgrip, move.amount];\n }\n\n private parsemove(\n mv: string,\n ): [string | undefined, number, number, number, boolean, number] {\n const r = this.parseMove(this.stringToBlockMove(mv));\n r[0] = mv;\n return r;\n }\n\n public genperms(): void {\n const t1 = tstart(\"genperms\");\n // generate permutations for moves\n if (this.cmovesbyslice.length > 0) {\n // did this already?\n return;\n }\n const cmovesbyslice = [];\n // if orientCenters is set, we find all cubies that have only one\n // sticker and that sticker is in the center of a face, and we\n // introduce duplicate stickers so we can orient them properly.\n //\n // We also rotate the vertices of the face to enforce the orientation\n // preferences for the oriented center stickers.\n if (this.options.orientCenters) {\n for (let k = 0; k < this.cubies.length; k++) {\n if (this.cubies[k].length === 1) {\n const kk = this.cubies[k][0];\n const i = this.getfaceindex(kk);\n const center = this.basefaces[i].centermass();\n if (center.dist(this.facecentermass[kk]) < eps) {\n const bits = (1 << i) | (1 << this.baseFaceCount);\n const towards = this.markedface[bits];\n const normal = this.baseplanes[towards].makenormal();\n let hiv = -1;\n let hii = -1;\n for (let ii = 0; ii < this.faces[kk].length; ii++) {\n const pt = this.faces[kk].get(ii);\n const t = normal.dot(pt.sub(center));\n if (t > hiv) {\n hiv = t;\n hii = ii;\n }\n }\n // if two pts have the same distance, prefer the second\n const hii2 = (hii + 1) % this.faces[kk].length;\n if (\n Math.abs(normal.dot(this.faces[kk].get(hii2).sub(center)) - hiv) <\n eps\n ) {\n hii = hii2;\n }\n // remake the face to preserve orientations\n if (hii !== 0) {\n const qs = [];\n for (let ii = 0; ii < this.faces[kk].length; ii++) {\n qs.push(this.faces[kk].get((ii + hii) % this.faces[kk].length));\n }\n this.faces[kk] = new Face(qs);\n }\n const o = this.basefaces[i].length;\n for (let m = 1; m < o; m++) {\n this.cubies[k].push(this.cubies[k][m - 1]);\n }\n this.duplicatedFaces[kk] = o;\n this.duplicatedCubies[k] = o;\n this.orbitoris[this.cubiesetnums[k]] = o;\n }\n }\n }\n }\n for (let k = 0; k < this.moveplanesets.length; k++) {\n const moveplaneset = this.moveplanesets[k];\n const slicenum = [];\n const slicecnts = [moveplaneset.length + 1, 0];\n let bhi = 1;\n while (bhi * 2 <= moveplaneset.length) {\n bhi *= 2;\n }\n for (let i = 0; i < this.faces.length; i++) {\n let t = 0;\n if (moveplaneset.length > 0) {\n const dv = this.facecentermass[i].dot(moveplaneset[0]);\n for (let b = bhi; b > 0; b >>= 1) {\n if (\n t + b <= moveplaneset.length &&\n dv > moveplaneset[t + b - 1].a\n ) {\n t += b;\n }\n }\n t = moveplaneset.length - t;\n }\n slicenum.push(t);\n while (slicecnts.length <= t) {\n slicecnts.push(0);\n }\n slicecnts[t]++;\n }\n const axiscmoves = new Array(slicecnts.length);\n for (let sc = 0; sc < slicecnts.length; sc++) {\n axiscmoves[sc] = [];\n }\n const cubiedone = [];\n for (let i = 0; i < this.faces.length; i++) {\n if (slicenum[i] < 0) {\n continue;\n }\n const b = [this.facetocubie[i], this.facetoord[i]];\n let cm = this.facecentermass[i];\n const ocm = cm;\n let fi2 = i;\n const sc = slicenum[fi2];\n for (;;) {\n slicenum[fi2] = -1;\n const cm2 = cm.rotatepoint(this.moverotations[k][0]);\n if (cm2.dist(ocm) < eps) {\n break;\n }\n fi2 = this.findface(cm2);\n b.push(this.facetocubie[fi2], this.facetoord[fi2]);\n cm = cm2;\n }\n // If an oriented center is moving, we need to figure out\n // the appropriate new orientation. Normally we use the cubie\n // sticker identity to locate, but this doesn't work here.\n // Instead we need to redo the geometry of the sticker itself\n // rotating and figure out how that maps to the destination\n // sticker.\n //\n // We only need to do this for central center stickers: those\n // where the face vertex goes through the center. The others\n // don't actually need orientation because they can only be\n // in one orientation by physical constraints. (You can't spin\n // a point or cross sticker on the 5x5x5, for example.)\n //\n // This also simplifies things because it means the actual\n // remapping has the same order as the moves themselves.\n //\n // The center may or may not have been duplicated at this point.\n //\n // The move moving the center might not be the same modulo as the\n // center itself.\n if (\n b.length > 2 &&\n this.options.orientCenters &&\n (this.cubies[b[0]].length === 1 || this.duplicatedCubies[b[0]] > 1)\n ) {\n // is this a real center cubie, around an axis?\n if (\n this.facecentermass[i].dist(\n this.basefaces[this.getfaceindex(i)].centermass(),\n ) < eps\n ) {\n // how does remapping of the face/point set map to the original?\n let face1 = this.faces[this.cubies[b[0]][0]];\n for (let ii = 0; ii < b.length; ii += 2) {\n const face0 = this.faces[this.cubies[b[ii]][0]];\n let o = -1;\n for (let jj = 0; jj < face1.length; jj++) {\n if (face0.get(jj).dist(face1.get(0)) < eps) {\n o = jj;\n break;\n }\n }\n if (o < 0) {\n throw new Error(\n \"Couldn't find rotation of center faces; ignoring for now.\",\n );\n } else {\n b[ii + 1] = o;\n face1 = face1.rotate(this.moverotations[k][0]);\n }\n }\n }\n }\n // b.length === 2 means a sticker is spinning in place.\n // in this case we add duplicate stickers\n // so that we can make it animate properly in a 3D world.\n if (b.length === 2 && this.options.orientCenters) {\n for (let ii = 1; ii < this.movesetorders[k]; ii++) {\n if (sc === 0) {\n b.push(b[0], ii);\n } else {\n b.push(\n b[0],\n (this.movesetorders[k] - ii) % this.movesetorders[k],\n );\n }\n }\n }\n if (b.length > 2 && !cubiedone[b[0]]) {\n if (b.length !== 2 * this.movesetorders[k]) {\n throw new Error(\"Bad length in perm gen\");\n }\n for (const v of b) {\n axiscmoves[sc].push(v);\n }\n }\n for (let j = 0; j < b.length; j += 2) {\n cubiedone[b[j]] = true;\n }\n }\n for (let kk = 0; kk < axiscmoves.length; kk++) {\n axiscmoves[kk] = axiscmoves[kk].slice();\n }\n cmovesbyslice.push(axiscmoves);\n }\n this.cmovesbyslice = cmovesbyslice;\n if (this.options.moveList) {\n const parsedmovelist: [\n string | undefined,\n number,\n number,\n number,\n boolean,\n number,\n ][] = [];\n // make sure the movelist makes sense based on the geos.\n for (const moveString of this.options.moveList) {\n parsedmovelist.push(this.parsemove(moveString));\n }\n this.parsedmovelist = parsedmovelist;\n }\n this.facelisthash.clear();\n this.facecentermass = [];\n tend(t1);\n }\n\n private getboundarygeometry(): any {\n // get the boundary geometry\n return {\n baseplanes: this.baseplanes,\n facenames: this.facenames,\n faceplanes: this.faceplanes,\n vertexnames: this.vertexnames,\n edgenames: this.edgenames,\n geonormals: this.geonormals,\n };\n }\n\n private getmovesets(k: number): any {\n // get the move sets we support based on slices\n // for even values we omit the middle \"slice\". This isn't perfect\n // but it is what we do for now.\n // if there was a move list specified, pull values from that\n const slices = this.moveplanesets[k].length;\n let r: any[] = [];\n if (this.parsedmovelist !== undefined) {\n for (const parsedmove of this.parsedmovelist) {\n if (parsedmove[1] !== k) {\n continue;\n }\n if (parsedmove[4]) {\n r.push([parsedmove[2], parsedmove[3]]);\n } else {\n r.push([slices - parsedmove[3], slices - parsedmove[2]]);\n }\n r.push(parsedmove[5]);\n }\n } else if (this.options.vertexMoves && !this.options.allMoves) {\n const msg = this.movesetgeos[k];\n if (msg[1] !== msg[3]) {\n for (let i = 0; i < slices; i++) {\n if (msg[1] !== \"v\") {\n if (this.options.outerBlockMoves) {\n r.push([i + 1, slices]);\n } else {\n r.push([i + 1]);\n }\n r.push(1);\n } else {\n if (this.options.outerBlockMoves) {\n r.push([0, i]);\n } else {\n r.push([i, i]);\n }\n r.push(1);\n }\n }\n }\n } else {\n for (let i = 0; i <= slices; i++) {\n if (!this.options.allMoves && i + i === slices) {\n continue;\n }\n if (this.options.outerBlockMoves) {\n if (i + i > slices) {\n r.push([i, slices]);\n } else {\n r.push([0, i]);\n }\n } else {\n r.push([i, i]);\n }\n r.push(1);\n }\n }\n if (this.fixedCubie >= 0) {\n const dep = this.keyface3(this.faces[this.cubies[this.fixedCubie][0]])[k];\n const newr = [];\n for (let i = 0; i < r.length; i += 2) {\n let o = r[i];\n if (dep >= o[0] && dep <= o[1]) {\n if (o[0] === 0) {\n o = [o[1] + 1, slices];\n } else if (slices === o[1]) {\n o = [0, o[0] - 1];\n } else {\n throw Error(\"fixed cubie option would disconnect move\");\n }\n }\n let found = false;\n for (let j = 0; j < newr.length; j += 2) {\n if (\n newr[j][0] === o[0] &&\n newr[j][1] === o[1] &&\n newr[j + 1] === r[i + 1]\n ) {\n found = true;\n break;\n }\n }\n if (!found) {\n newr.push(o);\n newr.push(r[i + 1]);\n }\n }\n r = newr;\n }\n // TODO\n return r;\n }\n\n private graybyori(cubie: number): boolean {\n let ori = this.cubies[cubie].length;\n if (this.duplicatedCubies[cubie]) {\n ori = 1;\n }\n return (\n (ori === 1 &&\n (this.options.grayCenters || !this.options.includeCenterOrbits)) ||\n (ori === 2 &&\n (this.options.grayEdges || !this.options.includeEdgeOrbits)) ||\n (ori > 2 &&\n (this.options.grayCorners || !this.options.includeCornerOrbits))\n );\n }\n\n private skipbyori(cubie: number): boolean {\n let ori = this.cubies[cubie].length;\n if (this.duplicatedCubies[cubie]) {\n ori = 1;\n }\n return (\n (ori === 1 && !this.options.includeCenterOrbits) ||\n (ori === 2 && !this.options.includeEdgeOrbits) ||\n (ori > 2 && !this.options.includeCornerOrbits)\n );\n }\n\n private skipcubie(fi: number): boolean {\n return this.skipbyori(fi);\n }\n\n private header(comment: string): string {\n return comment + copyright + \"\\n\" + comment + \"\\n\";\n }\n\n public writegap(): string {\n // write out a gap set of generators\n const os = this.getOrbitsDef(false);\n const r = [];\n const mvs = [];\n for (let i = 0; i < os.moveops.length; i++) {\n let movename = `M_${externalName(this.notationMapper, os.movenames[i])}`;\n let doinv = false;\n if (movename[movename.length - 1] === \"'\") {\n movename = movename.substring(0, movename.length - 1);\n doinv = true;\n }\n // gap doesn't like angle brackets in IDs\n mvs.push(movename);\n if (doinv) {\n r.push(`${movename}:=${os.moveops[i].toPerm().inv().toGap()};`);\n } else {\n r.push(`${movename}:=${os.moveops[i].toPerm().toGap()};`);\n }\n }\n r.push(\"Gen:=[\");\n r.push(mvs.join(\",\"));\n r.push(\"];\");\n const ip = os.solved.identicalPieces();\n r.push(\n `ip:=[${ip\n .map((_) => `[${_.map((__) => __ + 1).join(\",\")}]`)\n .join(\",\")}];`,\n );\n r.push(\"# Size(Group(Gen));\");\n r.push(\"# Size(Stabilizer(Group(Gen), ip, OnTuplesSets));\");\n r.push(\"\");\n return this.header(\"# \") + r.join(\"\\n\");\n }\n\n public writeksolve(name: string = \"PuzzleGeometryPuzzle\"): string {\n const od = this.getOrbitsDef(false);\n return (\n this.header(\"# \") + od.toKsolve(name, this.notationMapper).join(\"\\n\")\n );\n }\n\n public getKPuzzleDefinition(\n fortwisty: boolean = true,\n includemoves: boolean = true,\n ): KPuzzleDefinition {\n const od = this.getOrbitsDef(fortwisty, includemoves);\n const internalDefinition = od.toKPuzzleDefinition(includemoves);\n (internalDefinition as any).experimentalPuzzleDescription =\n this.puzzleDescription;\n if (!internalDefinition) {\n throw new Error(\"Missing definition!\");\n }\n return internalDefinition;\n }\n\n public getMoveFromBits(\n moverange: number[],\n amount: number,\n inverted: boolean,\n axiscmoves: number[][],\n setmoves: number[] | undefined,\n movesetorder: number,\n ): PGTransform {\n const moveorbits: PGOrbit[] = [];\n const perms = [];\n const oris = [];\n for (const len of this.cubieords) {\n perms.push(iota(len));\n oris.push(zeros(len));\n }\n for (let m = moverange[0]; m <= moverange[1]; m++) {\n const slicecmoves = axiscmoves[m];\n for (let j = 0; j < slicecmoves.length; j += 2 * movesetorder) {\n const mperm = slicecmoves.slice(j, j + 2 * movesetorder);\n const setnum = this.cubiesetnums[mperm[0]];\n for (let ii = 0; ii < mperm.length; ii += 2) {\n mperm[ii] = this.cubieordnums[mperm[ii]];\n }\n let inc = 2;\n let oinc = 3;\n if (inverted) {\n inc = mperm.length - 2;\n oinc = mperm.length - 1;\n }\n if (perms[setnum] === iota(this.cubieords[setnum])) {\n perms[setnum] = perms[setnum].slice();\n if (this.orbitoris[setnum] > 1 && !this.options.fixedOrientation) {\n oris[setnum] = oris[setnum].slice();\n }\n }\n for (let ii = 0; ii < mperm.length; ii += 2) {\n perms[setnum][mperm[(ii + inc) % mperm.length]] = mperm[ii];\n if (this.orbitoris[setnum] > 1 && !this.options.fixedOrientation) {\n oris[setnum][mperm[ii]] =\n (mperm[(ii + oinc) % mperm.length] -\n mperm[(ii + 1) % mperm.length] +\n 2 * this.orbitoris[setnum]) %\n this.orbitoris[setnum];\n }\n }\n }\n }\n let lastId = new PGOrbit(iota(24), zeros(24), 1);\n for (let ii = 0; ii < this.cubiesetnames.length; ii++) {\n if (setmoves && !setmoves[ii]) {\n continue;\n }\n if (this.orbitoris[ii] === 1 || this.options.fixedOrientation) {\n if (perms[ii] === iota(lastId.perm.length)) {\n if (perms[ii] !== lastId.perm) {\n lastId = new PGOrbit(perms[ii], oris[ii], 1);\n }\n moveorbits.push(lastId);\n } else {\n moveorbits.push(new PGOrbit(perms[ii], oris[ii], 1));\n }\n } else {\n const no = new Array<number>(oris[ii].length);\n // convert ksolve oris to our internal ori rep\n for (let jj = 0; jj < perms[ii].length; jj++) {\n no[jj] = oris[ii][perms[ii][jj]];\n }\n moveorbits.push(new PGOrbit(perms[ii], no, this.orbitoris[ii]));\n }\n }\n let mv = new PGTransform(moveorbits);\n if (amount !== 1) {\n mv = mv.mulScalar(amount);\n }\n return mv;\n }\n\n private omitSet(name: string): boolean {\n for (const excludedSet of this.options.excludeOrbits) {\n if (excludedSet === name) {\n return true;\n }\n }\n return false;\n }\n\n private diffmvsets(a: any[], b: any[], slices: number, neg: boolean) {\n for (let i = 0; i < a.length; i += 2) {\n let found = false;\n for (let j = 0; !found && j < b.length; j += 2) {\n if (neg) {\n if (\n a[i][0] + b[j][1] === slices &&\n a[i][1] + b[j][0] === slices &&\n a[i + 1] === b[j + 1]\n ) {\n found = true;\n }\n } else {\n if (\n a[i][0] === b[j][0] &&\n a[i][1] === b[j][1] &&\n a[i + 1] === b[j + 1]\n ) {\n found = true;\n }\n }\n }\n if (!found) {\n return true;\n }\n }\n return false;\n }\n\n // TODO: This is only public for testing; can we make it private again?\n public getOrbitsDef(\n fortwisty: boolean,\n includemoves: boolean = true,\n ): PGOrbitsDef {\n // generate a representation of the puzzle\n const setmoves = [];\n if (fortwisty) {\n for (let i = 0; i < this.cubiesetnames.length; i++) {\n setmoves.push(1);\n }\n }\n const setnames: string[] = [];\n const setdefs: PGOrbitDef[] = [];\n // if both a movelist and rotations are needed, don't add rotations\n // that do not preserve the movelist.\n const mps = [];\n const addrot = [];\n for (let k = 0; k < this.moveplanesets.length; k++) {\n const moveset = this.getmovesets(k);\n mps.push(moveset);\n if (this.options.addRotations) {\n addrot.push(1);\n } else {\n addrot.push(0);\n }\n }\n const hasrotation = [];\n for (let k = 0; k < this.moveplanesets.length; k++) {\n const slices = this.moveplanesets[k].length;\n // if the move set includes a rotation around this axis, don't add any more\n let sawone = false;\n const moveset = mps[k];\n for (let i = 0; i < moveset.length; i += 2) {\n if (moveset[i][0] === 0 && moveset[i][1] === slices) {\n sawone = true;\n }\n }\n hasrotation[k] = sawone;\n }\n if (\n this.options.addRotations &&\n (this.options.moveList || this.options.fixedPieceType !== null)\n ) {\n for (let i = 0; i < this.moverotations.length; i++) {\n addrot[i] = 0;\n }\n for (let k = 0; k < this.moveplanesets.length; k++) {\n // if the move set includes a rotation around this axis, don't add any more\n if (hasrotation[k]) {\n addrot[k] = 3;\n continue;\n }\n // does a rotation around k preserve the move set?\n for (let i = 0; i < this.moverotations.length; i++) {\n let nn = this.moveplanenormals[k];\n for (let ii = 1; ii * 2 <= this.movesetorders[i]; ii++) {\n nn = nn.rotatepoint(this.moverotations[i][0]);\n if (addrot[i] & ii) {\n continue;\n }\n let found = -1;\n let neg = false;\n for (let j = 0; j < this.moveplanenormals.length; j++) {\n if (nn.dist(this.moveplanenormals[j]) < eps) {\n found = j;\n break;\n } else if (nn.dist(this.moveplanenormals[j].smul(-1)) < eps) {\n found = j;\n neg = true;\n break;\n }\n }\n if (found < 0) {\n throw new Error(\"Could not find rotation\");\n }\n const cmp = mps[found];\n if (\n cmp.length !== mps[k].length ||\n this.moveplanesets[k].length !==\n this.moveplanesets[found].length ||\n this.diffmvsets(\n cmp,\n mps[k],\n this.moveplanesets[found].length,\n neg,\n )\n ) {\n addrot[i] |= ii;\n }\n }\n }\n }\n for (let i = 0; i < this.moverotations.length; i++) {\n if (addrot[i] === 0) {\n addrot[i] = 1;\n } else if (addrot[i] === 1) {\n if (this.movesetorders[i] > 3) {\n addrot[i] = 2;\n } else {\n addrot[i] = 0;\n }\n } else if (addrot[i] === 3) {\n addrot[i] = 0;\n } else {\n throw new Error(\"Impossible addrot val\");\n }\n }\n }\n for (let k = 0; k < this.moveplanesets.length; k++) {\n if (addrot[k] !== 0 && !hasrotation[k]) {\n mps[k].push([0, this.moveplanesets[k].length]);\n mps[k].push(addrot[k]);\n }\n }\n for (let k = 0; k < this.moveplanesets.length; k++) {\n const moveset = mps[k];\n const movesetorder = this.movesetorders[k];\n // check there's no redundancy in moveset.\n for (let i = 0; i < moveset.length; i += 2) {\n for (let j = 0; j < i; j += 2) {\n if (\n moveset[i][0] === moveset[j][0] &&\n moveset[i][1] === moveset[j][1]\n ) {\n throw new Error(\"Redundant moves in moveset.\");\n }\n }\n }\n const allbits = [];\n for (let i = 0; i < moveset.length; i += 2) {\n for (let j = moveset[i][0]; j <= moveset[i][1]; j++) {\n allbits[j] = 1;\n }\n }\n const axiscmoves = this.cmovesbyslice[k];\n for (let i = 0; i < axiscmoves.length; i++) {\n if (allbits[i] !== 1) {\n continue;\n }\n const slicecmoves = axiscmoves[i];\n for (let j = 0; j < slicecmoves.length; j += 2 * movesetorder) {\n if (this.skipcubie(slicecmoves[j])) {\n continue;\n }\n const ind = this.cubiesetnums[slicecmoves[j]];\n setmoves[ind] = 1;\n }\n }\n }\n for (let i = 0; i < this.cubiesetnames.length; i++) {\n if (!setmoves[i]) {\n continue;\n }\n if (this.omitSet(this.cubiesetnames[i])) {\n setmoves[i] = 0;\n continue;\n }\n setnames.push(this.cubiesetnames[i]);\n setdefs.push(\n new PGOrbitDef(\n this.cubieords[i],\n this.options.fixedOrientation ? 1 : this.orbitoris[i],\n ),\n );\n }\n const solved: PGOrbit[] = [];\n for (let i = 0; i < this.cubiesetnames.length; i++) {\n if (!setmoves[i]) {\n continue;\n }\n if (this.omitSet(this.cubiesetnames[i])) {\n continue;\n }\n const p = [];\n const o = [];\n for (let j = 0; j < this.cubieords[i]; j++) {\n if (fortwisty) {\n p.push(j);\n } else {\n const cubie = this.cubiesetcubies[i][j];\n p.push(this.cubievaluemap[cubie]);\n }\n o.push(0);\n }\n solved.push(\n new PGOrbit(\n p,\n o,\n this.options.fixedOrientation ? 1 : this.orbitoris[i],\n ),\n );\n }\n const movenames: string[] = [];\n const forcenames: boolean[] = [];\n const moves: PGTransform[] = [];\n const isrots: boolean[] = [];\n if (includemoves) {\n for (let k = 0; k < this.moveplanesets.length; k++) {\n const moveplaneset = this.moveplanesets[k];\n const slices = moveplaneset.length;\n const moveset = mps[k];\n const movesetgeo = this.movesetgeos[k];\n for (let i = 0; i < moveset.length; i += 2) {\n const movebits = moveset[i];\n // did these movebits come from a specified move?\n // if they did, we need to use that name.\n let nameoverride: string | undefined;\n let inverted = false;\n if (this.parsedmovelist !== undefined) {\n for (const parsedmove of this.parsedmovelist) {\n if (parsedmove[1] !== k) {\n continue;\n }\n let r = [];\n if (parsedmove[4]) {\n r = [parsedmove[2], parsedmove[3]];\n } else {\n r = [slices - parsedmove[3], slices - parsedmove[2]];\n }\n if (r[0] === movebits[0] && r[1] === movebits[1]) {\n nameoverride = parsedmove[0];\n inverted = !parsedmove[4];\n }\n }\n }\n if (nameoverride) {\n movenames.push(nameoverride);\n forcenames.push(true);\n } else {\n const mna = getmovename(movesetgeo, movebits, slices);\n inverted = mna[1];\n const movename = mna[0];\n if (moveset[i + 1] === 1) {\n movenames.push(movename);\n } else {\n movenames.push(movename + moveset[i + 1]);\n }\n forcenames.push(false);\n }\n isrots.push(movebits[0] === 0 && movebits[1] === slices);\n const mv = this.getMoveFromBits(\n movebits,\n moveset[i + 1],\n inverted,\n this.cmovesbyslice[k],\n setmoves,\n this.movesetorders[k],\n );\n moves.push(mv);\n }\n }\n }\n let r = new PGOrbitsDef(\n setnames,\n setdefs,\n new VisibleState(solved),\n movenames,\n moves,\n isrots,\n forcenames,\n );\n if (this.options.optimizeOrbits) {\n r = r.optimize();\n }\n if (this.options.scrambleAmount !== 0) {\n r.scramble(this.options.scrambleAmount);\n }\n return r;\n }\n\n public getScramble(n: number = 0): KTransformationData {\n const od = this.getOrbitsDef(false);\n return od.transformToKTransformationData(od.getScrambleTransformation(n));\n }\n\n public getMovesAsPerms(): Perm[] {\n return this.getOrbitsDef(false).moveops.map((_) => _.toPerm());\n }\n\n public showcanon(disp: (s: string) => void): void {\n // show information for canonical move derivation\n showcanon(this.getOrbitsDef(false), disp);\n }\n\n public getsolved(): Perm {\n // get a solved position\n const r = [];\n for (let i = 0; i < this.baseFaceCount; i++) {\n for (let j = 0; j < this.stickersperface; j++) {\n r.push(i);\n }\n }\n return new Perm(r);\n }\n\n // Given a rotation description that says to align feature1\n // with a given vector, and then as much as possible feature2\n // with another given vector, return a Quaternion that\n // performs this rotation.\n private getOrientationRotation(desiredRotation: any[]): Quat {\n const [feature1name, [x1, y1, z1]] = desiredRotation[0];\n const direction1 = new Quat(0, x1, -y1, z1);\n\n const [feature2name, [x2, y2, z2]] = desiredRotation[1];\n const direction2 = new Quat(0, x2, -y2, z2);\n let feature1: Quat | null = null;\n let feature2: Quat | null = null;\n const feature1geoname = this.swizzler.unswizzle(feature1name);\n const feature2geoname = this.swizzler.unswizzle(feature2name);\n for (const gn of this.geonormals) {\n if (feature1geoname === gn[1]) {\n feature1 = gn[0];\n }\n if (feature2geoname === gn[1]) {\n feature2 = gn[0];\n }\n }\n if (!feature1) {\n throw new Error(`Could not find feature ${feature1name}`);\n }\n if (!feature2) {\n throw new Error(`Could not find feature ${feature2name}`);\n }\n const r1 = feature1.pointrotation(direction1);\n const feature2rot = feature2.rotatepoint(r1);\n const r2 = feature2rot\n .unproject(direction1)\n .pointrotation(direction2.unproject(direction1));\n return r2.mul(r1);\n }\n\n private getInitial3DRotation(): Quat {\n const basefacecount = this.baseFaceCount;\n let orientationDescription: FaceBasedOrientationDescription | null = null;\n if (this.options.puzzleOrientation) {\n orientationDescription = this.options.puzzleOrientation;\n } else if (this.options.puzzleOrientations) {\n orientationDescription = this.options.puzzleOrientations[basefacecount];\n }\n // either no option specified or no matching key in\n // puzzleOrientations.\n if (!orientationDescription) {\n orientationDescription = defaultOrientations()[basefacecount];\n }\n if (!orientationDescription) {\n throw new Error(\"No default orientation?\");\n }\n return this.getOrientationRotation(orientationDescription);\n }\n\n private generate2dmapping(\n w: number = 800,\n h: number = 500,\n trim: number = 10,\n threed: boolean = false,\n twodshrink: number = 0.92,\n ): (fn: number, q: Quat) => number[] {\n // generate a mapping to use for 2D for textures, svg\n w -= 2 * trim;\n h -= 2 * trim;\n function extendedges(a: number[][], n: number): void {\n let dx = a[1][0] - a[0][0];\n let dy = a[1][1] - a[0][1];\n const ang = (2 * Math.PI) / n;\n const cosa = Math.cos(ang);\n const sina = Math.sin(ang);\n for (let i = 2; i < n; i++) {\n const ndx = dx * cosa + dy * sina;\n dy = dy * cosa - dx * sina;\n dx = ndx;\n a.push([a[i - 1][0] + dx, a[i - 1][1] + dy]);\n }\n }\n // Find a net from a given face count. Walk it, assuming we locate\n // the first edge from (0,0) to (1,1) and compute the minimum and\n // maximum vertex locations from this. Then do a second walk, and\n // assign the actual geometry.\n this.genperms();\n const boundarygeo = this.getboundarygeometry();\n const face0 = boundarygeo.facenames[0][0];\n const polyn = face0.length; // number of vertices; 3, 4, or 5\n const net = this.net;\n if (net === null) {\n throw new Error(\"No net?\");\n }\n const edges: any = {};\n let minx = 0;\n let miny = 0;\n let maxx = 1;\n let maxy = 0;\n edges[net[0][0]] = [\n [1, 0],\n [0, 0],\n ];\n extendedges(edges[net[0][0]], polyn);\n for (const neti of net) {\n const f0 = neti[0];\n if (!edges[f0]) {\n throw new Error(\"Bad edge description; first edge not connected.\");\n }\n for (let j = 1; j < neti.length; j++) {\n const f1 = neti[j];\n if (f1 === \"\" || edges[f1]) {\n continue;\n }\n edges[f1] = [edges[f0][j % polyn], edges[f0][(j + polyn - 1) % polyn]];\n extendedges(edges[f1], polyn);\n }\n }\n for (const f in edges) {\n const es = edges[f];\n for (const esi of es) {\n minx = Math.min(minx, esi[0]);\n maxx = Math.max(maxx, esi[0]);\n miny = Math.min(miny, esi[1]);\n maxy = Math.max(maxy, esi[1]);\n }\n }\n const sc = Math.min(w / (maxx - minx), h / (maxy - miny));\n const xoff = 0.5 * (w - sc * (maxx + minx));\n const yoff = 0.5 * (h - sc * (maxy + miny));\n const geos: Record<string, Quat[]> = {};\n const bg = this.getboundarygeometry();\n const edges2: any = {};\n const initv = [\n [sc + xoff, yoff],\n [xoff, yoff],\n ];\n edges2[net[0][0]] = initv;\n extendedges(edges2[net[0][0]], polyn);\n geos[this.facenames[0][1]] = this.project2d(0, 0, [\n new Quat(0, initv[0][0], initv[0][1], 0),\n new Quat(0, initv[1][0], initv[1][1], 0),\n ]);\n const connectat = [];\n connectat[0] = 0;\n for (const neti of net) {\n const f0 = neti[0];\n if (!edges2[f0]) {\n throw new Error(\"Bad edge description; first edge not connected.\");\n }\n let gfi = -1;\n for (let j = 0; j < bg.facenames.length; j++) {\n if (f0 === bg.facenames[j][1]) {\n gfi = j;\n break;\n }\n }\n if (gfi < 0) {\n throw new Error(`Could not find first face name ${f0}`);\n }\n const thisface = bg.facenames[gfi][0];\n for (let j = 1; j < neti.length; j++) {\n const f1 = neti[j];\n if (f1 === \"\" || edges2[f1]) {\n continue;\n }\n edges2[f1] = [\n edges2[f0][j % polyn],\n edges2[f0][(j + polyn - 1) % polyn],\n ];\n extendedges(edges2[f1], polyn);\n // what edge are we at?\n const caf0 = connectat[gfi];\n const mp = thisface[(caf0 + j) % polyn]\n .sum(thisface[(caf0 + j + polyn - 1) % polyn])\n .smul(0.5);\n const epi = findelement(bg.edgenames, mp);\n const edgename = bg.edgenames[epi][1];\n const el = splitByFaceNames(edgename, this.facenames);\n const gf1 = el[f0 === el[0] ? 1 : 0];\n let gf1i = -1;\n for (let k = 0; k < bg.facenames.length; k++) {\n if (gf1 === bg.facenames[k][1]) {\n gf1i = k;\n break;\n }\n }\n if (gf1i < 0) {\n throw new Error(\"Could not find second face name\");\n }\n const otherface = bg.facenames[gf1i][0];\n for (let k = 0; k < otherface.length; k++) {\n const mp2 = otherface[k].sum(otherface[(k + 1) % polyn]).smul(0.5);\n if (mp2.dist(mp) <= eps) {\n const p1 = edges2[f0][(j + polyn - 1) % polyn];\n const p2 = edges2[f0][j % polyn];\n connectat[gf1i] = k;\n geos[gf1] = this.project2d(gf1i, k, [\n new Quat(0, p2[0], p2[1], 0),\n new Quat(0, p1[0], p1[1], 0),\n ]);\n break;\n }\n }\n }\n }\n let hix = 0;\n let hiy = 0;\n const rot = this.getInitial3DRotation();\n for (let face of this.faces) {\n if (threed) {\n face = face.rotate(rot);\n }\n for (let j = 0; j < face.length; j++) {\n hix = Math.max(hix, Math.abs(face.get(j).b));\n hiy = Math.max(hiy, Math.abs(face.get(j).c));\n }\n }\n const sc2 = Math.min(h / hiy / 2, (w - trim) / hix / 4);\n const mappt2d = (fn: number, q: Quat): number[] => {\n if (threed) {\n q = q.rotatepoint(rot);\n const xoff2 = 0.5 * trim + 0.25 * w;\n const xmul = this.baseplanes[fn].rotateplane(rot).d < 0 ? 1 : -1;\n return [\n trim + w * 0.5 + xmul * (xoff2 - q.b * sc2),\n trim + h * 0.5 + q.c * sc2,\n ];\n } else {\n const g = geos[this.facenames[fn][1]];\n return [\n trim + twodshrink * q.dot(g[0]) + g[2].b,\n trim + h - twodshrink * q.dot(g[1]) - g[2].c,\n ];\n }\n };\n return mappt2d;\n }\n\n public generatesvg(\n w: number = 800,\n h: number = 500,\n trim: number = 10,\n threed: boolean = false,\n ): string {\n const mappt2d = this.generate2dmapping(w, h, trim, threed);\n function drawedges(id: string, pts: number[][], color: string): string {\n return `<polygon id=\"${id}\" class=\"sticker\" style=\"fill: ${color}\" points=\"${pts\n .map((p) => `${p[0]} ${p[1]}`)\n .join(\" \")}\"/>\\n`;\n }\n // Let's build arrays for faster rendering. We want to map from geo\n // base face number to color, and we want to map from geo face number\n // to 2D geometry. These can be reused as long as the puzzle overall\n // orientation and canvas size remains unchanged.\n const pos = this.getsolved();\n const colormap = [];\n const facegeo = [];\n for (let i = 0; i < this.baseFaceCount; i++) {\n colormap[i] = this.colors[this.facenames[i][1]];\n }\n for (let i = 0; i < this.faces.length; i++) {\n const face = this.faces[i];\n const facenum = Math.floor(i / this.stickersperface);\n const fg = [];\n for (let j = 0; j < face.length; j++) {\n fg.push(mappt2d(facenum, face.get(j)));\n }\n facegeo.push(fg);\n }\n const svg = [];\n // group each base face so we can add a hover element\n for (let j = 0; j < this.baseFaceCount; j++) {\n svg.push(\"<g>\");\n svg.push(`<title>${this.facenames[j][1]}</title>\\n`);\n for (let ii = 0; ii < this.stickersperface; ii++) {\n const i = j * this.stickersperface + ii;\n const cubie = this.facetocubie[i];\n const cubieori = this.facetoord[i];\n const cubiesetnum = this.cubiesetnums[cubie];\n const cubieord = this.cubieordnums[cubie];\n const color = this.graybyori(cubie) ? \"#808080\" : colormap[pos.p[i]];\n let id = `${this.cubiesetnames[cubiesetnum]}-l${cubieord}-o${cubieori}`;\n svg.push(drawedges(id, facegeo[i], color));\n if (this.duplicatedFaces[i]) {\n for (let jj = 1; jj < this.duplicatedFaces[i]; jj++) {\n id = `${this.cubiesetnames[cubiesetnum]}-l${cubieord}-o${jj}`;\n svg.push(drawedges(id, facegeo[i], color));\n }\n }\n }\n svg.push(\"</g>\");\n }\n const html = `<svg id=\"svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 800 500\">\\n<style type=\"text/css\"><![CDATA[.sticker { stroke: #000000; stroke-width: 1px; }]]></style>\\n${svg.join(\n \"\",\n )}</svg>`;\n return html;\n }\n\n // The colorfrac parameter says how much of the face should be\n // colored (vs dividing lines); we default to 0.77 which seems\n // to work pretty well. It should be a number between probably\n // 0.4 and 0.9.\n public get3d(options?: { stickerColors?: string[] }): StickerDat {\n const stickers = [];\n const rot = this.getInitial3DRotation();\n const faces = [];\n const maxdist: number = 0.52 * this.basefaces[0].get(0).len();\n for (let i = 0; i < this.basefaces.length; i++) {\n const coords = this.basefaces[i].rotate(rot);\n const name = this.facenames[i][1];\n faces.push({ coords: toFaceCoords(coords, maxdist), name });\n }\n for (let i = 0; i < this.faces.length; i++) {\n const facenum = Math.floor(i / this.stickersperface);\n const cubie = this.facetocubie[i];\n const cubieori = this.facetoord[i];\n const cubiesetnum = this.cubiesetnums[cubie];\n const cubieord = this.cubieordnums[cubie];\n let color = this.graybyori(cubie)\n ? \"#808080\"\n : this.colors[this.facenames[facenum][1]];\n if (options?.stickerColors) {\n color = options.stickerColors[i];\n }\n const coords = this.faces[i].rotate(rot);\n stickers.push({\n coords: toFaceCoords(coords, maxdist),\n color,\n orbit: this.cubiesetnames[cubiesetnum],\n ord: cubieord,\n ori: cubieori,\n face: facenum,\n });\n let fcoords = coords;\n if (this.duplicatedFaces[i]) {\n const rotdist = fcoords.length / this.duplicatedFaces[i];\n for (let jj = 1; jj < this.duplicatedFaces[i]; jj++) {\n for (let k = 0; k < rotdist; k++) {\n fcoords = fcoords.rotateforward();\n }\n stickers.push({\n coords: toFaceCoords(fcoords, maxdist),\n color,\n orbit: this.cubiesetnames[cubiesetnum],\n ord: cubieord,\n ori: jj,\n face: facenum,\n isDup: true,\n });\n }\n }\n }\n const grips: StickerDatAxis[] = [];\n for (let i = 0; i < this.movesetgeos.length; i++) {\n const msg = this.movesetgeos[i];\n const order = this.movesetorders[i];\n for (const gn of this.geonormals) {\n if (msg[0] === gn[1] && msg[1] === gn[2]) {\n grips.push({\n coordinates: toCoords(gn[0].rotatepoint(rot), 1),\n quantumMove: new Move(msg[0]),\n order,\n });\n grips.push({\n coordinates: toCoords(gn[0].rotatepoint(rot).smul(-1), 1),\n quantumMove: new Move(msg[2]),\n order,\n });\n }\n }\n }\n const twodmapper = this.generate2dmapping(2880, 2160, 0, false, 1.0);\n const g = (function () {\n const irot = rot.invrot();\n return function (facenum: number, coords: number[]): number[] {\n let q = new Quat(\n 0,\n coords[0] * maxdist,\n -coords[1] * maxdist,\n coords[2] * maxdist,\n );\n q = q.rotatepoint(irot);\n const x = twodmapper(facenum, q);\n x[0] /= 2880;\n x[1] = 1 - x[1] / 2160;\n return x;\n };\n })().bind(this);\n return {\n stickers,\n faces,\n axis: grips,\n unswizzle: this.unswizzle.bind(this),\n notationMapper: this.notationMapper,\n textureMapper: { getuv: g },\n };\n }\n\n // From the name of a geometric element (face, vertex, edge), get a\n // normal vector respecting the default orientation. This is useful\n // to define the initial position of the camera in a 3D scene. The\n // return value is normalized, so multiply it by the camera distance.\n // Returns undefined if no such geometric element.\n public getGeoNormal(geoname: string): number[] | undefined {\n const rot = this.getInitial3DRotation();\n const grip = this.swizzler.unswizzle(geoname);\n for (const gn of this.geonormals) {\n if (grip === gn[1]) {\n const r = toCoords(gn[0].rotatepoint(rot), 1);\n // This routine is intended to use for the camera location.\n // If the camera location is vertical, and we give some\n // near-zero values for x and z, then the rotation in the\n // X/Z plane will be somewhat arbitrary. So we clean up the\n // returned vector here. We give a very slight positive\n // z value.\n if (Math.abs(r[0]) < eps && Math.abs(r[2]) < eps) {\n r[0] = 0.0;\n r[2] = 1e-6;\n }\n return r;\n }\n }\n return undefined;\n }\n\n private getfaceindex(facenum: number): number {\n const divid = this.stickersperface;\n return Math.floor(facenum / divid);\n }\n\n public textForTwizzleExplorer(): string {\n return `Faces ${this.baseplanerot.length}\nStickers per face ${this.stickersperface}\nShort edge ${this.shortedge}\nCubies ${this.cubies.length}\nEdge distance ${this.edgedistance}\nVertex distance ${this.vertexdistance}`;\n }\n\n writeSchreierSims(tw: (s: string) => void) {\n const os = this.getOrbitsDef(false);\n const as = os.reassemblySize();\n tw(`Reassembly size is ${as}`);\n const ss = schreierSims(this.getMovesAsPerms(), tw);\n const r = as / ss;\n tw(`Ratio is ${r}`);\n }\n}\n\nexport class PGNotation {\n private orbitNames: string[];\n constructor(private pg: PuzzleGeometry, od: PGOrbitsDef) {\n this.orbitNames = od.orbitnames;\n }\n\n public lookupMove(move: Move): KTransformationData | null {\n const mv = this.pg.parseMove(move);\n // if a move list subset is defined, don't return moves outside the subset.\n if (this.pg.parsedmovelist) {\n let found = false;\n for (const parsedmove of this.pg.parsedmovelist) {\n if (\n parsedmove[1] === mv[1] &&\n parsedmove[2] === mv[2] &&\n parsedmove[3] === mv[3] &&\n parsedmove[4] === mv[4]\n ) {\n found = true;\n }\n }\n if (!found) {\n return null;\n }\n }\n let bits = [mv[2], mv[3]];\n if (!mv[4]) {\n const slices = this.pg.moveplanesets[mv[1]].length;\n bits = [slices - mv[3], slices - mv[2]];\n }\n const pgmv = this.pg.getMoveFromBits(\n bits,\n mv[5],\n !mv[4],\n this.pg.cmovesbyslice[mv[1]],\n undefined,\n this.pg.movesetorders[mv[1]],\n );\n const r = PGOrbitsDef.transformToKTransformationData(this.orbitNames, pgmv);\n return r;\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": ";;;;;;AAIO,IAAM,mBAAN,MAAuB;AAAA,EAG5B,YAAmB,WAAqB,eAA0B;AAA/C;AAFnB,SAAO,aAAsB;AAC7B,SAAO,YAAsB,CAAC;AAE5B,QAAI,eAAe;AACjB,WAAK,YAAY;AAAA,IACnB;AACA,aAAS,IAAI,GAAG,KAAK,cAAc,IAAI,UAAU,QAAQ,KAAK;AAC5D,eAAS,IAAI,GAAG,KAAK,cAAc,IAAI,UAAU,QAAQ,KAAK;AAC5D,YAAI,MAAM,KAAK,UAAU,GAAG,WAAW,UAAU,EAAE,GAAG;AACpD,eAAK,aAAa;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEO,aAAa,OAAuB;AACzC,SAAK,YAAY;AAAA,EACnB;AAAA,EAIO,iBAAiB,GAAqB;AAC3C,UAAM,IAAI,CAAC;AACX,QAAI,KAAK;AACT,WAAO,KAAK,EAAE,QAAQ;AACpB,UAAI,KAAK,KAAK,KAAK,EAAE,UAAU,EAAE,QAAQ,KAAK;AAC5C;AAAA,MACF;AACA,UAAI,eAAe;AACnB,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YACE,EAAE,OAAO,EAAE,EAAE,WAAW,KAAK,UAAU,EAAE,MACxC,eAAe,KACd,KAAK,UAAU,GAAG,SAAS,KAAK,UAAU,cAAc,SAC1D;AACA,yBAAe;AAAA,QACjB;AAAA,MACF;AACA,UAAI,gBAAgB,GAAG;AACrB,UAAE,KAAK,YAAY;AACnB,cAAM,KAAK,UAAU,cAAc;AAAA,MACrC,OAAO;AACL,cAAM,IAAI,MAAM,mBAAmB,oBAAoB;AAAA,MACzD;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAGO,kBAAkB,MAAwB;AAC/C,QAAI,MAAM;AACV,UAAM,IAAI,CAAC;AACX,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAE,KAAK,GAAG;AACV,QAAE,KAAK,KAAK,UAAU,KAAK,GAAG;AAC9B,UAAI,CAAC,KAAK,YAAY;AACpB,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO,EAAE,KAAK,EAAE;AAAA,EAClB;AAAA,EA8BO,UAAU,WAAmB,UAA2B;AAE7D,QAAI,cAAc,UAAU;AAC1B,aAAO;AAAA,IACT;AACA,QAAI;AACF,YAAM,KAAK,KAAK,iBAAiB,SAAS;AAC1C,YAAM,KAAK,KAAK,iBAAiB,QAAQ;AAMzC,UAAI,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG;AAC5C,eAAO;AAAA,MACT;AACA,eAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAClC,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAI,GAAG,OAAO,GAAG,IAAI;AACnB,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAClC,cAAI,GAAG,OAAO,GAAG,IAAI;AACnB,oBAAQ;AACR;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,OAAO;AACV,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,SAAS,GAAP;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAGO,WAAW,WAAmB,UAA2B;AAC9D,QAAI,UAAU,SAAS,GAAG,KAAK,SAAS,SAAS,GAAG,GAAG;AACrD,aAAO,KAAK;AAAA,QACV,UAAU,MAAM,GAAG,UAAU,SAAS,CAAC;AAAA,QACvC,SAAS,MAAM,GAAG,SAAS,SAAS,CAAC;AAAA,MACvC;AAAA,IACF,OAAO;AACL,aAAO,KAAK,UAAU,WAAW,QAAQ;AAAA,IAC3C;AAAA,EACF;AAAA,EAEO,UAAU,GAAmB;AAClC,SAAK,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,MAAM,KAAK;AACvD,UAAI,EAAE,MAAM,GAAG,EAAE,SAAS,CAAC;AAAA,IAC7B;AACA,UAAM,gBAAgB,EAAE,YAAY;AACpC,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAM,IAAI,KAAK,UAAU;AACzB,UAAI,KAAK,UAAU,eAAe,CAAC,GAAG;AACpC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;;;AC5JO,IAAM,aAAN,MAA2C;AAAA,EACzC,mBAAmB,MAAyB;AACjD,WAAO;AAAA,EACT;AAAA,EAEO,mBAAmB,MAAyB;AACjD,WAAO;AAAA,EACT;AACF;;;ACPO,IAAM,oBAAN,MAAkD;AAAA,EACvD,YAAoB,OAA+B,IAAsB;AAArD;AAA+B;AAAA,EAAuB;AAAA,EAEnE,mBAAmB,MAAyB;AACjD,QACE,KAAK,WAAW,OAChB,KAAK,eAAe,UACpB,KAAK,eAAe,QACpB;AACA,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,QACxD,KAAK;AAAA,MACP;AAAA,IACF,OAAO;AACL,YAAM,IAAI,KAAK,MAAM,mBAAmB,IAAI;AAC5C,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAGO,mBAAmB,MAAyB;AACjD,QAAI,MAAM,KAAK;AACf,QAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,OAAO,KAAK;AACjD,YAAM,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC;AAAA,IACvC;AACA,QAAI,KAAK,GAAG,UAAU,KAAK,MAAM,GAAG;AAClC,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,KAAK,KAAK,YAAY,KAAK,UAAU;AAAA,QACrD,KAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO,KAAK,MAAM,mBAAmB,IAAI;AAAA,EAC3C;AACF;;;AC9BO,IAAM,qBAAN,MAAmD;AAAA,EACxD,YACS,eACA,eACP;AAFO;AACA;AAAA,EACN;AAAA,EAGI,cACL,MACA,GACA,GACQ;AACR,QAAI,SAAS;AACb,SAAK,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,MAAM,QAAQ,KAAK;AAC7D,eAAS,KAAK,MAAM,KAAK,SAAS,CAAC;AACnC,aAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AAAA,IACtC;AACA,UAAM,QAAQ,KAAK,YAAY;AAC/B,QAAI,cAAc;AAClB,QAAI,SAAS,OAAO;AAClB,oBAAc;AACd,aAAO;AAAA,IACT;AACA,WAAO,EAAE,kBAAkB,EAAE,iBAAiB,IAAI,CAAC;AACnD,QAAI,aAAa;AACf,aAAO,KAAK,YAAY;AAAA,IAC1B;AACA,WAAO,OAAO;AAAA,EAChB;AAAA,EAEO,QAAQ,MAAY,GAAqB,GAA2B;AACzE,UAAM,OAAO,KAAK;AAClB,UAAM,QAAQ,KAAK,cAAc,MAAM,GAAG,CAAC;AAC3C,QAAI,SAAS,OAAO;AAClB,aAAO;AAAA,IACT,OAAO;AACL,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,OAAO,KAAK,YAAY,KAAK,UAAU;AAAA,QACvD,KAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAEO,mBAAmB,MAAkB;AAC1C,UAAM,IAAI,KAAK,QAAQ,MAAM,KAAK,eAAe,KAAK,aAAa;AACnE,WAAO;AAAA,EACT;AAAA,EAEO,mBAAmB,MAAkB;AAC1C,WAAO,KAAK,QAAQ,MAAM,KAAK,eAAe,KAAK,aAAa;AAAA,EAClE;AACF;;;ACpDO,IAAM,mCAAN,MAAiE;AAAA,EACtE,YAAoB,OAAuB;AAAvB;AAAA,EAAwB;AAAA,EAErC,mBAAmB,MAAyB;AACjD,QAAI,KAAK,eAAe,UAAa,KAAK,eAAe,QAAW;AAClE,UAAI,KAAK,IAAI,KAAK,MAAM,MAAM,GAAG;AAC/B,YAAI,KAAK,WAAW,OAAO;AACzB,iBAAO,IAAI,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,MAAM;AAAA,QAC9D,WAAW,KAAK,WAAW,OAAO;AAChC,iBAAO,IAAI,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM;AAAA,QAC7D,WAAW,KAAK,WAAW,OAAO;AAChC,iBAAO,IAAI,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,MAAM;AAAA,QAC9D,WAAW,KAAK,WAAW,OAAO;AAChC,iBAAO,IAAI,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK,MAAM;AAAA,QAC7D;AAGA,YAAI,KAAK,WAAW,eAAe;AACjC,iBAAO,IAAI,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,MAAM;AAAA,QAC9D,WAAW,KAAK,WAAW,eAAe;AACxC,iBAAO,IAAI,KAAK,IAAI,YAAY,KAAK,GAAG,CAAC,GAAG,KAAK,KAAK,MAAM;AAAA,QAC9D;AAAA,MACF;AACA,UAAI,KAAK,WAAW,KAAK;AACvB,eAAO,IAAI,KAAK,MAAM,KAAK,MAAM;AAAA,MACnC;AACA,UAAI,KAAK,WAAW,OAAO,KAAK,IAAI,KAAK,MAAM,MAAM,GAAG;AACtD,eAAO,IAAI,KAAK,OAAO,KAAK,SAAS,CAAC;AAAA,MACxC;AAAA,IACF;AACA,WAAO,KAAK,MAAM,mBAAmB,IAAI;AAAA,EAC3C;AAAA,EAGO,mBAAmB,MAAyB;AACjD,QAAI,KAAK,WAAW,SAAS,KAAK,IAAI,KAAK,MAAM,MAAM,GAAG;AACxD,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,KAAK,KAAK,YAAY,KAAK,UAAU;AAAA,QACrD,KAAK,SAAS;AAAA,MAChB;AAAA,IACF;AACA,QAAI,KAAK,WAAW,SAAS,KAAK,IAAI,KAAK,MAAM,MAAM,GAAG;AACxD,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,KAAK,KAAK,YAAY,KAAK,UAAU;AAAA,QACrD,CAAC,KAAK,SAAS;AAAA,MACjB;AAAA,IACF;AACA,QAAI,KAAK,WAAW,MAAM;AACxB,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,KAAK,KAAK,YAAY,KAAK,UAAU;AAAA,QACrD,KAAK;AAAA,MACP;AAAA,IACF;AACA,QAAI,KAAK,WAAW,MAAM;AACxB,aAAO,IAAI,KAAK,KAAK,CAAC,KAAK,MAAM;AAAA,IACnC;AACA,WAAO,KAAK,MAAM,mBAAmB,IAAI;AAAA,EAC3C;AACF;;;AC7DO,IAAM,kBAAN,MAAgD;AAAA,EACrD,YAAmB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAE7B,mBAAmB,MAAkB;AAC1C,UAAM,OAAO,KAAK;AAClB,QAAI,EAAE,KAAK,cAAc,KAAK,aAAa;AACzC,UAAI,SAAS,KAAK;AAChB,eAAO,IAAI,KAAK,MAAM,KAAK,MAAM;AAAA,MACnC,WAAW,SAAS,KAAK;AACvB,eAAO,IAAI,KAAK,MAAM,KAAK,MAAM;AAAA,MACnC,WAAW,SAAS,KAAK;AACvB,eAAO,IAAI,KAAK,MAAM,KAAK,MAAM;AAAA,MACnC;AACA,WAAK,KAAK,SAAS,OAAO,GAAG;AAC3B,YAAI,SAAS,KAAK;AAChB,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,YAC1C,KAAK;AAAA,UACP;AAAA,QACF,WAAW,SAAS,KAAK;AACvB,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,YAC1C,KAAK;AAAA,UACP;AAAA,QACF,WAAW,SAAS,KAAK;AACvB,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,YAC1C,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,SAAS,GAAG;AACnB,YAAI,SAAS,KAAK;AAChB,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,YACvC,KAAK;AAAA,UACP;AAAA,QACF,WAAW,SAAS,KAAK;AACvB,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,YACvC,KAAK;AAAA,UACP;AAAA,QACF,WAAW,SAAS,KAAK;AACvB,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,KAAK,KAAK,SAAS,GAAG,CAAC;AAAA,YACvC,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAGO,mBAAmB,MAAkB;AAC1C,UAAM,OAAO,KAAK;AAClB,QAAI,EAAE,KAAK,cAAc,KAAK,aAAa;AACzC,UAAI,SAAS,MAAM;AACjB,eAAO,IAAI,KAAK,KAAK,KAAK,MAAM;AAAA,MAClC,WAAW,SAAS,MAAM;AACxB,eAAO,IAAI,KAAK,KAAK,KAAK,MAAM;AAAA,MAClC,WAAW,SAAS,MAAM;AACxB,eAAO,IAAI,KAAK,KAAK,KAAK,MAAM;AAAA,MAClC,WAAW,SAAS,MAAM;AACxB,eAAO,IAAI,KAAK,KAAK,CAAC,KAAK,MAAM;AAAA,MACnC,WAAW,SAAS,MAAM;AACxB,eAAO,IAAI,KAAK,KAAK,CAAC,KAAK,MAAM;AAAA,MACnC,WAAW,SAAS,MAAM;AACxB,eAAO,IAAI,KAAK,KAAK,CAAC,KAAK,MAAM;AAAA,MACnC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;;;ACxEA,IAAM,oBAA4C;AAAA,EAChD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AACN;AACA,IAAM,qBAA6C;AAAA,EACjD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,uBAA+C;AAAA,EACnD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,IAAM,2BAA2B,IAAI,YAAY,GAAG;AACpD,IAAM,2BAA2B,IAAI,YAAY,IAAI;AAE9C,IAAM,yBAAN,MAAuD;AAAA,EAI5D,YAAoB,OAAyB;AAAzB;AAHpB,SAAU,UAAmB;AAC7B,eAA8B;AAAA,EAEgB;AAAA,EAEvC,mBAAmB,MAAyB;AACjD,QAAI,KAAK,WAAW,KAAK,eAAe,KAAK,KAAK,eAAe,MAAM;AACrE,YAAM,eAAe,qBAAqB,KAAK;AAC/C,UAAI,cAAc;AAChB,eAAO,IAAI;AAAA,UACT,IAAI,YAAY,cAAc,KAAK,YAAY,KAAK,UAAU;AAAA,UAC9D,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AACA,UAAM,YAAY,KAAK,IAAI,KAAK;AAEhC,QAAI,WAAW;AACb,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,WAAW,KAAK,YAAY,KAAK,UAAU;AAAA,QAC3D,KAAK;AAAA,MACP;AAAA,IACF,WAAW,yBAAyB,YAAY,KAAK,OAAO,GAAG;AAC7D,aAAO,IAAI,KAAK,0BAA0B,CAAC,KAAK,MAAM;AAAA,IACxD,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAGO,mBAAmB,MAAyB;AACjD,QAAI,KAAK,WAAW,KAAK,eAAe,KAAK,KAAK,eAAe,MAAM;AACrE,iBAAW,CAAC,UAAU,QAAQ,KAAK,OAAO,QAAQ,oBAAoB,GAAG;AACvE,YAAI,KAAK,MAAM,UAAU,KAAK,QAAQ,QAAQ,GAAG;AAC/C,iBAAO,IAAI;AAAA,YACT,IAAI,YAAY,UAAU,KAAK,YAAY,KAAK,UAAU;AAAA,YAC1D,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,eAAW,CAAC,UAAU,QAAQ,KAAK,OAAO,QAAQ,KAAK,GAAG,GAAG;AAC3D,UAAI,KAAK,MAAM,UAAU,KAAK,QAAQ,QAAQ,GAAG;AAC/C,eAAO,IAAI;AAAA,UACT,IAAI,YAAY,UAAU,KAAK,YAAY,KAAK,UAAU;AAAA,UAC1D,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AACA,QAAI,yBAAyB,YAAY,KAAK,OAAO,GAAG;AACtD,aAAO,IAAI,KAAK,0BAA0B,CAAC,KAAK,MAAM;AAAA,IACxD,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,0BAAN,cAAsC,uBAAuB;AAAA,EAGlE,YAAY,OAAyB;AACnC,UAAM,KAAK;AAHb,SAAmB,UAAU;AAI3B,SAAK,MAAM;AAAA,EACb;AACF;;;ACpHA,IAAM,iBAAyC;AAAA,EAC7C,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAGA,IAAM,wBAAwB,IAAI,YAAY,GAAG;AACjD,IAAM,wBAAwB,IAAI,YAAY,IAAI;AAClD,IAAM,6BAA6B,IAAI,YAAY,IAAI;AACvD,IAAM,wBAAwB,IAAI,YAAY,GAAG;AACjD,IAAM,wBAAwB,IAAI,YAAY,IAAI;AAClD,IAAM,6BAA6B,IAAI,YAAY,IAAI;AACvD,IAAM,wBAAwB,IAAI,YAAY,GAAG;AACjD,IAAM,wBAAwB,IAAI,YAAY,IAAI;AAClD,IAAM,6BAA6B,IAAI,YAAY,IAAI;AAEhD,IAAM,sBAAN,MAAoD;AAAA,EACzD,YAAoB,OAAyB;AAAzB;AAAA,EAA0B;AAAA,EAEvC,mBAAmB,MAAyB;AACjD,QAAI,KAAK,cAAc,KAAK,YAAY;AACtC,aAAO;AAAA,IACT;AACA,UAAM,YAAY,eAAe,KAAK;AACtC,QAAI,WAAW;AACb,aAAO,IAAI;AAAA,QACT,IAAI,YAAY,WAAW,KAAK,YAAY,KAAK,UAAU;AAAA,QAC3D,KAAK;AAAA,MACP;AAAA,IACF;AACA,QAAI,sBAAsB,YAAY,KAAK,OAAO,GAAG;AACnD,aAAO,IAAI,KAAK,uBAAuB,KAAK,MAAM;AAAA,IACpD;AACA,QAAI,sBAAsB,YAAY,KAAK,OAAO,GAAG;AACnD,aAAO,IAAI,KAAK,uBAAuB,KAAK,MAAM;AAAA,IACpD;AACA,QAAI,sBAAsB,YAAY,KAAK,OAAO,GAAG;AACnD,aAAO,IAAI,KAAK,uBAAuB,KAAK,MAAM;AAAA,IACpD;AACA,WAAO;AAAA,EAYT;AAAA,EAGO,mBAAmB,MAAyB;AACjD,eAAW,CAAC,UAAU,QAAQ,KAAK,OAAO,QAAQ,cAAc,GAAG;AACjE,UAAI,KAAK,MAAM,WAAW,KAAK,QAAQ,QAAQ,GAAG;AAChD,eAAO,IAAI;AAAA,UACT,IAAI,YAAY,UAAU,KAAK,YAAY,KAAK,UAAU;AAAA,UAC1D,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF;AACA,QAAI,sBAAsB,YAAY,KAAK,OAAO,GAAG;AACnD,aAAO,IAAI,KAAK,uBAAuB,KAAK,MAAM;AAAA,IACpD;AACA,QAAI,2BAA2B,YAAY,KAAK,OAAO,GAAG;AACxD,aAAO,IAAI,KAAK,uBAAuB,CAAC,KAAK,MAAM;AAAA,IACrD;AACA,QAAI,sBAAsB,YAAY,KAAK,OAAO,GAAG;AACnD,aAAO,IAAI,KAAK,uBAAuB,KAAK,MAAM;AAAA,IACpD;AACA,QAAI,2BAA2B,YAAY,KAAK,OAAO,GAAG;AACxD,aAAO,IAAI,KAAK,uBAAuB,CAAC,KAAK,MAAM;AAAA,IACrD;AACA,QAAI,sBAAsB,YAAY,KAAK,OAAO,GAAG;AACnD,aAAO,IAAI,KAAK,uBAAuB,KAAK,MAAM;AAAA,IACpD;AACA,QAAI,2BAA2B,YAAY,KAAK,OAAO,GAAG;AACxD,aAAO,IAAI,KAAK,uBAAuB,CAAC,KAAK,MAAM;AAAA,IACrD;AACA,WAAO;AAAA,EAcT;AACF;;;AChHO,SAAS,aAAa,MAG3B;AACA,MAAI,OAAO;AACX,QAAM,UAAiC,CAAC;AACxC,SAAO,OAAO,KAAK,UAAU,KAAK,MAAM,OAAO,KAAK;AAClD,UAAM,SAAS,KAAK;AACpB,QAAI,WAAW,eAAe;AAC5B,cAAQ,eAAe;AAAA,IACzB,WAAW,WAAW,cAAc;AAClC,cAAQ,WAAW;AAAA,IACrB,WAAW,WAAW,qBAAqB;AACzC,cAAQ,kBAAkB;AAAA,IAC5B,WAAW,WAAW,iBAAiB;AACrC,cAAQ,cAAc;AAAA,IACxB,WAAW,WAAW,eAAe;AACnC,cAAQ,sBAAsB;AAAA,IAChC,WAAW,WAAW,aAAa;AACjC,cAAQ,oBAAoB;AAAA,IAC9B,WAAW,WAAW,mBAAmB;AACvC,cAAQ,mBAAmB;AAAA,IAC7B,WAAW,WAAW,eAAe;AACnC,cAAQ,sBAAsB;AAAA,IAChC,WAAW,WAAW,UAAU;AAC9B,cAAQ,gBAAgB,KAAK,MAAM,MAAM,GAAG;AAC5C;AAAA,IACF,WAAW,WAAW,WAAW;AAC/B,cAAQ,WAAW,KAAK,MAAM,MAAM,GAAG;AACvC;AAAA,IACF,WAAW,WAAW,cAAc;AAClC,cAAQ,iBAAiB;AAAA,IAC3B,WAAW,WAAW,cAAc;AAClC,cAAQ,iBAAiB;AAAA,IAC3B,WAAW,WAAW,eAAe;AACnC,cAAQ,iBAAiB;AAAA,IAC3B,WAAW,WAAW,aAAa;AACjC,cAAQ,iBAAiB;AAAA,IAC3B,WAAW,WAAW,eAAe;AACnC,cAAQ,iBAAiB;AAAA,IAC3B,WAAW,WAAW,mBAAmB;AACvC,cAAQ,gBAAgB;AAAA,IAC1B,WAAW,WAAW,uBAAuB;AAC3C,cAAQ,oBAAoB,KAAK,MAAM,KAAK,KAAK;AACjD;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,eAAe,QAAQ;AAAA,IACzC;AAAA,EACF;AACA,QAAM,oBAAoB,uBAAuB,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;AAC3E,SAAO,EAAE,mBAAmB,QAAQ;AACtC;AA+BO,IAAM,4BAAN,MAAgC;AAAA,EA8BrC,YAAY,UAAiC,CAAC,GAAG;AA7BjD,qBAAoB;AAEpB,oBAAoB;AAEpB,uBAAuB;AACvB,wBAAwB;AACxB,oBAA4B;AAE5B,4BAA4B;AAC5B,0BAAyC;AACzC,yBAAyB;AAGzB,+BAA+B;AAC/B,+BAA+B;AAC/B,6BAA6B;AAE7B,yBAA0B,CAAC;AAC3B,0BAA0B;AAE1B,uBAAuB;AACvB,uBAAuB;AACvB,qBAAqB;AAErB,6BAA4D;AAC5D,8BAAmE;AAEnE,0BAAyB;AAGvB,WAAO,OAAO,MAAM,OAAO;AAAA,EAC7B;AACF;;;ACrHA,IAAM,YAAwB,CAAC;AAC/B,IAAM,YAAwB,CAAC;AAExB,SAAS,MAAM,GAAqB;AACzC,MAAI,CAAC,UAAU,IAAI;AACjB,UAAM,IAAI,MAAM,CAAC;AACjB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAE,KAAK;AAAA,IACT;AACA,cAAU,KAAK;AAAA,EACjB;AACA,SAAO,UAAU;AACnB;AAEO,SAAS,KAAK,GAAqB;AACxC,MAAI,CAAC,UAAU,IAAI;AACjB,UAAM,IAAI,MAAM,CAAC;AACjB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAE,KAAK;AAAA,IACT;AACA,cAAU,KAAK;AAAA,EACjB;AACA,SAAO,UAAU;AACnB;AAEO,SAAS,SAAS,GAAiB;AACxC,SAAO,IAAI,KAAK,KAAK,CAAC,CAAC;AACzB;AAiBO,SAAS,UAAU,GAAmB;AAC3C,MAAI,IAAI,OAAO,CAAC;AAChB,SAAO,IAAI,GAAG;AACZ,SAAK,OAAO,CAAC;AACb;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,IAAI,GAAW,GAAmB;AACzC,MAAI,IAAI,GAAG;AACT,UAAM,IAAI;AACV,QAAI;AACJ,QAAI;AAAA,EACN;AACA,SAAO,IAAI,GAAG;AACZ,UAAM,IAAI,IAAI;AACd,QAAI;AACJ,QAAI;AAAA,EACN;AACA,SAAO;AACT;AAEO,SAAS,IAAI,GAAW,GAAmB;AAChD,SAAQ,IAAI,IAAI,GAAG,CAAC,IAAK;AAC3B;AAEO,IAAM,OAAN,MAAW;AAAA,EAGhB,YAAY,GAAa;AACvB,SAAK,IAAI,EAAE;AACX,SAAK,IAAI;AAAA,EACX;AAAA,EAEO,WAAmB;AAExB,WAAO,QAAQ,KAAK,EAAE,KAAK,GAAG;AAAA,EAChC;AAAA,EAEO,IAAI,IAAgB;AAEzB,UAAM,IAAc,MAAM,KAAK,CAAC;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK;AAC/B,QAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AAAA,IACrB;AACA,WAAO,IAAI,KAAK,CAAC;AAAA,EACnB;AAAA,EAEO,KAAK,IAAgB;AAE1B,UAAM,IAAI,MAAM,KAAK,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK;AAC/B,QAAE,KAAK,KAAK,EAAE,GAAG,EAAE;AAAA,IACrB;AACA,WAAO,IAAI,KAAK,CAAC;AAAA,EACnB;AAAA,EAEO,MAAY;AACjB,UAAM,IAAI,MAAM,KAAK,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK;AAC/B,QAAE,KAAK,EAAE,MAAM;AAAA,IACjB;AACA,WAAO,IAAI,KAAK,CAAC;AAAA,EACnB;AAAA,EAEO,UAAU,IAAkB;AAEjC,aAAS,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK;AAC/B,UAAI,KAAK,EAAE,OAAO,GAAG,EAAE,IAAI;AACzB,eAAO,KAAK,EAAE,KAAK,GAAG,EAAE;AAAA,MAC1B;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,QAAgB;AACrB,UAAM,MAAM,IAAI,MAAc;AAC9B,UAAM,OAAO,IAAI,MAAe,KAAK,CAAC;AACtC,aAAS,IAAI,GAAG,IAAI,KAAK,EAAE,QAAQ,KAAK;AACtC,UAAI,KAAK,MAAM,KAAK,EAAE,OAAO,GAAG;AAC9B;AAAA,MACF;AACA,YAAM,QAAQ,IAAI,MAAc;AAChC,eAAS,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AACvC,cAAM,KAAK,IAAI,CAAC;AAChB,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,KAAK,IAAI,MAAM,KAAK,GAAG,IAAI;AAAA,IACjC;AACA,WAAO,IAAI,KAAK,EAAE;AAAA,EACpB;AAAA,EAEO,QAAgB;AACrB,QAAI,IAAI;AACR,UAAM,OAAO,IAAI,MAAe,KAAK,CAAC;AACtC,aAAS,IAAI,GAAG,IAAI,KAAK,EAAE,QAAQ,KAAK;AACtC,UAAI,KAAK,MAAM,KAAK,EAAE,OAAO,GAAG;AAC9B;AAAA,MACF;AACA,UAAI,KAAK;AACT,eAAS,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AACvC;AACA,aAAK,KAAK;AAAA,MACZ;AACA,UAAI,IAAI,GAAG,EAAE;AAAA,IACf;AACA,WAAO;AAAA,EACT;AACF;;;AC7IO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAmB,MAAqB,KAAa;AAAlC;AAAqB;AAAA,EAAc;AAAA,EAC/C,iBAAyB;AAC9B,WAAO,UAAU,KAAK,IAAI,IAAI,OAAO,KAAK,GAAG,KAAK,OAAO,KAAK,IAAI;AAAA,EACpE;AACF;AAEA,IAAI,8BAA8B;AAE3B,SAAS,aACd,QACA,YACQ;AACR,QAAM,KAAK,KAAK,WAAW,UAAU;AACrC,QAAM,MAAM,OAAO,mBAAmB,EAAE;AACxC,MAAI,QAAQ,QAAQ,OAAO,KAAK;AAC9B,WAAO;AAAA,EACT;AACA,SAAO,IAAI,SAAS;AACtB;AAEO,IAAM,cAAN,MAAkB;AAAA,EACvB,YACS,YACC,WACD,QACA,WACA,SACA,YACA,YACP;AAPO;AACC;AACD;AACA;AACA;AACA;AACA;AAAA,EACN;AAAA,EAEI,+BAA+B,GAAqC;AACzE,UAAM,KAAmC,CAAC;AAC1C,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,SAAG,KAAK,WAAW,MAAM,EAAE,OAAO,GAAG,UAAU;AAAA,IACjD;AACA,WAAO;AAAA,EACT;AAAA,EAEA,OAAc,+BACZ,YACA,GACqB;AACrB,UAAM,KAAmC,CAAC;AAC1C,aAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,SAAG,WAAW,MAAM,EAAE,OAAO,GAAG,UAAU;AAAA,IAC5C;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,YAAY,GAAW,GAAa,QAA8B;AACxE,UAAM,IAAI,KAAK,UAAU,GAAG;AAC5B,UAAM,IAAI,IAAI,MAAM,CAAC;AACrB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAE,KAAK,CAAC;AAAA,IACV;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,UAAI,KAAK,WAAW,IAAI;AACtB;AAAA,MACF;AACA,UAAI,SAAS,KAAK,UAAU;AAC5B,UAAI,CAAC,KAAK,WAAW,IAAI;AACvB,iBAAS,aAAa,QAAQ,MAAM;AACpC,YAAI,OAAO,OAAO,SAAS,OAAO,KAAK;AACrC,mBAAS,OAAO,UAAU,GAAG,OAAO,SAAS,CAAC;AAAA,QAChD;AAAA,MACF;AACA,YAAM,KAAK,KAAK,QAAQ,GAAG,OAAO;AAClC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,GAAG,KAAK,OAAO,KAAK,GAAG,IAAI,OAAO,GAAG;AACvC,YAAE,GAAG,KAAK,MAAM;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,QAAE,KAAK,KAAK,IAAI,KAAK,EAAE,GAAG,KAAK,GAAG,GAAG;AAAA,IACvC;AAAA,EACF;AAAA,EAEO,SACL,MACA,SAAyB,IAAI,WAAW,GAC9B;AACV,UAAM,SAAS,CAAC;AAChB,WAAO,KAAK,QAAQ,MAAM;AAC1B,WAAO,KAAK,EAAE;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,aAAO;AAAA,QACL,OAAO,KAAK,WAAW,MAAM,KAAK,UAAU,GAAG,QAAQ,KAAK,UAAU,GAAG;AAAA,MAC3E;AACA,WAAK,YAAY,GAAG,QAAQ,MAAM;AAAA,IACpC;AACA,WAAO,KAAK,EAAE;AACd,WAAO,KAAK,QAAQ;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,WAAK,OAAO,OAAO,GAAG;AAAA,QACpB;AAAA,QACA,KAAK,WAAW;AAAA,QAChB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,WAAO,KAAK,KAAK;AACjB,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,aAAO,KAAK,EAAE;AACd,UAAIA,QAAO,KAAK,UAAU;AAC1B,UAAI,CAAC,KAAK,WAAW,IAAI;AACvB,QAAAA,QAAO,aAAa,QAAQ,KAAK,UAAU,EAAE;AAAA,MAC/C;AACA,UAAI,QAAQ;AACZ,UAAIA,MAAKA,MAAK,SAAS,OAAO,KAAK;AACjC,gBAAQ;AACR,QAAAA,QAAOA,MAAK,UAAU,GAAGA,MAAK,SAAS,CAAC;AAAA,MAC1C;AACA,aAAO,KAAK,QAAQA,OAAM;AAC1B,eAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,YAAI,OAAO;AACT,eAAK,QAAQ,GAAG,OAAO,GACpB,IAAI,EACJ,iBAAiB,QAAQ,KAAK,WAAW,IAAI,IAAI;AAAA,QACtD,OAAO;AACL,eAAK,QAAQ,GAAG,OAAO,GAAG;AAAA,YACxB;AAAA,YACA,KAAK,WAAW;AAAA,YAChB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,KAAK,KAAK;AAAA,IACnB;AAEA,WAAO;AAAA,EACT;AAAA,EAGO,oBAAoB,cAA0C;AACnE,UAAM,SAAsC,CAAC;AAC7C,UAAM,QAA6C,CAAC;AACpD,aAAS,IAAI,GAAG,IAAI,KAAK,WAAW,QAAQ,KAAK;AAC/C,aAAO,KAAK,WAAW,MAAM;AAAA,QAC3B,WAAW,KAAK,UAAU,GAAG;AAAA,QAC7B,iBAAiB,KAAK,UAAU,GAAG;AAAA,MACrC;AACA,YAAM,sBAAsB,KAAK,OAAO,OAAO,GAAG,UAAU;AAC5D,YAAM,KAAK,WAAW,MAAM;AAAA,QAC1B,QAAQ,oBAAoB;AAAA,QAC5B,aAAa,oBAAoB;AAAA,MACnC;AAAA,IACF;AACA,UAAM,QAAqC,CAAC;AAC5C,QAAI,cAAc;AAChB,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,cAAM,KAAK,UAAU,MAAM,KAAK;AAAA,UAC9B,KAAK,QAAQ;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM,SAAS,EAAE;AAAA,MACjB;AAAA,MACA,gBAAgB;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAwB;AAC7B,UAAM,gBAA0B,CAAC;AACjC,UAAM,eAA6B,CAAC;AACpC,UAAM,YAAuB,CAAC;AAC9B,UAAM,aAA0B,CAAC;AACjC,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,iBAAW,KAAK,CAAC,CAAC;AAAA,IACpB;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAM,KAAK,KAAK,UAAU,GAAG;AAC7B,YAAM,IAAI,KAAK,UAAU,GAAG;AAC5B,YAAM,KAAK,IAAI,cAAc,CAAC;AAC9B,YAAM,UAAU,IAAI,MAAe,KAAK,UAAU,GAAG,IAAI;AACzD,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAQ,KAAK;AAAA,MACf;AAEA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,YAAI,CAAC,KAAK,WAAW,IAAI;AACvB,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBACE,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK,OAAO,KACtC,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,OAAO,GACrC;AACA,sBAAQ,KAAK;AACb,iBAAG,MAAM,GAAG,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK,EAAE;AAAA,YAC/C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,UAAI,UAAU;AAId,UAAI,KAAK,GAAG;AACV,kBAAU;AACV,cAAM,MAAM,IAAI,cAAc,KAAK,UAAU,GAAG,OAAO,EAAE;AACzD,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBACE,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK,OAAO,KACtC,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,OAAO,GACrC;AACA,uBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,oBAAI;AAAA,kBACF,IAAI,KAAK;AAAA,kBACT,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAK,KAAK,MAChC,IAAI,KAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,MAAM;AAAA,gBAC9C;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,iBAAS,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,KAAK;AACtC,mBAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,gBAAI,IAAI,KAAK,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG;AAC7C,wBAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AACA,iBAAS,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,KAAK;AACtC,mBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBACE,KAAK,OAAO,OAAO,GAAG,KAAK,OAAO,KAAK,OAAO,OAAO,GAAG,KAAK,IAC7D;AACA,wBAAU;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,UAAU;AACd,UAAI,WAAW;AACf,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,GAAG,MAAM,KAAK;AAC/C,YAAI,QAAQ,IAAI;AACd,gBAAM,IAAI,GAAG,KAAK,CAAC;AACnB,cAAI,UAAU,GAAG;AACf,sBAAU;AAAA,UACZ,WAAW,YAAY,GAAG;AACxB,uBAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,GAAG,MAAM,KAAK;AAC/C,YAAI,CAAC,QAAQ,IAAI;AACf;AAAA,QACF;AACA,cAAM,IAAI,GAAG,KAAK,CAAC;AACnB,YAAI,MAAM,GAAG;AACX;AAAA,QACF;AACA,cAAM,KAAe,CAAC;AACtB,cAAM,KAAe,CAAC;AACtB,YAAI,KAAK;AACT,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,GAAG,MAAM,KAAK;AAC/C,cAAI,GAAG,KAAK,CAAC,MAAM,GAAG;AACpB,eAAG,MAAM;AACT,eAAG,KAAK;AACR;AAAA,UACF;AAAA,QACF;AACA,YAAI,UAAU;AACZ,wBAAc,KAAK,GAAG,KAAK,WAAW,OAAO,GAAG;AAAA,QAClD,OAAO;AACL,wBAAc,KAAK,KAAK,WAAW,EAAE;AAAA,QACvC;AACA,YAAI,SAAS;AACX,uBAAa,KAAK,IAAI,WAAW,IAAI,KAAK,UAAU,GAAG,GAAG,CAAC;AAC3D,oBAAU,KAAK,KAAK,OAAO,OAAO,GAAG,QAAQ,IAAI,EAAE,CAAC;AACpD,mBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,uBAAW,GAAG,KAAK,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC;AAAA,UAChE;AAAA,QACF,OAAO;AACL,uBAAa,KAAK,IAAI,WAAW,IAAI,CAAC,CAAC;AACvC,oBAAU,KAAK,KAAK,OAAO,OAAO,GAAG,QAAQ,IAAI,EAAE,EAAE,QAAQ,CAAC;AAC9D,mBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,uBAAW,GAAG;AAAA,cACZ,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,QAAQ;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO,IAAI;AAAA,MACT;AAAA,MACA;AAAA,MACA,IAAI,aAAa,SAAS;AAAA,MAC1B,KAAK;AAAA,MACL,WAAW,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,CAAC;AAAA,MACxC,KAAK;AAAA,MACL,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EAGO,SAAS,GAAiB;AAC/B,SAAK,SAAS,KAAK,OAAO,IAAI,KAAK,0BAA0B,CAAC,CAAC;AAAA,EACjE;AAAA,EAKO,0BAA0B,GAAwB;AAEvD,QAAI,IAAI,KAAK;AACX,UAAI;AAAA,IACN;AACA,UAAM,OAAsB,CAAC;AAC7B,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,WAAK,KAAK,KAAK,QAAQ;AAAA,IACzB;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK,MAAM;AAChD,YAAM,IAAI,KAAK;AACf,WAAK,KAAK,KAAK;AACf,WAAK,KAAK;AAAA,IACZ;AACA,QAAI,IAAI,KAAK,QAAQ;AACnB,UAAI,KAAK;AAAA,IACX;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK,MAAM;AACjD,YAAM,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK,MAAM;AACjD,YAAM,KAAK,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK,QAAQ,MAAM;AACzD,WAAK,MAAM,KAAK,IAAI,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,QAAQ,GAAG;AACtD,UAAI,KAAK,OAAO,IAAI,KAAK;AAEvB,aAAK,MAAM,KAAK,IAAI,IAAI,KAAK,QAAQ,GAAG;AAAA,MAC1C;AAAA,IACF;AACA,QAAI,IAAI,KAAK;AACb,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAI,EAAE,IAAI,KAAK,EAAE;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EAEO,iBAAyB;AAC9B,QAAI,IAAI,OAAO,CAAC;AAChB,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,WAAK,KAAK,UAAU,GAAG,eAAe;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,WAAN,MAAc;AAAA,EAOnB,YACS,MACA,KACA,QACP;AAHO;AACA;AACA;AAAA,EACN;AAAA,EARH,OAAc,EAAE,GAAW,KAAsB;AAC/C,WAAO,IAAI,SAAQ,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG;AAAA,EAC3C;AAAA,EAQO,IAAI,GAAqB;AAC9B,UAAM,IAAI,KAAK,KAAK;AACpB,UAAM,UAAU,IAAI,MAAc,CAAC;AACnC,QAAI,KAAK,WAAW,GAAG;AACrB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAQ,KAAK,KAAK,KAAK,EAAE,KAAK;AAAA,MAChC;AACA,aAAO,IAAI,SAAQ,SAAS,KAAK,KAAK,KAAK,MAAM;AAAA,IACnD,OAAO;AACL,YAAM,SAAS,IAAI,MAAc,CAAC;AAClC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAQ,KAAK,KAAK,KAAK,EAAE,KAAK;AAC9B,eAAO,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,IAAI,MAAM,KAAK;AAAA,MACtD;AACA,aAAO,IAAI,SAAQ,SAAS,QAAQ,KAAK,MAAM;AAAA,IACjD;AAAA,EACF;AAAA,EAEO,MAAe;AACpB,UAAM,IAAI,KAAK,KAAK;AACpB,UAAM,UAAU,IAAI,MAAc,CAAC;AACnC,UAAM,SAAS,IAAI,MAAc,CAAC;AAClC,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAQ,KAAK,KAAK,MAAM;AACxB,aAAO,KAAK,KAAK,OAAO,KAAK,SAAS,KAAK,IAAI,MAAM,KAAK;AAAA,IAC5D;AACA,WAAO,IAAI,SAAQ,SAAS,QAAQ,KAAK,MAAM;AAAA,EACjD;AAAA,EAEO,MAAM,GAAqB;AAChC,UAAM,IAAI,KAAK,KAAK;AACpB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,KAAK,KAAK,OAAO,EAAE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,IAAI,IAAI;AAC1D,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAGO,UAAgB;AACrB,UAAM,IAAI,KAAK,KAAK;AACpB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,WAAK,IAAI,KAAK;AAAA,IAChB;AACA,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEO,SAAe;AACpB,UAAM,IAAI,KAAK;AACf,QAAI,MAAM,GAAG;AACX,aAAO,IAAI,KAAK,KAAK,IAAI;AAAA,IAC3B;AACA,UAAM,IAAI,KAAK,KAAK;AACpB,UAAM,UAAU,IAAI,MAAc,IAAI,CAAC;AACvC,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,gBAAQ,IAAI,IAAI,KAAK,IAAI,KAAK,KAAK,MAAO,KAAK,IAAI,KAAK,KAAK;AAAA,MAC/D;AAAA,IACF;AACA,WAAO,IAAI,KAAK,OAAO;AAAA,EACzB;AAAA,EAGO,kBAA8B;AACnC,UAAM,OAAkB,CAAC;AACzB,UAAM,IAAI,KAAK,KAAK;AACpB,UAAM,IAAgB,CAAC;AACvB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAM,IAAI,KAAK,KAAK;AACpB,UAAI,KAAK,OAAO,QAAW;AACzB,cAAM,IAAc,CAAC,CAAC;AACtB,aAAK,KAAK;AACV,iBAAS,IAAI,IAAI,GAAG,IAAI,GAAG,KAAK;AAC9B,cAAI,KAAK,KAAK,OAAO,GAAG;AACtB,cAAE,KAAK,CAAC;AAAA,UACV;AAAA,QACF;AACA,UAAE,KAAK,CAAC;AAAA,MACV;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,QAAgB;AAErB,WAAO,KAAK,OAAO,EAAE,MAAM;AAAA,EAC7B;AAAA,EAEO,aAAsB;AAC3B,UAAM,IAAI,KAAK,KAAK;AACpB,QAAI,KAAK,SAAS,KAAK,CAAC,KAAK,KAAK,QAAQ,MAAM,CAAC,GAAG;AAClD,aAAO;AAAA,IACT;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,KAAK,KAAK,OAAO,KAAK,KAAK,IAAI,OAAO,GAAG;AAC3C,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,WAAoB;AAC1B,UAAM,IAAI,KAAK,KAAK;AACpB,QAAI,KAAK,QAAQ,MAAM,CAAC,GAAG;AACzB,aAAO;AAAA,IACT;AACA,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,KAAK,IAAI,OAAO,GAAG;AACrB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,MAAM,IAAc,IAAc,IAAqB;AAC5D,UAAM,UAAU,IAAI,MAAc,EAAE;AACpC,UAAM,SAAS,IAAI,MAAc,EAAE;AACnC,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,cAAQ,KAAK,GAAG,KAAK,KAAK,GAAG;AAC7B,aAAO,KAAK,KAAK,IAAI,GAAG;AAAA,IAC1B;AACA,WAAO,IAAI,SAAQ,SAAS,QAAQ,KAAK,MAAM;AAAA,EACjD;AAAA,EAEO,QAAQ,IAAc,IAAqB;AAChD,UAAM,UAAU,IAAI,MAAc,EAAE;AACpC,UAAM,SAAS,IAAI,MAAc,EAAE;AACnC,QAAI,UAAU;AACd,UAAM,WAAW,CAAC;AAClB,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAM,KAAK,KAAK,KAAK,GAAG;AACxB,UAAI,SAAS,QAAQ,QAAW;AAC9B,iBAAS,MAAM;AAAA,MACjB;AACA,cAAQ,KAAK,SAAS;AACtB,aAAO,KAAK,KAAK,IAAI,GAAG;AAAA,IAC1B;AACA,WAAO,IAAI,SAAQ,SAAS,QAAQ,KAAK,MAAM;AAAA,EACjD;AAAA,EAEO,iBACL,QACA,MACA,OACA,UAAmB,MACb;AACN,QAAI,WAAW,KAAK,WAAW,GAAG;AAChC;AAAA,IACF;AACA,WAAO,KAAK,IAAI;AAChB,WAAO,KAAK,KAAK,KAAK,IAAI,CAAC,MAAc,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC;AACzD,QAAI,CAAC,KAAK,SAAS,GAAG;AACpB,UAAI,OAAO;AACT,cAAM,SAAS,IAAI,MAAc,KAAK,IAAI,MAAM;AAChD,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,iBAAO,KAAK,KAAK,MAAM,KAAK,IAAI;AAAA,QAClC;AACA,eAAO,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,MAC9B,OAAO;AACL,eAAO,KAAK,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EAGO,YAAsC;AAC3C,UAAM,IAAI,KAAK,KAAK;AACpB,QAAI,KAAK,WAAW,GAAG;AACrB,UAAI,CAAC,SAAQ,OAAO,IAAI;AACtB,iBAAQ,OAAO,KAAK,EAAE,aAAa,KAAK,CAAC,GAAG,aAAa,MAAM,CAAC,EAAE;AAAA,MACpE;AACA,aAAO,SAAQ,OAAO;AAAA,IACxB,OAAO;AACL,aAAO,EAAE,aAAa,KAAK,MAAM,aAAa,KAAK,IAAI;AAAA,IACzD;AAAA,EACF;AACF;AA/LO,IAAM,UAAN;AAAM,QACI,SAAqC,CAAC;AA+LhD,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAmB,QAAmB;AAAnB;AAAA,EAAoB;AAAA,EAChC,YAAY,GAA+B;AAChD,UAAM,YAAuB,CAAC;AAC9B,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,gBAAU,KAAK,KAAK,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC;AAAA,IAChD;AACA,WAAO;AAAA,EACT;AAAA,EAEU,cAAyB;AACjC,UAAM,YAAuB,CAAC;AAC9B,eAAW,SAAS,KAAK,QAAQ;AAC/B,gBAAU,KAAK,MAAM,IAAI,CAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAAA,EAEO,MAAM,GAA6B;AACxC,aAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,UAAI,CAAC,KAAK,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;AACtC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEU,UAAgB;AACxB,eAAW,SAAS,KAAK,QAAQ;AAC/B,YAAM,QAAQ;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AAAA,EAEO,SAAe;AACpB,UAAM,QAAQ,IAAI,MAAY;AAC9B,QAAI,IAAI;AACR,eAAW,SAAS,KAAK,QAAQ;AAC/B,YAAM,IAAI,MAAM,OAAO;AACvB,YAAM,KAAK,CAAC;AACZ,WAAK,EAAE;AAAA,IACT;AACA,UAAM,UAAU,IAAI,MAAc,CAAC;AACnC,QAAI;AACJ,eAAW,KAAK,OAAO;AACrB,eAAS,IAAI,GAAG,IAAI,EAAE,GAAG,KAAK;AAC5B,gBAAQ,IAAI,KAAK,IAAI,EAAE,EAAE;AAAA,MAC3B;AACA,WAAK,EAAE;AAAA,IACT;AACA,WAAO,IAAI,KAAK,OAAO;AAAA,EACzB;AAAA,EAEO,kBAA8B;AACnC,UAAM,IAAgB,CAAC;AACvB,QAAI,IAAI;AACR,eAAW,SAAS,KAAK,QAAQ;AAC/B,YAAM,IAAI,MAAM;AAChB,YAAM,IAAI,MAAM,gBAAgB;AAChC,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAE,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;AAAA,MACnC;AACA,WAAK,IAAI,MAAM,KAAK;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AAAA,EAEO,QAAgB;AACrB,QAAI,IAAI;AACR,eAAW,SAAS,KAAK,QAAQ;AAC/B,UAAI,IAAI,GAAG,MAAM,MAAM,CAAC;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AACF;AACO,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAC/C,YAAY,QAAmB;AAC7B,UAAM,MAAM;AAAA,EACd;AAAA,EAEO,IAAI,GAA6B;AACtC,WAAO,IAAI,YAAY,KAAK,YAAY,CAAC,CAAC;AAAA,EAC5C;AAAA,EAEO,UAAU,GAAwB;AACvC,QAAI,MAAM,GAAG;AACX,aAAO,KAAK,EAAE;AAAA,IAChB;AACA,QAAI,IAAiB;AACrB,QAAI,IAAI,GAAG;AACT,UAAI,EAAE,IAAI;AACV,UAAI,CAAC;AAAA,IACP;AACA,YAAQ,IAAI,OAAO,GAAG;AACpB,UAAI,EAAE,IAAI,CAAC;AACX,YAAM;AAAA,IACR;AACA,QAAI,MAAM,GAAG;AACX,aAAO;AAAA,IACT;AACA,QAAI,IAAI;AACR,QAAI,IAAI,KAAK,EAAE;AACf,WAAO,IAAI,GAAG;AACZ,UAAI,IAAI,GAAG;AACT,YAAI,EAAE,IAAI,CAAC;AAAA,MACb;AACA,UAAI,IAAI,GAAG;AACT,YAAI,EAAE,IAAI,CAAC;AAAA,MACb;AACA,YAAM;AAAA,IACR;AACA,WAAO;AAAA,EACT;AAAA,EAEO,MAAmB;AACxB,WAAO,IAAI,YAAY,KAAK,YAAY,CAAC;AAAA,EAC3C;AAAA,EAEO,IAAiB;AACtB,WAAO,IAAI;AAAA,MACT,KAAK,OAAO,IAAI,CAAC,MAAe,QAAQ,EAAE,EAAE,KAAK,QAAQ,EAAE,MAAM,CAAC;AAAA,IACpE;AAAA,EACF;AACF;AACO,IAAM,eAAN,cAA2B,gBAAgB;AAAA,EAChD,YAAY,QAAmB;AAC7B,UAAM,MAAM;AAAA,EACd;AAAA,EAEO,IAAI,GAA8B;AACvC,WAAO,IAAI,aAAa,KAAK,YAAY,CAAC,CAAC;AAAA,EAC7C;AACF;AAEA,IAAM,gBAAN,MAAoB;AAAA,EAElB,YAAmB,GAAW;AAAX;AACjB,SAAK,QAAQ,IAAI,MAAc,CAAC;AAChC,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,WAAK,MAAM,KAAK;AAAA,IAClB;AAAA,EACF;AAAA,EAEO,KAAK,GAAmB;AAC7B,QAAI,IAAI,KAAK,MAAM;AACnB,QAAI,KAAK,MAAM,OAAO,GAAG;AACvB,aAAO;AAAA,IACT;AACA,QAAI,KAAK,KAAK,KAAK,MAAM,EAAE;AAC3B,SAAK,MAAM,KAAK;AAChB,WAAO;AAAA,EACT;AAAA,EAEO,MAAM,GAAW,GAAiB;AACvC,UAAM,KAAK,KAAK,KAAK,CAAC;AACtB,UAAM,KAAK,KAAK,KAAK,CAAC;AACtB,QAAI,KAAK,IAAI;AACX,WAAK,MAAM,MAAM;AAAA,IACnB,WAAW,KAAK,IAAI;AAClB,WAAK,MAAM,MAAM;AAAA,IACnB;AAAA,EACF;AACF;AACO,SAAS,UAAU,GAAgB,MAAiC;AAEzE,QAAM,IAAI,EAAE,QAAQ;AACpB,MAAI,IAAI,IAAI;AACV,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AACA,QAAM,SAAS,CAAC;AAChB,QAAM,WAAW,CAAC;AAClB,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,QAAQ,EAAE,QAAQ;AACxB,WAAO,KAAK,MAAM,MAAM,CAAC;AACzB,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,MAAM,GAAG;AACX;AAAA,MACF;AACA,YAAM,QAAQ,EAAE,QAAQ;AACxB,UAAI,MAAM,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,KAAK,CAAC,GAAG;AAC5C,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF;AACA,aAAS,KAAK,IAAI;AAAA,EACpB;AACA,MAAI,SAAc,CAAC;AACnB,SAAO,KAAK;AACZ,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAI,MAAM;AACV,UAAM,UAAe,CAAC;AACtB,QAAI,OAAO;AACX,eAAW,OAAO,QAAQ;AACxB,YAAM,KAAK,CAAC;AACZ,YAAM,MAAM,OAAO;AACnB,aAAO;AACP;AACA,eAAS,KAAK,GAAG,KAAK,OAAO,QAAQ,MAAM;AACzC,aACI,MAAM,KAAM,OAAO,MACpB,KAAK,SAAS,OAAQ,KAAK,MAAM,OAAQ,GAC1C;AACA,gBAAM,MAAO,KAAK,SAAS,MAAQ,KAAK;AACxC,cAAI,QAAQ,SAAS,QAAW;AAC9B,oBAAQ,OAAO;AAAA,UACjB;AACA,kBAAQ,SAAS,OAAO,MAAM,KAAK;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AACA,SAAK,GAAG,eAAe,cAAc,MAAM;AAC3C,aAAS;AAAA,EACX;AACF;;;AC/vBO,IAAM,YAAyD;AAAA,EACpE,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SAAS;AAAA,EACT,SACE;AAAA,EACF,YAAY;AAAA,EACZ,YACE;AAAA,EACF,YACE;AAAA,EACF,YACE;AAAA,EACF,YAAY;AAAA,EACZ,YACE;AAAA,EACF,YACE;AAAA,EACF,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,eAAe;AAAA,EACf,aAAa;AAAA,EACb,eAAe;AAAA,EACf,UAAU;AAAA,EACV,WAAW;AAAA,EACX,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EAEtB,UAAU;AAAA,EACV,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,UAAU;AAAA,EACV,wBAAwB;AAAA,EACxB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,uBAAuB;AAAA,EACvB,sBAAsB;AAAA,EACtB,8BAA8B;AAAA,EAC9B,0BAA0B;AAAA,EAC1B,kBAAkB;AACpB;;;ACvEA,IAAM,MAAM;AAEL,SAAS,eAAe,MAAoB;AAEjD,MAAI,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AAC3B,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAI,EAAE,IAAI,KAAK,EAAE;AAAA,EACnB;AACA,SAAO,EAAE,KAAK,IAAM,KAAK,MAAM;AACjC;AAEO,SAAS,iBACd,IACA,IACA,IACA,QACK;AAIL,QAAM,IAAI,OAAO,IAAI,WAAW,OAAO,KAAK,OAAO,GAAG;AACtD,MAAI,CAAC,GAAG;AACN,WAAO;AAAA,EACT;AACA,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,QAAI,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AACpC,YAAM,KAAK,OAAO,GAAG,IAAI,EAAE,IAAI,OAAO,GAAG,IAAI,EAAE,IAAI,OAAO,GAAG,IAAI,EAAE;AACnE,UACG,OAAO,GAAG,IAAI,KAAK,KAAK,OAAO,GAAG,KAClC,OAAO,GAAG,IAAI,KAAK,KAAK,OAAO,GAAG,GACnC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,OAAN,MAAW;AAAA,EAChB,YACS,GACA,GACA,GACA,GACP;AAJO;AACA;AACA;AACA;AAAA,EACN;AAAA,EAEI,IAAI,GAAe;AAExB,WAAO,IAAI;AAAA,MACT,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,MACxD,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,MACxD,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,MACxD,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,IAC1D;AAAA,EACF;AAAA,EAEO,WAAmB;AACxB,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,EACjD;AAAA,EAEO,KAAK,GAAiB;AAE3B,WAAO,KAAK,MAAM,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAAA,EAC1E;AAAA,EAEO,MAAc;AAEnB,WAAO,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,EAClD;AAAA,EAEO,MAAM,GAAe;AAE1B,WAAO,IAAI;AAAA,MACT;AAAA,MACA,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,MAC1B,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,MAC1B,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,IAC5B;AAAA,EACF;AAAA,EAEO,IAAI,GAAiB;AAE1B,WAAO,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,IAAI,EAAE;AAAA,EAClD;AAAA,EAEO,YAAkB;AAEvB,UAAM,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC;AAClC,WAAO,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;AAAA,EAChE;AAAA,EAEO,aAAmB;AAExB,WAAO,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,UAAU;AAAA,EACvD;AAAA,EAEO,iBAAuB;AAE5B,UAAM,IAAI,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAC3C,WAAO,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;AAAA,EAChE;AAAA,EAEO,KAAK,GAAiB;AAE3B,WAAO,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC;AAAA,EAChE;AAAA,EAEO,IAAI,GAAe;AAExB,WAAO,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAAA,EACxE;AAAA,EAEO,IAAI,GAAe;AAExB,WAAO,IAAI,KAAK,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAAA,EACxE;AAAA,EAEO,QAAgB;AAErB,WAAO,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,EAC7B;AAAA,EAEO,SAAe;AAEpB,WAAO,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;AAAA,EACnD;AAAA,EAEO,OACL,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACQ;AAER,WACE,OAAO,MAAM,MAAM,MAAM,OACzB,OAAO,MAAM,MAAM,MAAM,OACzB,OAAO,MAAM,MAAM,MAAM;AAAA,EAE7B;AAAA,EAEO,YAAY,GAAe;AAEhC,UAAM,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;AACnE,MAAE,IAAI,KAAK;AACX,WAAO;AAAA,EACT;AAAA,EAKO,aAAmB;AACxB,UAAM,KAAK,KAAK,IAAI,KAAK,CAAC;AAC1B,UAAM,KAAK,KAAK,IAAI,KAAK,CAAC;AAC1B,UAAM,KAAK,KAAK,IAAI,KAAK,CAAC;AAC1B,QAAI,KAAK,MAAM,KAAK,IAAI;AACtB,aAAO,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,UAAU;AAAA,IACpD,WAAW,KAAK,MAAM,KAAK,IAAI;AAC7B,aAAO,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,UAAU;AAAA,IACpD,OAAO;AACL,aAAO,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,UAAU;AAAA,IACpD;AAAA,EACF;AAAA,EAIO,cAAc,GAAe;AAClC,UAAM,IAAI,KAAK,UAAU;AACzB,QAAI,EAAE,UAAU;AAChB,QAAI,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,KAAK;AACxB,aAAO,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AAAA,IAC5B;AACA,QAAI,IAAI,EAAE,IAAI,CAAC;AACf,QAAI,EAAE,IAAI,IAAI,KAAK;AACjB,UAAI,EAAE,WAAW;AAAA,IACnB,OAAO;AACL,UAAI,EAAE,UAAU;AAAA,IAClB;AACA,UAAM,IAAI,EAAE,MAAM,CAAC;AACnB,MAAE,IAAI,EAAE,IAAI,CAAC;AACb,WAAO;AAAA,EACT;AAAA,EAIO,UAAU,GAAe;AAC9B,WAAO,KAAK,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;AAAA,EAC/D;AAAA,EAEO,YAAY,GAAe;AAEhC,WAAO,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;AAAA,EACnC;AAAA,EAEO,WAAW,MAAsB;AAEtC,WAAO,KAAK,IAAI,CAAC,MAAY,EAAE,YAAY,IAAI,CAAC;AAAA,EAClD;AAAA,EAEO,WAAW,IAAU,IAAwB;AAElD,UAAM,MAAM,KAAK;AAAA,MACf,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AACA,QAAI,KAAK,IAAI,GAAG,IAAI,KAAK;AACvB,aAAO;AAAA,IACT;AACA,WAAO,IAAI;AAAA,MACT;AAAA,MACA,KAAK,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IACpE;AAAA,MACF,KAAK,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IACpE;AAAA,MACF,KAAK,OAAO,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,IACpE;AAAA,IACJ;AAAA,EACF;AAAA,EAEO,KAAK,GAAmB;AAE7B,QAAI,IAAI,KAAK;AACX,aAAO;AAAA,IACT;AACA,QAAI,IAAI,CAAC,KAAK;AACZ,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAOO,QAAQ,MAA+B;AAC5C,UAAM,IAAI,KAAK;AACf,QAAI,OAAO;AACX,QAAI,IAAI;AACR,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAQ,KAAM,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI;AAAA,IACnD;AACA,SAAK,OAAO,OAAO,GAAG;AACpB,UAAI,CAAC;AAEL,YAAM,QAAQ,KAAK,IAAI,CAAC,MAAY,KAAK,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;AAC9D,eAAS,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG;AAC/B,cAAM,QAAQ,CAAC;AACf,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAI,MAAM,OAAO,KAAK,MAAM,OAAO,GAAG;AACpC,kBAAM,KAAK,KAAK,EAAE;AAAA,UACpB;AACA,gBAAM,MAAM,IAAI,KAAK,KAAK;AAC1B,cAAI,MAAM,KAAK,MAAM,QAAQ,KAAK,MAAM,OAAO,GAAG;AAChD,kBAAM,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI;AAC/B,kBAAM,MAAM,KAAK,IAAI,IAAI,IAAI,IAAI;AACjC,kBAAMC,KAAI,MAAM,KAAK;AACrB,kBAAM,KAAK,KAAK,GAAG,KAAK,IAAIA,EAAC,EAAE,IAAI,KAAK,IAAI,KAAKA,EAAC,CAAC;AACnD,kBAAM,KAAK,EAAE;AAAA,UACf;AAAA,QACF;AACA,UAAE,KAAK,KAAK;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,OAA2B;AAEzC,UAAM,SAAS,CAAC;AAChB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,OAAO,MAAM;AACnB,YAAM,IAAI,KAAK,QAAQ,IAAI;AAC3B,UAAI,GAAG;AACL,eAAO,KAAK,EAAE,EAAE;AAChB,eAAO,KAAK,EAAE,EAAE;AAAA,MAClB,OAAO;AACL,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,SAAS,MAAsB;AAEpC,UAAM,IAAI,KAAK;AACf,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,IAAI,KAAK,KAAK,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC;AACzC,UAAI,MAAM,GAAG;AACX,eAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAAA,EAEO,UAAU,GAAkB;AAEjC,UAAM,IAAI,KAAK,UAAU;AACzB,UAAM,IAAI,EAAE,UAAU;AACtB,WAAO,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,IAAI;AAAA,EACjD;AAAA,EAEO,QAAQ,GAAiB;AAE9B,WAAO,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,EAC3C;AACF;;;ACrTA,IAAMC,OAAM;AAEL,SAAS,OAAe;AAC7B,QAAM,KAAK,KAAK,KAAK,GAAG;AACxB,SAAO,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;AACxD;AAEO,SAAS,cAAsB;AACpC,SAAO,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,IAAI,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC;AACrE;AAEO,SAAS,eAAuB;AACrC,QAAM,MAAO,IAAI,KAAK,KAAM;AAC5B,MAAI,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAChC,MAAI,KAAK,MAAM,MAAM,KAAK,KAAK,CAAC;AAChC,QAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AACtC,QAAM;AACN,QAAM;AACN,SAAO;AAAA,IACL,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,IACjE,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC7B;AACF;AAEO,SAAS,cAAsB;AACpC,MAAI,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,MAAI,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI;AAChC,QAAM,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AACtC,QAAM;AACN,QAAM;AACN,QAAM,MAAO,IAAI,KAAK,KAAM;AAC5B,SAAO;AAAA,IACL,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,IACjE,IAAI,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,GAAG,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG,CAAC;AAAA,EACpE;AACF;AAEO,SAAS,aAAqB;AACnC,QAAM,KAAK,KAAK,KAAK,GAAG;AACxB,SAAO,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,EAAE,CAAC;AAC9D;AAEO,SAAS,QAAQ,GAAmB;AAKzC,QAAM,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;AAC/B,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,YAAM,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;AACxB,YAAM,QAAQ,GAAG,KAAK,EAAE;AACxB,UAAI,UAAU;AACd,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,YAAI,GAAG,KAAK,EAAE,EAAE,IAAIA,QAAO,MAAM,KAAK,EAAE,EAAE,IAAIA,MAAK;AACjD,oBAAU;AACV;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,SAAS;AACZ,UAAE,KAAK,EAAE;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,aAAa,GAAS,GAAmB;AAIvD,QAAM,SAAS,CAAC;AAChB,QAAM,WAAW,CAAC;AAClB,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,UAAM,KAAK,EAAE,YAAY,EAAE,EAAE;AAC7B,QAAI,UAAU;AACd,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,UAAI,GAAG,KAAK,OAAO,EAAE,IAAIA,MAAK;AAC5B,kBAAU;AACV;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,SAAS;AACZ,aAAO,KAAK,EAAE;AACd,eAAS,KAAK,EAAE,EAAE;AAAA,IACpB;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,QAAQ,QAAwB;AAM9C,QAAM,OAAe,CAAC;AACtB,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,aAAS,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAC1C,YAAM,IAAI,iBAAiB,GAAG,GAAG,GAAG,MAAM;AAC1C,UAAI,GAAG;AACL,YAAI,UAAU;AACd,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAI,EAAE,KAAK,KAAK,EAAE,IAAIA,MAAK;AACzB,sBAAU;AACV;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,SAAS;AACZ,eAAK,KAAK,CAAC;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,aAAS;AACP,QAAI,UAAU;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,KAAa,IAAI,KAAK,KAAK;AACjC,UAAI,OAAO,GAAG,IAAI,KAAK,GAAG,MAAM,KAAK,EAAE,CAAC,IAAI,GAAG;AAC7C,cAAM,IAAU,KAAK;AACrB,aAAK,KAAK,KAAK;AACf,aAAK,KAAK;AACV,kBAAU;AAAA,MACZ;AAAA,IACF;AACA,QAAI,CAAC,SAAS;AACZ;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;;;AC/IA,IAAM,iBAAN,MAAqB;AAAA,EAEnB,cAAc;AACZ,SAAK,OAAO,CAAC;AAAA,EACf;AAAA,EAEO,SAAS,GAAiB;AAC/B,aAAS,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK;AAC/B,aAAO,IAAI,MAAM,GAAG;AAClB,YAAI,WAAc,KAAK,KAAK,IAAI;AAC9B,eAAK,KAAK;AAAA,QACZ,OAAO;AACL,eAAK,KAAK,KAAK;AAAA,QACjB;AACA,aAAK;AAAA,MACP;AAAA,IACF;AACA,QAAI,IAAI,GAAG;AACT,UAAI,WAAc,KAAK,KAAK,IAAI;AAC9B,aAAK,KAAK;AAAA,MACZ,OAAO;AACL,aAAK,KAAK,KAAK;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAmB;AACxB,QAAI,IAAI;AACR,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,QAAQ,KAAK;AACzC,UAAI,WAAc,KAAK,KAAK,IAAI;AAC9B,YAAI,MAAM,IAAI;AACZ,eAAK;AAAA,QACP;AACA,aAAK;AACL,YAAI,KAAK,KAAK,KAAK,GAAG;AACpB,eAAK,IAAI,KAAK,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,aAAa,GAAW,MAAmC;AACzE,QAAM,IAAI,EAAE,GAAG,EAAE;AACjB,QAAM,IAAI,SAAS,CAAC;AACpB,MAAI,MAAgB,CAAC;AACrB,MAAI,OAAiB,CAAC;AACtB,MAAI,SAAqB,CAAC;AAC1B,MAAI,KAAe,CAAC;AACpB,MAAI,QAAoB,CAAC;AACzB,WAAS,QAAQ,GAAkB;AACjC,aAAS,IAAI,EAAE,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,YAAM,IAAI,EAAE,EAAE;AACd,UAAI,MAAM,GAAG;AACX,YAAI,CAAC,IAAI,GAAG,IAAI;AACd,iBAAO;AAAA,QACT;AACA,YAAI,EAAE,IAAI,KAAK,GAAG,EAAE;AAAA,MACtB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,OAAO,GAAW,GAAS,KAAmB;AACrD,OAAG,GAAG,KAAK,CAAC;AACZ,UAAM,GAAG,KAAK,GAAG;AACjB,aAAS,IAAI,GAAG,IAAI,IAAI,GAAG,QAAQ,KAAK;AACtC,UAAI,IAAI,GAAG,IAAI;AACb,eAAO,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,MAAM,OAAO,GAAG,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,WAAS,OAAO,GAAW,GAAS,KAAmB;AACrD,UAAM,IAAI,EAAE,EAAE;AACd,QAAI,CAAC,IAAI,GAAG,IAAI;AACd,UAAI,GAAG,KAAK;AACZ,WAAK,GAAG,KAAK,EAAE,IAAI;AACnB,aAAO,GAAG,KAAK;AACf,eAAS,IAAI,GAAG,IAAI,GAAG,GAAG,QAAQ,KAAK;AACrC,eAAO,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,MAAM,GAAG,EAAE;AAAA,MAC9C;AACA;AAAA,IACF;AACA,UAAM,KAAK,EAAE,IAAI,KAAK,GAAG,EAAE;AAC3B,QAAI,CAAC,QAAQ,EAAE,GAAG;AAChB,aAAO,IAAI,GAAG,IAAI,MAAM,OAAO,GAAG,EAAE;AAAA,IACtC;AAAA,EACF;AACA,WAAS,SAAiB;AACxB,UAAM,CAAC;AACP,WAAO,CAAC;AACR,SAAK,CAAC;AACN,aAAS,CAAC;AACV,YAAQ,CAAC;AACT,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,KAAK,CAAC,CAAC;AACX,WAAK,KAAK,CAAC,CAAC;AACZ,aAAO,KAAK,CAAC,CAAC;AACd,SAAG,KAAK,CAAC,CAAC;AACV,YAAM,KAAK,CAAC,CAAC;AACb,UAAI,GAAG,KAAK;AACZ,WAAK,GAAG,KAAK;AACb,aAAO,GAAG,KAAK;AAAA,IACjB;AACA,QAAI,OAAO;AACX,QAAI,KAAK,OAAO,CAAC;AACjB,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,aAAO,IAAI,GAAG,EAAE,IAAI,CAAC;AACrB,WAAK,OAAO,CAAC;AACb,UAAI,MAAM;AACV,UAAI,SAAS;AACb,YAAM,OAAO,CAAC;AACd,YAAM,QAAQ,IAAI,eAAe;AACjC,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,MAAM;AACV,YAAI,SAAS;AACb,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAI,IAAI,GAAG,IAAI;AACb;AACA,sBAAU,OAAO,GAAG;AACpB,gBAAI,MAAM,GAAG;AACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,GAAG,GAAG;AACb,cAAM,OAAO,GAAG;AAChB,YAAI,MAAM,GAAG;AACX,gBAAM,SAAS,GAAG;AAAA,QACpB;AACA,cAAM,MAAM,SAAS;AACrB,aAAK,KAAK,GAAG;AACb,kBAAU;AAAA,MACZ;AACA;AAAA,QACE,GAAG,SAAS,QAAQ,WAAW,eAAe,cAAc,MAAM,SAAS;AAAA,MAC7E;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAChB;;;AC/DA,SAAS,OAAO,GAAmB;AACjC,SAAO;AACT;AAEA,SAAS,KAAK,GAAiB;AAAC;AAEhC,IAAM,OAAN,MAAW;AAAA,EAGT,YAAY,GAAW;AACrB,SAAK,SAAS,IAAI,MAAM,EAAE,SAAS,CAAC;AACpC,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,WAAK,OAAO,IAAI,KAAK,EAAE,GAAG;AAC1B,WAAK,OAAO,IAAI,IAAI,KAAK,EAAE,GAAG;AAC9B,WAAK,OAAO,IAAI,IAAI,KAAK,EAAE,GAAG;AAAA,IAChC;AACA,SAAK,SAAS,EAAE;AAAA,EAClB;AAAA,EAEA,IAAI,KAAmB;AACrB,WAAO,IAAI;AAAA,MACT;AAAA,MACA,KAAK,OAAO,IAAI;AAAA,MAChB,KAAK,OAAO,IAAI,MAAM;AAAA,MACtB,KAAK,OAAO,IAAI,MAAM;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,aAAmB;AACjB,QAAI,KAAK;AACT,QAAI,KAAK;AACT,QAAI,KAAK;AACT,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAM,KAAK,OAAO,IAAI;AACtB,YAAM,KAAK,OAAO,IAAI,IAAI;AAC1B,YAAM,KAAK,OAAO,IAAI,IAAI;AAAA,IAC5B;AACA,WAAO,IAAI,KAAK,GAAG,KAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,KAAK,KAAK,MAAM;AAAA,EACzE;AAAA,EAEA,OAAO,GAAe;AACpB,UAAM,IAAI,CAAC;AACX,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAE,KAAK,KAAK,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAAA,IACnC;AACA,WAAO,IAAI,KAAK,CAAC;AAAA,EACnB;AAAA,EAEA,gBAAsB;AACpB,UAAM,IAAI,CAAC;AACX,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,QAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AAAA,IACpB;AACA,MAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AAClB,WAAO,IAAI,KAAK,CAAC;AAAA,EACnB;AACF;AAEO,IAAM,WAAN,MAAe;AAAA,EACpB,YACU,MACA,MACA,OACR;AAHQ;AACA;AACA;AAAA,EACP;AAAA,EAEI,MAAM,GAAmB;AAC9B,UAAM,IAAI,EAAE,QAAQ,KAAK,IAAI;AAC7B,QAAI,MAAM,MAAM;AACd,UAAI,KAAK,SAAS,QAAW;AAC3B,aAAK,OAAO,IAAI,SAAS,EAAE,EAAE;AAC7B,aAAK,QAAQ,IAAI,SAAS,EAAE,EAAE;AAAA,MAChC,OAAO;AACL,aAAK,OAAO,KAAK,MAAM,MAAM,CAAC;AAC9B,aAAK,QAAQ,KAAK,OAAO,MAAM,CAAC;AAAA,MAClC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,QAAQ,KAAa,WAA4B;AACtD,QAAI,KAAK,SAAS,QAAW;AAC3B,UAAI,KAAK,IAAI,KAAK,KAAK,IAAI,CAAC;AAAA,IAC9B,WAAW,WAAW;AACpB,WAAK,MAAM,QAAQ,KAAK,KAAK;AAC7B,WAAK,OAAO,QAAQ,KAAK,IAAI;AAAA,IAC/B,OAAO;AACL,WAAK,OAAO,QAAQ,KAAK,KAAK;AAC9B,WAAK,MAAM,QAAQ,KAAK,IAAI;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AACF;AAEO,SAAS,YAAY,MAAc,OAAuB;AAE/D,QAAM,SAAS,CAAC;AAChB,aAAW,OAAO,MAAM;AACtB,eAAW,QAAQ,OAAO;AACxB,aAAO,KAAK,KAAK,OAAO,GAAG,CAAC;AAAA,IAC9B;AAAA,EACF;AACA,SAAO;AACT;AAmBA,IAAMC,OAAc;AACpB,IAAM,YAAY;AAClB,IAAM,yBAAyB;AAuB/B,SAAS,cAAmB;AAC1B,SAAO;AAAA,IAEL,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IAExB,GAAG;AAAA,MACD,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,MACxB,CAAC,KAAK,KAAK,IAAI,KAAK,EAAE;AAAA,IACxB;AAAA,IAEA,GAAG;AAAA,MACD,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,MAAM,EAAE;AAAA,MACnB,CAAC,MAAM,KAAK,IAAI,IAAI;AAAA,MACpB,CAAC,MAAM,MAAM,KAAK,IAAI;AAAA,IACxB;AAAA,IAEA,IAAI;AAAA,MACF,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,EAAE;AAAA,MACzB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,MAC7B,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,EAAE;AAAA,MAC1B,CAAC,KAAK,KAAK,IAAI,MAAM,IAAI,EAAE;AAAA,MAC3B,CAAC,MAAM,KAAK,MAAM,MAAM,KAAK,GAAG;AAAA,IAClC;AAAA,IAEA,IAAI;AAAA,MACF,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,EAAE;AAAA,MAClB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACnB,CAAC,KAAK,KAAK,KAAK,EAAE;AAAA,IACpB;AAAA,EACF;AACF;AAGA,SAAS,gBAAqB;AAC5B,SAAO;AAAA,IAEL,GAAG,EAAE,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU;AAAA,IAC5D,GAAG;AAAA,MACD,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA,GAAG;AAAA,MACD,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,IACA,IAAI;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA,IAAI;AAAA,MACF,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AACF;AAUA,IAAM,sBAAsB;AAAA,EAC1B,GAAG;AAAA,IACD,GAAG,CAAC,OAAO,OAAO,OAAO,KAAK;AAAA,IAC9B,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,IACtC,GAAG,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EAC5B;AAAA,EACA,GAAG;AAAA,IACD,GAAG,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IAC1D,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,IAC1E,GAAG,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EACxC;AAAA,EACA,GAAG;AAAA,IACD,GAAG,CAAC,UAAU,QAAQ,UAAU,WAAW,SAAS,OAAO;AAAA,IAC3D,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG,CAAC,OAAO,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,KAAK;AAAA,EACxD;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,GAAG;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;AAYA,SAAS,sBAA6D;AACpE,SAAO;AAAA,IACL,GAAG;AAAA,MACD,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACjB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IACjB;AAAA,IACA,GAAG;AAAA,MACD,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACf,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IACjB;AAAA,IACA,GAAG;AAAA,MACD,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACf,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IACjB;AAAA,IACA,IAAI;AAAA,MACF,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACf,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IACjB;AAAA,IACA,IAAI;AAAA,MACF,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,MACnB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IACjB;AAAA,EACF;AACF;AAEA,SAAS,YAAY,GAAa,GAAiB;AAEjD,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAI,EAAE,GAAG,GAAG,KAAK,CAAC,IAAIA,MAAK;AACzB,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,IAAI,MAAM,mBAAmB;AACrC;AAEO,SAAS,sBAEd;AAEA,SAAO;AACT;AAEO,SAAS,2BACd,YACyB;AAEzB,SAAO,UAAU;AACnB;AAEO,IAAM,qBAAqB,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG;AAGnD,IAAM,mBAAmB,CAAC,KAAK,KAAK,GAAG;AASvC,SAAS,uBACd,GAC0B;AAE1B,QAAM,IAAI,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AACrC,MAAI,EAAE,SAAS,MAAM,GAAG;AACtB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,EAAE;AAChB,MACE,UAAU,OACV,UAAU,OACV,UAAU,OACV,UAAU,OACV,UAAU,KACV;AACA,WAAO;AAAA,EACT;AACA,QAAM,OAA+B,CAAC;AACtC,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,GAAG;AACpC,QAAI,EAAE,OAAO,OAAO,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAChD,aAAO;AAAA,IACT;AACA,SAAK,KAAK;AAAA,MACR,SAAS,EAAE;AAAA,MACX,UAAU,WAAW,EAAE,IAAI,EAAE;AAAA,IAC/B,CAAC;AAAA,EACH;AACA,SAAO,EAAE,OAAO,KAAK;AACvB;AAEO,SAAS,wBACd,MACA,UAAiC,CAAC,GAClB;AAChB,QAAM,SAAS,uBAAuB,IAAI;AAC1C,MAAI,WAAW,MAAM;AACnB,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AACA,QAAM,KAAK,IAAI;AAAA,IACb;AAAA,IACA,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,KAAK,GAA4B,OAAO;AAAA,EACxE;AACA,KAAG,YAAY;AACf,KAAG,SAAS;AACZ,SAAO;AACT;AAEO,SAAS,wBACd,YACA,SACgB;AAChB,SAAO,wBAAwB,UAAU,aAAa,OAAO;AAC/D;AAEA,SAAS,YACP,KACA,MACA,QACmB;AAInB,MAAI,WAAW;AACf,MAAI,SAAS,KAAK,KAAK,KAAK,IAAI;AAE9B,UAAM,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AACrC,WAAO,CAAC,SAAS,KAAK,IAAI,SAAS,KAAK,EAAE;AAC1C,eAAW;AAAA,EACb;AACA,MAAI,iBAAiB,IAAI;AACzB,MAAI,iBAAiB;AACrB,MAAI,KAAK,OAAO,KAAK,KAAK,OAAO,QAAQ;AACvC,qBAAiB,GAAG;AAAA,EACtB,WAAW,KAAK,OAAO,KAAK,IAAI;AAC9B,QAAI,KAAK,KAAK,GAAG;AACf,uBAAiB,OAAO,KAAK,KAAK,CAAC;AAAA,IACrC;AAAA,EACF,WAAW,KAAK,OAAO,GAAG;AACxB,qBAAiB,eAAe,YAAY;AAC5C,QAAI,KAAK,KAAK,GAAG;AACf,uBAAiB,OAAO,KAAK,KAAK,CAAC;AAAA,IACrC;AAAA,EACF,OAAO;AACL,UAAM,IAAI;AAAA,MACR,0DAA0D;AAAA,IAC5D;AAAA,EACF;AACA,SAAO,CAAC,iBAAiB,gBAAgB,QAAQ;AACnD;AAIA,SAAS,iBAAiB,GAAW,WAAyC;AAC5E,QAAM,IAAc,CAAC;AACrB,MAAI,KAAK;AACT,SAAO,KAAK,EAAE,QAAQ;AACpB,QAAI,KAAK,KAAK,KAAK,EAAE,UAAU,EAAE,QAAQ,KAAK;AAC5C;AAAA,IACF;AACA,QAAI,eAAe;AACnB,eAAW,YAAY,WAAW;AAChC,UACE,EAAE,OAAO,EAAE,EAAE,WAAW,SAAS,EAAE,KACnC,SAAS,GAAG,SAAS,aAAa,QAClC;AACA,uBAAe,SAAS;AAAA,MAC1B;AAAA,IACF;AACA,QAAI,iBAAiB,IAAI;AACvB,QAAE,KAAK,YAAY;AACnB,YAAM,aAAa;AAAA,IACrB,OAAO;AACL,YAAM,IAAI,MAAM,mBAAmB,oBAAoB;AAAA,IACzD;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,SAAS,GAAS,SAA2B;AACpD,SAAO,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,IAAI,SAAS,EAAE,IAAI,OAAO;AACtD;AAEA,SAAS,aAAa,GAAS,SAA2B;AACxD,QAAM,IAAI,CAAC;AACX,QAAM,IAAI,EAAE;AACZ,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,KAAK,SAAS,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,OAAO;AAC7C,MAAE,IAAI,KAAK,GAAG;AACd,MAAE,IAAI,IAAI,KAAK,GAAG;AAClB,MAAE,IAAI,IAAI,KAAK,GAAG;AAAA,EACpB;AACA,SAAO;AACT;AAGO,IAAM,iBAAN,MAAqB;AAAA,EA0D1B,YACS,mBACP,SACA;AAFO;AAvBT,SAAO,gBAA8B,CAAC;AAUtC,SAAQ,kBAA4B,CAAC;AACrC,SAAQ,mBAA6B,CAAC;AACtC,SAAQ,aAAqB;AAC7B,SAAQ,MAAkB,CAAC;AAC3B,SAAQ,SAAc,CAAC;AAEvB,SAAO,iBAAiC,IAAI,WAAW;AACvD,SAAQ,oBAA4B;AACpC,SAAQ,eAAwB;AAQ9B,UAAM,KAAK,OAAO,UAAU;AAC5B,SAAK,UAAU,IAAI,0BAA0B,OAAO;AACpD,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,KAAK,OAAO,IAAI,CAAC;AAAA,IAC/B;AACA,SAAK,OAAO,iBAAiB;AAC7B,SAAK,EAAE;AAAA,EACT;AAAA,EAEO,OAAO,mBAA4C;AACxD,UAAM,EAAE,OAAO,KAAK,IAAI;AAOxB,SAAK,aAAa,CAAC;AACnB,SAAK,cAAc,CAAC;AACpB,SAAK,QAAQ,CAAC;AACd,SAAK,SAAS,CAAC;AACf,QAAI,IAAI;AACR,YAAQ,OAAO;AAAA,MACb,KAAK,KAAK;AACR,YAAI,KAAK;AACT;AAAA,MACF;AAAA,MACA,KAAK,KAAK;AACR,YAAI,WAAW;AACf;AAAA,MACF;AAAA,MACA,KAAK,KAAK;AACR,YAAI,YAAY;AAChB;AAAA,MACF;AAAA,MACA,KAAK,KAAK;AACR,YAAI,YAAY;AAChB;AAAA,MACF;AAAA,MACA,KAAK,KAAK;AACR,YAAI,aAAa;AACjB;AAAA,MACF;AAAA,MACA;AACE,cAAM,IAAI,MAAM,uBAAuB,OAAO;AAAA,IAClD;AACA,SAAK,YAAY,QAAQ,CAAC;AAC1B,QAAI,KAAK,QAAQ,WAAW;AAC1B,cAAQ,IAAI,gBAAgB,KAAK,UAAU,QAAQ;AAAA,IACrD;AACA,UAAM,YAAY,EAAE;AACpB,SAAK,eAAe,aAAa,WAAW,KAAK,SAAS;AAC1D,UAAM,aAAa,KAAK,aAAa,IAAI,CAAC,MAAM,UAAU,YAAY,CAAC,CAAC;AACxE,SAAK,aAAa;AAClB,SAAK,gBAAgB,WAAW;AAChC,UAAM,MAAM,YAAY,EAAE,WAAW;AACrC,SAAK,MAAM;AACX,SAAK,SAAS,cAAc,EAAE,WAAW;AACzC,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,kBAAkB,WAAW,QAAQ;AAAA,IACnD;AACA,UAAM,WAAW,QAAQ,UAAU;AACnC,UAAM,OAAO,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC;AAChC,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,oBAAoB,SAAS,QAAQ;AAAA,IACnD;AACA,UAAM,aAAa,WAAW,GAAG,WAAW;AAC5C,UAAM,aAAa,SAAS,GAAG,IAAI,SAAS,EAAE,EAAE,WAAW;AAC3D,UAAM,eAAe,SAAS,GAAG,WAAW;AAC5C,UAAM,WAAW,IAAI,KAAK,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;AACrE,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,iBAAiB,UAAU;AAAA,IACzC;AACA,UAAM,WAAW,aAAa,UAAU,KAAK,SAAS;AACtD,UAAM,SAAS,SAAS,IAAI,CAAC,MAAM,SAAS,YAAY,CAAC,CAAC;AAC1D,UAAM,YAAY,QAAQ,MAAM;AAChC,SAAK,eAAe,UAAU,GAC3B,IAAI,UAAU,EAAE,EAChB,KAAK,GAAG,EACR,KAAK,IAAI;AACZ,SAAK,iBAAiB,UAAU,GAAG,KAAK,IAAI;AAC5C,UAAM,YAAY,CAAC;AACnB,UAAM,aAAa,CAAC;AACpB,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,YAAY;AAChB,eAAW,OAAO,MAAM;AACtB,UAAI,SAAS;AACb,UAAI,WAAW;AACf,cAAQ,IAAI,SAAS;AAAA,QACnB,KAAK,KAAK;AACR,mBAAS;AACT,qBAAW;AACX,oBAAU;AACV;AAAA,QACF;AAAA,QACA,KAAK,KAAK;AACR,mBAAS;AACT,qBAAW,KAAK;AAChB,sBAAY;AACZ;AAAA,QACF;AAAA,QACA,KAAK,KAAK;AACR,mBAAS;AACT,qBAAW,KAAK;AAChB,oBAAU;AACV;AAAA,QACF;AAAA,QACA;AACE,gBAAM,IAAI,MAAM,qBAAqB,IAAI,SAAS;AAAA,MACtD;AACA,gBAAU,KAAK,OAAO,QAAQ,IAAI,QAAQ,CAAC;AAC3C,iBAAW,KAAK,IAAI,WAAW,QAAQ;AAAA,IACzC;AACA,QAAI,KAAK,QAAQ,cAAc;AAC7B,UAAI,CAAC,SAAS;AACZ,kBAAU,KAAK,WAAW,QAAQ,EAAE,CAAC;AAAA,MACvC;AACA,UAAI,CAAC,WAAW;AACd,kBAAU,KAAK,aAAa,QAAQ,EAAE,CAAC;AAAA,MACzC;AACA,UAAI,CAAC,SAAS;AACZ,kBAAU,KAAK,WAAW,QAAQ,EAAE,CAAC;AAAA,MACvC;AAAA,IACF;AACA,SAAK,YAAY,CAAC;AAClB,eAAW,gBAAgB,KAAK,cAAc;AAC5C,YAAM,OAAO,aAAa,WAAW,SAAS;AAC9C,WAAK,UAAU,KAAK,IAAI,KAAK,IAAI,CAAC;AAAA,IACpC;AASA,UAAM,YAAgC,CAAC;AACvC,UAAM,aAA+B,CAAC;AACtC,UAAM,cAAqB,CAAC;AAC5B,UAAM,YAAmB,CAAC;AAC1B,UAAM,eAAe,UAAU;AAC/B,aAAS,iBAAiB,GAAU,GAAS,MAAiB;AAC5D,iBAAW,MAAM,GAAG;AAClB,YAAI,GAAG,GAAG,KAAK,CAAC,IAAIA,MAAK;AACvB,aAAG,KAAK,IAAI;AACZ;AAAA,QACF;AAAA,MACF;AACA,QAAE,KAAK,CAAC,GAAG,IAAI,CAAC;AAAA,IAClB;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,KAAK;AACjD,YAAM,OAAO,KAAK,aAAa,GAAG,WAAW,SAAS;AACtD,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,MAAM,IAAI,KAAK,KAAK;AAC1B,cAAM,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG,EAAE,KAAK,GAAG;AAC/C,yBAAiB,WAAW,UAAU,CAAC;AAAA,MACzC;AAAA,IACF;AACA,UAAM,aAAa,CAAC;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,KAAK;AACjD,YAAM,OAAO,KAAK,aAAa,GAAG,WAAW,SAAS;AACtD,YAAM,WAAW,CAAC;AAClB,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,MAAM,IAAI,KAAK,KAAK;AAC1B,cAAM,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG,EAAE,KAAK,GAAG;AAC/C,cAAM,KAAK,UAAU,YAAY,WAAW,QAAQ;AACpD,YAAI,MAAM,GAAG,IAAI;AACf,mBAAS,KAAK,GAAG,EAAE;AAAA,QACrB,WAAW,MAAM,GAAG,IAAI;AACtB,mBAAS,KAAK,GAAG,EAAE;AAAA,QACrB,OAAO;AACL,gBAAM,IAAI,MAAM,qBAAqB;AAAA,QACvC;AAAA,MACF;AACA,iBAAW,KAAK,QAAQ;AAAA,IAC1B;AACA,UAAM,kBAAuB,CAAC;AAC9B,UAAM,kBAA4B,CAAC;AACnC,oBAAgB,KAAK,IAAI,GAAG,EAAE;AAC9B,oBAAgB,IAAI,GAAG,MAAM;AAC7B,oBAAgB,WAAW,GAAG,MAAM,IAAI,GAAG;AAC3C,oBAAgB,IAAI,GAAG,MAAM,WAAW,GAAG;AAC3C,eAAW,QAAQ,KAAK;AACtB,YAAM,KAAK,KAAK;AAChB,YAAM,KAAK,gBAAgB;AAC3B,UAAI,OAAO,QAAW;AACpB,cAAM,IAAI,MAAM,gDAAgD;AAAA,MAClE;AACA,UAAI,KAAK;AACT,eAAS,IAAI,GAAG,IAAI,WAAW,IAAI,QAAQ,KAAK;AAC9C,cAAM,MAAM,gBAAgB,WAAW,IAAI;AAC3C,YAAI,QAAQ,UAAa,QAAQ,KAAK,IAAI;AACxC,eAAK;AACL;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,GAAG;AACV,cAAM,IAAI,MAAM,kCAAkC;AAAA,MACpD;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,YAAI,KAAK,OAAO,IAAI;AAClB;AAAA,QACF;AACA,cAAM,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK;AACzC,cAAM,MAAM,gBAAgB;AAC5B,YAAI,QAAQ,UAAa,QAAQ,KAAK,IAAI;AACxC,gBAAM,IAAI,MAAM,sBAAsB;AAAA,QACxC;AACA,wBAAgB,MAAM,KAAK;AAC3B,wBAAgB,KAAK,MAAM;AAAA,MAC7B;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,KAAK;AACjD,YAAM,OAAO,KAAK,aAAa,GAAG,WAAW,SAAS;AACtD,YAAM,YAAY,SAAS,YAAY,KAAK,aAAa,EAAE;AAC3D,YAAM,WAAW,gBAAgB;AACjC,gBAAU,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC/B,iBAAW,KAAK,CAAC,WAAW,QAAQ,CAAC;AAAA,IACvC;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,KAAK;AACjD,YAAM,OAAO,KAAK,aAAa,GAAG,WAAW,SAAS;AACtD,YAAM,WAAW,gBAAgB;AACjC,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,MAAM,IAAI,KAAK,KAAK;AAC1B,cAAM,WAAW,KAAK,GAAG,IAAI,KAAK,GAAG,EAAE,KAAK,GAAG;AAC/C,cAAM,OAAO,IAAI,KAAK,KAAK;AAC3B,cAAM,YAAY,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,KAAK,GAAG;AAClD,cAAM,KAAK,YAAY,WAAW,QAAQ;AAC1C,cAAM,KAAK,YAAY,WAAW,SAAS;AAC3C,yBAAiB,aAAa,KAAK,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;AAAA,MAC5D;AAAA,IACF;AACA,SAAK,WAAW,IAAI,iBAAiB,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAC/D,UAAM,MAAM,KAAK,SAAS,aAAa,KAAK;AAE5C,UAAM,UAAU,oBAAoB,KAAK;AACzC,UAAM,aAAa,CAAC;AACpB,aAAS,IAAI,GAAG,IAAI,KAAK,eAAe,KAAK;AAC3C,iBAAW,KAAK,KAAK;AAAA,IACvB;AAEA;AACE,YAAM,WAAW,QAAQ;AACzB,iBAAW,QAAQ,UAAU;AAC3B,cAAM,KAAK,KAAK,SAAS,iBAAiB,IAAI;AAC9C,YAAI,OAAO;AACX,mBAAW,KAAK,IAAI;AAClB,kBAAQ,KAAK;AAAA,QACf;AACA,mBAAW,QAAQ,GAAG;AAAA,MACxB;AAAA,IACF;AACA;AACE,YAAM,WAAW,QAAQ;AACzB,iBAAW,QAAQ,UAAU;AAC3B,cAAM,KAAK,KAAK,SAAS,iBAAiB,IAAI;AAC9C,YAAI,OAAO;AACX,mBAAW,KAAK,IAAI;AAClB,kBAAQ,KAAK;AAAA,QACf;AACA,mBAAW,QAAQ,GAAG;AAAA,MACxB;AAAA,IACF;AACA;AACE,YAAM,WAAW,QAAQ;AACzB,iBAAW,QAAQ,UAAU;AAC3B,cAAM,KAAK,KAAK,SAAS,iBAAiB,IAAI;AAC9C,cAAM,OAAQ,KAAK,GAAG,KAAO,KAAK,KAAK;AACvC,mBAAW,QAAQ,GAAG;AAAA,MACxB;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,UAAI,UAAU,GAAG,WAAW,GAAG;AAC7B,cAAM,IAAI,MAAM,4BAA4B,UAAU,IAAI;AAAA,MAC5D;AACA,YAAM,KAAK,UAAU,GAAG;AACxB,YAAM,KAAK,UAAU,GAAG;AACxB,UAAI,KAAK,gBAAgB;AACzB,YAAM,KAAK,gBAAgB;AAC3B,YAAM,OAAQ,KAAK,KAAO,KAAK;AAC/B,UAAI,WAAW,UAAU,IAAI;AAC3B,aAAK,KAAK,MAAM;AAAA,MAClB,OAAO;AACL,aAAK,KAAK,MAAM;AAAA,MAClB;AACA,gBAAU,KAAK,CAAC,UAAU,GAAG,IAAI,EAAE;AAAA,IACrC;AAEA,aAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,UAAI,OAAO;AACX,UAAI,YAAY,GAAG,SAAS,GAAG;AAC7B,cAAM,IAAI,MAAM,4BAA4B;AAAA,MAC9C;AACA,eAAS,IAAI,GAAG,IAAI,YAAY,GAAG,QAAQ,KAAK;AAC9C,gBAAQ,KAAK,gBAAgB,YAAY,GAAG,GAAG;AAAA,MACjD;AACA,YAAM,KAAK,WAAW;AACtB,UAAI,KAAK;AACT,eAAS,IAAI,GAAG,IAAI,YAAY,GAAG,QAAQ,KAAK;AAC9C,YAAI,OAAO,gBAAgB,YAAY,GAAG,GAAG,KAAK;AAChD,eAAK;AAAA,QACP;AAAA,MACF;AACA,UAAI,KAAK,GAAG;AACV,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AACA,UAAI,IAAI;AACR,eAAS,IAAI,GAAG,IAAI,YAAY,GAAG,QAAQ,KAAK;AAC9C,YAAI,MAAM,GAAG;AACX,cAAI,YAAY,GAAG,IAAI;AAAA,QACzB,OAAO;AACL,cAAI,IAAI,MAAM,YAAY,GAAG,IAAI;AAAA,QACnC;AACA,iBAAS,IAAI,GAAG,IAAI,YAAY,GAAG,QAAQ,KAAK;AAC9C,cAAI,YAAY,GAAG,IAAI,OAAO,YAAY,GAAG,GAAG,IAAI;AAClD,iBAAK;AACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,kBAAY,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAAA,IACxC;AACA,SAAK,aAAa;AAClB,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,iBAAiB,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,GAAG;AAEnE,cAAQ,IAAI,iBAAiB,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,GAAG;AAEnE,cAAQ,IAAI,mBAAmB,YAAY,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,GAAG;AAAA,IACzE;AACA,UAAM,aAAuC,CAAC;AAC9C,eAAW,aAAa,YAAY;AAClC,iBAAW,KAAK,CAAC,UAAU,GAAG,WAAW,GAAG,UAAU,IAAI,GAAG,CAAC;AAAA,IAChE;AACA,eAAW,YAAY,WAAW;AAChC,iBAAW,KAAK,CAAC,SAAS,GAAG,WAAW,GAAG,SAAS,IAAI,GAAG,CAAC;AAAA,IAC9D;AACA,eAAW,cAAc,aAAa;AACpC,iBAAW,KAAK,CAAC,WAAW,GAAG,WAAW,GAAG,WAAW,IAAI,GAAG,CAAC;AAAA,IAClE;AACA,SAAK,YAAY;AACjB,SAAK,aAAa;AAClB,SAAK,YAAY;AACjB,SAAK,cAAc;AACnB,SAAK,aAAa;AAClB,UAAM,iBAAiB,WAAW,IAAI,CAAC,MAAM,EAAE,EAAE;AACjD,SAAK,SAAS,aAAa,cAAc;AACzC,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ;AAAA,QACN,qBAAqB,UAAU,KAAK,uBAClC,KAAK;AAAA,MAET;AAAA,IACF;AAEA,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,iBAAW,YAAY,KAAK,WAAW;AACrC,cAAM,IAAI,UAAU,GAAG,YAAY,QAAQ;AAC3C,YAAI,UAAU;AACd,mBAAW,aAAa,KAAK,YAAY;AACvC,cAAI,EAAE,UAAU,SAAS,GAAG;AAC1B,sBAAU;AACV;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,SAAS;AACZ,eAAK,WAAW,KAAK,CAAC;AACtB,cAAI,WAAW,IAAI;AACjB,iBAAK,YAAY,KAAK,CAAC;AAAA,UACzB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,IAAI,SAAS,SAAS;AAC/B,UAAM,MAAM,KAAK,YAAY,MAAM;AAMnC,QAAI,OAAO;AACX,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAM,IAAI,IAAI,KAAK,OAAO,IAAI,SAAS,MAAM,OAAO,MAAQ;AAC5D,WAAK,GAAG,MAAM,IAAI,EAAE;AACpB,UAAI,KAAK,IAAI;AACb,cAAQ,OAAO,OAAO,OAAO;AAAA,IAC/B;AACA,UAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,IAAI;AACjC,SAAK,QAAQ;AACb,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,kBAAkB,MAAM,QAAQ;AAAA,IAC9C;AACA,SAAK,kBAAkB,MAAM;AAK7B,UAAM,YAAoB,CAAC;AAC3B,UAAM,KAAK,eAAe,SAAS;AACnC,eAAW,YAAY,KAAK,WAAW;AACrC,YAAM,IAAI,SAAS,WAAW,SAAS;AACvC,UAAI,GAAG,KAAK,eAAe,CAAC,CAAC,IAAIA,MAAK;AACpC,kBAAU,KAAK,QAAQ;AAAA,MACzB;AAAA,IACF;AACA,UAAM,WAAW,IAAI,MAAe,MAAM,MAAM;AAChD,UAAM,SAAmC,CAAC;AAC1C,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,MAAM,MAAM,GAAG,WAAW;AAChC,aAAO,KAAK,CAAC,GAAG,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,IACpC;AACA,WAAO,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE;AACjC,aAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM;AACxC,YAAM,IAAI,OAAO,IAAI;AACrB,UAAI,CAAC,SAAS,IAAI;AAChB,iBAAS,KAAK;AACd,mBAAW,OAAO,WAAW;AAC3B,gBAAM,KAAK,MAAM,GAAG,OAAO,GAAG;AAC9B,gBAAMC,MAAK,GAAG,WAAW;AACzB,mBAAS,KAAK,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM;AAC7C,gBAAI,OAAO,IAAI,KAAK,OAAO,IAAI,KAAKD,MAAK;AACvC;AAAA,YACF;AACA,kBAAM,IAAI,OAAO,IAAI;AACrB,gBAAI,CAAC,SAAS,MAAMC,IAAG,KAAK,OAAO,IAAI,EAAE,IAAID,MAAK;AAChD,uBAAS,KAAK;AACd,oBAAM,KAAK;AACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,SAAK,YAAY;AACjB,eAAW,QAAQ,OAAO;AACxB,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,KAAK,IAAI,KAAK,KAAK;AACzB,cAAM,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AACtC,YAAI,IAAI,KAAK,WAAW;AACtB,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACA,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,mBAAmB,KAAK,WAAW;AAAA,IACjD;AAEA,QAAI,UAAU,OAAO,WAAW,CAAC,WAAW,CAAC,WAAW;AAGtD,WAAK,oBAAoB;AAEzB,WAAK,eAAe;AAAA,IACtB;AACA,QAAI,UAAU,OAAO,aAAa,CAAC,WAAW,CAAC,SAAS;AACtD,WAAK,oBAAoB;AAAA,IAC3B;AACA,QAAI,UAAU,QAAQ,aAAa,YAAY,CAAC,SAAS;AACvD,WAAK,oBAAoB;AAAA,IAC3B;AACA,QAAI,UAAU,OAAO,SAAS;AAC5B,WAAK,iBAAiB,IAAI;AAAA,QACxB,KAAK;AAAA,QACL,IAAI,iBAAiB,CAAC,KAAK,KAAK,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG,CAAC;AAAA,MACjE;AACA,UAAI,EAAE,WAAW,YAAY;AAC3B,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AACA,QAAI,UAAU,OAAO,SAAS;AAC5B,WAAK,oBAAoB;AACzB,WAAK,iBAAiB,IAAI;AAAA,QACxB,KAAK;AAAA,QACL,IAAI,iBAAiB;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,QAAQ,MAAoB;AAClC,WAAO,KAAK,SAAS,KAAK,WAAW,CAAC;AAAA,EACxC;AAAA,EAEQ,SAAS,IAAkB;AAEjC,QAAI,IAAI;AACR,UAAM,OAAO,OAAO;AACpB,eAAW,gBAAgB,KAAK,eAAe;AAC7C,UAAI,aAAa,SAAS,GAAG;AAC3B,cAAM,KAAK,GAAG,IAAI,aAAa,EAAE;AACjC,YAAI,IAAI;AACR,YAAI,IAAI;AACR,eAAO,IAAI,KAAK,aAAa,QAAQ;AACnC,eAAK;AAAA,QACP;AACA,eAAO,IAAI,GAAG,MAAM,GAAG;AACrB,cAAI,IAAI,KAAK,aAAa,UAAU,KAAK,aAAa,IAAI,IAAI,GAAG,GAAG;AAClE,iBAAK;AAAA,UACP;AAAA,QACF;AACA,YAAI,IAAI,IAAI;AACV,cAAI,IAAI,KAAK,KAAK,CAAC;AAAA,QACrB,WAAW,IAAI,KAAK,KAAK,IAAI;AAC3B,cAAI,IAAI,KAAK,KAAK,KAAK,KAAK,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAM,IAAI,EAAG;AAAA,QACrE,WAAW,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI;AAC1C,cACE,IACA,KAAK,KAAK,KAAK,KAAK,OAAO,IAAI,OAAO,KAAK,MAAM,CAAC,CAAC,IACnD,KAAK,KAAK,KAAM,KAAK,OAAO,IAAI,MAAM,EAAE,IAAI,EAAG,IAC/C,KAAK,KAAM,IAAI,EAAG;AAAA,QACtB,OAAO;AACL,gBAAM,MAAM,oCAAoC;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAIQ,SAAS,MAAsB;AACrC,UAAM,KAAK,KAAK,WAAW;AAE3B,UAAM,IAAI,CAAC;AACX,eAAW,gBAAgB,KAAK,eAAe;AAC7C,UAAI,aAAa,SAAS,GAAG;AAC3B,cAAM,KAAK,GAAG,IAAI,aAAa,EAAE;AACjC,YAAI,IAAI;AACR,YAAI,IAAI;AACR,eAAO,IAAI,KAAK,aAAa,QAAQ;AACnC,eAAK;AAAA,QACP;AACA,eAAO,IAAI,GAAG,MAAM,GAAG;AACrB,cAAI,IAAI,KAAK,aAAa,UAAU,KAAK,aAAa,IAAI,IAAI,GAAG,GAAG;AAClE,iBAAK;AAAA,UACP;AAAA,QACF;AACA,UAAE,KAAK,CAAC;AAAA,MACV;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,SAAS,IAAkB;AACjC,UAAM,MAAM,KAAK,SAAS,EAAE;AAC5B,UAAM,MAAM,KAAK,aAAa,IAAI,GAAG;AACrC,QAAI,IAAI,WAAW,GAAG;AACpB,aAAO,IAAI;AAAA,IACb;AACA,aAAS,IAAI,GAAG,IAAI,IAAI,IAAI,QAAQ,KAAK;AACvC,YAAM,QAAQ,KAAK,aAAa,IAAI,GAAG,EAAG;AAC1C,UAAI,KAAK,IAAI,GAAG,KAAK,KAAK,eAAe,MAAM,CAAC,IAAIA,MAAK;AACvD,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,IAAI,IAAI,SAAS;AAAA,EAC1B;AAAA,EAEQ,UACN,OACA,OACA,SACoB;AAKpB,UAAM,OAAO,KAAK,UAAU,OAAO;AACnC,UAAM,UAAU,QAAQ,KAAK,KAAK;AAClC,UAAM,QAAQ,KAAK,WAAW;AAC9B,QAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,MAAM;AACrC,UAAM,OAAO,GAAG,IAAI;AACpB,SAAK,GAAG,UAAU;AAClB,UAAM,KAAK,GAAG,MAAM,KAAK,EAAE,UAAU;AACrC,QAAI,QAAQ,QAAQ,GAAG,IAAI,QAAQ,EAAE;AACrC,UAAM,MAAM,MAAM,IAAI,IAAI;AAC1B,YAAQ,MAAM,UAAU;AACxB,UAAM,OAAO,MAAM;AACnB,UAAM,OAAO,MAAM;AACnB,UAAM,KAAK,GAAG,KAAK,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG;AACpD,UAAM,KAAK,GAAG,KAAK,IAAI,EAAE,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG;AACpD,UAAM,MAAM,IAAI;AAAA,MACd;AAAA,MACA,QAAQ,GAAG,IAAI,GAAG,IAAI,KAAK,MAAM;AAAA,MACjC,QAAQ,GAAG,IAAI,GAAG,IAAI,KAAK,MAAM;AAAA,MACjC;AAAA,IACF;AACA,WAAO,CAAC,IAAI,IAAI,GAAG;AAAA,EACrB;AAAA,EAEO,cAAoB;AACzB,UAAM,KAAK,OAAO,aAAa;AAK/B,SAAK,QAAQ,YAAY,KAAK,cAAc,KAAK,KAAK;AACtD,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,2BAA2B,KAAK,MAAM,QAAQ;AAAA,IAC5D;AACA,SAAK,iBAAiB,IAAI,MAAM,KAAK,MAAM,MAAM;AACjD,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,WAAK,eAAe,KAAK,KAAK,MAAM,GAAG,WAAW;AAAA,IACpD;AAEA,UAAM,gBAA0B,CAAC;AACjC,UAAM,mBAA2B,CAAC;AAElC,eAAW,KAAK,KAAK,YAAY;AAC/B,YAAM,UAAU,EAAE,WAAW;AAC7B,UAAI,UAAU;AACd,iBAAW,mBAAmB,kBAAkB;AAC9C,YAAI,QAAQ,UAAU,gBAAgB,WAAW,CAAC,GAAG;AACnD,oBAAU;AAAA,QACZ;AAAA,MACF;AACA,UAAI,CAAC,SAAS;AACZ,yBAAiB,KAAK,OAAO;AAC7B,sBAAc,KAAK,CAAC,CAAC;AAAA,MACvB;AAAA,IACF;AACA,eAAW,KAAK,KAAK,aAAa;AAChC,YAAM,UAAU,EAAE,WAAW;AAC7B,eAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK;AAChD,YAAI,QAAQ,UAAU,iBAAiB,EAAE,GAAG;AAC1C,wBAAc,GAAG,KAAK,CAAC;AACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,YAAM,IAAY,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC;AAChE,YAAM,aAAa,iBAAiB;AACpC,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,YAAI,EAAE,GAAG,WAAW,EAAE,KAAK,UAAU,IAAIA,MAAK;AAC5C,YAAE,KAAK,EAAE,GAAG,KAAK,EAAE;AAAA,QACrB;AAAA,MACF;AACA,QAAE,KAAK,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,oBAAc,KAAK;AAAA,IACrB;AACA,SAAK,gBAAgB;AACrB,SAAK,mBAAmB;AACxB,UAAM,QAAQ,cAAc,IAAI,CAAC,MAAM,EAAE,MAAM;AAC/C,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,sBAAsB,OAAO;AAAA,IAC3C;AAEA,UAAM,gBAA0B,CAAC;AACjC,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,oBAAc,KAAK,CAAC,CAAC;AAAA,IACvB;AACA,eAAW,KAAK,KAAK,WAAW;AAC9B,UAAI,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,IAAIA,MAAK;AACrC;AAAA,MACF;AACA,YAAM,UAAU,EAAE,WAAW;AAC7B,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,YAAI,QAAQ,UAAU,iBAAiB,EAAE,GAAG;AAC1C,wBAAc,GAAG,KAAK,CAAC;AACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,SAAK,gBAAgB;AAIrB,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,YAAM,IAAI,cAAc;AACxB,YAAM,aAAa,EAAE,GAAG,WAAW;AACnC,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,YAAI,WAAW,KAAK,EAAE,GAAG,WAAW,CAAC,IAAIA,MAAK;AAC5C,YAAE,KAAK,EAAE,GAAG,KAAK,EAAE;AAAA,QACrB;AAAA,MACF;AACA,QAAE,KAAK,CAAC,GAAG,MAAM,EAAE,MAAM,IAAI,EAAE,MAAM,CAAC;AACtC,UAAI,cAAc,GAAG,GAAG,IAAI,iBAAiB,EAAE,IAAI,GAAG;AACpD,UAAE,QAAQ;AAAA,MACZ;AAAA,IACF;AACA,UAAM,SAAS,cAAc,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM;AACpD,SAAK,gBAAgB;AACrB,UAAM,cAA0D,CAAC;AACjE,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,YAAM,KAAK,iBAAiB;AAC5B,UAAI,MAAM;AACV,UAAI,MAAM;AACV,iBAAW,aAAa,KAAK,YAAY;AACvC,cAAM,IAAI,GAAG,IAAI,UAAU,EAAE;AAC7B,YAAI,KAAK,IAAI,IAAI,CAAC,IAAIA,MAAK;AACzB,gBAAM,CAAC,UAAU,IAAI,UAAU,EAAE;AACjC,kBAAQ,UAAU;AAAA,QACpB,WAAW,KAAK,IAAI,IAAI,CAAC,IAAIA,MAAK;AAChC,gBAAM,CAAC,UAAU,IAAI,UAAU,EAAE;AACjC,kBAAQ,UAAU;AAAA,QACpB;AAAA,MACF;AACA,UAAI,QAAQ,QAAQ,QAAQ,MAAM;AAChC,cAAM,IAAI,MAAM,wCAAwC;AAAA,MAC1D;AACA,kBAAY,KAAK;AAAA,QACf,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI,cAAc,GAAG;AAAA,MACvB,CAAC;AACD,UAAI,KAAK,sBAAsB,qBAAqB,UAAU,KAAK;AACjE,aAAK,iBAAiB,IAAI,gBAAgB,IAAI,cAAc,GAAG,MAAM;AACrE,aAAK,oBAAoB;AAAA,MAC3B;AACA,UACE,KAAK,sBAAsB,iBAC3B,cAAc,GAAG,WAAW,GAC5B;AACA,aAAK,iBAAiB,IAAI,oBAAoB,KAAK,QAAQ;AAC3D,aAAK,oBAAoB;AAAA,MAC3B;AACA,UAAI,KAAK,sBAAsB,6BAA6B;AAC1D,YACE,cAAc,GAAG,WAAW,KAC5B,cAAc,GAAG,GAAG,MAAM,qBAC1B,cAAc,GAAG,GAAG,MAAM,kBAC1B;AACA,eAAK,iBAAiB,IAAI,uBAAuB,KAAK,QAAQ;AAC9D,eAAK,oBAAoB;AAAA,QAC3B,OAAO;AACL,eAAK,iBAAiB,IAAI,wBAAwB,KAAK,QAAQ;AAC/D,eAAK,oBAAoB;AAAA,QAC3B;AAAA,MACF;AACA,UAAI,KAAK,sBAAsB,oBAAoB,UAAU,KAAK;AAChE,YAAI,IAAI,cAAc,GAAG,WAAW,GAAG;AACrC,eAAK,iBAAiB,IAAI;AAAA,YACxB,KAAK;AAAA,UACP;AAAA,QACF;AACA,aAAK,oBAAoB;AAAA,MAC3B;AACA,UAAI,KAAK,sBAAsB,eAAe,UAAU,KAAK;AAC3D,YAAI,IAAI,cAAc,GAAG,WAAW,GAAG;AACrC,eAAK,iBAAiB,IAAI;AAAA,YACxB,KAAK;AAAA,YACL,KAAK;AAAA,UACP;AAAA,QACF;AACA,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACF;AACA,SAAK,cAAc;AAQnB,UAAM,eAAe,oBAAI,IAAI;AAC7B,UAAM,QAAQ,KAAK;AACnB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,OAAO,MAAM;AACnB,YAAM,IAAI,KAAK,QAAQ,IAAI;AAC3B,UAAI,CAAC,aAAa,IAAI,CAAC,GAAG;AACxB,qBAAa,IAAI,GAAG,CAAC,CAAC,CAAC;AAAA,MACzB,OAAO;AACL,cAAM,MAAM,aAAa,IAAI,CAAC;AAC9B,YAAI,KAAK,CAAC;AAIV,YAAI,IAAI,WAAW,KAAK,eAAe;AACrC,cAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,oBAAQ,IAAI,mBAAmB;AAAA,UACjC;AACA,mBAAS,OAAO,GAAG,OAAO,IAAI,QAAQ,QAAQ;AAC5C,kBAAM,KAAK,GAAG,KAAK;AACnB,yBAAa,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,SAAK,eAAe;AACpB,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,aAAa,aAAa,MAAM;AAAA,IAC9C;AACA,UAAM,SAAqB,CAAC;AAC5B,UAAM,cAAc,CAAC;AACrB,UAAM,YAAY,CAAC;AACnB,eAAW,YAAY,aAAa,OAAO,GAAG;AAC5C,UAAI,SAAS,WAAW,KAAK,eAAe;AAE1C;AAAA,MACF;AAKA,UAAI,SAAS,SAAS,GAAG;AACvB,cAAM,KAAK,SAAS,IAAI,CAAC,MAAc,MAAM,GAAG,WAAW,CAAC;AAC5D,cAAM,QAAQ,eAAe,EAAE;AAC/B,iBAAS,YAAY,GAAG,SAAS,SAAS,GAAG,aAAa;AACxD,cAAI,UAAU;AACd,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,kBAAM,KAAK,IAAI,KAAK,SAAS;AAE7B,gBAAI,MAAM,IAAI,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,GAAG;AACrC,oBAAM,IAAI,GAAG;AACb,iBAAG,KAAK,GAAG;AACX,iBAAG,KAAK;AACR,oBAAM,IAAI,SAAS;AACnB,uBAAS,KAAK,SAAS;AACvB,uBAAS,KAAK;AACd,wBAAU;AAAA,YACZ;AAAA,UACF;AACA,cAAI,CAAC,SAAS;AACZ;AAAA,UACF;AACA,cAAI,YAAY,KAAM;AACpB,kBAAM,IAAI,MAAM,uCAAuC;AAAA,UACzD;AAAA,QACF;AAEA,YAAI,OAAO;AACX,mBAAW,KAAK,UAAU;AACxB,kBAAQ,KAAK,KAAK,MAAM,IAAI,KAAK,eAAe;AAAA,QAClD;AACA,cAAM,aAAa,KAAK,WAAW;AACnC,YAAI,OAAO;AACX,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,cAAI,KAAK,MAAM,SAAS,KAAK,KAAK,eAAe,MAAM,YAAY;AACjE,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,OAAO,GAAG;AACZ,gBAAM,IAAI,MAAM,oCAAoC;AAAA,QACtD;AACA,YAAI,SAAS,GAAG;AACd,gBAAM,YAAY,SAAS,MAAM;AACjC,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,qBAAS,KAAK,WAAW,OAAO,KAAK,SAAS;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AACA,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,cAAM,IAAI,SAAS;AACnB,oBAAY,KAAK,OAAO;AACxB,kBAAU,KAAK;AAAA,MACjB;AACA,aAAO,KAAK,QAAQ;AAAA,IACtB;AACA,SAAK,SAAS;AACd,SAAK,cAAc;AACnB,SAAK,YAAY;AAGjB,UAAM,YAAY,CAAC,KAAK,WAAW,SAAS,WAAW,UAAU,QAAQ;AACzE,UAAM,gBAAgB,CAAC;AACvB,UAAM,kBAAkB,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AACzC,UAAM,YAAY,CAAC;AACnB,UAAM,OAAO,CAAC;AACd,QAAI,cAAc;AAClB,UAAM,eAAe,CAAC;AACtB,UAAM,eAAe,CAAC;AACtB,UAAM,YAAY,CAAC;AACnB,UAAM,gBAAgB,CAAC;AAGvB,UAAM,cAAc,CAAC,aAA6B;AAChD,aAAO,OAAO,UAAU,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG;AAAA,IACnE;AACA,UAAM,iBAAsB,CAAC;AAC7B,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YAAM,QAAQ,OAAO;AACrB,UAAI,MAAM,WAAW,GAAG;AACtB;AAAA,MACF;AACA,UAAI,KAAK,IAAI;AACX;AAAA,MACF;AACA,YAAM,cAAmB,CAAC;AAC1B,UAAI,eAAe;AACnB,gBAAU,KAAK,CAAC;AAChB,qBAAe,KAAK,CAAC,CAAC;AACtB,YAAM,UAAU,MAAM;AACtB,YAAM,UAAU,gBAAgB;AAChC,UAAI,WAAW,UAAU;AACzB,UAAI,aAAa,UAAa,YAAY,KAAK,eAAe;AAC5D,mBAAW;AAAA,MACb;AACA,iBAAW,YAAY,YAAY,IAAI,KAAK,UAAU;AACtD,oBAAc,eAAe;AAC7B,gBAAU,eAAe;AACzB,YAAM,QAAQ,CAAC,CAAC;AAChB,UAAI,KAAK;AACT,WAAK,KAAK;AACV,aAAO,KAAK,MAAM,QAAQ;AACxB,cAAM,OAAO,MAAM;AACnB,cAAM,gBAAgB,YAAY,IAAI;AACtC,YAAI,MAAM,SAAS,KAAK,YAAY,mBAAmB,QAAW;AAChE,sBAAY,iBAAiB;AAAA,QAC/B;AACA,sBAAc,QAAQ,YAAY;AAClC,qBAAa,QAAQ;AACrB,uBAAe,aAAa,KAAK,IAAI;AACrC,qBAAa,QAAQ,UAAU;AAC/B,YAAI,MAAM,SAAS,KAAK,UAAU,QAAQ;AACxC,gBAAM,KAAK,KAAK,eAAe,OAAO,MAAM;AAC5C,qBAAW,gBAAgB,eAAe;AACxC,kBAAM,KACJ,KAAK,YAAY,KAAK,SAAS,GAAG,YAAY,aAAa,EAAE,CAAC;AAChE,gBAAI,CAAC,KAAK,KAAK;AACb,oBAAM,KAAK,EAAE;AACb,mBAAK,MAAM;AAAA,YACb;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AACA,QACE,KAAK,gBACL,KAAK,KAAK,mBACV,KAAK,mBAAmB,GACxB;AACA,YAAM,YAAY;AAAA,QAChB;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,QACvD,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,MAC/B;AACA,YAAM,UAAqC,CAAC;AAC5C,iBAAW,SAAS,WAAW;AAC7B,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAI,OAAO;AACX,mBAAS,IAAI,GAAG,IAAI,MAAM,GAAG,QAAQ,KAAK;AACxC,oBAAQ,KAAM,MAAM,GAAG,WAAW,CAAC,IAAI;AAAA,UACzC;AACA,kBAAQ,QAAQ;AAAA,QAClB;AAAA,MACF;AACA,iBAAW,YAAY,gBAAgB;AACrC,mBAAW,YAAY,UAAU;AAC/B,cAAI,OAAO;AACX,qBAAW,SAAS,OAAO,WAAW;AACpC,oBACE,KACC,KAAK,UAAU,KAAK,aAAa,KAAK,GAAG,GAAG,WAAW,CAAC,IAAI;AAAA,UACjE;AACA,uBAAa,YAAY,QAAQ;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AACA,SAAK,eAAe;AACpB,SAAK,eAAe;AACpB,SAAK,gBAAgB;AACrB,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,gBAAgB;AACrB,SAAK,iBAAiB;AAEtB,QAAI,KAAK,QAAQ,mBAAmB,MAAM;AACxC,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,YACG,KAAK,QAAQ,mBAAmB,OAAO,OAAO,GAAG,SAAS,KAC1D,KAAK,QAAQ,mBAAmB,OAAO,OAAO,GAAG,WAAW,KAC5D,KAAK,QAAQ,mBAAmB,OAAO,OAAO,GAAG,WAAW,GAC7D;AACA,eAAK,aAAa;AAClB;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,aAAa,GAAG;AACvB,cAAM,IAAI;AAAA,UACR,kCAAkC,KAAK,QAAQ;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAEA,QAAI,KAAK,QAAQ,YAAY,GAAG;AAC9B,cAAQ,IAAI,uBAAuB,WAAW;AAAA,IAChD;AACA,SAAK,EAAE;AAAA,EACT;AAAA,EAEO,UAAU,IAAuB;AACtC,UAAM,QAAQ,KAAK,eAAe,mBAAmB,EAAE;AACvD,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AACA,WAAO,MAAM,SAAS,EAAE,QAAQ,KAAK,SAAS,UAAU,MAAM,MAAM,EAAE,CAAC;AAAA,EACzE;AAAA,EAIQ,kBAAkB,IAAkB;AAE1C,UAAM,KAAK,OAAO,6CAA6C;AAC/D,UAAM,IAAI,GAAG,MAAM,EAAE;AACrB,QAAI,MAAM,MAAM;AACd,YAAM,IAAI,MAAM,mBAAmB,IAAI;AAAA,IACzC;AACA,UAAM,OAAO,EAAE;AACf,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,EAAE,OAAO,QAAW;AACtB,UAAI,EAAE,OAAO,QAAW;AACtB,cAAM,IAAI,MAAM,gCAAgC;AAAA,MAClD;AACA,gBAAU,SAAS,EAAE,IAAI,EAAE;AAAA,IAC7B;AACA,QAAI,EAAE,OAAO,QAAW;AACtB,gBAAU,SAAS,EAAE,IAAI,EAAE;AAAA,IAC7B;AACA,QAAI,YAAY;AAChB,QAAI,SAAS;AACb,QAAI,EAAE,OAAO,QAAW;AACtB,kBAAY,EAAE;AACd,UAAI,UAAU,OAAO,KAAK;AACxB,oBAAY,IAAI,UAAU,UAAU,CAAC;AAAA,MACvC;AACA,eAAS,SAAS,WAAW,EAAE;AAAA,IACjC;AACA,WAAO,IAAI,KAAK,IAAI,YAAY,MAAM,SAAS,OAAO,GAAG,MAAM;AAAA,EACjE;AAAA,EAEO,UACL,MAC+D;AAC/D,UAAM,KAAK,KAAK,eAAe,mBAAmB,IAAI;AACtD,QAAI,OAAO,MAAM;AACf,YAAM,IAAI,MAAM,YAAY,KAAK,QAAQ;AAAA,IAC3C;AACA,WAAO;AACP,QAAI,OAAO,KAAK;AAChB,QAAI,eAAe;AACnB,QAAI,KAAK,SAAS,GAAG,KAAK,KAAK,MAAM,KAAK;AACxC,UAAI,KAAK,eAAe,UAAa,KAAK,eAAe,QAAW;AAClE,cAAM,IAAI,MAAM,8CAA8C;AAAA,MAChE;AACA,aAAO,KAAK,MAAM,GAAG,EAAE;AACvB,qBAAe;AAAA,IACjB;AACA,QAAI,KAAK,SAAS,GAAG,KAAK,KAAK,MAAM,KAAK;AACxC,aAAO,KAAK,MAAM,GAAG,EAAE,EAAE,YAAY;AAAA,IACvC;AACA,QAAI;AACJ,QAAI,MAAM;AACV,UAAM,UAAU,KAAK,SAAS,UAAU,IAAI;AAC5C,QAAI,YAAY;AAChB,aAAS,IAAI,GAAG,IAAI,KAAK,YAAY,QAAQ,KAAK;AAChD,YAAM,IAAI,KAAK,YAAY;AAC3B,UAAI,YAAY,EAAE,IAAI;AACpB,oBAAY;AACZ,cAAM;AACN,cAAM;AAAA,MACR;AACA,UAAI,YAAY,EAAE,IAAI;AACpB,oBAAY;AACZ,cAAM;AACN,cAAM;AAAA,MACR;AAAA,IACF;AACA,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI,KAAK,YAAY,MAAM,MAAM;AAC/B,gBAAU;AAAA,IACZ;AACA,QAAI,QAAQ,QAAW;AACrB,YAAM,IAAI,MAAM,oBAAoB,KAAK,QAAQ;AAAA,IACnD;AACA,QAAI,KAAK,eAAe,QAAW;AACjC,gBAAU,KAAK;AAAA,IACjB;AACA,QAAI,KAAK,eAAe,QAAW;AACjC,UAAI,KAAK,eAAe,QAAW;AACjC,kBAAU,KAAK;AAIf,YAAI,QAAQ,KAAK;AAEf,oBAAU;AAAA,QACZ,OAAO;AAEL,oBAAU;AAAA,QACZ;AAAA,MACF,OAAO;AACL,kBAAU,KAAK;AAAA,MACjB;AAAA,IACF;AACA;AACA;AACA,QAAI,cAAc;AAChB,gBAAU;AACV,gBAAU,KAAK,cAAc,KAAK;AAAA,IACpC;AACA,QACE,UAAU,KACV,UAAU,KAAK,cAAc,KAAK,UAClC,UAAU,KACV,UAAU,KAAK,cAAc,KAAK,QAClC;AACA,YAAM,IAAI;AAAA,QACR,kBAAkB,WAAW,cAAc,KAAK,cAAc,KAAK;AAAA,MACrE;AAAA,IACF;AACA,QACE,CAAC,0BACD,YAAY,KACZ,YAAY,KAAK,cAAc,KAAK,UACpC,CAAC,cACD;AACA,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,WAAO,CAAC,QAAW,KAAK,SAAS,SAAS,WAAW,KAAK,MAAM;AAAA,EAClE;AAAA,EAEQ,UACN,IAC+D;AAC/D,UAAM,IAAI,KAAK,UAAU,KAAK,kBAAkB,EAAE,CAAC;AACnD,MAAE,KAAK;AACP,WAAO;AAAA,EACT;AAAA,EAEO,WAAiB;AACtB,UAAM,KAAK,OAAO,UAAU;AAE5B,QAAI,KAAK,cAAc,SAAS,GAAG;AAEjC;AAAA,IACF;AACA,UAAM,gBAAgB,CAAC;AAOvB,QAAI,KAAK,QAAQ,eAAe;AAC9B,eAAS,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,KAAK;AAC3C,YAAI,KAAK,OAAO,GAAG,WAAW,GAAG;AAC/B,gBAAM,KAAK,KAAK,OAAO,GAAG;AAC1B,gBAAM,IAAI,KAAK,aAAa,EAAE;AAC9B,gBAAM,SAAS,KAAK,UAAU,GAAG,WAAW;AAC5C,cAAI,OAAO,KAAK,KAAK,eAAe,GAAG,IAAIA,MAAK;AAC9C,kBAAM,OAAQ,KAAK,IAAM,KAAK,KAAK;AACnC,kBAAM,UAAU,KAAK,WAAW;AAChC,kBAAM,SAAS,KAAK,WAAW,SAAS,WAAW;AACnD,gBAAI,MAAM;AACV,gBAAI,MAAM;AACV,qBAAS,KAAK,GAAG,KAAK,KAAK,MAAM,IAAI,QAAQ,MAAM;AACjD,oBAAM,KAAK,KAAK,MAAM,IAAI,IAAI,EAAE;AAChC,oBAAM,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AACnC,kBAAI,IAAI,KAAK;AACX,sBAAM;AACN,sBAAM;AAAA,cACR;AAAA,YACF;AAEA,kBAAM,QAAQ,MAAM,KAAK,KAAK,MAAM,IAAI;AACxC,gBACE,KAAK,IAAI,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,IAAI,MAAM,CAAC,IAAI,GAAG,IAC/DA,MACA;AACA,oBAAM;AAAA,YACR;AAEA,gBAAI,QAAQ,GAAG;AACb,oBAAM,KAAK,CAAC;AACZ,uBAAS,KAAK,GAAG,KAAK,KAAK,MAAM,IAAI,QAAQ,MAAM;AACjD,mBAAG,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA,cAChE;AACA,mBAAK,MAAM,MAAM,IAAI,KAAK,EAAE;AAAA,YAC9B;AACA,kBAAM,IAAI,KAAK,UAAU,GAAG;AAC5B,qBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,mBAAK,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,IAAI,EAAE;AAAA,YAC3C;AACA,iBAAK,gBAAgB,MAAM;AAC3B,iBAAK,iBAAiB,KAAK;AAC3B,iBAAK,UAAU,KAAK,aAAa,MAAM;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,YAAM,eAAe,KAAK,cAAc;AACxC,YAAM,WAAW,CAAC;AAClB,YAAM,YAAY,CAAC,aAAa,SAAS,GAAG,CAAC;AAC7C,UAAI,MAAM;AACV,aAAO,MAAM,KAAK,aAAa,QAAQ;AACrC,eAAO;AAAA,MACT;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,YAAI,IAAI;AACR,YAAI,aAAa,SAAS,GAAG;AAC3B,gBAAM,KAAK,KAAK,eAAe,GAAG,IAAI,aAAa,EAAE;AACrD,mBAAS,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG;AAChC,gBACE,IAAI,KAAK,aAAa,UACtB,KAAK,aAAa,IAAI,IAAI,GAAG,GAC7B;AACA,mBAAK;AAAA,YACP;AAAA,UACF;AACA,cAAI,aAAa,SAAS;AAAA,QAC5B;AACA,iBAAS,KAAK,CAAC;AACf,eAAO,UAAU,UAAU,GAAG;AAC5B,oBAAU,KAAK,CAAC;AAAA,QAClB;AACA,kBAAU;AAAA,MACZ;AACA,YAAM,aAAa,IAAI,MAAM,UAAU,MAAM;AAC7C,eAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM;AAC5C,mBAAW,MAAM,CAAC;AAAA,MACpB;AACA,YAAM,YAAY,CAAC;AACnB,eAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,YAAI,SAAS,KAAK,GAAG;AACnB;AAAA,QACF;AACA,cAAM,IAAI,CAAC,KAAK,YAAY,IAAI,KAAK,UAAU,EAAE;AACjD,YAAI,KAAK,KAAK,eAAe;AAC7B,cAAM,MAAM;AACZ,YAAI,MAAM;AACV,cAAM,KAAK,SAAS;AACpB,mBAAS;AACP,mBAAS,OAAO;AAChB,gBAAM,MAAM,GAAG,YAAY,KAAK,cAAc,GAAG,EAAE;AACnD,cAAI,IAAI,KAAK,GAAG,IAAIA,MAAK;AACvB;AAAA,UACF;AACA,gBAAM,KAAK,SAAS,GAAG;AACvB,YAAE,KAAK,KAAK,YAAY,MAAM,KAAK,UAAU,IAAI;AACjD,eAAK;AAAA,QACP;AAqBA,YACE,EAAE,SAAS,KACX,KAAK,QAAQ,kBACZ,KAAK,OAAO,EAAE,IAAI,WAAW,KAAK,KAAK,iBAAiB,EAAE,MAAM,IACjE;AAEA,cACE,KAAK,eAAe,GAAG;AAAA,YACrB,KAAK,UAAU,KAAK,aAAa,CAAC,GAAG,WAAW;AAAA,UAClD,IAAIA,MACJ;AAEA,gBAAI,QAAQ,KAAK,MAAM,KAAK,OAAO,EAAE,IAAI;AACzC,qBAAS,KAAK,GAAG,KAAK,EAAE,QAAQ,MAAM,GAAG;AACvC,oBAAM,QAAQ,KAAK,MAAM,KAAK,OAAO,EAAE,KAAK;AAC5C,kBAAI,IAAI;AACR,uBAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM;AACxC,oBAAI,MAAM,IAAI,EAAE,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,IAAIA,MAAK;AAC1C,sBAAI;AACJ;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,IAAI,GAAG;AACT,sBAAM,IAAI;AAAA,kBACR;AAAA,gBACF;AAAA,cACF,OAAO;AACL,kBAAE,KAAK,KAAK;AACZ,wBAAQ,MAAM,OAAO,KAAK,cAAc,GAAG,EAAE;AAAA,cAC/C;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAIA,YAAI,EAAE,WAAW,KAAK,KAAK,QAAQ,eAAe;AAChD,mBAAS,KAAK,GAAG,KAAK,KAAK,cAAc,IAAI,MAAM;AACjD,gBAAI,OAAO,GAAG;AACZ,gBAAE,KAAK,EAAE,IAAI,EAAE;AAAA,YACjB,OAAO;AACL,gBAAE;AAAA,gBACA,EAAE;AAAA,iBACD,KAAK,cAAc,KAAK,MAAM,KAAK,cAAc;AAAA,cACpD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,EAAE,SAAS,KAAK,CAAC,UAAU,EAAE,KAAK;AACpC,cAAI,EAAE,WAAW,IAAI,KAAK,cAAc,IAAI;AAC1C,kBAAM,IAAI,MAAM,wBAAwB;AAAA,UAC1C;AACA,qBAAW,KAAK,GAAG;AACjB,uBAAW,IAAI,KAAK,CAAC;AAAA,UACvB;AAAA,QACF;AACA,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,GAAG;AACpC,oBAAU,EAAE,MAAM;AAAA,QACpB;AAAA,MACF;AACA,eAAS,KAAK,GAAG,KAAK,WAAW,QAAQ,MAAM;AAC7C,mBAAW,MAAM,WAAW,IAAI,MAAM;AAAA,MACxC;AACA,oBAAc,KAAK,UAAU;AAAA,IAC/B;AACA,SAAK,gBAAgB;AACrB,QAAI,KAAK,QAAQ,UAAU;AACzB,YAAM,iBAOA,CAAC;AAEP,iBAAW,cAAc,KAAK,QAAQ,UAAU;AAC9C,uBAAe,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA,MAChD;AACA,WAAK,iBAAiB;AAAA,IACxB;AACA,SAAK,aAAa,MAAM;AACxB,SAAK,iBAAiB,CAAC;AACvB,SAAK,EAAE;AAAA,EACT;AAAA,EAEQ,sBAA2B;AAEjC,WAAO;AAAA,MACL,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,MACjB,aAAa,KAAK;AAAA,MAClB,WAAW,KAAK;AAAA,MAChB,YAAY,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EAEQ,YAAY,GAAgB;AAKlC,UAAM,SAAS,KAAK,cAAc,GAAG;AACrC,QAAI,IAAW,CAAC;AAChB,QAAI,KAAK,mBAAmB,QAAW;AACrC,iBAAW,cAAc,KAAK,gBAAgB;AAC5C,YAAI,WAAW,OAAO,GAAG;AACvB;AAAA,QACF;AACA,YAAI,WAAW,IAAI;AACjB,YAAE,KAAK,CAAC,WAAW,IAAI,WAAW,EAAE,CAAC;AAAA,QACvC,OAAO;AACL,YAAE,KAAK,CAAC,SAAS,WAAW,IAAI,SAAS,WAAW,EAAE,CAAC;AAAA,QACzD;AACA,UAAE,KAAK,WAAW,EAAE;AAAA,MACtB;AAAA,IACF,WAAW,KAAK,QAAQ,eAAe,CAAC,KAAK,QAAQ,UAAU;AAC7D,YAAM,MAAM,KAAK,YAAY;AAC7B,UAAI,IAAI,OAAO,IAAI,IAAI;AACrB,iBAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,cAAI,IAAI,OAAO,KAAK;AAClB,gBAAI,KAAK,QAAQ,iBAAiB;AAChC,gBAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AAAA,YACxB,OAAO;AACL,gBAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAAA,YAChB;AACA,cAAE,KAAK,CAAC;AAAA,UACV,OAAO;AACL,gBAAI,KAAK,QAAQ,iBAAiB;AAChC,gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,YACf,OAAO;AACL,gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,YACf;AACA,cAAE,KAAK,CAAC;AAAA,UACV;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,eAAS,IAAI,GAAG,KAAK,QAAQ,KAAK;AAChC,YAAI,CAAC,KAAK,QAAQ,YAAY,IAAI,MAAM,QAAQ;AAC9C;AAAA,QACF;AACA,YAAI,KAAK,QAAQ,iBAAiB;AAChC,cAAI,IAAI,IAAI,QAAQ;AAClB,cAAE,KAAK,CAAC,GAAG,MAAM,CAAC;AAAA,UACpB,OAAO;AACL,cAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,UACf;AAAA,QACF,OAAO;AACL,YAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,QACf;AACA,UAAE,KAAK,CAAC;AAAA,MACV;AAAA,IACF;AACA,QAAI,KAAK,cAAc,GAAG;AACxB,YAAM,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,OAAO,KAAK,YAAY,GAAG,EAAE;AACvE,YAAM,OAAO,CAAC;AACd,eAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,GAAG;AACpC,YAAI,IAAI,EAAE;AACV,YAAI,OAAO,EAAE,MAAM,OAAO,EAAE,IAAI;AAC9B,cAAI,EAAE,OAAO,GAAG;AACd,gBAAI,CAAC,EAAE,KAAK,GAAG,MAAM;AAAA,UACvB,WAAW,WAAW,EAAE,IAAI;AAC1B,gBAAI,CAAC,GAAG,EAAE,KAAK,CAAC;AAAA,UAClB,OAAO;AACL,kBAAM,MAAM,0CAA0C;AAAA,UACxD;AAAA,QACF;AACA,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,cACE,KAAK,GAAG,OAAO,EAAE,MACjB,KAAK,GAAG,OAAO,EAAE,MACjB,KAAK,IAAI,OAAO,EAAE,IAAI,IACtB;AACA,oBAAQ;AACR;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAAC,OAAO;AACV,eAAK,KAAK,CAAC;AACX,eAAK,KAAK,EAAE,IAAI,EAAE;AAAA,QACpB;AAAA,MACF;AACA,UAAI;AAAA,IACN;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,UAAU,OAAwB;AACxC,QAAI,MAAM,KAAK,OAAO,OAAO;AAC7B,QAAI,KAAK,iBAAiB,QAAQ;AAChC,YAAM;AAAA,IACR;AACA,WACG,QAAQ,MACN,KAAK,QAAQ,eAAe,CAAC,KAAK,QAAQ,wBAC5C,QAAQ,MACN,KAAK,QAAQ,aAAa,CAAC,KAAK,QAAQ,sBAC1C,MAAM,MACJ,KAAK,QAAQ,eAAe,CAAC,KAAK,QAAQ;AAAA,EAEjD;AAAA,EAEQ,UAAU,OAAwB;AACxC,QAAI,MAAM,KAAK,OAAO,OAAO;AAC7B,QAAI,KAAK,iBAAiB,QAAQ;AAChC,YAAM;AAAA,IACR;AACA,WACG,QAAQ,KAAK,CAAC,KAAK,QAAQ,uBAC3B,QAAQ,KAAK,CAAC,KAAK,QAAQ,qBAC3B,MAAM,KAAK,CAAC,KAAK,QAAQ;AAAA,EAE9B;AAAA,EAEQ,UAAU,IAAqB;AACrC,WAAO,KAAK,UAAU,EAAE;AAAA,EAC1B;AAAA,EAEQ,OAAO,SAAyB;AACtC,WAAO,UAAU,YAAY,OAAO,UAAU;AAAA,EAChD;AAAA,EAEO,WAAmB;AAExB,UAAM,KAAK,KAAK,aAAa,KAAK;AAClC,UAAM,IAAI,CAAC;AACX,UAAM,MAAM,CAAC;AACb,aAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,QAAQ,KAAK;AAC1C,UAAI,WAAW,KAAK,aAAa,KAAK,gBAAgB,GAAG,UAAU,EAAE;AACrE,UAAI,QAAQ;AACZ,UAAI,SAAS,SAAS,SAAS,OAAO,KAAK;AACzC,mBAAW,SAAS,UAAU,GAAG,SAAS,SAAS,CAAC;AACpD,gBAAQ;AAAA,MACV;AAEA,UAAI,KAAK,QAAQ;AACjB,UAAI,OAAO;AACT,UAAE,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI;AAAA,MAChE,OAAO;AACL,UAAE,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,EAAE,MAAM,IAAI;AAAA,MAC1D;AAAA,IACF;AACA,MAAE,KAAK,QAAQ;AACf,MAAE,KAAK,IAAI,KAAK,GAAG,CAAC;AACpB,MAAE,KAAK,IAAI;AACX,UAAM,KAAK,GAAG,OAAO,gBAAgB;AACrC,MAAE;AAAA,MACA,QAAQ,GACL,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,EACjD,KAAK,GAAG;AAAA,IACb;AACA,MAAE,KAAK,qBAAqB;AAC5B,MAAE,KAAK,mDAAmD;AAC1D,MAAE,KAAK,EAAE;AACT,WAAO,KAAK,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,EACxC;AAAA,EAEO,YAAY,OAAe,wBAAgC;AAChE,UAAM,KAAK,KAAK,aAAa,KAAK;AAClC,WACE,KAAK,OAAO,IAAI,IAAI,GAAG,SAAS,MAAM,KAAK,cAAc,EAAE,KAAK,IAAI;AAAA,EAExE;AAAA,EAEO,qBACL,YAAqB,MACrB,eAAwB,MACL;AACnB,UAAM,KAAK,KAAK,aAAa,WAAW,YAAY;AACpD,UAAM,qBAAqB,GAAG,oBAAoB,YAAY;AAC9D,IAAC,mBAA2B,gCAC1B,KAAK;AACP,QAAI,CAAC,oBAAoB;AACvB,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AAAA,EAEO,gBACL,WACA,QACA,UACA,YACA,UACA,cACa;AACb,UAAM,aAAwB,CAAC;AAC/B,UAAM,QAAQ,CAAC;AACf,UAAM,OAAO,CAAC;AACd,eAAW,OAAO,KAAK,WAAW;AAChC,YAAM,KAAK,KAAK,GAAG,CAAC;AACpB,WAAK,KAAK,MAAM,GAAG,CAAC;AAAA,IACtB;AACA,aAAS,IAAI,UAAU,IAAI,KAAK,UAAU,IAAI,KAAK;AACjD,YAAM,cAAc,WAAW;AAC/B,eAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,IAAI,cAAc;AAC7D,cAAM,QAAQ,YAAY,MAAM,GAAG,IAAI,IAAI,YAAY;AACvD,cAAM,SAAS,KAAK,aAAa,MAAM;AACvC,iBAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM,GAAG;AAC3C,gBAAM,MAAM,KAAK,aAAa,MAAM;AAAA,QACtC;AACA,YAAI,MAAM;AACV,YAAI,OAAO;AACX,YAAI,UAAU;AACZ,gBAAM,MAAM,SAAS;AACrB,iBAAO,MAAM,SAAS;AAAA,QACxB;AACA,YAAI,MAAM,YAAY,KAAK,KAAK,UAAU,OAAO,GAAG;AAClD,gBAAM,UAAU,MAAM,QAAQ,MAAM;AACpC,cAAI,KAAK,UAAU,UAAU,KAAK,CAAC,KAAK,QAAQ,kBAAkB;AAChE,iBAAK,UAAU,KAAK,QAAQ,MAAM;AAAA,UACpC;AAAA,QACF;AACA,iBAAS,KAAK,GAAG,KAAK,MAAM,QAAQ,MAAM,GAAG;AAC3C,gBAAM,QAAQ,OAAO,KAAK,OAAO,MAAM,WAAW,MAAM;AACxD,cAAI,KAAK,UAAU,UAAU,KAAK,CAAC,KAAK,QAAQ,kBAAkB;AAChE,iBAAK,QAAQ,MAAM,QAChB,OAAO,KAAK,QAAQ,MAAM,UACzB,OAAO,KAAK,KAAK,MAAM,UACvB,IAAI,KAAK,UAAU,WACrB,KAAK,UAAU;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,SAAS,IAAI,QAAQ,KAAK,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC;AAC/C,aAAS,KAAK,GAAG,KAAK,KAAK,cAAc,QAAQ,MAAM;AACrD,UAAI,YAAY,CAAC,SAAS,KAAK;AAC7B;AAAA,MACF;AACA,UAAI,KAAK,UAAU,QAAQ,KAAK,KAAK,QAAQ,kBAAkB;AAC7D,YAAI,MAAM,QAAQ,KAAK,OAAO,KAAK,MAAM,GAAG;AAC1C,cAAI,MAAM,QAAQ,OAAO,MAAM;AAC7B,qBAAS,IAAI,QAAQ,MAAM,KAAK,KAAK,KAAK,CAAC;AAAA,UAC7C;AACA,qBAAW,KAAK,MAAM;AAAA,QACxB,OAAO;AACL,qBAAW,KAAK,IAAI,QAAQ,MAAM,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,QACrD;AAAA,MACF,OAAO;AACL,cAAM,KAAK,IAAI,MAAc,KAAK,IAAI,MAAM;AAE5C,iBAAS,KAAK,GAAG,KAAK,MAAM,IAAI,QAAQ,MAAM;AAC5C,aAAG,MAAM,KAAK,IAAI,MAAM,IAAI;AAAA,QAC9B;AACA,mBAAW,KAAK,IAAI,QAAQ,MAAM,KAAK,IAAI,KAAK,UAAU,GAAG,CAAC;AAAA,MAChE;AAAA,IACF;AACA,QAAI,KAAK,IAAI,YAAY,UAAU;AACnC,QAAI,WAAW,GAAG;AAChB,WAAK,GAAG,UAAU,MAAM;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,QAAQ,MAAuB;AACrC,eAAW,eAAe,KAAK,QAAQ,eAAe;AACpD,UAAI,gBAAgB,MAAM;AACxB,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,WAAW,GAAU,GAAU,QAAgB,KAAc;AACnE,aAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK,GAAG;AACpC,UAAI,QAAQ;AACZ,eAAS,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,QAAQ,KAAK,GAAG;AAC9C,YAAI,KAAK;AACP,cACE,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,UACtB,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,UACtB,EAAE,IAAI,OAAO,EAAE,IAAI,IACnB;AACA,oBAAQ;AAAA,UACV;AAAA,QACF,OAAO;AACL,cACE,EAAE,GAAG,OAAO,EAAE,GAAG,MACjB,EAAE,GAAG,OAAO,EAAE,GAAG,MACjB,EAAE,IAAI,OAAO,EAAE,IAAI,IACnB;AACA,oBAAQ;AAAA,UACV;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAGO,aACL,WACA,eAAwB,MACX;AAEb,UAAM,WAAW,CAAC;AAClB,QAAI,WAAW;AACb,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,iBAAS,KAAK,CAAC;AAAA,MACjB;AAAA,IACF;AACA,UAAM,WAAqB,CAAC;AAC5B,UAAM,UAAwB,CAAC;AAG/B,UAAM,MAAM,CAAC;AACb,UAAM,SAAS,CAAC;AAChB,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,YAAM,UAAU,KAAK,YAAY,CAAC;AAClC,UAAI,KAAK,OAAO;AAChB,UAAI,KAAK,QAAQ,cAAc;AAC7B,eAAO,KAAK,CAAC;AAAA,MACf,OAAO;AACL,eAAO,KAAK,CAAC;AAAA,MACf;AAAA,IACF;AACA,UAAM,cAAc,CAAC;AACrB,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,YAAM,SAAS,KAAK,cAAc,GAAG;AAErC,UAAI,SAAS;AACb,YAAM,UAAU,IAAI;AACpB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,YAAI,QAAQ,GAAG,OAAO,KAAK,QAAQ,GAAG,OAAO,QAAQ;AACnD,mBAAS;AAAA,QACX;AAAA,MACF;AACA,kBAAY,KAAK;AAAA,IACnB;AACA,QACE,KAAK,QAAQ,iBACZ,KAAK,QAAQ,YAAY,KAAK,QAAQ,mBAAmB,OAC1D;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,eAAO,KAAK;AAAA,MACd;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAElD,YAAI,YAAY,IAAI;AAClB,iBAAO,KAAK;AACZ;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,cAAI,KAAK,KAAK,iBAAiB;AAC/B,mBAAS,KAAK,GAAG,KAAK,KAAK,KAAK,cAAc,IAAI,MAAM;AACtD,iBAAK,GAAG,YAAY,KAAK,cAAc,GAAG,EAAE;AAC5C,gBAAI,OAAO,KAAK,IAAI;AAClB;AAAA,YACF;AACA,gBAAI,QAAQ;AACZ,gBAAI,MAAM;AACV,qBAAS,IAAI,GAAG,IAAI,KAAK,iBAAiB,QAAQ,KAAK;AACrD,kBAAI,GAAG,KAAK,KAAK,iBAAiB,EAAE,IAAIA,MAAK;AAC3C,wBAAQ;AACR;AAAA,cACF,WAAW,GAAG,KAAK,KAAK,iBAAiB,GAAG,KAAK,EAAE,CAAC,IAAIA,MAAK;AAC3D,wBAAQ;AACR,sBAAM;AACN;AAAA,cACF;AAAA,YACF;AACA,gBAAI,QAAQ,GAAG;AACb,oBAAM,IAAI,MAAM,yBAAyB;AAAA,YAC3C;AACA,kBAAM,MAAM,IAAI;AAChB,gBACE,IAAI,WAAW,IAAI,GAAG,UACtB,KAAK,cAAc,GAAG,WACpB,KAAK,cAAc,OAAO,UAC5B,KAAK;AAAA,cACH;AAAA,cACA,IAAI;AAAA,cACJ,KAAK,cAAc,OAAO;AAAA,cAC1B;AAAA,YACF,GACA;AACA,qBAAO,MAAM;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,YAAI,OAAO,OAAO,GAAG;AACnB,iBAAO,KAAK;AAAA,QACd,WAAW,OAAO,OAAO,GAAG;AAC1B,cAAI,KAAK,cAAc,KAAK,GAAG;AAC7B,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF,WAAW,OAAO,OAAO,GAAG;AAC1B,iBAAO,KAAK;AAAA,QACd,OAAO;AACL,gBAAM,IAAI,MAAM,uBAAuB;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,UAAI,OAAO,OAAO,KAAK,CAAC,YAAY,IAAI;AACtC,YAAI,GAAG,KAAK,CAAC,GAAG,KAAK,cAAc,GAAG,MAAM,CAAC;AAC7C,YAAI,GAAG,KAAK,OAAO,EAAE;AAAA,MACvB;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,YAAM,UAAU,IAAI;AACpB,YAAM,eAAe,KAAK,cAAc;AAExC,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG;AAC7B,cACE,QAAQ,GAAG,OAAO,QAAQ,GAAG,MAC7B,QAAQ,GAAG,OAAO,QAAQ,GAAG,IAC7B;AACA,kBAAM,IAAI,MAAM,6BAA6B;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AACA,YAAM,UAAU,CAAC;AACjB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,iBAAS,IAAI,QAAQ,GAAG,IAAI,KAAK,QAAQ,GAAG,IAAI,KAAK;AACnD,kBAAQ,KAAK;AAAA,QACf;AAAA,MACF;AACA,YAAM,aAAa,KAAK,cAAc;AACtC,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,YAAI,QAAQ,OAAO,GAAG;AACpB;AAAA,QACF;AACA,cAAM,cAAc,WAAW;AAC/B,iBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK,IAAI,cAAc;AAC7D,cAAI,KAAK,UAAU,YAAY,EAAE,GAAG;AAClC;AAAA,UACF;AACA,gBAAM,MAAM,KAAK,aAAa,YAAY;AAC1C,mBAAS,OAAO;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,UAAI,CAAC,SAAS,IAAI;AAChB;AAAA,MACF;AACA,UAAI,KAAK,QAAQ,KAAK,cAAc,EAAE,GAAG;AACvC,iBAAS,KAAK;AACd;AAAA,MACF;AACA,eAAS,KAAK,KAAK,cAAc,EAAE;AACnC,cAAQ;AAAA,QACN,IAAI;AAAA,UACF,KAAK,UAAU;AAAA,UACf,KAAK,QAAQ,mBAAmB,IAAI,KAAK,UAAU;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AACA,UAAM,SAAoB,CAAC;AAC3B,aAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,UAAI,CAAC,SAAS,IAAI;AAChB;AAAA,MACF;AACA,UAAI,KAAK,QAAQ,KAAK,cAAc,EAAE,GAAG;AACvC;AAAA,MACF;AACA,YAAM,IAAI,CAAC;AACX,YAAM,IAAI,CAAC;AACX,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,IAAI,KAAK;AAC1C,YAAI,WAAW;AACb,YAAE,KAAK,CAAC;AAAA,QACV,OAAO;AACL,gBAAM,QAAQ,KAAK,eAAe,GAAG;AACrC,YAAE,KAAK,KAAK,cAAc,MAAM;AAAA,QAClC;AACA,UAAE,KAAK,CAAC;AAAA,MACV;AACA,aAAO;AAAA,QACL,IAAI;AAAA,UACF;AAAA,UACA;AAAA,UACA,KAAK,QAAQ,mBAAmB,IAAI,KAAK,UAAU;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AACA,UAAM,YAAsB,CAAC;AAC7B,UAAM,aAAwB,CAAC;AAC/B,UAAM,QAAuB,CAAC;AAC9B,UAAM,SAAoB,CAAC;AAC3B,QAAI,cAAc;AAChB,eAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAAK;AAClD,cAAM,eAAe,KAAK,cAAc;AACxC,cAAM,SAAS,aAAa;AAC5B,cAAM,UAAU,IAAI;AACpB,cAAM,aAAa,KAAK,YAAY;AACpC,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;AAC1C,gBAAM,WAAW,QAAQ;AAGzB,cAAI;AACJ,cAAI,WAAW;AACf,cAAI,KAAK,mBAAmB,QAAW;AACrC,uBAAW,cAAc,KAAK,gBAAgB;AAC5C,kBAAI,WAAW,OAAO,GAAG;AACvB;AAAA,cACF;AACA,kBAAIE,KAAI,CAAC;AACT,kBAAI,WAAW,IAAI;AACjB,gBAAAA,KAAI,CAAC,WAAW,IAAI,WAAW,EAAE;AAAA,cACnC,OAAO;AACL,gBAAAA,KAAI,CAAC,SAAS,WAAW,IAAI,SAAS,WAAW,EAAE;AAAA,cACrD;AACA,kBAAIA,GAAE,OAAO,SAAS,MAAMA,GAAE,OAAO,SAAS,IAAI;AAChD,+BAAe,WAAW;AAC1B,2BAAW,CAAC,WAAW;AAAA,cACzB;AAAA,YACF;AAAA,UACF;AACA,cAAI,cAAc;AAChB,sBAAU,KAAK,YAAY;AAC3B,uBAAW,KAAK,IAAI;AAAA,UACtB,OAAO;AACL,kBAAM,MAAM,YAAY,YAAY,UAAU,MAAM;AACpD,uBAAW,IAAI;AACf,kBAAM,WAAW,IAAI;AACrB,gBAAI,QAAQ,IAAI,OAAO,GAAG;AACxB,wBAAU,KAAK,QAAQ;AAAA,YACzB,OAAO;AACL,wBAAU,KAAK,WAAW,QAAQ,IAAI,EAAE;AAAA,YAC1C;AACA,uBAAW,KAAK,KAAK;AAAA,UACvB;AACA,iBAAO,KAAK,SAAS,OAAO,KAAK,SAAS,OAAO,MAAM;AACvD,gBAAM,KAAK,KAAK;AAAA,YACd;AAAA,YACA,QAAQ,IAAI;AAAA,YACZ;AAAA,YACA,KAAK,cAAc;AAAA,YACnB;AAAA,YACA,KAAK,cAAc;AAAA,UACrB;AACA,gBAAM,KAAK,EAAE;AAAA,QACf;AAAA,MACF;AAAA,IACF;AACA,QAAI,IAAI,IAAI;AAAA,MACV;AAAA,MACA;AAAA,MACA,IAAI,aAAa,MAAM;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,KAAK,QAAQ,gBAAgB;AAC/B,UAAI,EAAE,SAAS;AAAA,IACjB;AACA,QAAI,KAAK,QAAQ,mBAAmB,GAAG;AACrC,QAAE,SAAS,KAAK,QAAQ,cAAc;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AAAA,EAEO,YAAY,IAAY,GAAwB;AACrD,UAAM,KAAK,KAAK,aAAa,KAAK;AAClC,WAAO,GAAG,+BAA+B,GAAG,0BAA0B,CAAC,CAAC;AAAA,EAC1E;AAAA,EAEO,kBAA0B;AAC/B,WAAO,KAAK,aAAa,KAAK,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;AAAA,EAC/D;AAAA,EAEO,UAAU,MAAiC;AAEhD,cAAU,KAAK,aAAa,KAAK,GAAG,IAAI;AAAA,EAC1C;AAAA,EAEO,YAAkB;AAEvB,UAAM,IAAI,CAAC;AACX,aAAS,IAAI,GAAG,IAAI,KAAK,eAAe,KAAK;AAC3C,eAAS,IAAI,GAAG,IAAI,KAAK,iBAAiB,KAAK;AAC7C,UAAE,KAAK,CAAC;AAAA,MACV;AAAA,IACF;AACA,WAAO,IAAI,KAAK,CAAC;AAAA,EACnB;AAAA,EAMQ,uBAAuB,iBAA8B;AAC3D,UAAM,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,gBAAgB;AACrD,UAAM,aAAa,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AAE1C,UAAM,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,gBAAgB;AACrD,UAAM,aAAa,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE;AAC1C,QAAI,WAAwB;AAC5B,QAAI,WAAwB;AAC5B,UAAM,kBAAkB,KAAK,SAAS,UAAU,YAAY;AAC5D,UAAM,kBAAkB,KAAK,SAAS,UAAU,YAAY;AAC5D,eAAW,MAAM,KAAK,YAAY;AAChC,UAAI,oBAAoB,GAAG,IAAI;AAC7B,mBAAW,GAAG;AAAA,MAChB;AACA,UAAI,oBAAoB,GAAG,IAAI;AAC7B,mBAAW,GAAG;AAAA,MAChB;AAAA,IACF;AACA,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,0BAA0B,cAAc;AAAA,IAC1D;AACA,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,0BAA0B,cAAc;AAAA,IAC1D;AACA,UAAM,KAAK,SAAS,cAAc,UAAU;AAC5C,UAAM,cAAc,SAAS,YAAY,EAAE;AAC3C,UAAM,KAAK,YACR,UAAU,UAAU,EACpB,cAAc,WAAW,UAAU,UAAU,CAAC;AACjD,WAAO,GAAG,IAAI,EAAE;AAAA,EAClB;AAAA,EAEQ,uBAA6B;AACnC,UAAM,gBAAgB,KAAK;AAC3B,QAAI,yBAAiE;AACrE,QAAI,KAAK,QAAQ,mBAAmB;AAClC,+BAAyB,KAAK,QAAQ;AAAA,IACxC,WAAW,KAAK,QAAQ,oBAAoB;AAC1C,+BAAyB,KAAK,QAAQ,mBAAmB;AAAA,IAC3D;AAGA,QAAI,CAAC,wBAAwB;AAC3B,+BAAyB,oBAAoB,EAAE;AAAA,IACjD;AACA,QAAI,CAAC,wBAAwB;AAC3B,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AACA,WAAO,KAAK,uBAAuB,sBAAsB;AAAA,EAC3D;AAAA,EAEQ,kBACN,IAAY,KACZ,IAAY,KACZ,OAAe,IACf,SAAkB,OAClB,aAAqB,MACc;AAEnC,SAAK,IAAI;AACT,SAAK,IAAI;AACT,aAAS,YAAY,GAAe,GAAiB;AACnD,UAAI,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG;AACxB,UAAI,KAAK,EAAE,GAAG,KAAK,EAAE,GAAG;AACxB,YAAM,MAAO,IAAI,KAAK,KAAM;AAC5B,YAAM,OAAO,KAAK,IAAI,GAAG;AACzB,YAAM,OAAO,KAAK,IAAI,GAAG;AACzB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,cAAM,MAAM,KAAK,OAAO,KAAK;AAC7B,aAAK,KAAK,OAAO,KAAK;AACtB,aAAK;AACL,UAAE,KAAK,CAAC,EAAE,IAAI,GAAG,KAAK,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC;AAAA,MAC7C;AAAA,IACF;AAKA,SAAK,SAAS;AACd,UAAM,cAAc,KAAK,oBAAoB;AAC7C,UAAM,QAAQ,YAAY,UAAU,GAAG;AACvC,UAAM,QAAQ,MAAM;AACpB,UAAM,MAAM,KAAK;AACjB,QAAI,QAAQ,MAAM;AAChB,YAAM,IAAI,MAAM,SAAS;AAAA,IAC3B;AACA,UAAM,QAAa,CAAC;AACpB,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,OAAO;AACX,QAAI,OAAO;AACX,UAAM,IAAI,GAAG,MAAM;AAAA,MACjB,CAAC,GAAG,CAAC;AAAA,MACL,CAAC,GAAG,CAAC;AAAA,IACP;AACA,gBAAY,MAAM,IAAI,GAAG,KAAK,KAAK;AACnC,eAAW,QAAQ,KAAK;AACtB,YAAM,KAAK,KAAK;AAChB,UAAI,CAAC,MAAM,KAAK;AACd,cAAM,IAAI,MAAM,iDAAiD;AAAA,MACnE;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,KAAK,KAAK;AAChB,YAAI,OAAO,MAAM,MAAM,KAAK;AAC1B;AAAA,QACF;AACA,cAAM,MAAM,CAAC,MAAM,IAAI,IAAI,QAAQ,MAAM,KAAK,IAAI,QAAQ,KAAK,MAAM;AACrE,oBAAY,MAAM,KAAK,KAAK;AAAA,MAC9B;AAAA,IACF;AACA,eAAW,KAAK,OAAO;AACrB,YAAM,KAAK,MAAM;AACjB,iBAAW,OAAO,IAAI;AACpB,eAAO,KAAK,IAAI,MAAM,IAAI,EAAE;AAC5B,eAAO,KAAK,IAAI,MAAM,IAAI,EAAE;AAC5B,eAAO,KAAK,IAAI,MAAM,IAAI,EAAE;AAC5B,eAAO,KAAK,IAAI,MAAM,IAAI,EAAE;AAAA,MAC9B;AAAA,IACF;AACA,UAAM,KAAK,KAAK,IAAI,KAAK,OAAO,OAAO,KAAK,OAAO,KAAK;AACxD,UAAM,OAAO,OAAO,IAAI,MAAM,OAAO;AACrC,UAAM,OAAO,OAAO,IAAI,MAAM,OAAO;AACrC,UAAM,OAA+B,CAAC;AACtC,UAAM,KAAK,KAAK,oBAAoB;AACpC,UAAM,SAAc,CAAC;AACrB,UAAM,QAAQ;AAAA,MACZ,CAAC,KAAK,MAAM,IAAI;AAAA,MAChB,CAAC,MAAM,IAAI;AAAA,IACb;AACA,WAAO,IAAI,GAAG,MAAM;AACpB,gBAAY,OAAO,IAAI,GAAG,KAAK,KAAK;AACpC,SAAK,KAAK,UAAU,GAAG,MAAM,KAAK,UAAU,GAAG,GAAG;AAAA,MAChD,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC;AAAA,MACvC,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC;AAAA,IACzC,CAAC;AACD,UAAM,YAAY,CAAC;AACnB,cAAU,KAAK;AACf,eAAW,QAAQ,KAAK;AACtB,YAAM,KAAK,KAAK;AAChB,UAAI,CAAC,OAAO,KAAK;AACf,cAAM,IAAI,MAAM,iDAAiD;AAAA,MACnE;AACA,UAAI,MAAM;AACV,eAAS,IAAI,GAAG,IAAI,GAAG,UAAU,QAAQ,KAAK;AAC5C,YAAI,OAAO,GAAG,UAAU,GAAG,IAAI;AAC7B,gBAAM;AACN;AAAA,QACF;AAAA,MACF;AACA,UAAI,MAAM,GAAG;AACX,cAAM,IAAI,MAAM,kCAAkC,IAAI;AAAA,MACxD;AACA,YAAM,WAAW,GAAG,UAAU,KAAK;AACnC,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,KAAK,KAAK;AAChB,YAAI,OAAO,MAAM,OAAO,KAAK;AAC3B;AAAA,QACF;AACA,eAAO,MAAM;AAAA,UACX,OAAO,IAAI,IAAI;AAAA,UACf,OAAO,KAAK,IAAI,QAAQ,KAAK;AAAA,QAC/B;AACA,oBAAY,OAAO,KAAK,KAAK;AAE7B,cAAM,OAAO,UAAU;AACvB,cAAM,KAAK,UAAU,OAAO,KAAK,OAC9B,IAAI,UAAU,OAAO,IAAI,QAAQ,KAAK,MAAM,EAC5C,KAAK,GAAG;AACX,cAAM,MAAM,YAAY,GAAG,WAAW,EAAE;AACxC,cAAM,WAAW,GAAG,UAAU,KAAK;AACnC,cAAM,KAAK,iBAAiB,UAAU,KAAK,SAAS;AACpD,cAAM,MAAM,GAAG,OAAO,GAAG,KAAK,IAAI;AAClC,YAAI,OAAO;AACX,iBAAS,IAAI,GAAG,IAAI,GAAG,UAAU,QAAQ,KAAK;AAC5C,cAAI,QAAQ,GAAG,UAAU,GAAG,IAAI;AAC9B,mBAAO;AACP;AAAA,UACF;AAAA,QACF;AACA,YAAI,OAAO,GAAG;AACZ,gBAAM,IAAI,MAAM,iCAAiC;AAAA,QACnD;AACA,cAAM,YAAY,GAAG,UAAU,MAAM;AACrC,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,gBAAM,MAAM,UAAU,GAAG,IAAI,WAAW,IAAI,KAAK,MAAM,EAAE,KAAK,GAAG;AACjE,cAAI,IAAI,KAAK,EAAE,KAAKF,MAAK;AACvB,kBAAM,KAAK,OAAO,KAAK,IAAI,QAAQ,KAAK;AACxC,kBAAM,KAAK,OAAO,IAAI,IAAI;AAC1B,sBAAU,QAAQ;AAClB,iBAAK,OAAO,KAAK,UAAU,MAAM,GAAG;AAAA,cAClC,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAAA,cAC3B,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAAA,YAC7B,CAAC;AACD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,MAAM;AACV,QAAI,MAAM;AACV,UAAM,MAAM,KAAK,qBAAqB;AACtC,aAAS,QAAQ,KAAK,OAAO;AAC3B,UAAI,QAAQ;AACV,eAAO,KAAK,OAAO,GAAG;AAAA,MACxB;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAM,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3C,cAAM,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAAA,MAC7C;AAAA,IACF;AACA,UAAM,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI,QAAQ,MAAM,CAAC;AACtD,UAAM,UAAU,CAAC,IAAY,MAAsB;AACjD,UAAI,QAAQ;AACV,YAAI,EAAE,YAAY,GAAG;AACrB,cAAM,QAAQ,MAAM,OAAO,OAAO;AAClC,cAAM,OAAO,KAAK,WAAW,IAAI,YAAY,GAAG,EAAE,IAAI,IAAI,IAAI;AAC9D,eAAO;AAAA,UACL,OAAO,IAAI,MAAM,QAAQ,QAAQ,EAAE,IAAI;AAAA,UACvC,OAAO,IAAI,MAAM,EAAE,IAAI;AAAA,QACzB;AAAA,MACF,OAAO;AACL,cAAM,IAAI,KAAK,KAAK,UAAU,IAAI;AAClC,eAAO;AAAA,UACL,OAAO,aAAa,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG;AAAA,UACvC,OAAO,IAAI,aAAa,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,YACL,IAAY,KACZ,IAAY,KACZ,OAAe,IACf,SAAkB,OACV;AACR,UAAM,UAAU,KAAK,kBAAkB,GAAG,GAAG,MAAM,MAAM;AACzD,aAAS,UAAU,IAAY,KAAiB,OAAuB;AACrE,aAAO,gBAAgB,oCAAoC,kBAAkB,IAC1E,IAAI,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAC5B,KAAK,GAAG;AAAA;AAAA,IACb;AAKA,UAAM,MAAM,KAAK,UAAU;AAC3B,UAAM,WAAW,CAAC;AAClB,UAAM,UAAU,CAAC;AACjB,aAAS,IAAI,GAAG,IAAI,KAAK,eAAe,KAAK;AAC3C,eAAS,KAAK,KAAK,OAAO,KAAK,UAAU,GAAG;AAAA,IAC9C;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,YAAM,OAAO,KAAK,MAAM;AACxB,YAAM,UAAU,KAAK,MAAM,IAAI,KAAK,eAAe;AACnD,YAAM,KAAK,CAAC;AACZ,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,WAAG,KAAK,QAAQ,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,MACvC;AACA,cAAQ,KAAK,EAAE;AAAA,IACjB;AACA,UAAM,MAAM,CAAC;AAEb,aAAS,IAAI,GAAG,IAAI,KAAK,eAAe,KAAK;AAC3C,UAAI,KAAK,KAAK;AACd,UAAI,KAAK,UAAU,KAAK,UAAU,GAAG;AAAA,CAAc;AACnD,eAAS,KAAK,GAAG,KAAK,KAAK,iBAAiB,MAAM;AAChD,cAAM,IAAI,IAAI,KAAK,kBAAkB;AACrC,cAAM,QAAQ,KAAK,YAAY;AAC/B,cAAM,WAAW,KAAK,UAAU;AAChC,cAAM,cAAc,KAAK,aAAa;AACtC,cAAM,WAAW,KAAK,aAAa;AACnC,cAAM,QAAQ,KAAK,UAAU,KAAK,IAAI,YAAY,SAAS,IAAI,EAAE;AACjE,YAAI,KAAK,GAAG,KAAK,cAAc,iBAAiB,aAAa;AAC7D,YAAI,KAAK,UAAU,IAAI,QAAQ,IAAI,KAAK,CAAC;AACzC,YAAI,KAAK,gBAAgB,IAAI;AAC3B,mBAAS,KAAK,GAAG,KAAK,KAAK,gBAAgB,IAAI,MAAM;AACnD,iBAAK,GAAG,KAAK,cAAc,iBAAiB,aAAa;AACzD,gBAAI,KAAK,UAAU,IAAI,QAAQ,IAAI,KAAK,CAAC;AAAA,UAC3C;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,MAAM;AAAA,IACjB;AACA,UAAM,OAAO;AAAA;AAAA,EAAoN,IAAI;AAAA,MACnO;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAMO,MAAM,SAAoD;AAC/D,UAAM,WAAW,CAAC;AAClB,UAAM,MAAM,KAAK,qBAAqB;AACtC,UAAM,QAAQ,CAAC;AACf,UAAM,UAAkB,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC,EAAE,IAAI;AAC5D,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,YAAM,SAAS,KAAK,UAAU,GAAG,OAAO,GAAG;AAC3C,YAAM,OAAO,KAAK,UAAU,GAAG;AAC/B,YAAM,KAAK,EAAE,QAAQ,aAAa,QAAQ,OAAO,GAAG,KAAK,CAAC;AAAA,IAC5D;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,YAAM,UAAU,KAAK,MAAM,IAAI,KAAK,eAAe;AACnD,YAAM,QAAQ,KAAK,YAAY;AAC/B,YAAM,WAAW,KAAK,UAAU;AAChC,YAAM,cAAc,KAAK,aAAa;AACtC,YAAM,WAAW,KAAK,aAAa;AACnC,UAAI,QAAQ,KAAK,UAAU,KAAK,IAC5B,YACA,KAAK,OAAO,KAAK,UAAU,SAAS;AACxC,UAAI,SAAS,eAAe;AAC1B,gBAAQ,QAAQ,cAAc;AAAA,MAChC;AACA,YAAM,SAAS,KAAK,MAAM,GAAG,OAAO,GAAG;AACvC,eAAS,KAAK;AAAA,QACZ,QAAQ,aAAa,QAAQ,OAAO;AAAA,QACpC;AAAA,QACA,OAAO,KAAK,cAAc;AAAA,QAC1B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACR,CAAC;AACD,UAAI,UAAU;AACd,UAAI,KAAK,gBAAgB,IAAI;AAC3B,cAAM,UAAU,QAAQ,SAAS,KAAK,gBAAgB;AACtD,iBAAS,KAAK,GAAG,KAAK,KAAK,gBAAgB,IAAI,MAAM;AACnD,mBAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,sBAAU,QAAQ,cAAc;AAAA,UAClC;AACA,mBAAS,KAAK;AAAA,YACZ,QAAQ,aAAa,SAAS,OAAO;AAAA,YACrC;AAAA,YACA,OAAO,KAAK,cAAc;AAAA,YAC1B,KAAK;AAAA,YACL,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO;AAAA,UACT,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,UAAM,QAA0B,CAAC;AACjC,aAAS,IAAI,GAAG,IAAI,KAAK,YAAY,QAAQ,KAAK;AAChD,YAAM,MAAM,KAAK,YAAY;AAC7B,YAAM,QAAQ,KAAK,cAAc;AACjC,iBAAW,MAAM,KAAK,YAAY;AAChC,YAAI,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,IAAI;AACxC,gBAAM,KAAK;AAAA,YACT,aAAa,SAAS,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC;AAAA,YAC/C,aAAa,IAAI,KAAK,IAAI,EAAE;AAAA,YAC5B;AAAA,UACF,CAAC;AACD,gBAAM,KAAK;AAAA,YACT,aAAa,SAAS,GAAG,GAAG,YAAY,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;AAAA,YACxD,aAAa,IAAI,KAAK,IAAI,EAAE;AAAA,YAC5B;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,UAAM,aAAa,KAAK,kBAAkB,MAAM,MAAM,GAAG,OAAO,CAAG;AACnE,UAAM,IAAK,WAAY;AACrB,YAAM,OAAO,IAAI,OAAO;AACxB,aAAO,SAAU,SAAiB,QAA4B;AAC5D,YAAI,IAAI,IAAI;AAAA,UACV;AAAA,UACA,OAAO,KAAK;AAAA,UACZ,CAAC,OAAO,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,QACd;AACA,YAAI,EAAE,YAAY,IAAI;AACtB,cAAM,IAAI,WAAW,SAAS,CAAC;AAC/B,UAAE,MAAM;AACR,UAAE,KAAK,IAAI,EAAE,KAAK;AAClB,eAAO;AAAA,MACT;AAAA,IACF,EAAG,EAAE,KAAK,IAAI;AACd,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,WAAW,KAAK,UAAU,KAAK,IAAI;AAAA,MACnC,gBAAgB,KAAK;AAAA,MACrB,eAAe,EAAE,OAAO,EAAE;AAAA,IAC5B;AAAA,EACF;AAAA,EAOO,aAAa,SAAuC;AACzD,UAAM,MAAM,KAAK,qBAAqB;AACtC,UAAM,OAAO,KAAK,SAAS,UAAU,OAAO;AAC5C,eAAW,MAAM,KAAK,YAAY;AAChC,UAAI,SAAS,GAAG,IAAI;AAClB,cAAM,IAAI,SAAS,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC;AAO5C,YAAI,KAAK,IAAI,EAAE,EAAE,IAAIA,QAAO,KAAK,IAAI,EAAE,EAAE,IAAIA,MAAK;AAChD,YAAE,KAAK;AACP,YAAE,KAAK;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEQ,aAAa,SAAyB;AAC5C,UAAM,QAAQ,KAAK;AACnB,WAAO,KAAK,MAAM,UAAU,KAAK;AAAA,EACnC;AAAA,EAEO,yBAAiC;AACtC,WAAO,SAAS,KAAK,aAAa;AAAA,oBAClB,KAAK;AAAA,aACZ,KAAK;AAAA,SACT,KAAK,OAAO;AAAA,gBACL,KAAK;AAAA,kBACH,KAAK;AAAA,EACrB;AAAA,EAEA,kBAAkB,IAAyB;AACzC,UAAM,KAAK,KAAK,aAAa,KAAK;AAClC,UAAM,KAAK,GAAG,eAAe;AAC7B,OAAG,sBAAsB,IAAI;AAC7B,UAAM,KAAK,aAAa,KAAK,gBAAgB,GAAG,EAAE;AAClD,UAAM,IAAI,KAAK;AACf,OAAG,YAAY,GAAG;AAAA,EACpB;AACF;AAEO,IAAM,aAAN,MAAiB;AAAA,EAEtB,YAAoB,IAAoB,IAAiB;AAArC;AAClB,SAAK,aAAa,GAAG;AAAA,EACvB;AAAA,EAEO,WAAW,MAAwC;AACxD,UAAM,KAAK,KAAK,GAAG,UAAU,IAAI;AAEjC,QAAI,KAAK,GAAG,gBAAgB;AAC1B,UAAI,QAAQ;AACZ,iBAAW,cAAc,KAAK,GAAG,gBAAgB;AAC/C,YACE,WAAW,OAAO,GAAG,MACrB,WAAW,OAAO,GAAG,MACrB,WAAW,OAAO,GAAG,MACrB,WAAW,OAAO,GAAG,IACrB;AACA,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE;AACxB,QAAI,CAAC,GAAG,IAAI;AACV,YAAM,SAAS,KAAK,GAAG,cAAc,GAAG,IAAI;AAC5C,aAAO,CAAC,SAAS,GAAG,IAAI,SAAS,GAAG,EAAE;AAAA,IACxC;AACA,UAAM,OAAO,KAAK,GAAG;AAAA,MACnB;AAAA,MACA,GAAG;AAAA,MACH,CAAC,GAAG;AAAA,MACJ,KAAK,GAAG,cAAc,GAAG;AAAA,MACzB;AAAA,MACA,KAAK,GAAG,cAAc,GAAG;AAAA,IAC3B;AACA,UAAM,IAAI,YAAY,+BAA+B,KAAK,YAAY,IAAI;AAC1E,WAAO;AAAA,EACT;AACF;",
6
6
  "names": ["name", "r", "eps", "eps", "cm", "r"]
7
7
  }