From 34b33fceefc977f1c5e892e12baf2d601b320fec Mon Sep 17 00:00:00 2001 From: Sarsoo Date: Tue, 13 Jul 2021 11:09:58 +0000 Subject: [PATCH] deploy: eb1a240bd7c947afe474b6fe5fc42b5a25701548 --- 10.bootstrap.js | 2 +- 10.bootstrap.js.map | 2 +- 406c9aebd9f4530de773.module.wasm | Bin 121732 -> 0 bytes a9e080695052ab7978e6.module.wasm | Bin 0 -> 120761 bytes doc/draught/all.html | 4 +- doc/draught/board/enums/enum.MoveType.html | 27 ++++---- doc/draught/board/enums/enum.Moveable.html | 27 ++++---- doc/draught/board/enums/enum.SquareState.html | 29 ++++---- doc/draught/board/enums/enum.Strength.html | 27 ++++---- doc/draught/board/enums/enum.Team.html | 30 +++++---- doc/draught/board/enums/index.html | 9 ++- doc/draught/board/enums/sidebar-items.js | 2 +- doc/draught/board/index.html | 2 +- doc/draught/board/struct.Board.html | 36 +++++----- doc/draught/comp/index.html | 8 ++- doc/draught/comp/sidebar-items.js | 2 +- doc/draught/comp/struct.BoardNode.html | 17 ++--- doc/draught/comp/struct.Computer.html | 24 +++---- doc/draught/comp/struct.Move.html | 17 ++--- ...fn.__wasm_bindgen_generated_init_wasm.html | 2 +- doc/draught/fn.init_wasm.html | 2 +- doc/draught/game/index.html | 2 +- doc/draught/game/struct.Game.html | 31 +++++---- doc/draught/index.html | 6 +- doc/draught/macro.log.html | 2 +- doc/draught/player/index.html | 6 -- doc/draught/player/sidebar-items.js | 1 - doc/draught/player/struct.Player.html | 48 -------------- doc/draught/sidebar-items.js | 2 +- doc/implementors/core/clone/trait.Clone.js | 2 +- doc/implementors/core/convert/trait.From.js | 2 +- doc/implementors/core/marker/trait.Freeze.js | 2 +- doc/implementors/core/marker/trait.Send.js | 2 +- doc/implementors/core/marker/trait.Sync.js | 2 +- doc/implementors/core/marker/trait.Unpin.js | 2 +- .../std/panic/trait.RefUnwindSafe.js | 2 +- .../std/panic/trait.UnwindSafe.js | 2 +- .../convert/traits/trait.FromWasmAbi.js | 2 +- .../convert/traits/trait.IntoWasmAbi.js | 2 +- .../convert/traits/trait.OptionFromWasmAbi.js | 2 +- .../convert/traits/trait.OptionIntoWasmAbi.js | 2 +- .../convert/traits/trait.RefFromWasmAbi.js | 2 +- .../convert/traits/trait.RefMutFromWasmAbi.js | 2 +- .../describe/trait.WasmDescribe.js | 2 +- doc/search-index.js | 2 +- doc/source-files.js | 2 +- doc/src/draught/board/enums.rs.html | 12 ++++ doc/src/draught/board/mod.rs.html | 4 ++ doc/src/draught/comp/mod.rs.html | 42 +++++++----- doc/src/draught/game/mod.rs.html | 62 +++++++++++++++++- doc/src/draught/lib.rs.html | 2 - doc/src/draught/player.rs.html | 22 ------- index.html | 37 +++++++---- 53 files changed, 313 insertions(+), 269 deletions(-) delete mode 100644 406c9aebd9f4530de773.module.wasm create mode 100644 a9e080695052ab7978e6.module.wasm delete mode 100644 doc/draught/player/index.html delete mode 100644 doc/draught/player/sidebar-items.js delete mode 100644 doc/draught/player/struct.Player.html delete mode 100644 doc/src/draught/player.rs.html diff --git a/10.bootstrap.js b/10.bootstrap.js index df15377..3a16db9 100644 --- a/10.bootstrap.js +++ b/10.bootstrap.js @@ -1,2 +1,2 @@ -(self.webpackChunkdraught=self.webpackChunkdraught||[]).push([[10],{171:(t,e,r)=>{"use strict";r.a(t,(async n=>{r.d(e,{wc:()=>x,SZ:()=>j,i0:()=>E,Tt:()=>I,rh:()=>S,lA:()=>B,Ck:()=>q,ug:()=>U,h4:()=>W,h9:()=>$,Dz:()=>R,kF:()=>D,U5:()=>M,r2:()=>P,iY:()=>z,mS:()=>F,XP:()=>J,yX:()=>N,ae:()=>Y,Os:()=>L,DA:()=>Q,s8:()=>V,WB:()=>H,cP:()=>X,a:()=>K,l_:()=>Z,U_:()=>G,EN:()=>tt,qu:()=>et,Wg:()=>rt,B3:()=>nt,I6:()=>_t,Qb:()=>at,cI:()=>ct,QK:()=>ot,Md:()=>it,ox:()=>st,ES:()=>ut,Ae:()=>lt,UL:()=>pt,qw:()=>dt,tS:()=>bt,R$:()=>gt,md:()=>ft,IF:()=>ht,zP:()=>wt,td:()=>mt,Ct:()=>vt,uQ:()=>yt,RV:()=>kt,sy:()=>xt,m_:()=>Tt,fY:()=>jt,Or:()=>Et,oH:()=>It});var _=r(813);t=r.hmd(t);var a=n([_]);_=(a.then?await a:a)[0];const c=new Array(32).fill(void 0);function o(t){return c[t]}c.push(void 0,null,!0,!1);let i=c.length;let s=new("undefined"==typeof TextDecoder?(0,t.require)("util").TextDecoder:TextDecoder)("utf-8",{ignoreBOM:!0,fatal:!0});s.decode();let u=null;function l(){return null!==u&&u.buffer===_.memory.buffer||(u=new Uint8Array(_.memory.buffer)),u}function p(t,e){return s.decode(l().subarray(t,t+e))}function d(t){i===c.length&&c.push(c.length+1);const e=i;return i=c[e],c[e]=t,e}function b(t){const e=typeof t;if("number"==e||"boolean"==e||null==t)return`${t}`;if("string"==e)return`"${t}"`;if("symbol"==e){const e=t.description;return null==e?"Symbol":`Symbol(${e})`}if("function"==e){const e=t.name;return"string"==typeof e&&e.length>0?`Function(${e})`:"Function"}if(Array.isArray(t)){const e=t.length;let r="[";e>0&&(r+=b(t[0]));for(let n=1;n1))return toString.call(t);if(n=r[1],"Object"==n)try{return"Object("+JSON.stringify(t)+")"}catch(t){return"Object"}return t instanceof Error?`${t.name}: ${t.message}\n${t.stack}`:n}let g=0,f=new("undefined"==typeof TextEncoder?(0,t.require)("util").TextEncoder:TextEncoder)("utf-8");const h="function"==typeof f.encodeInto?function(t,e){return f.encodeInto(t,e)}:function(t,e){const r=f.encode(t);return e.set(r),{read:t.length,written:r.length}};function w(t,e,r){if(void 0===r){const r=f.encode(t),n=e(r.length);return l().subarray(n,n+r.length).set(r),g=r.length,n}let n=t.length,_=e(n);const a=l();let c=0;for(;c127)break;a[_+c]=e}if(c!==n){0!==c&&(t=t.slice(c)),_=r(_,n,n=c+3*t.length);const e=l().subarray(_+c,_+n);c+=h(t,e).written}return g=c,_}let m=null;function v(){return null!==m&&m.buffer===_.memory.buffer||(m=new Int32Array(_.memory.buffer)),m}function y(t){return null==t}function k(t,e){if(!(t instanceof e))throw new Error(`expected instance of ${e.name}`);return t.ptr}function x(){_.init_wasm()}function T(t,e){try{return t.apply(this,e)}catch(t){_.__wbindgen_exn_store(d(t))}}Object.freeze({Move:0,0:"Move",Jump:1,1:"Jump"});const j=Object.freeze({Black:0,0:"Black",White:1,1:"White"}),E=(Object.freeze({Man:0,0:"Man",King:1,1:"King"}),Object.freeze({Empty:0,0:"Empty",Occupied:1,1:"Occupied",Unplayable:2,2:"Unplayable"})),I=Object.freeze({Allowed:0,0:"Allowed",UnoccupiedSrc:1,1:"UnoccupiedSrc",OccupiedDest:2,2:"OccupiedDest",OutOfBounds:3,3:"OutOfBounds",Unplayable:4,4:"Unplayable",WrongTeamSrc:5,5:"WrongTeamSrc",IllegalTrajectory:6,6:"IllegalTrajectory",NoJumpablePiece:7,7:"NoJumpablePiece",JumpingSameTeam:8,8:"JumpingSameTeam"});class O{static __wrap(t){const e=Object.create(O.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_board_free(t)}get width(){return _.__wbg_get_board_width(this.ptr)>>>0}set width(t){_.__wbg_set_board_width(this.ptr,t)}get height(){return _.__wbg_get_board_height(this.ptr)>>>0}set height(t){_.__wbg_set_board_height(this.ptr,t)}get current_turn(){return _.__wbg_get_board_current_turn(this.ptr)>>>0}set current_turn(t){_.__wbg_set_board_current_turn(this.ptr,t)}cell(t){var e=_.board_cell(this.ptr,t);return C.__wrap(e)}set_cell(t,e){k(e,C);var r=e.ptr;e.ptr=0,_.board_set_cell(this.ptr,t,r)}grid_cell(t){k(t,S);var e=t.ptr;t.ptr=0;var r=_.board_grid_cell(this.ptr,e);return C.__wrap(r)}cell_index(t,e){return _.board_cell_index(this.ptr,t,e)>>>0}cell_idx(t){k(t,S);var e=t.ptr;return t.ptr=0,_.board_cell_idx(this.ptr,e)>>>0}board_index(t){var e=_.board_board_index(this.ptr,t);return S.__wrap(e)}can_move(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;return e.ptr=0,_.board_can_move(this.ptr,r,n)>>>0}validate_man_move(t,e,r){k(t,S);var n=t.ptr;t.ptr=0,k(e,S);var a=e.ptr;e.ptr=0,k(r,A);var c=r.ptr;return r.ptr=0,_.board_validate_man_move(this.ptr,n,a,c)>>>0}validate_king_move(t,e,r){k(t,S);var n=t.ptr;t.ptr=0,k(e,S);var a=e.ptr;e.ptr=0,k(r,A);var c=r.ptr;return r.ptr=0,_.board_validate_king_move(this.ptr,n,a,c)>>>0}jumpee_idx(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;return e.ptr=0,_.board_jumpee_idx(this.ptr,r,n)>>>0}cells(){return _.board_cells(this.ptr)}num_cells(){return _.board_num_cells(this.ptr)>>>0}num_pieces(){return _.board_num_pieces(this.ptr)>>>0}num_player(t){return _.board_num_player(this.ptr,t)>>>0}score(){return _.board_score(this.ptr)}cell_state(t){return _.board_cell_state(this.ptr,t)>>>0}apply_move(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;e.ptr=0;var a=_.board_apply_move(this.ptr,r,n);return O.__wrap(a)}apply_jump(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;e.ptr=0;var a=_.board_apply_jump(this.ptr,r,n);return O.__wrap(a)}king_row_idx(){return _.board_king_row_idx(this.ptr)>>>0}static validate_jumpee(t,e){k(t,C);var r=t.ptr;t.ptr=0,k(e,A);var n=e.ptr;return e.ptr=0,_.board_validate_jumpee(r,n)>>>0}static check_jumpee_team(t,e){k(t,A);var r=t.ptr;t.ptr=0,k(e,A);var n=e.ptr;return e.ptr=0,0!==_.board_check_jumpee_team(r,n)}constructor(t,e,r){var n=_.board_new(t,e,r);return O.__wrap(n)}static init_game(t,e){k(t,O);var r=t.ptr;t.ptr=0;var n=_.board_init_game(r,e);return O.__wrap(n)}}class S{static __wrap(t){const e=Object.create(S.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_brdidx_free(t)}get row(){return _.__wbg_get_brdidx_row(this.ptr)>>>0}set row(t){_.__wbg_set_brdidx_row(this.ptr,t)}get col(){return _.__wbg_get_brdidx_col(this.ptr)>>>0}set col(t){_.__wbg_set_brdidx_col(this.ptr,t)}constructor(t,e){var r=_.brdidx_from(t,e);return S.__wrap(r)}eq(t){return k(t,S),0!==_.brdidx_eq(this.ptr,t.ptr)}}class B{static __wrap(t){const e=Object.create(B.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_game_free(t)}get last_node_count(){return _.__wbg_get_game_last_node_count(this.ptr)>>>0}set last_node_count(t){_.__wbg_set_game_last_node_count(this.ptr,t)}current_board_cells(){return _.game_current_board_cells(this.ptr)}current_board_len(){return _.game_current_board_len(this.ptr)>>>0}current_turn(){return _.game_current_turn(this.ptr)>>>0}score(){return _.game_score(this.ptr)}current_cell_state(t){k(t,S);var e=_.game_current_cell_state(this.ptr,t.ptr);return C.__wrap(e)}set_search_depth(t){_.game_set_search_depth(this.ptr,t)}set_selected(t){k(t,S),_.game_set_selected(this.ptr,t.ptr)}clear_selected(){_.game_clear_selected(this.ptr)}make_move(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;return e.ptr=0,_.game_make_move(this.ptr,r,n)>>>0}execute_move(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;e.ptr=0,_.game_execute_move(this.ptr,r,n)}execute_jump(t,e){k(t,S);var r=t.ptr;t.ptr=0,k(e,S);var n=e.ptr;e.ptr=0,_.game_execute_jump(this.ptr,r,n)}push_new_board(t){k(t,O);var e=t.ptr;t.ptr=0,_.game_push_new_board(this.ptr,e)}set_current(t){k(t,O);var e=t.ptr;t.ptr=0,_.game_set_current(this.ptr,e)}constructor(t,e,r,n,a){var c=_.game_new(t,e,r,n,a);return B.__wrap(c)}static new_with_canvas(t,e,r,n,a,c,o,i){var s=w(c,_.__wbindgen_malloc,_.__wbindgen_realloc),u=g,l=_.game_new_with_canvas(t,e,r,n,a,s,u,o,i);return B.__wrap(l)}set_painter(t){k(t,q);var e=t.ptr;t.ptr=0,_.game_set_painter(this.ptr,e)}draw(){_.game_draw(this.ptr)}ai_move(){_.game_ai_move(this.ptr)}}class q{static __wrap(t){const e=Object.create(q.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_painter_free(t)}constructor(t,e,r){var n=w(r,_.__wbindgen_malloc,_.__wbindgen_realloc),a=g,c=_.painter_new(t,e,n,a);return q.__wrap(c)}static new_with_canvas(t,e,r){var n=_.painter_new_with_canvas(t,e,d(r));return q.__wrap(n)}set_square_outline(t){_.painter_set_square_outline(this.ptr,d(t))}set_outline_width(t){_.painter_set_outline_width(this.ptr,t)}set_draw_outline(t){_.painter_set_draw_outline(this.ptr,t)}reset_dimensions(){_.painter_reset_dimensions(this.ptr)}validate_board_dim(t){return k(t,O),0!==_.painter_validate_board_dim(this.ptr,t.ptr)}draw(t){k(t,O),_.painter_draw(this.ptr,t.ptr)}}class A{static __wrap(t){const e=Object.create(A.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_piece_free(t)}get team(){return _.__wbg_get_piece_team(this.ptr)>>>0}set team(t){_.__wbg_set_piece_team(this.ptr,t)}get strength(){return _.__wbg_get_piece_strength(this.ptr)>>>0}set strength(t){_.__wbg_set_piece_strength(this.ptr,t)}constructor(t,e){var r=_.piece_new(t,e);return A.__wrap(r)}}class C{static __wrap(t){const e=Object.create(C.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_square_free(t)}get occupant(){var t=_.__wbg_get_square_occupant(this.ptr);return 0===t?void 0:A.__wrap(t)}set occupant(t){let e=0;y(t)||(k(t,A),e=t.ptr,t.ptr=0),_.__wbg_set_square_occupant(this.ptr,e)}get state(){return _.__wbg_get_square_state(this.ptr)>>>0}set state(t){_.__wbg_set_square_state(this.ptr,t)}constructor(t,e){let r=0;y(e)||(k(e,A),r=e.ptr,e.ptr=0);var n=_.square_new(t,r);return C.__wrap(n)}static pc(t,e){var r=_.square_pc(t,e);return C.__wrap(r)}static empty(){var t=_.square_empty();return C.__wrap(t)}static unplay(){var t=_.square_unplay();return C.__wrap(t)}}function U(t){!function(t){const e=o(t);(function(t){t<36||(c[t]=i,i=t)})(t)}(t)}function W(t,e){return d(p(t,e))}function $(){return d(new Error)}function R(t,e){var r=w(o(e).stack,_.__wbindgen_malloc,_.__wbindgen_realloc),n=g;v()[t/4+1]=n,v()[t/4+0]=r}function D(t,e){try{console.error(p(t,e))}finally{_.__wbindgen_free(t,e)}}function M(){return T((function(){return d(self.self)}),arguments)}function P(t,e,r){return d(o(t).require(p(e,r)))}function z(t){return d(o(t).crypto)}function F(t){return d(o(t).msCrypto)}function J(t){return void 0===o(t)}function N(t){return d(o(t).getRandomValues)}function Y(t,e){o(t).getRandomValues(o(e))}function L(t,e,r){var n,_;o(t).randomFillSync((n=e,_=r,l().subarray(n/1,n/1+_)))}function Q(){return d(t)}function V(t){return o(t)instanceof Window}function H(t){var e=o(t).document;return y(e)?0:d(e)}function X(t,e,r){var n=o(t).getElementById(p(e,r));return y(n)?0:d(n)}function K(t){console.log(o(t))}function Z(t){return o(t)instanceof CanvasRenderingContext2D}function G(t,e){o(t).strokeStyle=o(e)}function tt(t,e){o(t).fillStyle=o(e)}function et(t,e){o(t).lineWidth=e}function rt(t){o(t).beginPath()}function nt(t){o(t).fill()}function _t(t){o(t).stroke()}function at(){return T((function(t,e,r,n,_,a){o(t).arc(e,r,n,_,a)}),arguments)}function ct(t,e,r,n,_){o(t).fillRect(e,r,n,_)}function ot(t,e,r,n,_){o(t).strokeRect(e,r,n,_)}function it(t){return o(t)instanceof HTMLCanvasElement}function st(t,e){o(t).width=e>>>0}function ut(t,e){o(t).height=e>>>0}function lt(){return T((function(t,e,r){var n=o(t).getContext(p(e,r));return y(n)?0:d(n)}),arguments)}function pt(t,e){return d(new Function(p(t,e)))}function dt(){return T((function(t,e){return d(o(t).call(o(e)))}),arguments)}function bt(){return T((function(){return d(self.self)}),arguments)}function gt(){return T((function(){return d(window.window)}),arguments)}function ft(){return T((function(){return d(globalThis.globalThis)}),arguments)}function ht(){return T((function(){return d(r.g.global)}),arguments)}function wt(t){return d(o(t).buffer)}function mt(t){return d(new Uint8Array(o(t)))}function vt(t,e,r){o(t).set(o(e),r>>>0)}function yt(t){return o(t).length}function kt(t){return d(new Uint8Array(t>>>0))}function xt(t,e,r){return d(o(t).subarray(e>>>0,r>>>0))}function Tt(t){return d(o(t))}function jt(t,e){var r=w(b(o(e)),_.__wbindgen_malloc,_.__wbindgen_realloc),n=g;v()[t/4+1]=n,v()[t/4+0]=r}function Et(t,e){throw new Error(p(t,e))}function It(){return d(_.memory)}}))},813:(t,e,r)=>{"use strict";var n=([n])=>r.v(e,t.id,"406c9aebd9f4530de773",{"./draught_bg.js":{__wbindgen_object_drop_ref:n.ug,__wbindgen_string_new:n.h4,__wbg_new_59cb74e423758ede:n.h9,__wbg_stack_558ba5917b466edd:n.Dz,__wbg_error_4bb6c2a97407129a:n.kF,__wbg_self_86b4b13392c7af56:n.U5,__wbg_require_f5521a5b85ad2542:n.r2,__wbg_crypto_b8c92eaac23d0d80:n.iY,__wbg_msCrypto_9ad6677321a08dd8:n.mS,__wbindgen_is_undefined:n.XP,__wbg_getRandomValues_dd27e6b0652b3236:n.yX,__wbg_getRandomValues_e57c9b75ddead065:n.ae,__wbg_randomFillSync_d2ba53160aec6aba:n.Os,__wbg_static_accessor_MODULE_452b4680e8614c81:n.DA,__wbg_instanceof_Window_11e25482011fc506:n.s8,__wbg_document_5aff8cd83ef968f5:n.WB,__wbg_getElementById_b180ea4ada06a837:n.cP,__wbg_log_9a99fb1af846153b:n.a,__wbg_instanceof_CanvasRenderingContext2d_779e79c4121aa91b:n.l_,__wbg_setstrokeStyle_2939ee453716e462:n.U_,__wbg_setfillStyle_af790b5baf4d3210:n.EN,__wbg_setlineWidth_3e6b1837ae38d099:n.qu,__wbg_beginPath_2378575e37027ad3:n.Wg,__wbg_fill_558339447ed6ad43:n.B3,__wbg_stroke_c1e0313c58997dcf:n.I6,__wbg_arc_fffd87d9113dce32:n.Qb,__wbg_fillRect_46ffc8d2cef7e298:n.cI,__wbg_strokeRect_7ea34fad8a7f0fe2:n.QK,__wbg_instanceof_HtmlCanvasElement_fd3cbbe3906d7792:n.Md,__wbg_setwidth_f3c88eb520ba8d47:n.ox,__wbg_setheight_5a1abba41e35c42a:n.ES,__wbg_getContext_813df131fcbd6e91:n.Ae,__wbg_newnoargs_9fdd8f3961dd1bee:n.UL,__wbg_call_ba36642bd901572b:n.qw,__wbg_self_bb69a836a72ec6e9:n.tS,__wbg_window_3304fc4b414c9693:n.R$,__wbg_globalThis_e0d21cabc6630763:n.md,__wbg_global_8463719227271676:n.IF,__wbg_buffer_9e184d6f785de5ed:n.zP,__wbg_new_e8101319e4cf95fc:n.td,__wbg_set_e8ae7b27314e8b98:n.Ct,__wbg_length_2d56cb37075fcfb1:n.uQ,__wbg_newwithlength_a8d1dbcbe703a5c6:n.RV,__wbg_subarray_901ede8318da52a6:n.sy,__wbindgen_object_clone_ref:n.m_,__wbindgen_debug_string:n.fY,__wbindgen_throw:n.Or,__wbindgen_memory:n.oH}});r.a(t,(t=>{var e=t([r(171)]);return e.then?e.then(n):n(e)}),1)},10:(t,e,r)=>{"use strict";r.a(t,(async t=>{r.r(e);var n=r(171),_=t([n]);n=(_.then?await _:_)[0];var a=8,c=8,o=3,i=4;const s="human_turn.thinking",u="human_turn.from_selected";(0,n.wc)(),document.getElementById("status-p");const l=document.getElementById("status-d"),p=document.getElementById("team-p"),d=document.getElementById("node-count");document.getElementById("startBtn").onclick=y;let b=null,g=function(t,e="danger",r=!0){null!=b&&clearInterval(b),l.className=`alert alert-${e}`,l.innerText=t,l.hidden=!1,r&&(b=setTimeout((()=>{l.hidden=!0}),3e3))},f=s,h=null,w=null,m=[];y();const v=document.getElementById("game-canvas");function y(){h=new n.lA(a,c,o,n.SZ.Black,i),w=new n.Ck(720,720,"game-canvas"),h.set_painter(w),h.draw(),k(),m=[],f=s}function k(){switch(h.current_turn()){case n.SZ.White:p.innerText="⚪ White ⚪";break;case n.SZ.Black:p.innerText="🔴 Black 🔴"}}v.addEventListener("click",(t=>{var e=function(t,e){var r=t.getBoundingClientRect();return{x:e.clientX-r.left,y:e.clientY-r.top}}(v,t);!function(t){switch(f){case s:if(h.current_cell_state(t).state!=n.i0.Occupied)return;if(h.current_cell_state(t).occupant.team!=h.current_turn())return;m.push(t),f=u,h.set_selected(t),h.draw();break;case u:if(!m[0].eq(t)){if(h.current_cell_state(t).state!=n.i0.Empty)return;if(m.push(t),2!=m.length)return g(`Error: wrong number of clicks to process ${m.length}`),void console.error(`Error: wrong number of clicks to process ${m.length}`);switch(h.make_move(m[0],m[1])){case n.Tt.Allowed:console.log(`Score after your turn: ${h.score()}`),I.checked&&(h.ai_move(),d.innerText=`searched ${h.last_node_count.toLocaleString("en-GB")} possible moves`,console.log(`Score after the AI's turn: ${h.score()}`));break;case n.Tt.IllegalTrajectory:g("You can't move like that!");break;case n.Tt.JumpingSameTeam:g("You can't jump your own piece!");break;case n.Tt.NoJumpablePiece:g("There's nothing to jump!");break;case n.Tt.OccupiedDest:g("There's a piece there!");break;case n.Tt.OutOfBounds:g("That square's not on the board! (how have you managed that?)");break;case n.Tt.UnoccupiedSrc:g("There's no piece to move!");break;case n.Tt.Unplayable:g("That's not a playable square!");break;case n.Tt.WrongTeamSrc:g("That's not your piece!")}}h.clear_selected(),h.draw(),m=[],f=s;break;case"ai_turn":console.log("It's the AI's turn!")}k()}(new n.rh(Math.floor(e.y/v.clientHeight*c),Math.floor(e.x/v.clientWidth*a)))}));const x=document.getElementById("width");x.onchange=()=>{a=parseInt(x.value),y()},x.value=8;const T=document.getElementById("height");T.onchange=()=>{c=parseInt(T.value),j.max=c/2-1,y()},T.value=8;const j=document.getElementById("play_rows");j.onchange=()=>{o=parseInt(j.value),console.log(typeof o),y()},j.value=3;const E=document.getElementById("ai_search_depth");E.onchange=()=>{i=parseInt(E.value),h.set_search_depth(i)},E.value=4;const I=document.getElementById("ai-checkbox");I.onchange=()=>{console.log(I.checked)}}))}}]); +(self.webpackChunkdraught=self.webpackChunkdraught||[]).push([[10],{171:(t,e,r)=>{"use strict";r.a(t,(async n=>{r.d(e,{wc:()=>x,SZ:()=>I,i0:()=>S,Tt:()=>E,rh:()=>B,lA:()=>O,Ck:()=>q,ug:()=>C,h4:()=>U,h9:()=>R,Dz:()=>$,kF:()=>D,U5:()=>M,r2:()=>P,iY:()=>z,mS:()=>F,XP:()=>J,yX:()=>Y,ae:()=>Z,Os:()=>L,DA:()=>N,s8:()=>Q,WB:()=>V,cP:()=>H,a:()=>X,l_:()=>K,U_:()=>G,EN:()=>tt,qu:()=>et,Wg:()=>rt,B3:()=>nt,I6:()=>_t,Qb:()=>at,cI:()=>ct,QK:()=>ot,Md:()=>it,ox:()=>st,ES:()=>ut,Ae:()=>lt,UL:()=>pt,qw:()=>dt,tS:()=>bt,R$:()=>gt,md:()=>ht,IF:()=>wt,zP:()=>ft,td:()=>mt,Ct:()=>vt,uQ:()=>yt,RV:()=>kt,sy:()=>xt,m_:()=>Tt,fY:()=>It,Or:()=>St,oH:()=>Et});var _=r(813);t=r.hmd(t);var a=n([_]);_=(a.then?await a:a)[0];const c=new Array(32).fill(void 0);function o(t){return c[t]}c.push(void 0,null,!0,!1);let i=c.length;let s=new("undefined"==typeof TextDecoder?(0,t.require)("util").TextDecoder:TextDecoder)("utf-8",{ignoreBOM:!0,fatal:!0});s.decode();let u=null;function l(){return null!==u&&u.buffer===_.memory.buffer||(u=new Uint8Array(_.memory.buffer)),u}function p(t,e){return s.decode(l().subarray(t,t+e))}function d(t){i===c.length&&c.push(c.length+1);const e=i;return i=c[e],c[e]=t,e}function b(t){const e=typeof t;if("number"==e||"boolean"==e||null==t)return`${t}`;if("string"==e)return`"${t}"`;if("symbol"==e){const e=t.description;return null==e?"Symbol":`Symbol(${e})`}if("function"==e){const e=t.name;return"string"==typeof e&&e.length>0?`Function(${e})`:"Function"}if(Array.isArray(t)){const e=t.length;let r="[";e>0&&(r+=b(t[0]));for(let n=1;n1))return toString.call(t);if(n=r[1],"Object"==n)try{return"Object("+JSON.stringify(t)+")"}catch(t){return"Object"}return t instanceof Error?`${t.name}: ${t.message}\n${t.stack}`:n}let g=0,h=new("undefined"==typeof TextEncoder?(0,t.require)("util").TextEncoder:TextEncoder)("utf-8");const w="function"==typeof h.encodeInto?function(t,e){return h.encodeInto(t,e)}:function(t,e){const r=h.encode(t);return e.set(r),{read:t.length,written:r.length}};function f(t,e,r){if(void 0===r){const r=h.encode(t),n=e(r.length);return l().subarray(n,n+r.length).set(r),g=r.length,n}let n=t.length,_=e(n);const a=l();let c=0;for(;c127)break;a[_+c]=e}if(c!==n){0!==c&&(t=t.slice(c)),_=r(_,n,n=c+3*t.length);const e=l().subarray(_+c,_+n);c+=w(t,e).written}return g=c,_}let m=null;function v(){return null!==m&&m.buffer===_.memory.buffer||(m=new Int32Array(_.memory.buffer)),m}function y(t){return null==t}function k(t,e){if(!(t instanceof e))throw new Error(`expected instance of ${e.name}`);return t.ptr}function x(){_.init_wasm()}function T(t,e){try{return t.apply(this,e)}catch(t){_.__wbindgen_exn_store(d(t))}}Object.freeze({Move:0,0:"Move",Jump:1,1:"Jump"});const I=Object.freeze({Black:0,0:"Black",White:1,1:"White"}),S=(Object.freeze({Man:0,0:"Man",King:1,1:"King"}),Object.freeze({Empty:0,0:"Empty",Occupied:1,1:"Occupied",Unplayable:2,2:"Unplayable"})),E=Object.freeze({Allowed:0,0:"Allowed",UnoccupiedSrc:1,1:"UnoccupiedSrc",OccupiedDest:2,2:"OccupiedDest",OutOfBounds:3,3:"OutOfBounds",Unplayable:4,4:"Unplayable",WrongTeamSrc:5,5:"WrongTeamSrc",IllegalTrajectory:6,6:"IllegalTrajectory",NoJumpablePiece:7,7:"NoJumpablePiece",JumpingSameTeam:8,8:"JumpingSameTeam"});class j{static __wrap(t){const e=Object.create(j.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_board_free(t)}get width(){return _.__wbg_get_board_width(this.ptr)>>>0}set width(t){_.__wbg_set_board_width(this.ptr,t)}get height(){return _.__wbg_get_board_height(this.ptr)>>>0}set height(t){_.__wbg_set_board_height(this.ptr,t)}get current_turn(){return _.__wbg_get_board_current_turn(this.ptr)>>>0}set current_turn(t){_.__wbg_set_board_current_turn(this.ptr,t)}cell(t){var e=_.board_cell(this.ptr,t);return A.__wrap(e)}set_cell(t,e){k(e,A);var r=e.ptr;e.ptr=0,_.board_set_cell(this.ptr,t,r)}grid_cell(t){k(t,B);var e=t.ptr;t.ptr=0;var r=_.board_grid_cell(this.ptr,e);return A.__wrap(r)}cell_index(t,e){return _.board_cell_index(this.ptr,t,e)>>>0}cell_idx(t){k(t,B);var e=t.ptr;return t.ptr=0,_.board_cell_idx(this.ptr,e)>>>0}board_index(t){var e=_.board_board_index(this.ptr,t);return B.__wrap(e)}can_move(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;return e.ptr=0,_.board_can_move(this.ptr,r,n)>>>0}validate_man_move(t,e,r){k(t,B);var n=t.ptr;t.ptr=0,k(e,B);var a=e.ptr;e.ptr=0,k(r,W);var c=r.ptr;return r.ptr=0,_.board_validate_man_move(this.ptr,n,a,c)>>>0}validate_king_move(t,e,r){k(t,B);var n=t.ptr;t.ptr=0,k(e,B);var a=e.ptr;e.ptr=0,k(r,W);var c=r.ptr;return r.ptr=0,_.board_validate_king_move(this.ptr,n,a,c)>>>0}jumpee_idx(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;return e.ptr=0,_.board_jumpee_idx(this.ptr,r,n)>>>0}cells(){return _.board_cells(this.ptr)}num_cells(){return _.board_num_cells(this.ptr)>>>0}num_pieces(){return _.board_num_pieces(this.ptr)>>>0}num_player(t){return _.board_num_player(this.ptr,t)>>>0}score(){return _.board_score(this.ptr)}cell_state(t){return _.board_cell_state(this.ptr,t)>>>0}apply_move(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;e.ptr=0;var a=_.board_apply_move(this.ptr,r,n);return j.__wrap(a)}apply_jump(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;e.ptr=0;var a=_.board_apply_jump(this.ptr,r,n);return j.__wrap(a)}king_row_idx(){return _.board_king_row_idx(this.ptr)>>>0}static validate_jumpee(t,e){k(t,A);var r=t.ptr;t.ptr=0,k(e,W);var n=e.ptr;return e.ptr=0,_.board_validate_jumpee(r,n)>>>0}static check_jumpee_team(t,e){k(t,W);var r=t.ptr;t.ptr=0,k(e,W);var n=e.ptr;return e.ptr=0,0!==_.board_check_jumpee_team(r,n)}constructor(t,e,r){var n=_.board_new(t,e,r);return j.__wrap(n)}static init_game(t,e){k(t,j);var r=t.ptr;t.ptr=0;var n=_.board_init_game(r,e);return j.__wrap(n)}}class B{static __wrap(t){const e=Object.create(B.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_brdidx_free(t)}get row(){return _.__wbg_get_brdidx_row(this.ptr)>>>0}set row(t){_.__wbg_set_brdidx_row(this.ptr,t)}get col(){return _.__wbg_get_brdidx_col(this.ptr)>>>0}set col(t){_.__wbg_set_brdidx_col(this.ptr,t)}constructor(t,e){var r=_.brdidx_from(t,e);return B.__wrap(r)}eq(t){return k(t,B),0!==_.brdidx_eq(this.ptr,t.ptr)}}class O{static __wrap(t){const e=Object.create(O.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_game_free(t)}get last_node_count(){return _.__wbg_get_game_last_node_count(this.ptr)>>>0}set last_node_count(t){_.__wbg_set_game_last_node_count(this.ptr,t)}current_board_cells(){return _.game_current_board_cells(this.ptr)}current_board_len(){return _.game_current_board_len(this.ptr)>>>0}current_turn(){return _.game_current_turn(this.ptr)>>>0}score(){return _.game_score(this.ptr)}winning(){var t=_.game_winning(this.ptr);return 2===t?void 0:t}has_won(){var t=_.game_has_won(this.ptr);return 2===t?void 0:t}current_cell_state(t){k(t,B);var e=_.game_current_cell_state(this.ptr,t.ptr);return A.__wrap(e)}set_search_depth(t){_.game_set_search_depth(this.ptr,t)}set_selected(t){k(t,B),_.game_set_selected(this.ptr,t.ptr)}clear_selected(){_.game_clear_selected(this.ptr)}make_move(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;return e.ptr=0,_.game_make_move(this.ptr,r,n)>>>0}execute_move(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;e.ptr=0,_.game_execute_move(this.ptr,r,n)}execute_jump(t,e){k(t,B);var r=t.ptr;t.ptr=0,k(e,B);var n=e.ptr;e.ptr=0,_.game_execute_jump(this.ptr,r,n)}push_new_board(t){k(t,j);var e=t.ptr;t.ptr=0,_.game_push_new_board(this.ptr,e)}set_current(t){k(t,j);var e=t.ptr;t.ptr=0,_.game_set_current(this.ptr,e)}constructor(t,e,r,n,a){var c=_.game_new(t,e,r,n,a);return O.__wrap(c)}static new_with_canvas(t,e,r,n,a,c,o,i){var s=f(c,_.__wbindgen_malloc,_.__wbindgen_realloc),u=g,l=_.game_new_with_canvas(t,e,r,n,a,s,u,o,i);return O.__wrap(l)}set_painter(t){k(t,q);var e=t.ptr;t.ptr=0,_.game_set_painter(this.ptr,e)}draw(){_.game_draw(this.ptr)}ai_move(){_.game_ai_move(this.ptr)}}class q{static __wrap(t){const e=Object.create(q.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_painter_free(t)}constructor(t,e,r){var n=f(r,_.__wbindgen_malloc,_.__wbindgen_realloc),a=g,c=_.painter_new(t,e,n,a);return q.__wrap(c)}static new_with_canvas(t,e,r){var n=_.painter_new_with_canvas(t,e,d(r));return q.__wrap(n)}set_square_outline(t){_.painter_set_square_outline(this.ptr,d(t))}set_outline_width(t){_.painter_set_outline_width(this.ptr,t)}set_draw_outline(t){_.painter_set_draw_outline(this.ptr,t)}reset_dimensions(){_.painter_reset_dimensions(this.ptr)}validate_board_dim(t){return k(t,j),0!==_.painter_validate_board_dim(this.ptr,t.ptr)}draw(t){k(t,j),_.painter_draw(this.ptr,t.ptr)}}class W{static __wrap(t){const e=Object.create(W.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_piece_free(t)}get team(){return _.__wbg_get_piece_team(this.ptr)>>>0}set team(t){_.__wbg_set_piece_team(this.ptr,t)}get strength(){return _.__wbg_get_piece_strength(this.ptr)>>>0}set strength(t){_.__wbg_set_piece_strength(this.ptr,t)}constructor(t,e){var r=_.piece_new(t,e);return W.__wrap(r)}}class A{static __wrap(t){const e=Object.create(A.prototype);return e.ptr=t,e}__destroy_into_raw(){const t=this.ptr;return this.ptr=0,t}free(){const t=this.__destroy_into_raw();_.__wbg_square_free(t)}get occupant(){var t=_.__wbg_get_square_occupant(this.ptr);return 0===t?void 0:W.__wrap(t)}set occupant(t){let e=0;y(t)||(k(t,W),e=t.ptr,t.ptr=0),_.__wbg_set_square_occupant(this.ptr,e)}get state(){return _.__wbg_get_square_state(this.ptr)>>>0}set state(t){_.__wbg_set_square_state(this.ptr,t)}constructor(t,e){let r=0;y(e)||(k(e,W),r=e.ptr,e.ptr=0);var n=_.square_new(t,r);return A.__wrap(n)}static pc(t,e){var r=_.square_pc(t,e);return A.__wrap(r)}static empty(){var t=_.square_empty();return A.__wrap(t)}static unplay(){var t=_.square_unplay();return A.__wrap(t)}}function C(t){!function(t){const e=o(t);(function(t){t<36||(c[t]=i,i=t)})(t)}(t)}function U(t,e){return d(p(t,e))}function R(){return d(new Error)}function $(t,e){var r=f(o(e).stack,_.__wbindgen_malloc,_.__wbindgen_realloc),n=g;v()[t/4+1]=n,v()[t/4+0]=r}function D(t,e){try{console.error(p(t,e))}finally{_.__wbindgen_free(t,e)}}function M(){return T((function(){return d(self.self)}),arguments)}function P(t,e,r){return d(o(t).require(p(e,r)))}function z(t){return d(o(t).crypto)}function F(t){return d(o(t).msCrypto)}function J(t){return void 0===o(t)}function Y(t){return d(o(t).getRandomValues)}function Z(t,e){o(t).getRandomValues(o(e))}function L(t,e,r){var n,_;o(t).randomFillSync((n=e,_=r,l().subarray(n/1,n/1+_)))}function N(){return d(t)}function Q(t){return o(t)instanceof Window}function V(t){var e=o(t).document;return y(e)?0:d(e)}function H(t,e,r){var n=o(t).getElementById(p(e,r));return y(n)?0:d(n)}function X(t){console.log(o(t))}function K(t){return o(t)instanceof CanvasRenderingContext2D}function G(t,e){o(t).strokeStyle=o(e)}function tt(t,e){o(t).fillStyle=o(e)}function et(t,e){o(t).lineWidth=e}function rt(t){o(t).beginPath()}function nt(t){o(t).fill()}function _t(t){o(t).stroke()}function at(){return T((function(t,e,r,n,_,a){o(t).arc(e,r,n,_,a)}),arguments)}function ct(t,e,r,n,_){o(t).fillRect(e,r,n,_)}function ot(t,e,r,n,_){o(t).strokeRect(e,r,n,_)}function it(t){return o(t)instanceof HTMLCanvasElement}function st(t,e){o(t).width=e>>>0}function ut(t,e){o(t).height=e>>>0}function lt(){return T((function(t,e,r){var n=o(t).getContext(p(e,r));return y(n)?0:d(n)}),arguments)}function pt(t,e){return d(new Function(p(t,e)))}function dt(){return T((function(t,e){return d(o(t).call(o(e)))}),arguments)}function bt(){return T((function(){return d(self.self)}),arguments)}function gt(){return T((function(){return d(window.window)}),arguments)}function ht(){return T((function(){return d(globalThis.globalThis)}),arguments)}function wt(){return T((function(){return d(r.g.global)}),arguments)}function ft(t){return d(o(t).buffer)}function mt(t){return d(new Uint8Array(o(t)))}function vt(t,e,r){o(t).set(o(e),r>>>0)}function yt(t){return o(t).length}function kt(t){return d(new Uint8Array(t>>>0))}function xt(t,e,r){return d(o(t).subarray(e>>>0,r>>>0))}function Tt(t){return d(o(t))}function It(t,e){var r=f(b(o(e)),_.__wbindgen_malloc,_.__wbindgen_realloc),n=g;v()[t/4+1]=n,v()[t/4+0]=r}function St(t,e){throw new Error(p(t,e))}function Et(){return d(_.memory)}}))},813:(t,e,r)=>{"use strict";var n=([n])=>r.v(e,t.id,"a9e080695052ab7978e6",{"./draught_bg.js":{__wbindgen_object_drop_ref:n.ug,__wbindgen_string_new:n.h4,__wbg_new_59cb74e423758ede:n.h9,__wbg_stack_558ba5917b466edd:n.Dz,__wbg_error_4bb6c2a97407129a:n.kF,__wbg_self_86b4b13392c7af56:n.U5,__wbg_require_f5521a5b85ad2542:n.r2,__wbg_crypto_b8c92eaac23d0d80:n.iY,__wbg_msCrypto_9ad6677321a08dd8:n.mS,__wbindgen_is_undefined:n.XP,__wbg_getRandomValues_dd27e6b0652b3236:n.yX,__wbg_getRandomValues_e57c9b75ddead065:n.ae,__wbg_randomFillSync_d2ba53160aec6aba:n.Os,__wbg_static_accessor_MODULE_452b4680e8614c81:n.DA,__wbg_instanceof_Window_11e25482011fc506:n.s8,__wbg_document_5aff8cd83ef968f5:n.WB,__wbg_getElementById_b180ea4ada06a837:n.cP,__wbg_log_9a99fb1af846153b:n.a,__wbg_instanceof_CanvasRenderingContext2d_779e79c4121aa91b:n.l_,__wbg_setstrokeStyle_2939ee453716e462:n.U_,__wbg_setfillStyle_af790b5baf4d3210:n.EN,__wbg_setlineWidth_3e6b1837ae38d099:n.qu,__wbg_beginPath_2378575e37027ad3:n.Wg,__wbg_fill_558339447ed6ad43:n.B3,__wbg_stroke_c1e0313c58997dcf:n.I6,__wbg_arc_fffd87d9113dce32:n.Qb,__wbg_fillRect_46ffc8d2cef7e298:n.cI,__wbg_strokeRect_7ea34fad8a7f0fe2:n.QK,__wbg_instanceof_HtmlCanvasElement_fd3cbbe3906d7792:n.Md,__wbg_setwidth_f3c88eb520ba8d47:n.ox,__wbg_setheight_5a1abba41e35c42a:n.ES,__wbg_getContext_813df131fcbd6e91:n.Ae,__wbg_newnoargs_9fdd8f3961dd1bee:n.UL,__wbg_call_ba36642bd901572b:n.qw,__wbg_self_bb69a836a72ec6e9:n.tS,__wbg_window_3304fc4b414c9693:n.R$,__wbg_globalThis_e0d21cabc6630763:n.md,__wbg_global_8463719227271676:n.IF,__wbg_buffer_9e184d6f785de5ed:n.zP,__wbg_new_e8101319e4cf95fc:n.td,__wbg_set_e8ae7b27314e8b98:n.Ct,__wbg_length_2d56cb37075fcfb1:n.uQ,__wbg_newwithlength_a8d1dbcbe703a5c6:n.RV,__wbg_subarray_901ede8318da52a6:n.sy,__wbindgen_object_clone_ref:n.m_,__wbindgen_debug_string:n.fY,__wbindgen_throw:n.Or,__wbindgen_memory:n.oH}});r.a(t,(t=>{var e=t([r(171)]);return e.then?e.then(n):n(e)}),1)},10:(t,e,r)=>{"use strict";r.a(t,(async t=>{r.r(e);var n=r(171),_=t([n]);n=(_.then?await _:_)[0];var a=8,c=8,o=3,i=4;const s="human_turn.thinking",u="human_turn.from_selected";(0,n.wc)(),document.getElementById("status-p");const l=document.getElementById("status-d"),p=document.getElementById("team-p"),d=document.getElementById("node-count"),b=document.getElementById("winning-p");document.getElementById("startBtn").onclick=x;let g=null,h=null,w=function(t,e="danger",r=!0){null!=h&&clearInterval(h),l.className=`alert alert-${e}`,l.innerText=t,l.hidden=!1,r&&(h=setTimeout((()=>{l.hidden=!0}),3e3))},f=s,m=null,v=null,y=[];x();const k=document.getElementById("game-canvas");function x(){m=new n.lA(a,c,o,n.SZ.Black,i),v=new n.Ck(720,720,"game-canvas"),m.set_painter(v),m.draw(),clearInterval(g),T(),I(),y=[],f=s}function T(){switch(m.current_turn()){case n.SZ.White:p.innerText="⚪ White ⚪";break;case n.SZ.Black:p.innerText="🔴 Black 🔴"}}function I(){switch(m.winning()){case void 0:b.innerText="";break;case n.SZ.White:b.innerText="👑 White 👑";break;case n.SZ.Black:b.innerText="👑 Black 👑"}}k.addEventListener("click",(t=>{var e=function(t,e){var r=t.getBoundingClientRect();return{x:e.clientX-r.left,y:e.clientY-r.top}}(k,t);!function(t){switch(f){case s:if(m.current_cell_state(t).state!=n.i0.Occupied)return;if(m.current_cell_state(t).occupant.team!=m.current_turn())return;y.push(t),f=u,m.set_selected(t),m.draw();break;case u:if(!y[0].eq(t)){if(m.current_cell_state(t).state!=n.i0.Empty)return;if(y.push(t),2!=y.length)return w(`Error: wrong number of clicks to process ${y.length}`),void console.error(`Error: wrong number of clicks to process ${y.length}`);switch(m.make_move(y[0],y[1])){case n.Tt.Allowed:O.checked&&(m.ai_move(),d.innerText=`searched ${m.last_node_count.toLocaleString("en-GB")} possible moves`);break;case n.Tt.IllegalTrajectory:w("You can't move like that!");break;case n.Tt.JumpingSameTeam:w("You can't jump your own piece!");break;case n.Tt.NoJumpablePiece:w("There's nothing to jump!");break;case n.Tt.OccupiedDest:w("There's a piece there!");break;case n.Tt.OutOfBounds:w("That square's not on the board! (how have you managed that?)");break;case n.Tt.UnoccupiedSrc:w("There's no piece to move!");break;case n.Tt.Unplayable:w("That's not a playable square!");break;case n.Tt.WrongTeamSrc:w("That's not your piece!")}}m.clear_selected(),m.draw(),y=[],f=s;break;case"ai_turn":console.log("It's the AI's turn!")}T(),I(),function(){switch(m.has_won()){case void 0:break;case n.SZ.White:w("You Lost!"),g=setInterval((()=>{x()}),3e3);break;case n.SZ.Black:w("You Won!","success"),g=setInterval((()=>{x()}),3e3)}}()}(new n.rh(Math.floor(e.y/k.clientHeight*c),Math.floor(e.x/k.clientWidth*a)))}));const S=document.getElementById("width");S.onchange=()=>{a=parseInt(S.value),x()},S.value=8;const E=document.getElementById("height");E.onchange=()=>{c=parseInt(E.value),j.max=c/2-1,x()},E.value=8;const j=document.getElementById("play_rows");j.onchange=()=>{o=parseInt(j.value),x()},j.value=3;const B=document.getElementById("ai_search_depth");B.onchange=()=>{i=parseInt(B.value),m.set_search_depth(i),i>4&&w("This increases thinking time exponentially, be careful (probably don't go past 6)","warning")},B.value=4;const O=document.getElementById("ai-checkbox");O.onchange=()=>{}}))}}]); //# sourceMappingURL=10.bootstrap.js.map \ No newline at end of file diff --git a/10.bootstrap.js.map b/10.bootstrap.js.map index 580a514..0023030 100644 --- a/10.bootstrap.js.map +++ b/10.bootstrap.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://draught/../pkg/draught_bg.js","webpack://draught/./index.js"],"names":["heap","Array","fill","undefined","getObject","idx","push","heap_next","length","cachedTextDecoder","TextDecoder","module","require","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","obj","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","isLikeNone","x","_assertClass","instance","klass","init_wasm","handleError","f","args","apply","this","e","Object","freeze","Move","Jump","Team","Black","White","SquareState","Man","King","Empty","Occupied","Unplayable","Moveable","Allowed","UnoccupiedSrc","OccupiedDest","OutOfBounds","WrongTeamSrc","IllegalTrajectory","NoJumpablePiece","JumpingSameTeam","Board","create","prototype","__destroy_into_raw","arg0","ret","Square","__wrap","square","ptr0","BrdIdx","row","col","from","to","ptr1","from_square_occupant","Piece","ptr2","team","jumpee","from_occ","width","height","current_turn","board","piece_rows","other","Game","search_depth","first_turn","canvas_id","canvas_width","canvas_height","len0","value","Painter","canvas","strength","state","occupant","__wbindgen_object_drop_ref","dropObject","takeObject","__wbindgen_string_new","arg1","__wbg_new_59cb74e423758ede","__wbg_stack_558ba5917b466edd","__wbg_error_4bb6c2a97407129a","console","error","__wbg_self_86b4b13392c7af56","self","arguments","__wbg_require_f5521a5b85ad2542","arg2","__wbg_crypto_b8c92eaac23d0d80","crypto","__wbg_msCrypto_9ad6677321a08dd8","msCrypto","__wbindgen_is_undefined","__wbg_getRandomValues_dd27e6b0652b3236","getRandomValues","__wbg_getRandomValues_e57c9b75ddead065","__wbg_randomFillSync_d2ba53160aec6aba","randomFillSync","__wbg_static_accessor_MODULE_452b4680e8614c81","__wbg_instanceof_Window_11e25482011fc506","Window","__wbg_document_5aff8cd83ef968f5","document","__wbg_getElementById_b180ea4ada06a837","getElementById","__wbg_log_9a99fb1af846153b","log","__wbg_instanceof_CanvasRenderingContext2d_779e79c4121aa91b","CanvasRenderingContext2D","__wbg_setstrokeStyle_2939ee453716e462","strokeStyle","__wbg_setfillStyle_af790b5baf4d3210","fillStyle","__wbg_setlineWidth_3e6b1837ae38d099","lineWidth","__wbg_beginPath_2378575e37027ad3","beginPath","__wbg_fill_558339447ed6ad43","__wbg_stroke_c1e0313c58997dcf","stroke","__wbg_arc_fffd87d9113dce32","arg3","arg4","arg5","arc","__wbg_fillRect_46ffc8d2cef7e298","fillRect","__wbg_strokeRect_7ea34fad8a7f0fe2","strokeRect","__wbg_instanceof_HtmlCanvasElement_fd3cbbe3906d7792","HTMLCanvasElement","__wbg_setwidth_f3c88eb520ba8d47","__wbg_setheight_5a1abba41e35c42a","__wbg_getContext_813df131fcbd6e91","getContext","__wbg_newnoargs_9fdd8f3961dd1bee","Function","__wbg_call_ba36642bd901572b","__wbg_self_bb69a836a72ec6e9","__wbg_window_3304fc4b414c9693","window","__wbg_globalThis_e0d21cabc6630763","globalThis","__wbg_global_8463719227271676","g","global","__wbg_buffer_9e184d6f785de5ed","__wbg_new_e8101319e4cf95fc","__wbg_set_e8ae7b27314e8b98","__wbg_length_2d56cb37075fcfb1","__wbg_newwithlength_a8d1dbcbe703a5c6","__wbg_subarray_901ede8318da52a6","__wbindgen_object_clone_ref","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_memory","BOARD_WIDTH","BOARD_HEIGHT","PIECE_ROWS","SEARCH_DEPTH","GameState","statusAlert","teamText","nodeCountText","onclick","start_game","statusTimeout","setStatus","txt","alertType","hide","clearInterval","innerText","hidden","setTimeout","current_state","game","painter","clicks","set_painter","draw","updateTeamText","addEventListener","event","mousepos","evt","rect","getBoundingClientRect","clientX","left","y","clientY","top","getMousePos","cell_coord","current_cell_state","set_selected","eq","make_move","score","aiCheckBox","checked","ai_move","last_node_count","toLocaleString","clear_selected","process_canvas_click","Math","floor","clientHeight","clientWidth","widthBox","onchange","parseInt","heightBox","pieceRowsBox","max","aiSearchDepthBox","set_search_depth"],"mappings":"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","file":"10.bootstrap.js","sourcesContent":["import * as wasm from './draught_bg.wasm';\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n/**\n*/\nexport function init_wasm() {\n wasm.init_wasm();\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n*/\nexport const MoveType = Object.freeze({ Move:0,\"0\":\"Move\",Jump:1,\"1\":\"Jump\", });\n/**\n*/\nexport const Team = Object.freeze({ Black:0,\"0\":\"Black\",White:1,\"1\":\"White\", });\n/**\n*/\nexport const Strength = Object.freeze({ Man:0,\"0\":\"Man\",King:1,\"1\":\"King\", });\n/**\n*/\nexport const SquareState = Object.freeze({ Empty:0,\"0\":\"Empty\",Occupied:1,\"1\":\"Occupied\",Unplayable:2,\"2\":\"Unplayable\", });\n/**\n*/\nexport const Moveable = Object.freeze({ Allowed:0,\"0\":\"Allowed\",UnoccupiedSrc:1,\"1\":\"UnoccupiedSrc\",OccupiedDest:2,\"2\":\"OccupiedDest\",OutOfBounds:3,\"3\":\"OutOfBounds\",Unplayable:4,\"4\":\"Unplayable\",WrongTeamSrc:5,\"5\":\"WrongTeamSrc\",IllegalTrajectory:6,\"6\":\"IllegalTrajectory\",NoJumpablePiece:7,\"7\":\"NoJumpablePiece\",JumpingSameTeam:8,\"8\":\"JumpingSameTeam\", });\n/**\n* Single state of a checkers board\n*/\nexport class Board {\n\n static __wrap(ptr) {\n const obj = Object.create(Board.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_board_free(ptr);\n }\n /**\n * @returns {number}\n */\n get width() {\n var ret = wasm.__wbg_get_board_width(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set width(arg0) {\n wasm.__wbg_set_board_width(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get height() {\n var ret = wasm.__wbg_get_board_height(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set height(arg0) {\n wasm.__wbg_set_board_height(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get current_turn() {\n var ret = wasm.__wbg_get_board_current_turn(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set current_turn(arg0) {\n wasm.__wbg_set_board_current_turn(this.ptr, arg0);\n }\n /**\n * Get a copy of a board square by 1D array index\n * @param {number} idx\n * @returns {Square}\n */\n cell(idx) {\n var ret = wasm.board_cell(this.ptr, idx);\n return Square.__wrap(ret);\n }\n /**\n * Get a copy of a board square by 1D array index\n * @param {number} idx\n * @param {Square} square\n */\n set_cell(idx, square) {\n _assertClass(square, Square);\n var ptr0 = square.ptr;\n square.ptr = 0;\n wasm.board_set_cell(this.ptr, idx, ptr0);\n }\n /**\n * Get a copy of a board square by 2D [`BrdIdx`] index\n * @param {BrdIdx} idx\n * @returns {Square}\n */\n grid_cell(idx) {\n _assertClass(idx, BrdIdx);\n var ptr0 = idx.ptr;\n idx.ptr = 0;\n var ret = wasm.board_grid_cell(this.ptr, ptr0);\n return Square.__wrap(ret);\n }\n /**\n * Transform a 2D row/column board index into a single 1D index for use with [`Board::cells`]\n * @param {number} row\n * @param {number} col\n * @returns {number}\n */\n cell_index(row, col) {\n var ret = wasm.board_cell_index(this.ptr, row, col);\n return ret >>> 0;\n }\n /**\n * Similar to [`Board::cell_index`] but with a [`BrdIdx`] instead of separate indices. Transform a 2D row/column board index into a single 1D index for use with [`Board::cells`]\n * @param {BrdIdx} idx\n * @returns {number}\n */\n cell_idx(idx) {\n _assertClass(idx, BrdIdx);\n var ptr0 = idx.ptr;\n idx.ptr = 0;\n var ret = wasm.board_cell_idx(this.ptr, ptr0);\n return ret >>> 0;\n }\n /**\n * Transform a 1D array index (for [`Board::cells`]) into a 2D game board index (by row/col)\n * @param {number} idx\n * @returns {BrdIdx}\n */\n board_index(idx) {\n var ret = wasm.board_board_index(this.ptr, idx);\n return BrdIdx.__wrap(ret);\n }\n /**\n * Check whether a move given by source and destination indices is legal\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {number}\n */\n can_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_can_move(this.ptr, ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @param {Piece} from_square_occupant\n * @returns {number}\n */\n validate_man_move(from, to, from_square_occupant) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n _assertClass(from_square_occupant, Piece);\n var ptr2 = from_square_occupant.ptr;\n from_square_occupant.ptr = 0;\n var ret = wasm.board_validate_man_move(this.ptr, ptr0, ptr1, ptr2);\n return ret >>> 0;\n }\n /**\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @param {Piece} from_square_occupant\n * @returns {number}\n */\n validate_king_move(from, to, from_square_occupant) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n _assertClass(from_square_occupant, Piece);\n var ptr2 = from_square_occupant.ptr;\n from_square_occupant.ptr = 0;\n var ret = wasm.board_validate_king_move(this.ptr, ptr0, ptr1, ptr2);\n return ret >>> 0;\n }\n /**\n * Get cell index of jumpee square given from and to locations\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {number}\n */\n jumpee_idx(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_jumpee_idx(this.ptr, ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Get a pointer to the backing array of board squares, [`Board::cells`]\n * @returns {number}\n */\n cells() {\n var ret = wasm.board_cells(this.ptr);\n return ret;\n }\n /**\n * Get the number of board squares\n * @returns {number}\n */\n num_cells() {\n var ret = wasm.board_num_cells(this.ptr);\n return ret >>> 0;\n }\n /**\n * Get the number of remaining pieces\n * @returns {number}\n */\n num_pieces() {\n var ret = wasm.board_num_pieces(this.ptr);\n return ret >>> 0;\n }\n /**\n * Get the number of remaining pieces for a player\n * @param {number} team\n * @returns {number}\n */\n num_player(team) {\n var ret = wasm.board_num_player(this.ptr, team);\n return ret >>> 0;\n }\n /**\n * Get the score value, Black - White pieces\n * @returns {number}\n */\n score() {\n var ret = wasm.board_score(this.ptr);\n return ret;\n }\n /**\n * Get the state of a board square by 1D array index\n * @param {number} idx\n * @returns {number}\n */\n cell_state(idx) {\n var ret = wasm.board_cell_state(this.ptr, idx);\n return ret >>> 0;\n }\n /**\n * Get new board derived from current with given move applied\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {Board}\n */\n apply_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_apply_move(this.ptr, ptr0, ptr1);\n return Board.__wrap(ret);\n }\n /**\n * Get new board derived from current with given jump applied\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {Board}\n */\n apply_jump(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_apply_jump(this.ptr, ptr0, ptr1);\n return Board.__wrap(ret);\n }\n /**\n * Get row index for current team, top row for black, bottom row for white\n * @returns {number}\n */\n king_row_idx() {\n var ret = wasm.board_king_row_idx(this.ptr);\n return ret >>> 0;\n }\n /**\n * Unwrap the jumpee piece from the square and [`Board::check_jumpee_team`] with [`Moveable`] response\n * @param {Square} jumpee\n * @param {Piece} from_occ\n * @returns {number}\n */\n static validate_jumpee(jumpee, from_occ) {\n _assertClass(jumpee, Square);\n var ptr0 = jumpee.ptr;\n jumpee.ptr = 0;\n _assertClass(from_occ, Piece);\n var ptr1 = from_occ.ptr;\n from_occ.ptr = 0;\n var ret = wasm.board_validate_jumpee(ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Check that the source piece and the jumpee are of opposing teams\n * @param {Piece} from\n * @param {Piece} jumpee\n * @returns {boolean}\n */\n static check_jumpee_team(from, jumpee) {\n _assertClass(from, Piece);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(jumpee, Piece);\n var ptr1 = jumpee.ptr;\n jumpee.ptr = 0;\n var ret = wasm.board_check_jumpee_team(ptr0, ptr1);\n return ret !== 0;\n }\n /**\n * Initialise a game board without game pieces\n * @param {number} width\n * @param {number} height\n * @param {number} current_turn\n */\n constructor(width, height, current_turn) {\n var ret = wasm.board_new(width, height, current_turn);\n return Board.__wrap(ret);\n }\n /**\n * Reset the given board to a starting layout with 3 rows of opposing pieces\n * @param {Board} board\n * @param {number} piece_rows\n * @returns {Board}\n */\n static init_game(board, piece_rows) {\n _assertClass(board, Board);\n var ptr0 = board.ptr;\n board.ptr = 0;\n var ret = wasm.board_init_game(ptr0, piece_rows);\n return Board.__wrap(ret);\n }\n}\n/**\n* Rank 2 tensor index to identify a board square by row and column\n*/\nexport class BrdIdx {\n\n static __wrap(ptr) {\n const obj = Object.create(BrdIdx.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_brdidx_free(ptr);\n }\n /**\n * @returns {number}\n */\n get row() {\n var ret = wasm.__wbg_get_brdidx_row(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set row(arg0) {\n wasm.__wbg_set_brdidx_row(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get col() {\n var ret = wasm.__wbg_get_brdidx_col(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set col(arg0) {\n wasm.__wbg_set_brdidx_col(this.ptr, arg0);\n }\n /**\n * @param {number} row\n * @param {number} col\n */\n constructor(row, col) {\n var ret = wasm.brdidx_from(row, col);\n return BrdIdx.__wrap(ret);\n }\n /**\n * @param {BrdIdx} other\n * @returns {boolean}\n */\n eq(other) {\n _assertClass(other, BrdIdx);\n var ret = wasm.brdidx_eq(this.ptr, other.ptr);\n return ret !== 0;\n }\n}\n/**\n* Root-level structure for managing the game as a collection of board states\n*/\nexport class Game {\n\n static __wrap(ptr) {\n const obj = Object.create(Game.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_game_free(ptr);\n }\n /**\n * @returns {number}\n */\n get last_node_count() {\n var ret = wasm.__wbg_get_game_last_node_count(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set last_node_count(arg0) {\n wasm.__wbg_set_game_last_node_count(this.ptr, arg0);\n }\n /**\n * Get pointer to current board's squares\n * @returns {number}\n */\n current_board_cells() {\n var ret = wasm.game_current_board_cells(this.ptr);\n return ret;\n }\n /**\n * Get pointer to current board's squares\n * @returns {number}\n */\n current_board_len() {\n var ret = wasm.game_current_board_len(this.ptr);\n return ret >>> 0;\n }\n /**\n * Current turn's team\n * @returns {number}\n */\n current_turn() {\n var ret = wasm.game_current_turn(this.ptr);\n return ret >>> 0;\n }\n /**\n * Current board's score\n * @returns {number}\n */\n score() {\n var ret = wasm.game_score(this.ptr);\n return ret;\n }\n /**\n * Get square on current board for given index\n * @param {BrdIdx} idx\n * @returns {Square}\n */\n current_cell_state(idx) {\n _assertClass(idx, BrdIdx);\n var ret = wasm.game_current_cell_state(this.ptr, idx.ptr);\n return Square.__wrap(ret);\n }\n /**\n * @param {number} search_depth\n */\n set_search_depth(search_depth) {\n wasm.game_set_search_depth(this.ptr, search_depth);\n }\n /**\n * Set given index as selected piece\n * TODO: Check whether valid square?\n * @param {BrdIdx} idx\n */\n set_selected(idx) {\n _assertClass(idx, BrdIdx);\n wasm.game_set_selected(this.ptr, idx.ptr);\n }\n /**\n * Clear currently selected piece\n */\n clear_selected() {\n wasm.game_clear_selected(this.ptr);\n }\n /**\n * Attempt to make a move given a source and destination index\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {number}\n */\n make_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.game_make_move(this.ptr, ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Update board state with given move and push new board into current state\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n */\n execute_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n wasm.game_execute_move(this.ptr, ptr0, ptr1);\n }\n /**\n * Update board state with given jump move and push new board into current state\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n */\n execute_jump(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n wasm.game_execute_jump(this.ptr, ptr0, ptr1);\n }\n /**\n * Push current board into the previous turns and set given board to current\n * @param {Board} board\n */\n push_new_board(board) {\n _assertClass(board, Board);\n var ptr0 = board.ptr;\n board.ptr = 0;\n wasm.game_push_new_board(this.ptr, ptr0);\n }\n /**\n * Set current board to given\n * @param {Board} board\n */\n set_current(board) {\n _assertClass(board, Board);\n var ptr0 = board.ptr;\n board.ptr = 0;\n wasm.game_set_current(this.ptr, ptr0);\n }\n /**\n * @param {number} width\n * @param {number} height\n * @param {number} piece_rows\n * @param {number} first_turn\n * @param {number} search_depth\n */\n constructor(width, height, piece_rows, first_turn, search_depth) {\n var ret = wasm.game_new(width, height, piece_rows, first_turn, search_depth);\n return Game.__wrap(ret);\n }\n /**\n * @param {number} width\n * @param {number} height\n * @param {number} piece_rows\n * @param {number} first_turn\n * @param {number} search_depth\n * @param {string} canvas_id\n * @param {number} canvas_width\n * @param {number} canvas_height\n * @returns {Game}\n */\n static new_with_canvas(width, height, piece_rows, first_turn, search_depth, canvas_id, canvas_width, canvas_height) {\n var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.game_new_with_canvas(width, height, piece_rows, first_turn, search_depth, ptr0, len0, canvas_width, canvas_height);\n return Game.__wrap(ret);\n }\n /**\n * @param {Painter} value\n */\n set_painter(value) {\n _assertClass(value, Painter);\n var ptr0 = value.ptr;\n value.ptr = 0;\n wasm.game_set_painter(this.ptr, ptr0);\n }\n /**\n */\n draw() {\n wasm.game_draw(this.ptr);\n }\n /**\n */\n ai_move() {\n wasm.game_ai_move(this.ptr);\n }\n}\n/**\n* Used to paint boards onto HTML canvases\n*/\nexport class Painter {\n\n static __wrap(ptr) {\n const obj = Object.create(Painter.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_painter_free(ptr);\n }\n /**\n * Default constructor which queries for canvas by ID\n * @param {number} width\n * @param {number} height\n * @param {string} canvas_id\n */\n constructor(width, height, canvas_id) {\n var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.painter_new(width, height, ptr0, len0);\n return Painter.__wrap(ret);\n }\n /**\n * Constructor with given canvas element\n * @param {number} width\n * @param {number} height\n * @param {HTMLCanvasElement} canvas\n * @returns {Painter}\n */\n static new_with_canvas(width, height, canvas) {\n var ret = wasm.painter_new_with_canvas(width, height, addHeapObject(canvas));\n return Painter.__wrap(ret);\n }\n /**\n * Set new square outline colour value\n * @param {any} value\n */\n set_square_outline(value) {\n wasm.painter_set_square_outline(this.ptr, addHeapObject(value));\n }\n /**\n * Set new line width for outlining squares\n * @param {number} value\n */\n set_outline_width(value) {\n wasm.painter_set_outline_width(this.ptr, value);\n }\n /**\n * Set whether squares are outlined\n * @param {boolean} value\n */\n set_draw_outline(value) {\n wasm.painter_set_draw_outline(this.ptr, value);\n }\n /**\n * Reset the canvas dimensions to the given width and height\n */\n reset_dimensions() {\n wasm.painter_reset_dimensions(this.ptr);\n }\n /**\n * Check whether given canvas dimensions divide evenly by given board dimenions\n * @param {Board} board\n * @returns {boolean}\n */\n validate_board_dim(board) {\n _assertClass(board, Board);\n var ret = wasm.painter_validate_board_dim(this.ptr, board.ptr);\n return ret !== 0;\n }\n /**\n * Draw a board onto the canvas\n * @param {Board} board\n */\n draw(board) {\n _assertClass(board, Board);\n wasm.painter_draw(this.ptr, board.ptr);\n }\n}\n/**\n* Game piece given by its team and strength (normal or kinged)\n*/\nexport class Piece {\n\n static __wrap(ptr) {\n const obj = Object.create(Piece.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_piece_free(ptr);\n }\n /**\n * @returns {number}\n */\n get team() {\n var ret = wasm.__wbg_get_piece_team(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set team(arg0) {\n wasm.__wbg_set_piece_team(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get strength() {\n var ret = wasm.__wbg_get_piece_strength(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set strength(arg0) {\n wasm.__wbg_set_piece_strength(this.ptr, arg0);\n }\n /**\n * @param {number} team\n * @param {number} strength\n */\n constructor(team, strength) {\n var ret = wasm.piece_new(team, strength);\n return Piece.__wrap(ret);\n }\n}\n/**\n*/\nexport class Player {\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_player_free(ptr);\n }\n}\n/**\n* Board squares given by a state and a possible occupying game piece\n*/\nexport class Square {\n\n static __wrap(ptr) {\n const obj = Object.create(Square.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_square_free(ptr);\n }\n /**\n * Game piece if square is occupied\n * @returns {Piece | undefined}\n */\n get occupant() {\n var ret = wasm.__wbg_get_square_occupant(this.ptr);\n return ret === 0 ? undefined : Piece.__wrap(ret);\n }\n /**\n * Game piece if square is occupied\n * @param {Piece | undefined} arg0\n */\n set occupant(arg0) {\n let ptr0 = 0;\n if (!isLikeNone(arg0)) {\n _assertClass(arg0, Piece);\n ptr0 = arg0.ptr;\n arg0.ptr = 0;\n }\n wasm.__wbg_set_square_occupant(this.ptr, ptr0);\n }\n /**\n * Description of whether the square is occupied or an unplayable, i.e. off-lattice square\n * @returns {number}\n */\n get state() {\n var ret = wasm.__wbg_get_square_state(this.ptr);\n return ret >>> 0;\n }\n /**\n * Description of whether the square is occupied or an unplayable, i.e. off-lattice square\n * @param {number} arg0\n */\n set state(arg0) {\n wasm.__wbg_set_square_state(this.ptr, arg0);\n }\n /**\n * Standard constructor function to form square from state and occupant\n * @param {number} state\n * @param {Piece | undefined} occupant\n */\n constructor(state, occupant) {\n let ptr0 = 0;\n if (!isLikeNone(occupant)) {\n _assertClass(occupant, Piece);\n ptr0 = occupant.ptr;\n occupant.ptr = 0;\n }\n var ret = wasm.square_new(state, ptr0);\n return Square.__wrap(ret);\n }\n /**\n * Helper function for a well-formed piece square by team and strength\n * @param {number} team\n * @param {number} strength\n * @returns {Square}\n */\n static pc(team, strength) {\n var ret = wasm.square_pc(team, strength);\n return Square.__wrap(ret);\n }\n /**\n * Helper function for a well-formed empty square\n * @returns {Square}\n */\n static empty() {\n var ret = wasm.square_empty();\n return Square.__wrap(ret);\n }\n /**\n * Helper function for a well-formed unplayable square\n * @returns {Square}\n */\n static unplay() {\n var ret = wasm.square_unplay();\n return Square.__wrap(ret);\n }\n}\n\nexport function __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nexport function __wbindgen_string_new(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_59cb74e423758ede() {\n var ret = new Error();\n return addHeapObject(ret);\n};\n\nexport function __wbg_stack_558ba5917b466edd(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nexport function __wbg_error_4bb6c2a97407129a(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n};\n\nexport function __wbg_self_86b4b13392c7af56() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_require_f5521a5b85ad2542(arg0, arg1, arg2) {\n var ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n};\n\nexport function __wbg_crypto_b8c92eaac23d0d80(arg0) {\n var ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n};\n\nexport function __wbg_msCrypto_9ad6677321a08dd8(arg0) {\n var ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_is_undefined(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n};\n\nexport function __wbg_getRandomValues_dd27e6b0652b3236(arg0) {\n var ret = getObject(arg0).getRandomValues;\n return addHeapObject(ret);\n};\n\nexport function __wbg_getRandomValues_e57c9b75ddead065(arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n};\n\nexport function __wbg_randomFillSync_d2ba53160aec6aba(arg0, arg1, arg2) {\n getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));\n};\n\nexport function __wbg_static_accessor_MODULE_452b4680e8614c81() {\n var ret = module;\n return addHeapObject(ret);\n};\n\nexport function __wbg_instanceof_Window_11e25482011fc506(arg0) {\n var ret = getObject(arg0) instanceof Window;\n return ret;\n};\n\nexport function __wbg_document_5aff8cd83ef968f5(arg0) {\n var ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_getElementById_b180ea4ada06a837(arg0, arg1, arg2) {\n var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_log_9a99fb1af846153b(arg0) {\n console.log(getObject(arg0));\n};\n\nexport function __wbg_instanceof_CanvasRenderingContext2d_779e79c4121aa91b(arg0) {\n var ret = getObject(arg0) instanceof CanvasRenderingContext2D;\n return ret;\n};\n\nexport function __wbg_setstrokeStyle_2939ee453716e462(arg0, arg1) {\n getObject(arg0).strokeStyle = getObject(arg1);\n};\n\nexport function __wbg_setfillStyle_af790b5baf4d3210(arg0, arg1) {\n getObject(arg0).fillStyle = getObject(arg1);\n};\n\nexport function __wbg_setlineWidth_3e6b1837ae38d099(arg0, arg1) {\n getObject(arg0).lineWidth = arg1;\n};\n\nexport function __wbg_beginPath_2378575e37027ad3(arg0) {\n getObject(arg0).beginPath();\n};\n\nexport function __wbg_fill_558339447ed6ad43(arg0) {\n getObject(arg0).fill();\n};\n\nexport function __wbg_stroke_c1e0313c58997dcf(arg0) {\n getObject(arg0).stroke();\n};\n\nexport function __wbg_arc_fffd87d9113dce32() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {\n getObject(arg0).arc(arg1, arg2, arg3, arg4, arg5);\n}, arguments) };\n\nexport function __wbg_fillRect_46ffc8d2cef7e298(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).fillRect(arg1, arg2, arg3, arg4);\n};\n\nexport function __wbg_strokeRect_7ea34fad8a7f0fe2(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).strokeRect(arg1, arg2, arg3, arg4);\n};\n\nexport function __wbg_instanceof_HtmlCanvasElement_fd3cbbe3906d7792(arg0) {\n var ret = getObject(arg0) instanceof HTMLCanvasElement;\n return ret;\n};\n\nexport function __wbg_setwidth_f3c88eb520ba8d47(arg0, arg1) {\n getObject(arg0).width = arg1 >>> 0;\n};\n\nexport function __wbg_setheight_5a1abba41e35c42a(arg0, arg1) {\n getObject(arg0).height = arg1 >>> 0;\n};\n\nexport function __wbg_getContext_813df131fcbd6e91() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_newnoargs_9fdd8f3961dd1bee(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_call_ba36642bd901572b() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_self_bb69a836a72ec6e9() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_window_3304fc4b414c9693() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_globalThis_e0d21cabc6630763() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_global_8463719227271676() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_buffer_9e184d6f785de5ed(arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_e8101319e4cf95fc(arg0) {\n var ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_set_e8ae7b27314e8b98(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n};\n\nexport function __wbg_length_2d56cb37075fcfb1(arg0) {\n var ret = getObject(arg0).length;\n return ret;\n};\n\nexport function __wbg_newwithlength_a8d1dbcbe703a5c6(arg0) {\n var ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_subarray_901ede8318da52a6(arg0, arg1, arg2) {\n var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_object_clone_ref(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_debug_string(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nexport function __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\nexport function __wbindgen_memory() {\n var ret = wasm.memory;\n return addHeapObject(ret);\n};\n\n","import { Game, Board, BrdIdx, Painter, Team, init_wasm, Moveable, SquareState, Square } from \"draught\";\n// import { memory } from \"draught/draught_bg.wasm\";\n\n///////////////////\n// CONSTS\n///////////////////\n\nconst CANVAS_WIDTH = 720;\nconst CANVAS_HEIGHT = 720;\n\nvar BOARD_WIDTH = 8;\nvar BOARD_HEIGHT = 8;\n\nvar PIECE_ROWS = 3;\nvar SEARCH_DEPTH = 4;\n\nconst STATUS_TIMEOUT = 3000;\n\nconst GameState = {\n HUMAN_TURN: {\n THINKING: \"human_turn.thinking\",\n FROM_SELECTED: \"human_turn.from_selected\"\n },\n AI_TURN: \"ai_turn\"\n}\n\n//////////////////\n// GAME STUFF\n//////////////////\n\ninit_wasm();\n\n// let board = new Board(BOARD_WIDTH, BOARD_HEIGHT, Team.Black);\n\nconst statusText = document.getElementById(\"status-p\");\nconst statusAlert = document.getElementById(\"status-d\");\nconst teamText = document.getElementById(\"team-p\");\nconst nodeCountText = document.getElementById(\"node-count\");\n\nconst startBtn = document.getElementById(\"startBtn\");\nstartBtn.onclick = start_game;\n\nlet statusTimeout = null;\nlet setStatus = setStatusAlert;\n\nlet current_state = GameState.HUMAN_TURN.THINKING;\n\nlet game = null;\nlet painter = null;\n\nlet clicks = [];\n\nstart_game();\n\n/////////////////\n// CANVAS\n/////////////////\n\nconst canvas = document.getElementById(\"game-canvas\");\ncanvas.addEventListener(\"click\", (event) => {\n var mousepos = getMousePos(canvas, event);\n // console.log(mousepos);\n var cell = new BrdIdx(\n Math.floor((mousepos.y / canvas.clientHeight) * BOARD_HEIGHT),\n Math.floor((mousepos.x / canvas.clientWidth) * BOARD_WIDTH),\n );\n // console.log(cell);\n process_canvas_click(cell);\n});\n\n////////////////\n// FUNCS\n////////////////\n\nfunction start_game() {\n game = new Game(BOARD_WIDTH, BOARD_HEIGHT, PIECE_ROWS, Team.Black, SEARCH_DEPTH);\n painter = new Painter(CANVAS_WIDTH, CANVAS_HEIGHT, \"game-canvas\");\n game.set_painter(painter);\n game.draw();\n\n updateTeamText();\n clicks = [];\n current_state = GameState.HUMAN_TURN.THINKING;\n}\n\nfunction process_canvas_click(cell_coord) {\n\n switch(current_state) {\n // first click of a move\n case GameState.HUMAN_TURN.THINKING:\n if (game.current_cell_state(cell_coord).state != SquareState.Occupied ) {\n return;\n }\n\n if (game.current_cell_state(cell_coord).occupant.team != game.current_turn() ) {\n return;\n }\n\n // console.log(\"Your turn, first piece picked\");\n\n clicks.push(cell_coord);\n current_state = GameState.HUMAN_TURN.FROM_SELECTED;\n game.set_selected(cell_coord);\n game.draw();\n \n break;\n \n // second click of a move\n case GameState.HUMAN_TURN.FROM_SELECTED:\n\n // second click is different to first, process as move\n // otherwise, will skip straight to clean up (clear selected and clicks) \n if (!clicks[0].eq(cell_coord)) {\n\n if (game.current_cell_state(cell_coord).state != SquareState.Empty ) {\n return;\n }\n \n // console.log(\"Your turn, first piece already picked, picking second\");\n \n clicks.push(cell_coord);\n \n if (clicks.length != 2) {\n setStatus(`Error: wrong number of clicks to process ${clicks.length}`);\n console.error(`Error: wrong number of clicks to process ${clicks.length}`);\n \n return;\n }\n\n let status = game.make_move(clicks[0], clicks[1]);\n\n switch(status) {\n case Moveable.Allowed:\n console.log(`Score after your turn: ${game.score()}`);\n\n if (aiCheckBox.checked) {\n game.ai_move();\n nodeCountText.innerText = `searched ${game.last_node_count.toLocaleString(\"en-GB\")} possible moves`;\n console.log(`Score after the AI's turn: ${game.score()}`);\n }\n\n break;\n case Moveable.IllegalTrajectory:\n setStatus(\"You can't move like that!\");\n break;\n case Moveable.JumpingSameTeam:\n setStatus(\"You can't jump your own piece!\");\n break;\n case Moveable.NoJumpablePiece:\n setStatus(\"There's nothing to jump!\");\n break;\n case Moveable.OccupiedDest:\n setStatus(\"There's a piece there!\");\n break;\n case Moveable.OutOfBounds:\n setStatus(\"That square's not on the board! (how have you managed that?)\");\n break;\n case Moveable.UnoccupiedSrc:\n setStatus(\"There's no piece to move!\");\n break;\n case Moveable.Unplayable:\n setStatus(\"That's not a playable square!\");\n break;\n case Moveable.WrongTeamSrc:\n setStatus(\"That's not your piece!\");\n break;\n }\n \n }\n\n game.clear_selected();\n game.draw();\n clicks = [];\n current_state = GameState.HUMAN_TURN.THINKING;\n \n break;\n case GameState.AI_TURN:\n console.log(\"It's the AI's turn!\");\n break;\n }\n\n updateTeamText();\n}\n\nfunction getMousePos(canvas, evt) {\n var rect = canvas.getBoundingClientRect();\n return {\n x: evt.clientX - rect.left,\n y: evt.clientY - rect.top\n };\n}\n\nfunction setStatusText(txt, hide = true) {\n if(statusTimeout != null) {\n clearInterval(statusTimeout);\n }\n\n statusText.innerText = txt;\n\n if(hide) {\n statusTimeout = setTimeout(() => {\n statusText.innerText = \"\";\n }, STATUS_TIMEOUT);\n }\n}\n\nfunction setStatusAlert(txt, alertType = \"danger\", hide = true) {\n if(statusTimeout != null) {\n clearInterval(statusTimeout);\n }\n\n statusAlert.className = `alert alert-${alertType}`;\n statusAlert.innerText = txt;\n statusAlert.hidden = false;\n\n if(hide) {\n statusTimeout = setTimeout(() => {\n statusAlert.hidden = true;\n }, STATUS_TIMEOUT);\n }\n}\n\nfunction updateTeamText(){\n let team = game.current_turn();\n switch(team) {\n case Team.White:\n teamText.innerText = \"⚪ White ⚪\";\n break;\n case Team.Black:\n teamText.innerText = \"🔴 Black 🔴\";\n break;\n }\n}\n\n////////////////\n// UI\n////////////////\n\nconst widthBox = document.getElementById(\"width\");\n/**\n * Handler for width input box change, start a new game\n */\nconst onWidth = () => {\n\n BOARD_WIDTH = parseInt(widthBox.value);\n start_game();\n}\nwidthBox.onchange = onWidth;\nwidthBox.value = 8;\n\nconst heightBox = document.getElementById(\"height\");\n/**\n * Handler for height input box change, start a new game\n */\nconst onHeight = () => {\n\n BOARD_HEIGHT = parseInt(heightBox.value);\n pieceRowsBox.max = (BOARD_HEIGHT / 2) - 1;\n start_game();\n}\nheightBox.onchange = onHeight;\nheightBox.value = 8;\n\nconst pieceRowsBox = document.getElementById(\"play_rows\");\n/**\n * Handler for piece rows input box change, start a new game\n */\nconst onPieceRows = () => {\n\n PIECE_ROWS = parseInt(pieceRowsBox.value);\n console.log(typeof(PIECE_ROWS));\n start_game();\n}\npieceRowsBox.onchange = onPieceRows;\npieceRowsBox.value = 3;\n\nconst aiSearchDepthBox = document.getElementById(\"ai_search_depth\");\n/**\n * Handler for AI search depth input box change, start a new game\n */\nconst onAISearchDepth = () => {\n\n SEARCH_DEPTH = parseInt(aiSearchDepthBox.value);\n game.set_search_depth(SEARCH_DEPTH);\n}\naiSearchDepthBox.onchange = onAISearchDepth;\naiSearchDepthBox.value = 4;\n\nconst aiCheckBox = document.getElementById(\"ai-checkbox\");\n/**\n * Handler for height input box change, get a new universe of given size\n */\nconst onAICheck = () => {\n console.log(aiCheckBox.checked);\n}\naiCheckBox.onchange = onAICheck;\n// aiCheckBox.checked = true;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://draught/../pkg/draught_bg.js","webpack://draught/./index.js"],"names":["heap","Array","fill","undefined","getObject","idx","push","heap_next","length","cachedTextDecoder","TextDecoder","module","require","ignoreBOM","fatal","decode","cachegetUint8Memory0","getUint8Memory0","buffer","Uint8Array","getStringFromWasm0","ptr","len","subarray","addHeapObject","obj","debugString","val","type","description","name","isArray","debug","i","builtInMatches","exec","toString","call","className","JSON","stringify","_","Error","message","stack","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encodeString","encodeInto","arg","view","buf","encode","set","read","written","passStringToWasm0","malloc","realloc","mem","offset","code","charCodeAt","slice","cachegetInt32Memory0","getInt32Memory0","Int32Array","isLikeNone","x","_assertClass","instance","klass","init_wasm","handleError","f","args","apply","this","e","Object","freeze","Move","Jump","Team","Black","White","SquareState","Man","King","Empty","Occupied","Unplayable","Moveable","Allowed","UnoccupiedSrc","OccupiedDest","OutOfBounds","WrongTeamSrc","IllegalTrajectory","NoJumpablePiece","JumpingSameTeam","Board","create","prototype","__destroy_into_raw","arg0","ret","Square","__wrap","square","ptr0","BrdIdx","row","col","from","to","ptr1","from_square_occupant","Piece","ptr2","team","jumpee","from_occ","width","height","current_turn","board","piece_rows","other","Game","search_depth","first_turn","canvas_id","canvas_width","canvas_height","len0","value","Painter","canvas","strength","state","occupant","__wbindgen_object_drop_ref","dropObject","takeObject","__wbindgen_string_new","arg1","__wbg_new_59cb74e423758ede","__wbg_stack_558ba5917b466edd","__wbg_error_4bb6c2a97407129a","console","error","__wbg_self_86b4b13392c7af56","self","arguments","__wbg_require_f5521a5b85ad2542","arg2","__wbg_crypto_b8c92eaac23d0d80","crypto","__wbg_msCrypto_9ad6677321a08dd8","msCrypto","__wbindgen_is_undefined","__wbg_getRandomValues_dd27e6b0652b3236","getRandomValues","__wbg_getRandomValues_e57c9b75ddead065","__wbg_randomFillSync_d2ba53160aec6aba","randomFillSync","__wbg_static_accessor_MODULE_452b4680e8614c81","__wbg_instanceof_Window_11e25482011fc506","Window","__wbg_document_5aff8cd83ef968f5","document","__wbg_getElementById_b180ea4ada06a837","getElementById","__wbg_log_9a99fb1af846153b","log","__wbg_instanceof_CanvasRenderingContext2d_779e79c4121aa91b","CanvasRenderingContext2D","__wbg_setstrokeStyle_2939ee453716e462","strokeStyle","__wbg_setfillStyle_af790b5baf4d3210","fillStyle","__wbg_setlineWidth_3e6b1837ae38d099","lineWidth","__wbg_beginPath_2378575e37027ad3","beginPath","__wbg_fill_558339447ed6ad43","__wbg_stroke_c1e0313c58997dcf","stroke","__wbg_arc_fffd87d9113dce32","arg3","arg4","arg5","arc","__wbg_fillRect_46ffc8d2cef7e298","fillRect","__wbg_strokeRect_7ea34fad8a7f0fe2","strokeRect","__wbg_instanceof_HtmlCanvasElement_fd3cbbe3906d7792","HTMLCanvasElement","__wbg_setwidth_f3c88eb520ba8d47","__wbg_setheight_5a1abba41e35c42a","__wbg_getContext_813df131fcbd6e91","getContext","__wbg_newnoargs_9fdd8f3961dd1bee","Function","__wbg_call_ba36642bd901572b","__wbg_self_bb69a836a72ec6e9","__wbg_window_3304fc4b414c9693","window","__wbg_globalThis_e0d21cabc6630763","globalThis","__wbg_global_8463719227271676","g","global","__wbg_buffer_9e184d6f785de5ed","__wbg_new_e8101319e4cf95fc","__wbg_set_e8ae7b27314e8b98","__wbg_length_2d56cb37075fcfb1","__wbg_newwithlength_a8d1dbcbe703a5c6","__wbg_subarray_901ede8318da52a6","__wbindgen_object_clone_ref","__wbindgen_debug_string","__wbindgen_throw","__wbindgen_memory","BOARD_WIDTH","BOARD_HEIGHT","PIECE_ROWS","SEARCH_DEPTH","GameState","statusAlert","teamText","nodeCountText","winningText","onclick","start_game","wonTimeout","statusTimeout","setStatus","txt","alertType","hide","clearInterval","innerText","hidden","setTimeout","current_state","game","painter","clicks","set_painter","draw","updateTeamText","updateWinningText","winning","addEventListener","event","mousepos","evt","rect","getBoundingClientRect","clientX","left","y","clientY","top","getMousePos","cell_coord","current_cell_state","set_selected","eq","make_move","aiCheckBox","checked","ai_move","last_node_count","toLocaleString","clear_selected","has_won","setInterval","checkWon","process_canvas_click","Math","floor","clientHeight","clientWidth","widthBox","onchange","parseInt","heightBox","pieceRowsBox","max","aiSearchDepthBox","set_search_depth"],"mappings":"gsBAEA,MAAMA,EAAO,IAAIC,MAAM,IAAIC,UAAKC,GAIhC,SAASC,EAAUC,GAAO,OAAOL,EAAKK,GAFtCL,EAAKM,UAAKH,EAAW,MAAM,GAAM,GAIjC,IAAII,EAAYP,EAAKQ,OAgBrB,IAAIC,EAAoB,IAFoB,oBAAhBC,aAA8B,EAAIC,EAAOC,SAAS,QAAQF,YAAcA,aAE3D,QAAS,CAAEG,WAAW,EAAMC,OAAO,IAE5EL,EAAkBM,SAElB,IAAIC,EAAuB,KAC3B,SAASC,IAIL,OAH6B,OAAzBD,GAAiCA,EAAqBE,SAAW,kBACjEF,EAAuB,IAAIG,WAAW,kBAEnCH,EAGX,SAASI,EAAmBC,EAAKC,GAC7B,OAAOb,EAAkBM,OAAOE,IAAkBM,SAASF,EAAKA,EAAMC,IAG1E,SAASE,EAAcC,GACflB,IAAcP,EAAKQ,QAAQR,EAAKM,KAAKN,EAAKQ,OAAS,GACvD,MAAMH,EAAME,EAIZ,OAHAA,EAAYP,EAAKK,GAEjBL,EAAKK,GAAOoB,EACLpB,EAGX,SAASqB,EAAYC,GAEjB,MAAMC,SAAcD,EACpB,GAAY,UAARC,GAA4B,WAARA,GAA4B,MAAPD,EACzC,MAAQ,GAAGA,IAEf,GAAY,UAARC,EACA,MAAO,IAAID,KAEf,GAAY,UAARC,EAAkB,CAClB,MAAMC,EAAcF,EAAIE,YACxB,OAAmB,MAAfA,EACO,SAEA,UAAUA,KAGzB,GAAY,YAARD,EAAoB,CACpB,MAAME,EAAOH,EAAIG,KACjB,MAAmB,iBAARA,GAAoBA,EAAKtB,OAAS,EAClC,YAAYsB,KAEZ,WAIf,GAAI7B,MAAM8B,QAAQJ,GAAM,CACpB,MAAMnB,EAASmB,EAAInB,OACnB,IAAIwB,EAAQ,IACRxB,EAAS,IACTwB,GAASN,EAAYC,EAAI,KAE7B,IAAI,IAAIM,EAAI,EAAGA,EAAIzB,EAAQyB,IACvBD,GAAS,KAAON,EAAYC,EAAIM,IAGpC,OADAD,GAAS,IACFA,EAGX,MAAME,EAAiB,sBAAsBC,KAAKC,SAASC,KAAKV,IAChE,IAAIW,EACJ,KAAIJ,EAAe1B,OAAS,GAIxB,OAAO4B,SAASC,KAAKV,GAEzB,GALIW,EAAYJ,EAAe,GAKd,UAAbI,EAIA,IACI,MAAO,UAAYC,KAAKC,UAAUb,GAAO,IAC3C,MAAOc,GACL,MAAO,SAIf,OAAId,aAAee,MACR,GAAGf,EAAIG,SAASH,EAAIgB,YAAYhB,EAAIiB,QAGxCN,EAGX,IAAIO,EAAkB,EAIlBC,EAAoB,IAFoB,oBAAhBC,aAA8B,EAAIpC,EAAOC,SAAS,QAAQmC,YAAcA,aAE3D,SAEzC,MAAMC,EAAwD,mBAAjCF,EAAkBG,WACzC,SAAUC,EAAKC,GACjB,OAAOL,EAAkBG,WAAWC,EAAKC,IAEvC,SAAUD,EAAKC,GACjB,MAAMC,EAAMN,EAAkBO,OAAOH,GAErC,OADAC,EAAKG,IAAIF,GACF,CACHG,KAAML,EAAI1C,OACVgD,QAASJ,EAAI5C,SAIrB,SAASiD,EAAkBP,EAAKQ,EAAQC,GAEpC,QAAgBxD,IAAZwD,EAAuB,CACvB,MAAMP,EAAMN,EAAkBO,OAAOH,GAC/B7B,EAAMqC,EAAON,EAAI5C,QAGvB,OAFAS,IAAkBM,SAASF,EAAKA,EAAM+B,EAAI5C,QAAQ8C,IAAIF,GACtDP,EAAkBO,EAAI5C,OACfa,EAGX,IAAIC,EAAM4B,EAAI1C,OACVa,EAAMqC,EAAOpC,GAEjB,MAAMsC,EAAM3C,IAEZ,IAAI4C,EAAS,EAEb,KAAOA,EAASvC,EAAKuC,IAAU,CAC3B,MAAMC,EAAOZ,EAAIa,WAAWF,GAC5B,GAAIC,EAAO,IAAM,MACjBF,EAAIvC,EAAMwC,GAAUC,EAGxB,GAAID,IAAWvC,EAAK,CACD,IAAXuC,IACAX,EAAMA,EAAIc,MAAMH,IAEpBxC,EAAMsC,EAAQtC,EAAKC,EAAKA,EAAMuC,EAAsB,EAAbX,EAAI1C,QAC3C,MAAM2C,EAAOlC,IAAkBM,SAASF,EAAMwC,EAAQxC,EAAMC,GAG5DuC,GAFYb,EAAaE,EAAKC,GAEhBK,QAIlB,OADAX,EAAkBgB,EACXxC,EAGX,IAAI4C,EAAuB,KAC3B,SAASC,IAIL,OAH6B,OAAzBD,GAAiCA,EAAqB/C,SAAW,kBACjE+C,EAAuB,IAAIE,WAAW,kBAEnCF,EAGX,SAASG,EAAWC,GAChB,OAAOA,QAGX,SAASC,EAAaC,EAAUC,GAC5B,KAAMD,aAAoBC,GACtB,MAAM,IAAI9B,MAAM,wBAAwB8B,EAAM1C,QAElD,OAAOyC,EAASlD,IAIb,SAASoD,IACZ,cAGJ,SAASC,EAAYC,EAAGC,GACpB,IACI,OAAOD,EAAEE,MAAMC,KAAMF,GACvB,MAAOG,GACL,uBAA0BvD,EAAcuD,KAUxBC,OAAOC,OAAO,CAAEC,KAAK,EAAE,EAAI,OAAOC,KAAK,EAAE,EAAI,SAA9D,MAIMC,EAAOJ,OAAOC,OAAO,CAAEI,MAAM,EAAE,EAAI,QAAQC,MAAM,EAAE,EAAI,UAQvDC,GAJWP,OAAOC,OAAO,CAAEO,IAAI,EAAE,EAAI,MAAMC,KAAK,EAAE,EAAI,SAIxCT,OAAOC,OAAO,CAAES,MAAM,EAAE,EAAI,QAAQC,SAAS,EAAE,EAAI,WAAWC,WAAW,EAAE,EAAI,gBAI7FC,EAAWb,OAAOC,OAAO,CAAEa,QAAQ,EAAE,EAAI,UAAUC,cAAc,EAAE,EAAI,gBAAgBC,aAAa,EAAE,EAAI,eAAeC,YAAY,EAAE,EAAI,cAAcL,WAAW,EAAE,EAAI,aAAaM,aAAa,EAAE,EAAI,eAAeC,kBAAkB,EAAE,EAAI,oBAAoBC,gBAAgB,EAAE,EAAI,kBAAkBC,gBAAgB,EAAE,EAAI,oBAIzU,MAAMC,EAET,cAAcjF,GACV,MAAMI,EAAMuD,OAAOuB,OAAOD,EAAME,WAGhC,OAFA/E,EAAIJ,IAAMA,EAEHI,EAGX,qBACI,MAAMJ,EAAMyD,KAAKzD,IAGjB,OAFAyD,KAAKzD,IAAM,EAEJA,EAGX,OACI,MAAMA,EAAMyD,KAAK2B,qBACjB,mBAAsBpF,GAK1B,YAEI,OADU,wBAA2ByD,KAAKzD,OAC3B,EAKnB,UAAUqF,GACN,wBAA2B5B,KAAKzD,IAAKqF,GAKzC,aAEI,OADU,yBAA4B5B,KAAKzD,OAC5B,EAKnB,WAAWqF,GACP,yBAA4B5B,KAAKzD,IAAKqF,GAK1C,mBAEI,OADU,+BAAkC5B,KAAKzD,OAClC,EAKnB,iBAAiBqF,GACb,+BAAkC5B,KAAKzD,IAAKqF,GAOhD,KAAKrG,GACD,IAAIsG,EAAM,aAAgB7B,KAAKzD,IAAKhB,GACpC,OAAOuG,EAAOC,OAAOF,GAOzB,SAAStG,EAAKyG,GACVxC,EAAawC,EAAQF,GACrB,IAAIG,EAAOD,EAAOzF,IAClByF,EAAOzF,IAAM,EACb,iBAAoByD,KAAKzD,IAAKhB,EAAK0G,GAOvC,UAAU1G,GACNiE,EAAajE,EAAK2G,GAClB,IAAID,EAAO1G,EAAIgB,IACfhB,EAAIgB,IAAM,EACV,IAAIsF,EAAM,kBAAqB7B,KAAKzD,IAAK0F,GACzC,OAAOH,EAAOC,OAAOF,GAQzB,WAAWM,EAAKC,GAEZ,OADU,mBAAsBpC,KAAKzD,IAAK4F,EAAKC,KAChC,EAOnB,SAAS7G,GACLiE,EAAajE,EAAK2G,GAClB,IAAID,EAAO1G,EAAIgB,IAGf,OAFAhB,EAAIgB,IAAM,EACA,iBAAoByD,KAAKzD,IAAK0F,KACzB,EAOnB,YAAY1G,GACR,IAAIsG,EAAM,oBAAuB7B,KAAKzD,IAAKhB,GAC3C,OAAO2G,EAAOH,OAAOF,GAQzB,SAASQ,EAAMC,GACX9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IAGd,OAFA+F,EAAG/F,IAAM,EACC,iBAAoByD,KAAKzD,IAAK0F,EAAMM,KAC/B,EASnB,kBAAkBF,EAAMC,EAAIE,GACxBhD,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IACd+F,EAAG/F,IAAM,EACTiD,EAAagD,EAAsBC,GACnC,IAAIC,EAAOF,EAAqBjG,IAGhC,OAFAiG,EAAqBjG,IAAM,EACjB,0BAA6ByD,KAAKzD,IAAK0F,EAAMM,EAAMG,KAC9C,EASnB,mBAAmBL,EAAMC,EAAIE,GACzBhD,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IACd+F,EAAG/F,IAAM,EACTiD,EAAagD,EAAsBC,GACnC,IAAIC,EAAOF,EAAqBjG,IAGhC,OAFAiG,EAAqBjG,IAAM,EACjB,2BAA8ByD,KAAKzD,IAAK0F,EAAMM,EAAMG,KAC/C,EAQnB,WAAWL,EAAMC,GACb9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IAGd,OAFA+F,EAAG/F,IAAM,EACC,mBAAsByD,KAAKzD,IAAK0F,EAAMM,KACjC,EAMnB,QAEI,OADU,cAAiBvC,KAAKzD,KAOpC,YAEI,OADU,kBAAqByD,KAAKzD,OACrB,EAMnB,aAEI,OADU,mBAAsByD,KAAKzD,OACtB,EAOnB,WAAWoG,GAEP,OADU,mBAAsB3C,KAAKzD,IAAKoG,KAC3B,EAMnB,QAEI,OADU,cAAiB3C,KAAKzD,KAQpC,WAAWhB,GAEP,OADU,mBAAsByE,KAAKzD,IAAKhB,KAC3B,EAQnB,WAAW8G,EAAMC,GACb9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IACd+F,EAAG/F,IAAM,EACT,IAAIsF,EAAM,mBAAsB7B,KAAKzD,IAAK0F,EAAMM,GAChD,OAAOf,EAAMO,OAAOF,GAQxB,WAAWQ,EAAMC,GACb9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IACd+F,EAAG/F,IAAM,EACT,IAAIsF,EAAM,mBAAsB7B,KAAKzD,IAAK0F,EAAMM,GAChD,OAAOf,EAAMO,OAAOF,GAMxB,eAEI,OADU,qBAAwB7B,KAAKzD,OACxB,EAQnB,uBAAuBqG,EAAQC,GAC3BrD,EAAaoD,EAAQd,GACrB,IAAIG,EAAOW,EAAOrG,IAClBqG,EAAOrG,IAAM,EACbiD,EAAaqD,EAAUJ,GACvB,IAAIF,EAAOM,EAAStG,IAGpB,OAFAsG,EAAStG,IAAM,EACL,wBAA2B0F,EAAMM,KAC5B,EAQnB,yBAAyBF,EAAMO,GAC3BpD,EAAa6C,EAAMI,GACnB,IAAIR,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAaoD,EAAQH,GACrB,IAAIF,EAAOK,EAAOrG,IAGlB,OAFAqG,EAAOrG,IAAM,EAEE,IADL,0BAA6B0F,EAAMM,GASjD,YAAYO,EAAOC,EAAQC,GACvB,IAAInB,EAAM,YAAeiB,EAAOC,EAAQC,GACxC,OAAOxB,EAAMO,OAAOF,GAQxB,iBAAiBoB,EAAOC,GACpB1D,EAAayD,EAAOzB,GACpB,IAAIS,EAAOgB,EAAM1G,IACjB0G,EAAM1G,IAAM,EACZ,IAAIsF,EAAM,kBAAqBI,EAAMiB,GACrC,OAAO1B,EAAMO,OAAOF,IAMrB,MAAMK,EAET,cAAc3F,GACV,MAAMI,EAAMuD,OAAOuB,OAAOS,EAAOR,WAGjC,OAFA/E,EAAIJ,IAAMA,EAEHI,EAGX,qBACI,MAAMJ,EAAMyD,KAAKzD,IAGjB,OAFAyD,KAAKzD,IAAM,EAEJA,EAGX,OACI,MAAMA,EAAMyD,KAAK2B,qBACjB,oBAAuBpF,GAK3B,UAEI,OADU,uBAA0ByD,KAAKzD,OAC1B,EAKnB,QAAQqF,GACJ,uBAA0B5B,KAAKzD,IAAKqF,GAKxC,UAEI,OADU,uBAA0B5B,KAAKzD,OAC1B,EAKnB,QAAQqF,GACJ,uBAA0B5B,KAAKzD,IAAKqF,GAMxC,YAAYO,EAAKC,GACb,IAAIP,EAAM,cAAiBM,EAAKC,GAChC,OAAOF,EAAOH,OAAOF,GAMzB,GAAGsB,GAGC,OAFA3D,EAAa2D,EAAOjB,GAEL,IADL,YAAelC,KAAKzD,IAAK4G,EAAM5G,MAO1C,MAAM6G,EAET,cAAc7G,GACV,MAAMI,EAAMuD,OAAOuB,OAAO2B,EAAK1B,WAG/B,OAFA/E,EAAIJ,IAAMA,EAEHI,EAGX,qBACI,MAAMJ,EAAMyD,KAAKzD,IAGjB,OAFAyD,KAAKzD,IAAM,EAEJA,EAGX,OACI,MAAMA,EAAMyD,KAAK2B,qBACjB,kBAAqBpF,GAKzB,sBAEI,OADU,iCAAoCyD,KAAKzD,OACpC,EAKnB,oBAAoBqF,GAChB,iCAAoC5B,KAAKzD,IAAKqF,GAMlD,sBAEI,OADU,2BAA8B5B,KAAKzD,KAOjD,oBAEI,OADU,yBAA4ByD,KAAKzD,OAC5B,EAMnB,eAEI,OADU,oBAAuByD,KAAKzD,OACvB,EAMnB,QAEI,OADU,aAAgByD,KAAKzD,KAOnC,UACI,IAAIsF,EAAM,eAAkB7B,KAAKzD,KACjC,OAAe,IAARsF,OAAYxG,EAAYwG,EAMnC,UACI,IAAIA,EAAM,eAAkB7B,KAAKzD,KACjC,OAAe,IAARsF,OAAYxG,EAAYwG,EAOnC,mBAAmBtG,GACfiE,EAAajE,EAAK2G,GAClB,IAAIL,EAAM,0BAA6B7B,KAAKzD,IAAKhB,EAAIgB,KACrD,OAAOuF,EAAOC,OAAOF,GAKzB,iBAAiBwB,GACb,wBAA2BrD,KAAKzD,IAAK8G,GAOzC,aAAa9H,GACTiE,EAAajE,EAAK2G,GAClB,oBAAuBlC,KAAKzD,IAAKhB,EAAIgB,KAKzC,iBACI,sBAAyByD,KAAKzD,KAQlC,UAAU8F,EAAMC,GACZ9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IAGd,OAFA+F,EAAG/F,IAAM,EACC,iBAAoByD,KAAKzD,IAAK0F,EAAMM,KAC/B,EAOnB,aAAaF,EAAMC,GACf9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IACd+F,EAAG/F,IAAM,EACT,oBAAuByD,KAAKzD,IAAK0F,EAAMM,GAO3C,aAAaF,EAAMC,GACf9C,EAAa6C,EAAMH,GACnB,IAAID,EAAOI,EAAK9F,IAChB8F,EAAK9F,IAAM,EACXiD,EAAa8C,EAAIJ,GACjB,IAAIK,EAAOD,EAAG/F,IACd+F,EAAG/F,IAAM,EACT,oBAAuByD,KAAKzD,IAAK0F,EAAMM,GAM3C,eAAeU,GACXzD,EAAayD,EAAOzB,GACpB,IAAIS,EAAOgB,EAAM1G,IACjB0G,EAAM1G,IAAM,EACZ,sBAAyByD,KAAKzD,IAAK0F,GAMvC,YAAYgB,GACRzD,EAAayD,EAAOzB,GACpB,IAAIS,EAAOgB,EAAM1G,IACjB0G,EAAM1G,IAAM,EACZ,mBAAsByD,KAAKzD,IAAK0F,GAUpC,YAAYa,EAAOC,EAAQG,EAAYI,EAAYD,GAC/C,IAAIxB,EAAM,WAAciB,EAAOC,EAAQG,EAAYI,EAAYD,GAC/D,OAAOD,EAAKrB,OAAOF,GAcvB,uBAAuBiB,EAAOC,EAAQG,EAAYI,EAAYD,EAAcE,EAAWC,EAAcC,GACjG,IAAIxB,EAAOtD,EAAkB4E,EAAW,oBAAwB,sBAC5DG,EAAO3F,EACP8D,EAAM,uBAA0BiB,EAAOC,EAAQG,EAAYI,EAAYD,EAAcpB,EAAMyB,EAAMF,EAAcC,GACnH,OAAOL,EAAKrB,OAAOF,GAMvB,YAAY8B,GACRnE,EAAamE,EAAOC,GACpB,IAAI3B,EAAO0B,EAAMpH,IACjBoH,EAAMpH,IAAM,EACZ,mBAAsByD,KAAKzD,IAAK0F,GAKpC,OACI,YAAejC,KAAKzD,KAKxB,UACI,eAAkByD,KAAKzD,MAMxB,MAAMqH,EAET,cAAcrH,GACV,MAAMI,EAAMuD,OAAOuB,OAAOmC,EAAQlC,WAGlC,OAFA/E,EAAIJ,IAAMA,EAEHI,EAGX,qBACI,MAAMJ,EAAMyD,KAAKzD,IAGjB,OAFAyD,KAAKzD,IAAM,EAEJA,EAGX,OACI,MAAMA,EAAMyD,KAAK2B,qBACjB,qBAAwBpF,GAQ5B,YAAYuG,EAAOC,EAAQQ,GACvB,IAAItB,EAAOtD,EAAkB4E,EAAW,oBAAwB,sBAC5DG,EAAO3F,EACP8D,EAAM,cAAiBiB,EAAOC,EAAQd,EAAMyB,GAChD,OAAOE,EAAQ7B,OAAOF,GAS1B,uBAAuBiB,EAAOC,EAAQc,GAClC,IAAIhC,EAAM,0BAA6BiB,EAAOC,EAAQrG,EAAcmH,IACpE,OAAOD,EAAQ7B,OAAOF,GAM1B,mBAAmB8B,GACf,6BAAgC3D,KAAKzD,IAAKG,EAAciH,IAM5D,kBAAkBA,GACd,4BAA+B3D,KAAKzD,IAAKoH,GAM7C,iBAAiBA,GACb,2BAA8B3D,KAAKzD,IAAKoH,GAK5C,mBACI,2BAA8B3D,KAAKzD,KAOvC,mBAAmB0G,GAGf,OAFAzD,EAAayD,EAAOzB,GAEL,IADL,6BAAgCxB,KAAKzD,IAAK0G,EAAM1G,KAO9D,KAAK0G,GACDzD,EAAayD,EAAOzB,GACpB,eAAkBxB,KAAKzD,IAAK0G,EAAM1G,MAMnC,MAAMkG,EAET,cAAclG,GACV,MAAMI,EAAMuD,OAAOuB,OAAOgB,EAAMf,WAGhC,OAFA/E,EAAIJ,IAAMA,EAEHI,EAGX,qBACI,MAAMJ,EAAMyD,KAAKzD,IAGjB,OAFAyD,KAAKzD,IAAM,EAEJA,EAGX,OACI,MAAMA,EAAMyD,KAAK2B,qBACjB,mBAAsBpF,GAK1B,WAEI,OADU,uBAA0ByD,KAAKzD,OAC1B,EAKnB,SAASqF,GACL,uBAA0B5B,KAAKzD,IAAKqF,GAKxC,eAEI,OADU,2BAA8B5B,KAAKzD,OAC9B,EAKnB,aAAaqF,GACT,2BAA8B5B,KAAKzD,IAAKqF,GAM5C,YAAYe,EAAMmB,GACd,IAAIjC,EAAM,YAAec,EAAMmB,GAC/B,OAAOrB,EAAMV,OAAOF,IAMrB,MAAMC,EAET,cAAcvF,GACV,MAAMI,EAAMuD,OAAOuB,OAAOK,EAAOJ,WAGjC,OAFA/E,EAAIJ,IAAMA,EAEHI,EAGX,qBACI,MAAMJ,EAAMyD,KAAKzD,IAGjB,OAFAyD,KAAKzD,IAAM,EAEJA,EAGX,OACI,MAAMA,EAAMyD,KAAK2B,qBACjB,oBAAuBpF,GAM3B,eACI,IAAIsF,EAAM,4BAA+B7B,KAAKzD,KAC9C,OAAe,IAARsF,OAAYxG,EAAYoH,EAAMV,OAAOF,GAMhD,aAAaD,GACT,IAAIK,EAAO,EACN3C,EAAWsC,KACZpC,EAAaoC,EAAMa,GACnBR,EAAOL,EAAKrF,IACZqF,EAAKrF,IAAM,GAEf,4BAA+ByD,KAAKzD,IAAK0F,GAM7C,YAEI,OADU,yBAA4BjC,KAAKzD,OAC5B,EAMnB,UAAUqF,GACN,yBAA4B5B,KAAKzD,IAAKqF,GAO1C,YAAYmC,EAAOC,GACf,IAAI/B,EAAO,EACN3C,EAAW0E,KACZxE,EAAawE,EAAUvB,GACvBR,EAAO+B,EAASzH,IAChByH,EAASzH,IAAM,GAEnB,IAAIsF,EAAM,aAAgBkC,EAAO9B,GACjC,OAAOH,EAAOC,OAAOF,GAQzB,UAAUc,EAAMmB,GACZ,IAAIjC,EAAM,YAAec,EAAMmB,GAC/B,OAAOhC,EAAOC,OAAOF,GAMzB,eACI,IAAIA,EAAM,iBACV,OAAOC,EAAOC,OAAOF,GAMzB,gBACI,IAAIA,EAAM,kBACV,OAAOC,EAAOC,OAAOF,IAItB,SAASoC,EAA2BrC,IAhlC3C,SAAoBrG,GAChB,MAAMsG,EAAMvG,EAAUC,IAP1B,SAAoBA,GACZA,EAAM,KACVL,EAAKK,GAAOE,EACZA,EAAYF,IAKZ2I,CAAW3I,GA+kCX4I,CAAWvC,GAGR,SAASwC,EAAsBxC,EAAMyC,GAExC,OAAO3H,EADGJ,EAAmBsF,EAAMyC,IAIhC,SAASC,IAEZ,OAAO5H,EADG,IAAIkB,OAIX,SAAS2G,EAA6B3C,EAAMyC,GAC/C,IACIpC,EAAOtD,EADDrD,EAAU+I,GAAMvG,MACQ,oBAAwB,sBACtD4F,EAAO3F,EACXqB,IAAkBwC,EAAO,EAAI,GAAK8B,EAClCtE,IAAkBwC,EAAO,EAAI,GAAKK,EAG/B,SAASuC,EAA6B5C,EAAMyC,GAC/C,IACII,QAAQC,MAAMpI,EAAmBsF,EAAMyC,IACzC,QACE,kBAAqBzC,EAAMyC,IAI5B,SAASM,IAAgC,OAAO/E,GAAY,WAE/D,OAAOlD,EADGkI,KAAKA,QAEhBC,WAEI,SAASC,EAA+BlD,EAAMyC,EAAMU,GAEvD,OAAOrI,EADGpB,EAAUsG,GAAM9F,QAAQQ,EAAmB+H,EAAMU,KAIxD,SAASC,EAA8BpD,GAE1C,OAAOlF,EADGpB,EAAUsG,GAAMqD,QAIvB,SAASC,EAAgCtD,GAE5C,OAAOlF,EADGpB,EAAUsG,GAAMuD,UAIvB,SAASC,EAAwBxD,GAEpC,YAD8BvG,IAApBC,EAAUsG,GAIjB,SAASyD,EAAuCzD,GAEnD,OAAOlF,EADGpB,EAAUsG,GAAM0D,iBAIvB,SAASC,EAAuC3D,EAAMyC,GACzD/I,EAAUsG,GAAM0D,gBAAgBhK,EAAU+I,IAGvC,SAASmB,EAAsC5D,EAAMyC,EAAMU,GAr9BlE,IAA6BxI,EAAKC,EAs9B9BlB,EAAUsG,GAAM6D,gBAt9BSlJ,EAs9B0B8H,EAt9BrB7H,EAs9B2BuI,EAr9BlD5I,IAAkBM,SAASF,EAAM,EAAGA,EAAM,EAAIC,KAw9BlD,SAASkJ,IAEZ,OAAOhJ,EADGb,GAIP,SAAS8J,EAAyC/D,GAErD,OADUtG,EAAUsG,aAAiBgE,OAIlC,SAASC,EAAgCjE,GAC5C,IAAIC,EAAMvG,EAAUsG,GAAMkE,SAC1B,OAAOxG,EAAWuC,GAAO,EAAInF,EAAcmF,GAGxC,SAASkE,EAAsCnE,EAAMyC,EAAMU,GAC9D,IAAIlD,EAAMvG,EAAUsG,GAAMoE,eAAe1J,EAAmB+H,EAAMU,IAClE,OAAOzF,EAAWuC,GAAO,EAAInF,EAAcmF,GAGxC,SAASoE,EAA2BrE,GACvC6C,QAAQyB,IAAI5K,EAAUsG,IAGnB,SAASuE,EAA2DvE,GAEvE,OADUtG,EAAUsG,aAAiBwE,yBAIlC,SAASC,EAAsCzE,EAAMyC,GACxD/I,EAAUsG,GAAM0E,YAAchL,EAAU+I,GAGrC,SAASkC,GAAoC3E,EAAMyC,GACtD/I,EAAUsG,GAAM4E,UAAYlL,EAAU+I,GAGnC,SAASoC,GAAoC7E,EAAMyC,GACtD/I,EAAUsG,GAAM8E,UAAYrC,EAGzB,SAASsC,GAAiC/E,GAC7CtG,EAAUsG,GAAMgF,YAGb,SAASC,GAA4BjF,GACxCtG,EAAUsG,GAAMxG,OAGb,SAAS0L,GAA8BlF,GAC1CtG,EAAUsG,GAAMmF,SAGb,SAASC,KAA+B,OAAOpH,GAAY,SAAUgC,EAAMyC,EAAMU,EAAMkC,EAAMC,EAAMC,GACtG7L,EAAUsG,GAAMwF,IAAI/C,EAAMU,EAAMkC,EAAMC,EAAMC,KAC7CtC,WAEI,SAASwC,GAAgCzF,EAAMyC,EAAMU,EAAMkC,EAAMC,GACpE5L,EAAUsG,GAAM0F,SAASjD,EAAMU,EAAMkC,EAAMC,GAGxC,SAASK,GAAkC3F,EAAMyC,EAAMU,EAAMkC,EAAMC,GACtE5L,EAAUsG,GAAM4F,WAAWnD,EAAMU,EAAMkC,EAAMC,GAG1C,SAASO,GAAoD7F,GAEhE,OADUtG,EAAUsG,aAAiB8F,kBAIlC,SAASC,GAAgC/F,EAAMyC,GAClD/I,EAAUsG,GAAMkB,MAAQuB,IAAS,EAG9B,SAASuD,GAAiChG,EAAMyC,GACnD/I,EAAUsG,GAAMmB,OAASsB,IAAS,EAG/B,SAASwD,KAAsC,OAAOjI,GAAY,SAAUgC,EAAMyC,EAAMU,GAC3F,IAAIlD,EAAMvG,EAAUsG,GAAMkG,WAAWxL,EAAmB+H,EAAMU,IAC9D,OAAOzF,EAAWuC,GAAO,EAAInF,EAAcmF,KAC5CgD,WAEI,SAASkD,GAAiCnG,EAAMyC,GAEnD,OAAO3H,EADG,IAAIsL,SAAS1L,EAAmBsF,EAAMyC,KAI7C,SAAS4D,KAAgC,OAAOrI,GAAY,SAAUgC,EAAMyC,GAE/E,OAAO3H,EADGpB,EAAUsG,GAAMrE,KAAKjC,EAAU+I,OAE1CQ,WAEI,SAASqD,KAAgC,OAAOtI,GAAY,WAE/D,OAAOlD,EADGkI,KAAKA,QAEhBC,WAEI,SAASsD,KAAkC,OAAOvI,GAAY,WAEjE,OAAOlD,EADG0L,OAAOA,UAElBvD,WAEI,SAASwD,KAAsC,OAAOzI,GAAY,WAErE,OAAOlD,EADG4L,WAAWA,cAEtBzD,WAEI,SAAS0D,KAAkC,OAAO3I,GAAY,WAEjE,OAAOlD,EADG,EAAA8L,EAAOC,UAElB5D,WAEI,SAAS6D,GAA8B9G,GAE1C,OAAOlF,EADGpB,EAAUsG,GAAMxF,QAIvB,SAASuM,GAA2B/G,GAEvC,OAAOlF,EADG,IAAIL,WAAWf,EAAUsG,KAIhC,SAASgH,GAA2BhH,EAAMyC,EAAMU,GACnDzJ,EAAUsG,GAAMpD,IAAIlD,EAAU+I,GAAOU,IAAS,GAG3C,SAAS8D,GAA8BjH,GAE1C,OADUtG,EAAUsG,GAAMlG,OAIvB,SAASoN,GAAqClH,GAEjD,OAAOlF,EADG,IAAIL,WAAWuF,IAAS,IAI/B,SAASmH,GAAgCnH,EAAMyC,EAAMU,GAExD,OAAOrI,EADGpB,EAAUsG,GAAMnF,SAAS4H,IAAS,EAAGU,IAAS,IAIrD,SAASiE,GAA4BpH,GAExC,OAAOlF,EADGpB,EAAUsG,IAIjB,SAASqH,GAAwBrH,EAAMyC,GAC1C,IACIpC,EAAOtD,EADD/B,EAAYtB,EAAU+I,IACE,oBAAwB,sBACtDX,EAAO3F,EACXqB,IAAkBwC,EAAO,EAAI,GAAK8B,EAClCtE,IAAkBwC,EAAO,EAAI,GAAKK,EAG/B,SAASiH,GAAiBtH,EAAMyC,GACnC,MAAM,IAAIzG,MAAMtB,EAAmBsF,EAAMyC,IAGtC,SAAS8E,KAEZ,OAAOzM,EADG,e,g/DC1zCd,IAAI0M,EAAc,EACdC,EAAe,EAEfC,EAAa,EACbC,EAAe,EAEnB,MAGMC,EAEY,sBAFZA,EAGiB,4BASvB,UAImB1D,SAASE,eAAe,YAA3C,MACMyD,EAAc3D,SAASE,eAAe,YACtC0D,EAAW5D,SAASE,eAAe,UACnC2D,EAAgB7D,SAASE,eAAe,cACxC4D,EAAc9D,SAASE,eAAe,aAE3BF,SAASE,eAAe,YAChC6D,QAAUC,EAEnB,IAAIC,EAAa,KACbC,EAAgB,KAChBC,EAqKJ,SAAwBC,EAAKC,EAAY,SAAUC,GAAO,GAClC,MAAjBJ,GACCK,cAAcL,GAGlBP,EAAYjM,UAAY,eAAe2M,IACvCV,EAAYa,UAAYJ,EACxBT,EAAYc,QAAS,EAElBH,IACCJ,EAAgBQ,YAAW,KACvBf,EAAYc,QAAS,IA9MV,OAgCnBE,EAAgBjB,EAEhBkB,EAAO,KACPC,EAAU,KAEVC,EAAS,GAEbd,IAMA,MAAMjG,EAASiC,SAASE,eAAe,eAgBvC,SAAS8D,IACLY,EAAO,IAAI,KAAKtB,EAAaC,EAAcC,EAAY,WAAYC,GACnEoB,EAAU,IAAI,KAxEG,IACC,IAuEiC,eACnDD,EAAKG,YAAYF,GACjBD,EAAKI,OAELT,cAAcN,GACdgB,IACAC,IACAJ,EAAS,GACTH,EAAgBjB,EA4IpB,SAASuB,IAEL,OADWL,EAAK1H,gBAEZ,KAAK,WACD0G,EAASY,UAAY,YACrB,MACJ,KAAK,WACDZ,EAASY,UAAY,eAKjC,SAASU,IAEL,OAAON,EAAKO,WACR,UAAK5P,EACDuO,EAAYU,UAAY,GACxB,MACJ,KAAK,WACDV,EAAYU,UAAY,cACxB,MACJ,KAAK,WACDV,EAAYU,UAAY,eA3LpCzG,EAAOqH,iBAAiB,SAAUC,IAC9B,IAAIC,EA8HR,SAAqBvH,EAAQwH,GACzB,IAAIC,EAAOzH,EAAO0H,wBAClB,MAAO,CACHhM,EAAG8L,EAAIG,QAAUF,EAAKG,KACtBC,EAAGL,EAAIM,QAAUL,EAAKM,KAlIXC,CAAYhI,EAAQsH,IA2BvC,SAA8BW,GAE1B,OAAOrB,GAEH,KAAKjB,EACD,GAAIkB,EAAKqB,mBAAmBD,GAAY/H,OAAS,cAC7C,OAGJ,GAAI2G,EAAKqB,mBAAmBD,GAAY9H,SAASrB,MAAQ+H,EAAK1H,eAC1D,OAKJ4H,EAAOpP,KAAKsQ,GACZrB,EAAgBjB,EAChBkB,EAAKsB,aAAaF,GAClBpB,EAAKI,OAEL,MAGJ,KAAKtB,EAID,IAAKoB,EAAO,GAAGqB,GAAGH,GAAa,CAE3B,GAAIpB,EAAKqB,mBAAmBD,GAAY/H,OAAS,WAC7C,OAOJ,GAFA6G,EAAOpP,KAAKsQ,GAES,GAAjBlB,EAAOlP,OAIP,OAHAuO,EAAU,4CAA4CW,EAAOlP,eAC7D+I,QAAQC,MAAM,4CAA4CkG,EAAOlP,UAOrE,OAFagP,EAAKwB,UAAUtB,EAAO,GAAIA,EAAO,KAG1C,KAAK,aAEGuB,EAAWC,UACX1B,EAAK2B,UACL1C,EAAcW,UAAY,YAAYI,EAAK4B,gBAAgBC,eAAe,2BAG9E,MACJ,KAAK,uBACDtC,EAAU,6BACV,MACJ,KAAK,qBACDA,EAAU,kCACV,MACJ,KAAK,qBACDA,EAAU,4BACV,MACJ,KAAK,kBACDA,EAAU,0BACV,MACJ,KAAK,iBACDA,EAAU,gEACV,MACJ,KAAK,mBACDA,EAAU,6BACV,MACJ,KAAK,gBACDA,EAAU,iCACV,MACJ,KAAK,kBACDA,EAAU,2BAMtBS,EAAK8B,iBACL9B,EAAKI,OACLF,EAAS,GACTH,EAAgBjB,EAEhB,MACJ,IA3JK,UA4JD/E,QAAQyB,IAAI,uBAIpB6E,IACAC,IAqEJ,WAEI,OAAON,EAAK+B,WACR,UAAKpR,EACD,MACJ,KAAK,WACD4O,EAAU,aACVF,EAAa2C,aAAY,KACrB5C,MArPI,KAuPR,MACJ,KAAK,WACDG,EAAU,WAAY,WACtBF,EAAa2C,aAAY,KACrB5C,MA3PI,MAyKhB6C,GApHAC,CALW,IAAI,KACXC,KAAKC,MAAO1B,EAASM,EAAI7H,EAAOkJ,aAAgB1D,GAChDwD,KAAKC,MAAO1B,EAAS7L,EAAIsE,EAAOmJ,YAAe5D,QAmNvD,MAAM6D,EAAWnH,SAASE,eAAe,SASzCiH,EAASC,SALO,KAEZ9D,EAAc+D,SAASF,EAAStJ,OAChCmG,KAGJmD,EAAStJ,MAAQ,EAEjB,MAAMyJ,EAAYtH,SAASE,eAAe,UAU1CoH,EAAUF,SANO,KAEb7D,EAAe8D,SAASC,EAAUzJ,OAClC0J,EAAaC,IAAQjE,EAAe,EAAK,EACzCS,KAGJsD,EAAUzJ,MAAQ,EAElB,MAAM0J,EAAevH,SAASE,eAAe,aAS7CqH,EAAaH,SALO,KAEhB5D,EAAa6D,SAASE,EAAa1J,OACnCmG,KAGJuD,EAAa1J,MAAQ,EAErB,MAAM4J,EAAmBzH,SAASE,eAAe,mBAajDuH,EAAiBL,SATO,KAEpB3D,EAAe4D,SAASI,EAAiB5J,OACzC+G,EAAK8C,iBAAiBjE,GAEnBA,EAAe,GACdU,EAAU,oFAAqF,YAIvGsD,EAAiB5J,MAAQ,EAEzB,MAAMwI,EAAarG,SAASE,eAAe,eAO3CmG,EAAWe,SAHO","file":"10.bootstrap.js","sourcesContent":["import * as wasm from './draught_bg.wasm';\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n/**\n*/\nexport function init_wasm() {\n wasm.init_wasm();\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* Move/Jump, for use in Move\n*/\nexport const MoveType = Object.freeze({ Move:0,\"0\":\"Move\",Jump:1,\"1\":\"Jump\", });\n/**\n* Black/White\n*/\nexport const Team = Object.freeze({ Black:0,\"0\":\"Black\",White:1,\"1\":\"White\", });\n/**\n* Man/King\n*/\nexport const Strength = Object.freeze({ Man:0,\"0\":\"Man\",King:1,\"1\":\"King\", });\n/**\n* Model board square as Empty/Occupied/Unplayable\n*/\nexport const SquareState = Object.freeze({ Empty:0,\"0\":\"Empty\",Occupied:1,\"1\":\"Occupied\",Unplayable:2,\"2\":\"Unplayable\", });\n/**\n* Possible outcomes of trying to move\n*/\nexport const Moveable = Object.freeze({ Allowed:0,\"0\":\"Allowed\",UnoccupiedSrc:1,\"1\":\"UnoccupiedSrc\",OccupiedDest:2,\"2\":\"OccupiedDest\",OutOfBounds:3,\"3\":\"OutOfBounds\",Unplayable:4,\"4\":\"Unplayable\",WrongTeamSrc:5,\"5\":\"WrongTeamSrc\",IllegalTrajectory:6,\"6\":\"IllegalTrajectory\",NoJumpablePiece:7,\"7\":\"NoJumpablePiece\",JumpingSameTeam:8,\"8\":\"JumpingSameTeam\", });\n/**\n* Single state of a checkers board\n*/\nexport class Board {\n\n static __wrap(ptr) {\n const obj = Object.create(Board.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_board_free(ptr);\n }\n /**\n * @returns {number}\n */\n get width() {\n var ret = wasm.__wbg_get_board_width(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set width(arg0) {\n wasm.__wbg_set_board_width(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get height() {\n var ret = wasm.__wbg_get_board_height(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set height(arg0) {\n wasm.__wbg_set_board_height(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get current_turn() {\n var ret = wasm.__wbg_get_board_current_turn(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set current_turn(arg0) {\n wasm.__wbg_set_board_current_turn(this.ptr, arg0);\n }\n /**\n * Get a copy of a board square by 1D array index\n * @param {number} idx\n * @returns {Square}\n */\n cell(idx) {\n var ret = wasm.board_cell(this.ptr, idx);\n return Square.__wrap(ret);\n }\n /**\n * Get a copy of a board square by 1D array index\n * @param {number} idx\n * @param {Square} square\n */\n set_cell(idx, square) {\n _assertClass(square, Square);\n var ptr0 = square.ptr;\n square.ptr = 0;\n wasm.board_set_cell(this.ptr, idx, ptr0);\n }\n /**\n * Get a copy of a board square by 2D [`BrdIdx`] index\n * @param {BrdIdx} idx\n * @returns {Square}\n */\n grid_cell(idx) {\n _assertClass(idx, BrdIdx);\n var ptr0 = idx.ptr;\n idx.ptr = 0;\n var ret = wasm.board_grid_cell(this.ptr, ptr0);\n return Square.__wrap(ret);\n }\n /**\n * Transform a 2D row/column board index into a single 1D index for use with [`Board::cells`]\n * @param {number} row\n * @param {number} col\n * @returns {number}\n */\n cell_index(row, col) {\n var ret = wasm.board_cell_index(this.ptr, row, col);\n return ret >>> 0;\n }\n /**\n * Similar to [`Board::cell_index`] but with a [`BrdIdx`] instead of separate indices. Transform a 2D row/column board index into a single 1D index for use with [`Board::cells`]\n * @param {BrdIdx} idx\n * @returns {number}\n */\n cell_idx(idx) {\n _assertClass(idx, BrdIdx);\n var ptr0 = idx.ptr;\n idx.ptr = 0;\n var ret = wasm.board_cell_idx(this.ptr, ptr0);\n return ret >>> 0;\n }\n /**\n * Transform a 1D array index (for [`Board::cells`]) into a 2D game board index (by row/col)\n * @param {number} idx\n * @returns {BrdIdx}\n */\n board_index(idx) {\n var ret = wasm.board_board_index(this.ptr, idx);\n return BrdIdx.__wrap(ret);\n }\n /**\n * Check whether a move given by source and destination indices is legal\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {number}\n */\n can_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_can_move(this.ptr, ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Check that given move trajectory is valid for a man piece\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @param {Piece} from_square_occupant\n * @returns {number}\n */\n validate_man_move(from, to, from_square_occupant) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n _assertClass(from_square_occupant, Piece);\n var ptr2 = from_square_occupant.ptr;\n from_square_occupant.ptr = 0;\n var ret = wasm.board_validate_man_move(this.ptr, ptr0, ptr1, ptr2);\n return ret >>> 0;\n }\n /**\n * Check that given move trajectory is valid for a king piece\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @param {Piece} from_square_occupant\n * @returns {number}\n */\n validate_king_move(from, to, from_square_occupant) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n _assertClass(from_square_occupant, Piece);\n var ptr2 = from_square_occupant.ptr;\n from_square_occupant.ptr = 0;\n var ret = wasm.board_validate_king_move(this.ptr, ptr0, ptr1, ptr2);\n return ret >>> 0;\n }\n /**\n * Get cell index of jumpee square given from and to locations\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {number}\n */\n jumpee_idx(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_jumpee_idx(this.ptr, ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Get a pointer to the backing array of board squares, [`Board::cells`]\n * @returns {number}\n */\n cells() {\n var ret = wasm.board_cells(this.ptr);\n return ret;\n }\n /**\n * Get the number of board squares\n * @returns {number}\n */\n num_cells() {\n var ret = wasm.board_num_cells(this.ptr);\n return ret >>> 0;\n }\n /**\n * Get the number of remaining pieces\n * @returns {number}\n */\n num_pieces() {\n var ret = wasm.board_num_pieces(this.ptr);\n return ret >>> 0;\n }\n /**\n * Get the number of remaining pieces for a player\n * @param {number} team\n * @returns {number}\n */\n num_player(team) {\n var ret = wasm.board_num_player(this.ptr, team);\n return ret >>> 0;\n }\n /**\n * Get the score value, Black - White pieces\n * @returns {number}\n */\n score() {\n var ret = wasm.board_score(this.ptr);\n return ret;\n }\n /**\n * Get the state of a board square by 1D array index\n * @param {number} idx\n * @returns {number}\n */\n cell_state(idx) {\n var ret = wasm.board_cell_state(this.ptr, idx);\n return ret >>> 0;\n }\n /**\n * Get new board derived from current with given move applied\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {Board}\n */\n apply_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_apply_move(this.ptr, ptr0, ptr1);\n return Board.__wrap(ret);\n }\n /**\n * Get new board derived from current with given jump applied\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {Board}\n */\n apply_jump(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.board_apply_jump(this.ptr, ptr0, ptr1);\n return Board.__wrap(ret);\n }\n /**\n * Get row index for current team, top row for black, bottom row for white\n * @returns {number}\n */\n king_row_idx() {\n var ret = wasm.board_king_row_idx(this.ptr);\n return ret >>> 0;\n }\n /**\n * Unwrap the jumpee piece from the square and [`Board::check_jumpee_team`] with [`Moveable`] response\n * @param {Square} jumpee\n * @param {Piece} from_occ\n * @returns {number}\n */\n static validate_jumpee(jumpee, from_occ) {\n _assertClass(jumpee, Square);\n var ptr0 = jumpee.ptr;\n jumpee.ptr = 0;\n _assertClass(from_occ, Piece);\n var ptr1 = from_occ.ptr;\n from_occ.ptr = 0;\n var ret = wasm.board_validate_jumpee(ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Check that the source piece and the jumpee are of opposing teams\n * @param {Piece} from\n * @param {Piece} jumpee\n * @returns {boolean}\n */\n static check_jumpee_team(from, jumpee) {\n _assertClass(from, Piece);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(jumpee, Piece);\n var ptr1 = jumpee.ptr;\n jumpee.ptr = 0;\n var ret = wasm.board_check_jumpee_team(ptr0, ptr1);\n return ret !== 0;\n }\n /**\n * Initialise a game board without game pieces\n * @param {number} width\n * @param {number} height\n * @param {number} current_turn\n */\n constructor(width, height, current_turn) {\n var ret = wasm.board_new(width, height, current_turn);\n return Board.__wrap(ret);\n }\n /**\n * Reset the given board to a starting layout with 3 rows of opposing pieces\n * @param {Board} board\n * @param {number} piece_rows\n * @returns {Board}\n */\n static init_game(board, piece_rows) {\n _assertClass(board, Board);\n var ptr0 = board.ptr;\n board.ptr = 0;\n var ret = wasm.board_init_game(ptr0, piece_rows);\n return Board.__wrap(ret);\n }\n}\n/**\n* Rank 2 tensor index to identify a board square by row and column\n*/\nexport class BrdIdx {\n\n static __wrap(ptr) {\n const obj = Object.create(BrdIdx.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_brdidx_free(ptr);\n }\n /**\n * @returns {number}\n */\n get row() {\n var ret = wasm.__wbg_get_brdidx_row(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set row(arg0) {\n wasm.__wbg_set_brdidx_row(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get col() {\n var ret = wasm.__wbg_get_brdidx_col(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set col(arg0) {\n wasm.__wbg_set_brdidx_col(this.ptr, arg0);\n }\n /**\n * @param {number} row\n * @param {number} col\n */\n constructor(row, col) {\n var ret = wasm.brdidx_from(row, col);\n return BrdIdx.__wrap(ret);\n }\n /**\n * @param {BrdIdx} other\n * @returns {boolean}\n */\n eq(other) {\n _assertClass(other, BrdIdx);\n var ret = wasm.brdidx_eq(this.ptr, other.ptr);\n return ret !== 0;\n }\n}\n/**\n* Root-level structure for managing the game as a collection of board states\n*/\nexport class Game {\n\n static __wrap(ptr) {\n const obj = Object.create(Game.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_game_free(ptr);\n }\n /**\n * @returns {number}\n */\n get last_node_count() {\n var ret = wasm.__wbg_get_game_last_node_count(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set last_node_count(arg0) {\n wasm.__wbg_set_game_last_node_count(this.ptr, arg0);\n }\n /**\n * Get pointer to current board's squares\n * @returns {number}\n */\n current_board_cells() {\n var ret = wasm.game_current_board_cells(this.ptr);\n return ret;\n }\n /**\n * Get pointer to current board's squares\n * @returns {number}\n */\n current_board_len() {\n var ret = wasm.game_current_board_len(this.ptr);\n return ret >>> 0;\n }\n /**\n * Current turn's team\n * @returns {number}\n */\n current_turn() {\n var ret = wasm.game_current_turn(this.ptr);\n return ret >>> 0;\n }\n /**\n * Current board's score\n * @returns {number}\n */\n score() {\n var ret = wasm.game_score(this.ptr);\n return ret;\n }\n /**\n * Get currently winning player\n * @returns {number | undefined}\n */\n winning() {\n var ret = wasm.game_winning(this.ptr);\n return ret === 2 ? undefined : ret;\n }\n /**\n * Check if a player has won\n * @returns {number | undefined}\n */\n has_won() {\n var ret = wasm.game_has_won(this.ptr);\n return ret === 2 ? undefined : ret;\n }\n /**\n * Get square on current board for given index\n * @param {BrdIdx} idx\n * @returns {Square}\n */\n current_cell_state(idx) {\n _assertClass(idx, BrdIdx);\n var ret = wasm.game_current_cell_state(this.ptr, idx.ptr);\n return Square.__wrap(ret);\n }\n /**\n * @param {number} search_depth\n */\n set_search_depth(search_depth) {\n wasm.game_set_search_depth(this.ptr, search_depth);\n }\n /**\n * Set given index as selected piece\n * TODO: Check whether valid square?\n * @param {BrdIdx} idx\n */\n set_selected(idx) {\n _assertClass(idx, BrdIdx);\n wasm.game_set_selected(this.ptr, idx.ptr);\n }\n /**\n * Clear currently selected piece\n */\n clear_selected() {\n wasm.game_clear_selected(this.ptr);\n }\n /**\n * Attempt to make a move given a source and destination index\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n * @returns {number}\n */\n make_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n var ret = wasm.game_make_move(this.ptr, ptr0, ptr1);\n return ret >>> 0;\n }\n /**\n * Update board state with given move and push new board into current state\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n */\n execute_move(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n wasm.game_execute_move(this.ptr, ptr0, ptr1);\n }\n /**\n * Update board state with given jump move and push new board into current state\n * @param {BrdIdx} from\n * @param {BrdIdx} to\n */\n execute_jump(from, to) {\n _assertClass(from, BrdIdx);\n var ptr0 = from.ptr;\n from.ptr = 0;\n _assertClass(to, BrdIdx);\n var ptr1 = to.ptr;\n to.ptr = 0;\n wasm.game_execute_jump(this.ptr, ptr0, ptr1);\n }\n /**\n * Push current board into the previous turns and set given board to current\n * @param {Board} board\n */\n push_new_board(board) {\n _assertClass(board, Board);\n var ptr0 = board.ptr;\n board.ptr = 0;\n wasm.game_push_new_board(this.ptr, ptr0);\n }\n /**\n * Set current board to given\n * @param {Board} board\n */\n set_current(board) {\n _assertClass(board, Board);\n var ptr0 = board.ptr;\n board.ptr = 0;\n wasm.game_set_current(this.ptr, ptr0);\n }\n /**\n * Get new game without board renderer\n * @param {number} width\n * @param {number} height\n * @param {number} piece_rows\n * @param {number} first_turn\n * @param {number} search_depth\n */\n constructor(width, height, piece_rows, first_turn, search_depth) {\n var ret = wasm.game_new(width, height, piece_rows, first_turn, search_depth);\n return Game.__wrap(ret);\n }\n /**\n * Get a new game with canvas ID and dimensions\n * @param {number} width\n * @param {number} height\n * @param {number} piece_rows\n * @param {number} first_turn\n * @param {number} search_depth\n * @param {string} canvas_id\n * @param {number} canvas_width\n * @param {number} canvas_height\n * @returns {Game}\n */\n static new_with_canvas(width, height, piece_rows, first_turn, search_depth, canvas_id, canvas_width, canvas_height) {\n var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.game_new_with_canvas(width, height, piece_rows, first_turn, search_depth, ptr0, len0, canvas_width, canvas_height);\n return Game.__wrap(ret);\n }\n /**\n * Set painter for rendering boards\n * @param {Painter} value\n */\n set_painter(value) {\n _assertClass(value, Painter);\n var ptr0 = value.ptr;\n value.ptr = 0;\n wasm.game_set_painter(this.ptr, ptr0);\n }\n /**\n * Draw current board using painter if exists\n */\n draw() {\n wasm.game_draw(this.ptr);\n }\n /**\n * Create computer, get move from current board and update current board\n */\n ai_move() {\n wasm.game_ai_move(this.ptr);\n }\n}\n/**\n* Used to paint boards onto HTML canvases\n*/\nexport class Painter {\n\n static __wrap(ptr) {\n const obj = Object.create(Painter.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_painter_free(ptr);\n }\n /**\n * Default constructor which queries for canvas by ID\n * @param {number} width\n * @param {number} height\n * @param {string} canvas_id\n */\n constructor(width, height, canvas_id) {\n var ptr0 = passStringToWasm0(canvas_id, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = wasm.painter_new(width, height, ptr0, len0);\n return Painter.__wrap(ret);\n }\n /**\n * Constructor with given canvas element\n * @param {number} width\n * @param {number} height\n * @param {HTMLCanvasElement} canvas\n * @returns {Painter}\n */\n static new_with_canvas(width, height, canvas) {\n var ret = wasm.painter_new_with_canvas(width, height, addHeapObject(canvas));\n return Painter.__wrap(ret);\n }\n /**\n * Set new square outline colour value\n * @param {any} value\n */\n set_square_outline(value) {\n wasm.painter_set_square_outline(this.ptr, addHeapObject(value));\n }\n /**\n * Set new line width for outlining squares\n * @param {number} value\n */\n set_outline_width(value) {\n wasm.painter_set_outline_width(this.ptr, value);\n }\n /**\n * Set whether squares are outlined\n * @param {boolean} value\n */\n set_draw_outline(value) {\n wasm.painter_set_draw_outline(this.ptr, value);\n }\n /**\n * Reset the canvas dimensions to the given width and height\n */\n reset_dimensions() {\n wasm.painter_reset_dimensions(this.ptr);\n }\n /**\n * Check whether given canvas dimensions divide evenly by given board dimenions\n * @param {Board} board\n * @returns {boolean}\n */\n validate_board_dim(board) {\n _assertClass(board, Board);\n var ret = wasm.painter_validate_board_dim(this.ptr, board.ptr);\n return ret !== 0;\n }\n /**\n * Draw a board onto the canvas\n * @param {Board} board\n */\n draw(board) {\n _assertClass(board, Board);\n wasm.painter_draw(this.ptr, board.ptr);\n }\n}\n/**\n* Game piece given by its team and strength (normal or kinged)\n*/\nexport class Piece {\n\n static __wrap(ptr) {\n const obj = Object.create(Piece.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_piece_free(ptr);\n }\n /**\n * @returns {number}\n */\n get team() {\n var ret = wasm.__wbg_get_piece_team(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set team(arg0) {\n wasm.__wbg_set_piece_team(this.ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get strength() {\n var ret = wasm.__wbg_get_piece_strength(this.ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set strength(arg0) {\n wasm.__wbg_set_piece_strength(this.ptr, arg0);\n }\n /**\n * @param {number} team\n * @param {number} strength\n */\n constructor(team, strength) {\n var ret = wasm.piece_new(team, strength);\n return Piece.__wrap(ret);\n }\n}\n/**\n* Board squares given by a state and a possible occupying game piece\n*/\nexport class Square {\n\n static __wrap(ptr) {\n const obj = Object.create(Square.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_square_free(ptr);\n }\n /**\n * Game piece if square is occupied\n * @returns {Piece | undefined}\n */\n get occupant() {\n var ret = wasm.__wbg_get_square_occupant(this.ptr);\n return ret === 0 ? undefined : Piece.__wrap(ret);\n }\n /**\n * Game piece if square is occupied\n * @param {Piece | undefined} arg0\n */\n set occupant(arg0) {\n let ptr0 = 0;\n if (!isLikeNone(arg0)) {\n _assertClass(arg0, Piece);\n ptr0 = arg0.ptr;\n arg0.ptr = 0;\n }\n wasm.__wbg_set_square_occupant(this.ptr, ptr0);\n }\n /**\n * Description of whether the square is occupied or an unplayable, i.e. off-lattice square\n * @returns {number}\n */\n get state() {\n var ret = wasm.__wbg_get_square_state(this.ptr);\n return ret >>> 0;\n }\n /**\n * Description of whether the square is occupied or an unplayable, i.e. off-lattice square\n * @param {number} arg0\n */\n set state(arg0) {\n wasm.__wbg_set_square_state(this.ptr, arg0);\n }\n /**\n * Standard constructor function to form square from state and occupant\n * @param {number} state\n * @param {Piece | undefined} occupant\n */\n constructor(state, occupant) {\n let ptr0 = 0;\n if (!isLikeNone(occupant)) {\n _assertClass(occupant, Piece);\n ptr0 = occupant.ptr;\n occupant.ptr = 0;\n }\n var ret = wasm.square_new(state, ptr0);\n return Square.__wrap(ret);\n }\n /**\n * Helper function for a well-formed piece square by team and strength\n * @param {number} team\n * @param {number} strength\n * @returns {Square}\n */\n static pc(team, strength) {\n var ret = wasm.square_pc(team, strength);\n return Square.__wrap(ret);\n }\n /**\n * Helper function for a well-formed empty square\n * @returns {Square}\n */\n static empty() {\n var ret = wasm.square_empty();\n return Square.__wrap(ret);\n }\n /**\n * Helper function for a well-formed unplayable square\n * @returns {Square}\n */\n static unplay() {\n var ret = wasm.square_unplay();\n return Square.__wrap(ret);\n }\n}\n\nexport function __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nexport function __wbindgen_string_new(arg0, arg1) {\n var ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_59cb74e423758ede() {\n var ret = new Error();\n return addHeapObject(ret);\n};\n\nexport function __wbg_stack_558ba5917b466edd(arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nexport function __wbg_error_4bb6c2a97407129a(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n};\n\nexport function __wbg_self_86b4b13392c7af56() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_require_f5521a5b85ad2542(arg0, arg1, arg2) {\n var ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n};\n\nexport function __wbg_crypto_b8c92eaac23d0d80(arg0) {\n var ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n};\n\nexport function __wbg_msCrypto_9ad6677321a08dd8(arg0) {\n var ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_is_undefined(arg0) {\n var ret = getObject(arg0) === undefined;\n return ret;\n};\n\nexport function __wbg_getRandomValues_dd27e6b0652b3236(arg0) {\n var ret = getObject(arg0).getRandomValues;\n return addHeapObject(ret);\n};\n\nexport function __wbg_getRandomValues_e57c9b75ddead065(arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n};\n\nexport function __wbg_randomFillSync_d2ba53160aec6aba(arg0, arg1, arg2) {\n getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));\n};\n\nexport function __wbg_static_accessor_MODULE_452b4680e8614c81() {\n var ret = module;\n return addHeapObject(ret);\n};\n\nexport function __wbg_instanceof_Window_11e25482011fc506(arg0) {\n var ret = getObject(arg0) instanceof Window;\n return ret;\n};\n\nexport function __wbg_document_5aff8cd83ef968f5(arg0) {\n var ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_getElementById_b180ea4ada06a837(arg0, arg1, arg2) {\n var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n};\n\nexport function __wbg_log_9a99fb1af846153b(arg0) {\n console.log(getObject(arg0));\n};\n\nexport function __wbg_instanceof_CanvasRenderingContext2d_779e79c4121aa91b(arg0) {\n var ret = getObject(arg0) instanceof CanvasRenderingContext2D;\n return ret;\n};\n\nexport function __wbg_setstrokeStyle_2939ee453716e462(arg0, arg1) {\n getObject(arg0).strokeStyle = getObject(arg1);\n};\n\nexport function __wbg_setfillStyle_af790b5baf4d3210(arg0, arg1) {\n getObject(arg0).fillStyle = getObject(arg1);\n};\n\nexport function __wbg_setlineWidth_3e6b1837ae38d099(arg0, arg1) {\n getObject(arg0).lineWidth = arg1;\n};\n\nexport function __wbg_beginPath_2378575e37027ad3(arg0) {\n getObject(arg0).beginPath();\n};\n\nexport function __wbg_fill_558339447ed6ad43(arg0) {\n getObject(arg0).fill();\n};\n\nexport function __wbg_stroke_c1e0313c58997dcf(arg0) {\n getObject(arg0).stroke();\n};\n\nexport function __wbg_arc_fffd87d9113dce32() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) {\n getObject(arg0).arc(arg1, arg2, arg3, arg4, arg5);\n}, arguments) };\n\nexport function __wbg_fillRect_46ffc8d2cef7e298(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).fillRect(arg1, arg2, arg3, arg4);\n};\n\nexport function __wbg_strokeRect_7ea34fad8a7f0fe2(arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).strokeRect(arg1, arg2, arg3, arg4);\n};\n\nexport function __wbg_instanceof_HtmlCanvasElement_fd3cbbe3906d7792(arg0) {\n var ret = getObject(arg0) instanceof HTMLCanvasElement;\n return ret;\n};\n\nexport function __wbg_setwidth_f3c88eb520ba8d47(arg0, arg1) {\n getObject(arg0).width = arg1 >>> 0;\n};\n\nexport function __wbg_setheight_5a1abba41e35c42a(arg0, arg1) {\n getObject(arg0).height = arg1 >>> 0;\n};\n\nexport function __wbg_getContext_813df131fcbd6e91() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_newnoargs_9fdd8f3961dd1bee(arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n};\n\nexport function __wbg_call_ba36642bd901572b() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_self_bb69a836a72ec6e9() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_window_3304fc4b414c9693() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_globalThis_e0d21cabc6630763() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_global_8463719227271676() { return handleError(function () {\n var ret = global.global;\n return addHeapObject(ret);\n}, arguments) };\n\nexport function __wbg_buffer_9e184d6f785de5ed(arg0) {\n var ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n};\n\nexport function __wbg_new_e8101319e4cf95fc(arg0) {\n var ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n};\n\nexport function __wbg_set_e8ae7b27314e8b98(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n};\n\nexport function __wbg_length_2d56cb37075fcfb1(arg0) {\n var ret = getObject(arg0).length;\n return ret;\n};\n\nexport function __wbg_newwithlength_a8d1dbcbe703a5c6(arg0) {\n var ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbg_subarray_901ede8318da52a6(arg0, arg1, arg2) {\n var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_object_clone_ref(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n};\n\nexport function __wbindgen_debug_string(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nexport function __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\nexport function __wbindgen_memory() {\n var ret = wasm.memory;\n return addHeapObject(ret);\n};\n\n","import { Game, Board, BrdIdx, Painter, Team, init_wasm, Moveable, SquareState, Square } from \"draught\";\n// import { memory } from \"draught/draught_bg.wasm\";\n\n///////////////////\n// CONSTS\n///////////////////\n\nconst CANVAS_WIDTH = 720;\nconst CANVAS_HEIGHT = 720;\n\nvar BOARD_WIDTH = 8;\nvar BOARD_HEIGHT = 8;\n\nvar PIECE_ROWS = 3;\nvar SEARCH_DEPTH = 4;\n\nconst STATUS_TIMEOUT = 3000;\nconst WON_TIMEOUT = 3000;\n\nconst GameState = {\n HUMAN_TURN: {\n THINKING: \"human_turn.thinking\",\n FROM_SELECTED: \"human_turn.from_selected\"\n },\n AI_TURN: \"ai_turn\"\n}\n\n//////////////////\n// GAME STUFF\n//////////////////\n\ninit_wasm();\n\n// let board = new Board(BOARD_WIDTH, BOARD_HEIGHT, Team.Black);\n\nconst statusText = document.getElementById(\"status-p\");\nconst statusAlert = document.getElementById(\"status-d\");\nconst teamText = document.getElementById(\"team-p\");\nconst nodeCountText = document.getElementById(\"node-count\");\nconst winningText = document.getElementById(\"winning-p\");\n\nconst startBtn = document.getElementById(\"startBtn\");\nstartBtn.onclick = start_game;\n\nlet wonTimeout = null;\nlet statusTimeout = null;\nlet setStatus = setStatusAlert;\n\nlet current_state = GameState.HUMAN_TURN.THINKING;\n\nlet game = null;\nlet painter = null;\n\nlet clicks = [];\n\nstart_game();\n\n/////////////////\n// CANVAS\n/////////////////\n\nconst canvas = document.getElementById(\"game-canvas\");\ncanvas.addEventListener(\"click\", (event) => {\n var mousepos = getMousePos(canvas, event);\n // console.log(mousepos);\n var cell = new BrdIdx(\n Math.floor((mousepos.y / canvas.clientHeight) * BOARD_HEIGHT),\n Math.floor((mousepos.x / canvas.clientWidth) * BOARD_WIDTH),\n );\n // console.log(cell);\n process_canvas_click(cell);\n});\n\n////////////////\n// FUNCS\n////////////////\n\nfunction start_game() {\n game = new Game(BOARD_WIDTH, BOARD_HEIGHT, PIECE_ROWS, Team.Black, SEARCH_DEPTH);\n painter = new Painter(CANVAS_WIDTH, CANVAS_HEIGHT, \"game-canvas\");\n game.set_painter(painter);\n game.draw();\n\n clearInterval(wonTimeout);\n updateTeamText();\n updateWinningText();\n clicks = [];\n current_state = GameState.HUMAN_TURN.THINKING;\n}\n\nfunction process_canvas_click(cell_coord) {\n\n switch(current_state) {\n // first click of a move\n case GameState.HUMAN_TURN.THINKING:\n if (game.current_cell_state(cell_coord).state != SquareState.Occupied ) {\n return;\n }\n\n if (game.current_cell_state(cell_coord).occupant.team != game.current_turn() ) {\n return;\n }\n\n // console.log(\"Your turn, first piece picked\");\n\n clicks.push(cell_coord);\n current_state = GameState.HUMAN_TURN.FROM_SELECTED;\n game.set_selected(cell_coord);\n game.draw();\n \n break;\n \n // second click of a move\n case GameState.HUMAN_TURN.FROM_SELECTED:\n\n // second click is different to first, process as move\n // otherwise, will skip straight to clean up (clear selected and clicks) \n if (!clicks[0].eq(cell_coord)) {\n\n if (game.current_cell_state(cell_coord).state != SquareState.Empty ) {\n return;\n }\n \n // console.log(\"Your turn, first piece already picked, picking second\");\n \n clicks.push(cell_coord);\n \n if (clicks.length != 2) {\n setStatus(`Error: wrong number of clicks to process ${clicks.length}`);\n console.error(`Error: wrong number of clicks to process ${clicks.length}`);\n \n return;\n }\n\n let status = game.make_move(clicks[0], clicks[1]);\n\n switch(status) {\n case Moveable.Allowed:\n\n if (aiCheckBox.checked) {\n game.ai_move();\n nodeCountText.innerText = `searched ${game.last_node_count.toLocaleString(\"en-GB\")} possible moves`;\n }\n\n break;\n case Moveable.IllegalTrajectory:\n setStatus(\"You can't move like that!\");\n break;\n case Moveable.JumpingSameTeam:\n setStatus(\"You can't jump your own piece!\");\n break;\n case Moveable.NoJumpablePiece:\n setStatus(\"There's nothing to jump!\");\n break;\n case Moveable.OccupiedDest:\n setStatus(\"There's a piece there!\");\n break;\n case Moveable.OutOfBounds:\n setStatus(\"That square's not on the board! (how have you managed that?)\");\n break;\n case Moveable.UnoccupiedSrc:\n setStatus(\"There's no piece to move!\");\n break;\n case Moveable.Unplayable:\n setStatus(\"That's not a playable square!\");\n break;\n case Moveable.WrongTeamSrc:\n setStatus(\"That's not your piece!\");\n break;\n }\n \n }\n\n game.clear_selected();\n game.draw();\n clicks = [];\n current_state = GameState.HUMAN_TURN.THINKING;\n \n break;\n case GameState.AI_TURN:\n console.log(\"It's the AI's turn!\");\n break;\n }\n\n updateTeamText();\n updateWinningText();\n checkWon();\n}\n\nfunction getMousePos(canvas, evt) {\n var rect = canvas.getBoundingClientRect();\n return {\n x: evt.clientX - rect.left,\n y: evt.clientY - rect.top\n };\n}\n\nfunction setStatusText(txt, hide = true) {\n if(statusTimeout != null) {\n clearInterval(statusTimeout);\n }\n\n statusText.innerText = txt;\n\n if(hide) {\n statusTimeout = setTimeout(() => {\n statusText.innerText = \"\";\n }, STATUS_TIMEOUT);\n }\n}\n\nfunction setStatusAlert(txt, alertType = \"danger\", hide = true) {\n if(statusTimeout != null) {\n clearInterval(statusTimeout);\n }\n\n statusAlert.className = `alert alert-${alertType}`;\n statusAlert.innerText = txt;\n statusAlert.hidden = false;\n\n if(hide) {\n statusTimeout = setTimeout(() => {\n statusAlert.hidden = true;\n }, STATUS_TIMEOUT);\n }\n}\n\nfunction updateTeamText(){\n let team = game.current_turn();\n switch(team) {\n case Team.White:\n teamText.innerText = \"⚪ White ⚪\";\n break;\n case Team.Black:\n teamText.innerText = \"🔴 Black 🔴\";\n break;\n }\n}\n\nfunction updateWinningText(){\n \n switch(game.winning()) {\n case undefined:\n winningText.innerText = \"\";\n break;\n case Team.White:\n winningText.innerText = \"👑 White 👑\";\n break;\n case Team.Black:\n winningText.innerText = \"👑 Black 👑\";\n break;\n }\n}\n\nfunction checkWon() {\n\n switch(game.has_won()) {\n case undefined:\n break;\n case Team.White:\n setStatus(\"You Lost!\");\n wonTimeout = setInterval(() => {\n start_game();\n }, WON_TIMEOUT);\n break;\n case Team.Black:\n setStatus(\"You Won!\", \"success\");\n wonTimeout = setInterval(() => {\n start_game();\n }, WON_TIMEOUT);\n break;\n }\n}\n\n////////////////\n// UI\n////////////////\n\nconst widthBox = document.getElementById(\"width\");\n/**\n * Handler for width input box change, start a new game\n */\nconst onWidth = () => {\n\n BOARD_WIDTH = parseInt(widthBox.value);\n start_game();\n}\nwidthBox.onchange = onWidth;\nwidthBox.value = 8;\n\nconst heightBox = document.getElementById(\"height\");\n/**\n * Handler for height input box change, start a new game\n */\nconst onHeight = () => {\n\n BOARD_HEIGHT = parseInt(heightBox.value);\n pieceRowsBox.max = (BOARD_HEIGHT / 2) - 1;\n start_game();\n}\nheightBox.onchange = onHeight;\nheightBox.value = 8;\n\nconst pieceRowsBox = document.getElementById(\"play_rows\");\n/**\n * Handler for piece rows input box change, start a new game\n */\nconst onPieceRows = () => {\n\n PIECE_ROWS = parseInt(pieceRowsBox.value);\n start_game();\n}\npieceRowsBox.onchange = onPieceRows;\npieceRowsBox.value = 3;\n\nconst aiSearchDepthBox = document.getElementById(\"ai_search_depth\");\n/**\n * Handler for AI search depth input box change, start a new game\n */\nconst onAISearchDepth = () => {\n\n SEARCH_DEPTH = parseInt(aiSearchDepthBox.value);\n game.set_search_depth(SEARCH_DEPTH);\n\n if(SEARCH_DEPTH > 4) {\n setStatus(\"This increases thinking time exponentially, be careful (probably don't go past 6)\", \"warning\");\n }\n}\naiSearchDepthBox.onchange = onAISearchDepth;\naiSearchDepthBox.value = 4;\n\nconst aiCheckBox = document.getElementById(\"ai-checkbox\");\n/**\n * Handler for height input box change, get a new universe of given size\n */\nconst onAICheck = () => {\n \n}\naiCheckBox.onchange = onAICheck;\n// aiCheckBox.checked = true;"],"sourceRoot":""} \ No newline at end of file diff --git a/406c9aebd9f4530de773.module.wasm b/406c9aebd9f4530de773.module.wasm deleted file mode 100644 index fe6b4da1e1ef203727186c7f7b219da0a8b90c98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121732 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 sC)=V; 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¥HbGrVf-C5wS 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 F{V#dG^uYiC diff --git a/a9e080695052ab7978e6.module.wasm b/a9e080695052ab7978e6.module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..2c6bc443524e893f6a5eb12a987c38fab707c000 GIT binary patch literal 120761 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

>8mI5^I<)anh){J9>jXY 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 of all items in this crate -

Enum draught::board::enums::MoveType[][src]

#[repr(u8)]
 pub enum MoveType {
     Move,
     Jump,
-}

+}

Move/Jump, for use in Move

+

Variants

-
Move
Jump

Trait Implementations

impl Clone for MoveType[src]