next-chessground 1.4.13 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom");function A(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=A(t),r=A(n);const i=t.createContext({theme:{board:"green",pieces:"neo",playSounds:!0,sounds:"robot",highlight:!0,coordinates:!0},setTheme:()=>{}}),s=({children:t})=>e.jsx(o.default.Fragment,{children:"undefined"==typeof window?null:t});var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function l(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}var u=l(function(e){!function(t,n){var A={version:"2.14.4",areas:{},apis:{},nsdelim:".",inherit:function(e,t){for(var n in e)t.hasOwnProperty(n)||Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t},stringify:function(e,t){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e,t||A.replace)},parse:function(e,t){try{return JSON.parse(e,t||A.revive)}catch(t){return e}},fn:function(e,t){for(var n in A.storeAPI[e]=t,A.apis)A.apis[n][e]=t},get:function(e,t){return e.getItem(t)},set:function(e,t,n){e.setItem(t,n)},remove:function(e,t){e.removeItem(t)},key:function(e,t){return e.key(t)},length:function(e){return e.length},clear:function(e){e.clear()},Store:function(e,t,n){var o=A.inherit(A.storeAPI,function(e,t,n){return 0===arguments.length?o.getAll():"function"==typeof t?o.transact(e,t,n):void 0!==t?o.set(e,t,n):"string"==typeof e||"number"==typeof e?o.get(e):"function"==typeof e?o.each(e):e?o.setAll(e,t):o.clear()});o._id=e;try{var r="__store2_test";t.setItem(r,"ok"),o._area=t,t.removeItem(r)}catch(e){o._area=A.storage("fake")}return o._ns=n||"",A.areas[e]||(A.areas[e]=o._area),A.apis[o._ns+o._id]||(A.apis[o._ns+o._id]=o),o},storeAPI:{area:function(e,t){var n=this[e];return n&&n.area||(n=A.Store(e,t,this._ns),this[e]||(this[e]=n)),n},namespace:function(e,t,n){if(n=n||this._delim||A.nsdelim,!e)return this._ns?this._ns.substring(0,this._ns.length-n.length):"";var o=e,r=this[o];if(!(r&&r.namespace||((r=A.Store(this._id,this._area,this._ns+o+n))._delim=n,this[o]||(this[o]=r),t)))for(var i in A.areas)r.area(i,A.areas[i]);return r},isFake:function(e){return e?(this._real=this._area,this._area=A.storage("fake")):!1===e&&(this._area=this._real||this._area),"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(e){return this._area.has?this._area.has(this._in(e)):!!(this._in(e)in this._area)},size:function(){return this.keys().length},each:function(e,t){for(var n=0,o=A.length(this._area);n<o;n++){var r=this._out(A.key(this._area,n));if(void 0!==r&&!1===e.call(this,r,this.get(r),t))break;o>A.length(this._area)&&(o--,n--)}return t||this},keys:function(e){return this.each(function(e,t,n){n.push(e)},e||[])},get:function(e,t){var n,o=A.get(this._area,this._in(e));return"function"==typeof t&&(n=t,t=null),null!==o?A.parse(o,n):null!=t?t:o},getAll:function(e){return this.each(function(e,t,n){n[e]=t},e||{})},transact:function(e,t,n){var A=this.get(e,n),o=t(A);return this.set(e,void 0===o?A:o),this},set:function(e,t,n){var o,r=this.get(e);return null!=r&&!1===n?t:("function"==typeof n&&(o=n,n=void 0),A.set(this._area,this._in(e),A.stringify(t,o),n)||r)},setAll:function(e,t){var n,A;for(var o in e)A=e[o],this.set(o,A,t)!==A&&(n=!0);return n},add:function(e,t,n){var o=this.get(e);if(o instanceof Array)t=o.concat(t);else if(null!==o){var r=typeof o;if(r===typeof t&&"object"===r){for(var i in t)o[i]=t[i];t=o}else t=o+t}return A.set(this._area,this._in(e),A.stringify(t,n)),t},remove:function(e,t){var n=this.get(e,t);return A.remove(this._area,this._in(e)),n},clear:function(){return this._ns?this.each(function(e){A.remove(this._area,this._in(e))},1):A.clear(this._area),this},clearAll:function(){var e=this._area;for(var t in A.areas)A.areas.hasOwnProperty(t)&&(this._area=A.areas[t],this.clear());return this._area=e,this},_in:function(e){return"string"!=typeof e&&(e=A.stringify(e)),this._ns?this._ns+e:e},_out:function(e){return this._ns?e&&0===e.indexOf(this._ns)?e.substring(this._ns.length):void 0:e}},storage:function(e){return A.inherit(A.storageAPI,{items:{},name:e})},storageAPI:{length:0,has:function(e){return this.items.hasOwnProperty(e)},key:function(e){var t=0;for(var n in this.items)if(this.has(n)&&e===t++)return n},setItem:function(e,t){this.has(e)||this.length++,this.items[e]=t},removeItem:function(e){this.has(e)&&(delete this.items[e],this.length--)},getItem:function(e){return this.has(e)?this.items[e]:null},clear:function(){for(var e in this.items)this.removeItem(e)}}},o=A.Store("local",function(){try{return localStorage}catch(e){}}());o.local=o,o._=A,o.area("session",function(){try{return sessionStorage}catch(e){}}()),o.area("page",A.storage("page")),"function"==typeof n&&void 0!==n.amd?n("store2",[],function(){return o}):e.exports?e.exports=o:(t.store&&(A.conflict=t.store),t.store=o)}(a,a&&a.define)});const h=({children:n})=>{const[A,o]=t.useState((()=>{const e={board:"green",pieces:"cburnett",playSounds:!0,sounds:"robot",highlight:!0,coordinates:!0},t={board:u.local.get("chessground.board"),pieces:u.local.get("chessground.pieces"),playSounds:u.local.get("chessground.playSounds"),sounds:u.local.get("chessground.sounds"),highlight:u.local.get("chessground.highlight"),coordinates:u.local.get("chessground.coordinates")};for(const n of Object.keys(t))null!=t[n]&&(e[n]=t[n]);return e})());return e.jsx(s,{children:e.jsx(i.Provider,{value:{theme:A,setTheme:o},children:n})})};function p(){return Array.prototype.slice.call(arguments).reduce(function(e,t){return e.concat(t)},[]).filter(function(e){return"string"==typeof e}).join(" ")}function g(e,t,n,A){var o=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(o,g.prototype),o.expected=t,o.found=n,o.location=A,o.name="SyntaxError",o}function d(e,t,n){return n=n||" ",e.length>t?e:(t-=e.length,e+(n+=n.repeat(t)).slice(0,t))}function m(e,t){var n,A,o,r,i={},s=(t=void 0!==t?t:{}).grammarSource,a={pgn:ze},c=ze,l="[",u='"',h="]",p=".",d="O-O-O",m="O-O",f="0-0-0",b="0-0",y="$",I="{",k="}",w=";",C="(",v=")",S="1-0",E="0-1",x="1/2-1/2",V="*",N=/^[a-zA-Z]/,M=/^[^"]/,B=/^[0-9]/,j=/^[.]/,D=/^[a-zA-Z1-8\-=]/,T=/^[+#]/,Q=/^[!?]/,Z=/^[^}]/,P=/^[^\r\n]/,O=/^[ \t\r\n]/,U=Ge("tag pair"),q=Je("[",!1),J=Je('"',!1),K=Je("]",!1),G=Ge("tag name"),R=Ke([["a","z"],["A","Z"]],!1,!1),F=Ge("tag value"),L=Ke(['"'],!0,!1),z=Ge("move number"),W=Ke([["0","9"]],!1,!1),Y=Je(".",!1),_=Ke(["."],!1,!1),H=Ge("standard algebraic notation"),X=Je("O-O-O",!1),$=Je("O-O",!1),ee=Je("0-0-0",!1),te=Je("0-0",!1),ne=Ke([["a","z"],["A","Z"],["1","8"],"-","="],!1,!1),Ae=Ke(["+","#"],!1,!1),oe=Ge("suffix annotation"),re=Ke(["!","?"],!1,!1),ie=Ge("NAG"),se=Je("$",!1),ae=Ge("brace comment"),ce=Je("{",!1),le=Ke(["}"],!0,!1),ue=Je("}",!1),he=Ge("rest of line comment"),pe=Je(";",!1),ge=Ke(["\r","\n"],!0,!1),de=Ge("variation"),me=Je("(",!1),fe=Je(")",!1),be=Ge("game termination marker"),ye=Je("1-0",!1),Ie=Je("0-1",!1),ke=Je("1/2-1/2",!1),we=Je("*",!1),Ce=Ge("whitespace"),ve=Ke([" ","\t","\r","\n"],!1,!1),Se=function(e,t){return function(e,t){if(t.marker&&t.marker.comment){let e=t.root;for(;;){const n=e.variations[0];if(!n){e.comment=t.marker.comment;break}e=n}}return{headers:e,root:t.root,result:(t.marker&&t.marker.result)??void 0}}(e,t)},Ee=function(e){return Object.fromEntries(e)},xe=function(e,t){return[e,t]},Ve=function(e,t){return{root:e,marker:t}},Ne=function(e,t){return function(...e){const[t,...n]=e;let A=t;for(const e of n)null!==e&&(A.variations=[e,...e.variations],e.variations=[],A=e);return t}(function(e){return null!==e?{comment:e,variations:[]}:{variations:[]}}(e),...t.flat())},Me=function(e,t,n,A,o){return function(e,t,n,A,o){const r={move:e,variations:o};return t&&(r.suffix=t),n&&(r.nag=n),null!==A&&(r.comment=A),r}(e,t,n,A,o)},Be=function(e){return e},je=function(e){return e.replace(/[\r\n]+/g," ")},De=function(e){return e.trim()},Te=function(e){return e},Qe=function(e,t){return{result:e,comment:t}},Ze=0|t.peg$currPos,Pe=[{line:1,column:1}],Oe=Ze,Ue=t.peg$maxFailExpected||[],qe=0|t.peg$silentFails;if(t.startRule){if(!(t.startRule in a))throw new Error("Can't start parsing from rule \""+t.startRule+'".');c=a[t.startRule]}function Je(e,t){return{type:"literal",text:e,ignoreCase:t}}function Ke(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function Ge(e){return{type:"other",description:e}}function Re(t){var n,A=Pe[t];if(A)return A;if(t>=Pe.length)n=Pe.length-1;else for(n=t;!Pe[--n];);for(A={line:(A=Pe[n]).line,column:A.column};n<t;)10===e.charCodeAt(n)?(A.line++,A.column=1):A.column++,n++;return Pe[t]=A,A}function Fe(e,t,n){var A=Re(e),o=Re(t);return{source:s,start:{offset:e,line:A.line,column:A.column},end:{offset:t,line:o.line,column:o.column}}}function Le(e){Ze<Oe||(Ze>Oe&&(Oe=Ze,Ue=[]),Ue.push(e))}function ze(){var t,n;return t=function(){var e,t,n;e=Ze,t=[],n=We();for(;n!==i;)t.push(n),n=We();return n=et(),e=Ee(t),e}(),n=function(){var t,n,A;t=Ze,n=Ye(),et(),A=function(){var t,n,A;qe++,t=Ze,e.substr(Ze,3)===S?(n=S,Ze+=3):(n=i,0===qe&&Le(ye));n===i&&(e.substr(Ze,3)===E?(n=E,Ze+=3):(n=i,0===qe&&Le(Ie)),n===i&&(e.substr(Ze,7)===x?(n=x,Ze+=7):(n=i,0===qe&&Le(ke)),n===i&&(42===e.charCodeAt(Ze)?(n=V,Ze++):(n=i,0===qe&&Le(we)))));n!==i?(et(),(A=Xe())===i&&(A=null),t=Qe(n,A)):(Ze=t,t=i);qe--,t===i&&(n=i,0===qe&&Le(be));return t}(),A===i&&(A=null);return et(),t=Ve(n,A),t}(),Se(t,n)}function We(){var t,n,A,o,r,s,a;return qe++,t=Ze,et(),91===e.charCodeAt(Ze)?(n=l,Ze++):(n=i,0===qe&&Le(q)),n!==i?(et(),A=function(){var t,n,A;qe++,t=Ze,n=[],A=e.charAt(Ze),N.test(A)?Ze++:(A=i,0===qe&&Le(R));if(A!==i)for(;A!==i;)n.push(A),A=e.charAt(Ze),N.test(A)?Ze++:(A=i,0===qe&&Le(R));else n=i;t=n!==i?e.substring(t,Ze):n;qe--,t===i&&(n=i,0===qe&&Le(G));return t}(),A!==i?(et(),34===e.charCodeAt(Ze)?(o=u,Ze++):(o=i,0===qe&&Le(J)),o!==i?(r=function(){var t,n,A;qe++,t=Ze,n=[],A=e.charAt(Ze),M.test(A)?Ze++:(A=i,0===qe&&Le(L));for(;A!==i;)n.push(A),A=e.charAt(Ze),M.test(A)?Ze++:(A=i,0===qe&&Le(L));t=e.substring(t,Ze),qe--,n=i,0===qe&&Le(F);return t}(),34===e.charCodeAt(Ze)?(s=u,Ze++):(s=i,0===qe&&Le(J)),s!==i?(et(),93===e.charCodeAt(Ze)?(a=h,Ze++):(a=i,0===qe&&Le(K)),a!==i?t=xe(A,r):(Ze=t,t=i)):(Ze=t,t=i)):(Ze=t,t=i)):(Ze=t,t=i)):(Ze=t,t=i),qe--,t===i&&0===qe&&Le(U),t}function Ye(){var e,t,n;for((e=Xe())===i&&(e=null),t=[],n=_e();n!==i;)t.push(n),n=_e();return Ne(e,t)}function _e(){var t,n,A,o,r,s,a,c;if(t=Ze,et(),function(){var t,n,A,o,r,s;qe++,t=Ze,n=[],A=e.charAt(Ze),B.test(A)?Ze++:(A=i,0===qe&&Le(W));for(;A!==i;)n.push(A),A=e.charAt(Ze),B.test(A)?Ze++:(A=i,0===qe&&Le(W));46===e.charCodeAt(Ze)?(A=p,Ze++):(A=i,0===qe&&Le(Y));if(A!==i){for(o=et(),r=[],s=e.charAt(Ze),j.test(s)?Ze++:(s=i,0===qe&&Le(_));s!==i;)r.push(s),s=e.charAt(Ze),j.test(s)?Ze++:(s=i,0===qe&&Le(_));t=n=[n,A,o,r]}else Ze=t,t=i;qe--,t===i&&(n=i,0===qe&&Le(z))}(),et(),n=function(){var t,n,A,o,r,s;qe++,t=Ze,n=Ze,e.substr(Ze,5)===d?(A=d,Ze+=5):(A=i,0===qe&&Le(X));if(A===i&&(e.substr(Ze,3)===m?(A=m,Ze+=3):(A=i,0===qe&&Le($)),A===i&&(e.substr(Ze,5)===f?(A=f,Ze+=5):(A=i,0===qe&&Le(ee)),A===i&&(e.substr(Ze,3)===b?(A=b,Ze+=3):(A=i,0===qe&&Le(te)),A===i))))if(A=Ze,o=e.charAt(Ze),N.test(o)?Ze++:(o=i,0===qe&&Le(R)),o!==i){if(r=[],s=e.charAt(Ze),D.test(s)?Ze++:(s=i,0===qe&&Le(ne)),s!==i)for(;s!==i;)r.push(s),s=e.charAt(Ze),D.test(s)?Ze++:(s=i,0===qe&&Le(ne));else r=i;r!==i?A=o=[o,r]:(Ze=A,A=i)}else Ze=A,A=i;A!==i?(o=e.charAt(Ze),T.test(o)?Ze++:(o=i,0===qe&&Le(Ae)),o===i&&(o=null),n=A=[A,o]):(Ze=n,n=i);t=n!==i?e.substring(t,Ze):n;qe--,t===i&&(n=i,0===qe&&Le(H));return t}(),n!==i){for(A=function(){var t,n,A;qe++,t=Ze,n=[],A=e.charAt(Ze),Q.test(A)?Ze++:(A=i,0===qe&&Le(re));for(;A!==i;)n.push(A),n.length>=2?A=i:(A=e.charAt(Ze),Q.test(A)?Ze++:(A=i,0===qe&&Le(re)));n.length<1?(Ze=t,t=i):t=n;qe--,t===i&&(n=i,0===qe&&Le(oe));return t}(),A===i&&(A=null),o=[],r=He();r!==i;)o.push(r),r=He();for(r=et(),(s=Xe())===i&&(s=null),a=[],c=$e();c!==i;)a.push(c),c=$e();t=Me(n,A,o,s,a)}else Ze=t,t=i;return t}function He(){var t,n,A,o,r;if(qe++,t=Ze,et(),36===e.charCodeAt(Ze)?(n=y,Ze++):(n=i,0===qe&&Le(se)),n!==i){if(A=Ze,o=[],r=e.charAt(Ze),B.test(r)?Ze++:(r=i,0===qe&&Le(W)),r!==i)for(;r!==i;)o.push(r),r=e.charAt(Ze),B.test(r)?Ze++:(r=i,0===qe&&Le(W));else o=i;(A=o!==i?e.substring(A,Ze):o)!==i?t=Be(A):(Ze=t,t=i)}else Ze=t,t=i;return qe--,t===i&&0===qe&&Le(ie),t}function Xe(){var t;return(t=function(){var t,n,A,o,r;qe++,t=Ze,123===e.charCodeAt(Ze)?(n=I,Ze++):(n=i,0===qe&&Le(ce));if(n!==i){for(A=Ze,o=[],r=e.charAt(Ze),Z.test(r)?Ze++:(r=i,0===qe&&Le(le));r!==i;)o.push(r),r=e.charAt(Ze),Z.test(r)?Ze++:(r=i,0===qe&&Le(le));A=e.substring(A,Ze),125===e.charCodeAt(Ze)?(o=k,Ze++):(o=i,0===qe&&Le(ue)),o!==i?t=je(A):(Ze=t,t=i)}else Ze=t,t=i;qe--,t===i&&(n=i,0===qe&&Le(ae));return t}())===i&&(t=function(){var t,n,A,o,r;qe++,t=Ze,59===e.charCodeAt(Ze)?(n=w,Ze++):(n=i,0===qe&&Le(pe));if(n!==i){for(A=Ze,o=[],r=e.charAt(Ze),P.test(r)?Ze++:(r=i,0===qe&&Le(ge));r!==i;)o.push(r),r=e.charAt(Ze),P.test(r)?Ze++:(r=i,0===qe&&Le(ge));A=e.substring(A,Ze),t=De(A)}else Ze=t,t=i;qe--,t===i&&(n=i,0===qe&&Le(he));return t}()),t}function $e(){var t,n,A,o;return qe++,t=Ze,et(),40===e.charCodeAt(Ze)?(n=C,Ze++):(n=i,0===qe&&Le(me)),n!==i&&(A=Ye())!==i?(et(),41===e.charCodeAt(Ze)?(o=v,Ze++):(o=i,0===qe&&Le(fe)),o!==i?t=Te(A):(Ze=t,t=i)):(Ze=t,t=i),qe--,t===i&&0===qe&&Le(de),t}function et(){var t,n;for(qe++,t=[],n=e.charAt(Ze),O.test(n)?Ze++:(n=i,0===qe&&Le(ve));n!==i;)t.push(n),n=e.charAt(Ze),O.test(n)?Ze++:(n=i,0===qe&&Le(ve));return qe--,n=i,0===qe&&Le(Ce),t}if(n=c(),t.peg$library)return{peg$result:n,peg$currPos:Ze,peg$FAILED:i,peg$maxFailExpected:Ue,peg$maxFailPos:Oe};if(n!==i&&Ze===e.length)return n;throw n!==i&&Ze<e.length&&Le({type:"end"}),A=Ue,o=Oe<e.length?e.charAt(Oe):null,r=Oe<e.length?Fe(Oe,Oe+1):Fe(Oe,Oe),new g(g.buildMessage(A,o),A,o,r)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),n=require("react-dom");function A(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=A(t),o=A(n);const s=t.createContext({theme:{board:"green",pieces:"neo",playSounds:!0,sounds:"robot",highlight:!0,coordinates:!0,showLegalMoves:!0},setTheme:()=>{}}),i=({children:t})=>e.jsx(r.default.Fragment,{children:"undefined"==typeof window?null:t});var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function l(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}var u=l(function(e){!function(t,n){var A={version:"2.14.4",areas:{},apis:{},nsdelim:".",inherit:function(e,t){for(var n in e)t.hasOwnProperty(n)||Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t},stringify:function(e,t){return void 0===e||"function"==typeof e?e+"":JSON.stringify(e,t||A.replace)},parse:function(e,t){try{return JSON.parse(e,t||A.revive)}catch(t){return e}},fn:function(e,t){for(var n in A.storeAPI[e]=t,A.apis)A.apis[n][e]=t},get:function(e,t){return e.getItem(t)},set:function(e,t,n){e.setItem(t,n)},remove:function(e,t){e.removeItem(t)},key:function(e,t){return e.key(t)},length:function(e){return e.length},clear:function(e){e.clear()},Store:function(e,t,n){var r=A.inherit(A.storeAPI,function(e,t,n){return 0===arguments.length?r.getAll():"function"==typeof t?r.transact(e,t,n):void 0!==t?r.set(e,t,n):"string"==typeof e||"number"==typeof e?r.get(e):"function"==typeof e?r.each(e):e?r.setAll(e,t):r.clear()});r._id=e;try{var o="__store2_test";t.setItem(o,"ok"),r._area=t,t.removeItem(o)}catch(e){r._area=A.storage("fake")}return r._ns=n||"",A.areas[e]||(A.areas[e]=r._area),A.apis[r._ns+r._id]||(A.apis[r._ns+r._id]=r),r},storeAPI:{area:function(e,t){var n=this[e];return n&&n.area||(n=A.Store(e,t,this._ns),this[e]||(this[e]=n)),n},namespace:function(e,t,n){if(n=n||this._delim||A.nsdelim,!e)return this._ns?this._ns.substring(0,this._ns.length-n.length):"";var r=e,o=this[r];if(!(o&&o.namespace||((o=A.Store(this._id,this._area,this._ns+r+n))._delim=n,this[r]||(this[r]=o),t)))for(var s in A.areas)o.area(s,A.areas[s]);return o},isFake:function(e){return e?(this._real=this._area,this._area=A.storage("fake")):!1===e&&(this._area=this._real||this._area),"fake"===this._area.name},toString:function(){return"store"+(this._ns?"."+this.namespace():"")+"["+this._id+"]"},has:function(e){return this._area.has?this._area.has(this._in(e)):!!(this._in(e)in this._area)},size:function(){return this.keys().length},each:function(e,t){for(var n=0,r=A.length(this._area);n<r;n++){var o=this._out(A.key(this._area,n));if(void 0!==o&&!1===e.call(this,o,this.get(o),t))break;r>A.length(this._area)&&(r--,n--)}return t||this},keys:function(e){return this.each(function(e,t,n){n.push(e)},e||[])},get:function(e,t){var n,r=A.get(this._area,this._in(e));return"function"==typeof t&&(n=t,t=null),null!==r?A.parse(r,n):null!=t?t:r},getAll:function(e){return this.each(function(e,t,n){n[e]=t},e||{})},transact:function(e,t,n){var A=this.get(e,n),r=t(A);return this.set(e,void 0===r?A:r),this},set:function(e,t,n){var r,o=this.get(e);return null!=o&&!1===n?t:("function"==typeof n&&(r=n,n=void 0),A.set(this._area,this._in(e),A.stringify(t,r),n)||o)},setAll:function(e,t){var n,A;for(var r in e)A=e[r],this.set(r,A,t)!==A&&(n=!0);return n},add:function(e,t,n){var r=this.get(e);if(r instanceof Array)t=r.concat(t);else if(null!==r){var o=typeof r;if(o===typeof t&&"object"===o){for(var s in t)r[s]=t[s];t=r}else t=r+t}return A.set(this._area,this._in(e),A.stringify(t,n)),t},remove:function(e,t){var n=this.get(e,t);return A.remove(this._area,this._in(e)),n},clear:function(){return this._ns?this.each(function(e){A.remove(this._area,this._in(e))},1):A.clear(this._area),this},clearAll:function(){var e=this._area;for(var t in A.areas)A.areas.hasOwnProperty(t)&&(this._area=A.areas[t],this.clear());return this._area=e,this},_in:function(e){return"string"!=typeof e&&(e=A.stringify(e)),this._ns?this._ns+e:e},_out:function(e){return this._ns?e&&0===e.indexOf(this._ns)?e.substring(this._ns.length):void 0:e}},storage:function(e){return A.inherit(A.storageAPI,{items:{},name:e})},storageAPI:{length:0,has:function(e){return this.items.hasOwnProperty(e)},key:function(e){var t=0;for(var n in this.items)if(this.has(n)&&e===t++)return n},setItem:function(e,t){this.has(e)||this.length++,this.items[e]=t},removeItem:function(e){this.has(e)&&(delete this.items[e],this.length--)},getItem:function(e){return this.has(e)?this.items[e]:null},clear:function(){for(var e in this.items)this.removeItem(e)}}},r=A.Store("local",function(){try{return localStorage}catch(e){}}());r.local=r,r._=A,r.area("session",function(){try{return sessionStorage}catch(e){}}()),r.area("page",A.storage("page")),"function"==typeof n&&void 0!==n.amd?n("store2",[],function(){return r}):e.exports?e.exports=r:(t.store&&(A.conflict=t.store),t.store=r)}(a,a&&a.define)});const h=({children:n})=>{const[A,r]=t.useState((()=>{const e={board:"green",pieces:"cburnett",playSounds:!0,sounds:"robot",highlight:!0,coordinates:!0,showLegalMoves:!0},t={board:u.local.get("chessground.board"),pieces:u.local.get("chessground.pieces"),playSounds:u.local.get("chessground.playSounds"),sounds:u.local.get("chessground.sounds"),highlight:u.local.get("chessground.highlight"),coordinates:u.local.get("chessground.coordinates"),showLegalMoves:u.local.get("chessground.showLegalMoves")};for(const n of Object.keys(t))null!=t[n]&&(e[n]=t[n]);return e})());return e.jsx(i,{children:e.jsx(s.Provider,{value:{theme:A,setTheme:r},children:n})})};function g(){return Array.prototype.slice.call(arguments).reduce(function(e,t){return e.concat(t)},[]).filter(function(e){return"string"==typeof e}).join(" ")}function p(e,t,n,A){var r=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(r,p.prototype),r.expected=t,r.found=n,r.location=A,r.name="SyntaxError",r}function d(e,t,n){return n=n||" ",e.length>t?e:(t-=e.length,e+(n+=n.repeat(t)).slice(0,t))}function m(e,t){var n,A,r,o,s={},i=(t=void 0!==t?t:{}).grammarSource,a={pgn:ze},c=ze,l="[",u='"',h="]",g=".",d="O-O-O",m="O-O",f="0-0-0",b="0-0",y="$",I="{",k="}",w=";",v="(",C=")",S="1-0",E="0-1",x="1/2-1/2",V="*",N=/^[a-zA-Z]/,M=/^[^"]/,j=/^[0-9]/,B=/^[.]/,D=/^[a-zA-Z1-8\-=]/,T=/^[+#]/,Q=/^[!?]/,Z=/^[^}]/,P=/^[^\r\n]/,O=/^[ \t\r\n]/,U=Ge("tag pair"),q=Je("[",!1),J=Je('"',!1),K=Je("]",!1),G=Ge("tag name"),R=Ke([["a","z"],["A","Z"]],!1,!1),F=Ge("tag value"),L=Ke(['"'],!0,!1),z=Ge("move number"),W=Ke([["0","9"]],!1,!1),Y=Je(".",!1),_=Ke(["."],!1,!1),H=Ge("standard algebraic notation"),X=Je("O-O-O",!1),$=Je("O-O",!1),ee=Je("0-0-0",!1),te=Je("0-0",!1),ne=Ke([["a","z"],["A","Z"],["1","8"],"-","="],!1,!1),Ae=Ke(["+","#"],!1,!1),re=Ge("suffix annotation"),oe=Ke(["!","?"],!1,!1),se=Ge("NAG"),ie=Je("$",!1),ae=Ge("brace comment"),ce=Je("{",!1),le=Ke(["}"],!0,!1),ue=Je("}",!1),he=Ge("rest of line comment"),ge=Je(";",!1),pe=Ke(["\r","\n"],!0,!1),de=Ge("variation"),me=Je("(",!1),fe=Je(")",!1),be=Ge("game termination marker"),ye=Je("1-0",!1),Ie=Je("0-1",!1),ke=Je("1/2-1/2",!1),we=Je("*",!1),ve=Ge("whitespace"),Ce=Ke([" ","\t","\r","\n"],!1,!1),Se=function(e,t){return function(e,t){if(t.marker&&t.marker.comment){let e=t.root;for(;;){const n=e.variations[0];if(!n){e.comment=t.marker.comment;break}e=n}}return{headers:e,root:t.root,result:(t.marker&&t.marker.result)??void 0}}(e,t)},Ee=function(e){return Object.fromEntries(e)},xe=function(e,t){return[e,t]},Ve=function(e,t){return{root:e,marker:t}},Ne=function(e,t){return function(...e){const[t,...n]=e;let A=t;for(const e of n)null!==e&&(A.variations=[e,...e.variations],e.variations=[],A=e);return t}(function(e){return null!==e?{comment:e,variations:[]}:{variations:[]}}(e),...t.flat())},Me=function(e,t,n,A,r){return function(e,t,n,A,r){const o={move:e,variations:r};return t&&(o.suffix=t),n&&(o.nag=n),null!==A&&(o.comment=A),o}(e,t,n,A,r)},je=function(e){return e},Be=function(e){return e.replace(/[\r\n]+/g," ")},De=function(e){return e.trim()},Te=function(e){return e},Qe=function(e,t){return{result:e,comment:t}},Ze=0|t.peg$currPos,Pe=[{line:1,column:1}],Oe=Ze,Ue=t.peg$maxFailExpected||[],qe=0|t.peg$silentFails;if(t.startRule){if(!(t.startRule in a))throw new Error("Can't start parsing from rule \""+t.startRule+'".');c=a[t.startRule]}function Je(e,t){return{type:"literal",text:e,ignoreCase:t}}function Ke(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function Ge(e){return{type:"other",description:e}}function Re(t){var n,A=Pe[t];if(A)return A;if(t>=Pe.length)n=Pe.length-1;else for(n=t;!Pe[--n];);for(A={line:(A=Pe[n]).line,column:A.column};n<t;)10===e.charCodeAt(n)?(A.line++,A.column=1):A.column++,n++;return Pe[t]=A,A}function Fe(e,t,n){var A=Re(e),r=Re(t);return{source:i,start:{offset:e,line:A.line,column:A.column},end:{offset:t,line:r.line,column:r.column}}}function Le(e){Ze<Oe||(Ze>Oe&&(Oe=Ze,Ue=[]),Ue.push(e))}function ze(){var t,n;return t=function(){var e,t,n;e=Ze,t=[],n=We();for(;n!==s;)t.push(n),n=We();return n=et(),e=Ee(t),e}(),n=function(){var t,n,A;t=Ze,n=Ye(),et(),A=function(){var t,n,A;qe++,t=Ze,e.substr(Ze,3)===S?(n=S,Ze+=3):(n=s,0===qe&&Le(ye));n===s&&(e.substr(Ze,3)===E?(n=E,Ze+=3):(n=s,0===qe&&Le(Ie)),n===s&&(e.substr(Ze,7)===x?(n=x,Ze+=7):(n=s,0===qe&&Le(ke)),n===s&&(42===e.charCodeAt(Ze)?(n=V,Ze++):(n=s,0===qe&&Le(we)))));n!==s?(et(),(A=Xe())===s&&(A=null),t=Qe(n,A)):(Ze=t,t=s);qe--,t===s&&(n=s,0===qe&&Le(be));return t}(),A===s&&(A=null);return et(),t=Ve(n,A),t}(),Se(t,n)}function We(){var t,n,A,r,o,i,a;return qe++,t=Ze,et(),91===e.charCodeAt(Ze)?(n=l,Ze++):(n=s,0===qe&&Le(q)),n!==s?(et(),A=function(){var t,n,A;qe++,t=Ze,n=[],A=e.charAt(Ze),N.test(A)?Ze++:(A=s,0===qe&&Le(R));if(A!==s)for(;A!==s;)n.push(A),A=e.charAt(Ze),N.test(A)?Ze++:(A=s,0===qe&&Le(R));else n=s;t=n!==s?e.substring(t,Ze):n;qe--,t===s&&(n=s,0===qe&&Le(G));return t}(),A!==s?(et(),34===e.charCodeAt(Ze)?(r=u,Ze++):(r=s,0===qe&&Le(J)),r!==s?(o=function(){var t,n,A;qe++,t=Ze,n=[],A=e.charAt(Ze),M.test(A)?Ze++:(A=s,0===qe&&Le(L));for(;A!==s;)n.push(A),A=e.charAt(Ze),M.test(A)?Ze++:(A=s,0===qe&&Le(L));t=e.substring(t,Ze),qe--,n=s,0===qe&&Le(F);return t}(),34===e.charCodeAt(Ze)?(i=u,Ze++):(i=s,0===qe&&Le(J)),i!==s?(et(),93===e.charCodeAt(Ze)?(a=h,Ze++):(a=s,0===qe&&Le(K)),a!==s?t=xe(A,o):(Ze=t,t=s)):(Ze=t,t=s)):(Ze=t,t=s)):(Ze=t,t=s)):(Ze=t,t=s),qe--,t===s&&0===qe&&Le(U),t}function Ye(){var e,t,n;for((e=Xe())===s&&(e=null),t=[],n=_e();n!==s;)t.push(n),n=_e();return Ne(e,t)}function _e(){var t,n,A,r,o,i,a,c;if(t=Ze,et(),function(){var t,n,A,r,o,i;qe++,t=Ze,n=[],A=e.charAt(Ze),j.test(A)?Ze++:(A=s,0===qe&&Le(W));for(;A!==s;)n.push(A),A=e.charAt(Ze),j.test(A)?Ze++:(A=s,0===qe&&Le(W));46===e.charCodeAt(Ze)?(A=g,Ze++):(A=s,0===qe&&Le(Y));if(A!==s){for(r=et(),o=[],i=e.charAt(Ze),B.test(i)?Ze++:(i=s,0===qe&&Le(_));i!==s;)o.push(i),i=e.charAt(Ze),B.test(i)?Ze++:(i=s,0===qe&&Le(_));t=n=[n,A,r,o]}else Ze=t,t=s;qe--,t===s&&(n=s,0===qe&&Le(z))}(),et(),n=function(){var t,n,A,r,o,i;qe++,t=Ze,n=Ze,e.substr(Ze,5)===d?(A=d,Ze+=5):(A=s,0===qe&&Le(X));if(A===s&&(e.substr(Ze,3)===m?(A=m,Ze+=3):(A=s,0===qe&&Le($)),A===s&&(e.substr(Ze,5)===f?(A=f,Ze+=5):(A=s,0===qe&&Le(ee)),A===s&&(e.substr(Ze,3)===b?(A=b,Ze+=3):(A=s,0===qe&&Le(te)),A===s))))if(A=Ze,r=e.charAt(Ze),N.test(r)?Ze++:(r=s,0===qe&&Le(R)),r!==s){if(o=[],i=e.charAt(Ze),D.test(i)?Ze++:(i=s,0===qe&&Le(ne)),i!==s)for(;i!==s;)o.push(i),i=e.charAt(Ze),D.test(i)?Ze++:(i=s,0===qe&&Le(ne));else o=s;o!==s?A=r=[r,o]:(Ze=A,A=s)}else Ze=A,A=s;A!==s?(r=e.charAt(Ze),T.test(r)?Ze++:(r=s,0===qe&&Le(Ae)),r===s&&(r=null),n=A=[A,r]):(Ze=n,n=s);t=n!==s?e.substring(t,Ze):n;qe--,t===s&&(n=s,0===qe&&Le(H));return t}(),n!==s){for(A=function(){var t,n,A;qe++,t=Ze,n=[],A=e.charAt(Ze),Q.test(A)?Ze++:(A=s,0===qe&&Le(oe));for(;A!==s;)n.push(A),n.length>=2?A=s:(A=e.charAt(Ze),Q.test(A)?Ze++:(A=s,0===qe&&Le(oe)));n.length<1?(Ze=t,t=s):t=n;qe--,t===s&&(n=s,0===qe&&Le(re));return t}(),A===s&&(A=null),r=[],o=He();o!==s;)r.push(o),o=He();for(o=et(),(i=Xe())===s&&(i=null),a=[],c=$e();c!==s;)a.push(c),c=$e();t=Me(n,A,r,i,a)}else Ze=t,t=s;return t}function He(){var t,n,A,r,o;if(qe++,t=Ze,et(),36===e.charCodeAt(Ze)?(n=y,Ze++):(n=s,0===qe&&Le(ie)),n!==s){if(A=Ze,r=[],o=e.charAt(Ze),j.test(o)?Ze++:(o=s,0===qe&&Le(W)),o!==s)for(;o!==s;)r.push(o),o=e.charAt(Ze),j.test(o)?Ze++:(o=s,0===qe&&Le(W));else r=s;(A=r!==s?e.substring(A,Ze):r)!==s?t=je(A):(Ze=t,t=s)}else Ze=t,t=s;return qe--,t===s&&0===qe&&Le(se),t}function Xe(){var t;return(t=function(){var t,n,A,r,o;qe++,t=Ze,123===e.charCodeAt(Ze)?(n=I,Ze++):(n=s,0===qe&&Le(ce));if(n!==s){for(A=Ze,r=[],o=e.charAt(Ze),Z.test(o)?Ze++:(o=s,0===qe&&Le(le));o!==s;)r.push(o),o=e.charAt(Ze),Z.test(o)?Ze++:(o=s,0===qe&&Le(le));A=e.substring(A,Ze),125===e.charCodeAt(Ze)?(r=k,Ze++):(r=s,0===qe&&Le(ue)),r!==s?t=Be(A):(Ze=t,t=s)}else Ze=t,t=s;qe--,t===s&&(n=s,0===qe&&Le(ae));return t}())===s&&(t=function(){var t,n,A,r,o;qe++,t=Ze,59===e.charCodeAt(Ze)?(n=w,Ze++):(n=s,0===qe&&Le(ge));if(n!==s){for(A=Ze,r=[],o=e.charAt(Ze),P.test(o)?Ze++:(o=s,0===qe&&Le(pe));o!==s;)r.push(o),o=e.charAt(Ze),P.test(o)?Ze++:(o=s,0===qe&&Le(pe));A=e.substring(A,Ze),t=De(A)}else Ze=t,t=s;qe--,t===s&&(n=s,0===qe&&Le(he));return t}()),t}function $e(){var t,n,A,r;return qe++,t=Ze,et(),40===e.charCodeAt(Ze)?(n=v,Ze++):(n=s,0===qe&&Le(me)),n!==s&&(A=Ye())!==s?(et(),41===e.charCodeAt(Ze)?(r=C,Ze++):(r=s,0===qe&&Le(fe)),r!==s?t=Te(A):(Ze=t,t=s)):(Ze=t,t=s),qe--,t===s&&0===qe&&Le(de),t}function et(){var t,n;for(qe++,t=[],n=e.charAt(Ze),O.test(n)?Ze++:(n=s,0===qe&&Le(Ce));n!==s;)t.push(n),n=e.charAt(Ze),O.test(n)?Ze++:(n=s,0===qe&&Le(Ce));return qe--,n=s,0===qe&&Le(ve),t}if(n=c(),t.peg$library)return{peg$result:n,peg$currPos:Ze,peg$FAILED:s,peg$maxFailExpected:Ue,peg$maxFailPos:Oe};if(n!==s&&Ze===e.length)return n;throw n!==s&&Ze<e.length&&Le({type:"end"}),A=Ue,r=Oe<e.length?e.charAt(Oe):null,o=Oe<e.length?Fe(Oe,Oe+1):Fe(Oe,Oe),new p(p.buildMessage(A,r),A,r,o)}
2
2
  /**
3
3
  * @license
4
4
  * Copyright (c) 2025, Jeff Hlywa (jhlywa@gmail.com)
@@ -24,7 +24,7 @@
24
24
  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25
25
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26
26
  * POSSIBILITY OF SUCH DAMAGE.
27
- */!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(g,Error),g.prototype.format=function(e){var t="Error: "+this.message;if(this.location){var n,A=null;for(n=0;n<e.length;n++)if(e[n].source===this.location.source){A=e[n].text.split(/\r\n|\n|\r/g);break}var o=this.location.start,r=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(o):o,i=this.location.source+":"+r.line+":"+r.column;if(A){var s=this.location.end,a=d("",r.line.toString().length," "),c=A[o.line-1],l=(o.line===s.line?s.column:c.length+1)-o.column||1;t+="\n --\x3e "+i+"\n"+a+" |\n"+r.line+" | "+c+"\n"+a+" | "+d("",o.column-1," ")+d("",l,"^")}else t+="\n at "+i}return t},g.buildMessage=function(e,t){var n={literal:function(e){return'"'+o(e.text)+'"'},class:function(e){var t=e.parts.map(function(e){return Array.isArray(e)?r(e[0])+"-"+r(e[1]):r(e)});return"["+(e.inverted?"^":"")+t.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(e){return e.description}};function A(e){return e.charCodeAt(0).toString(16).toUpperCase()}function o(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+A(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+A(e)})}function r(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+A(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+A(e)})}function i(e){return n[e.type](e)}return"Expected "+function(e){var t,n,A=e.map(i);if(A.sort(),A.length>0){for(t=1,n=1;t<A.length;t++)A[t-1]!==A[t]&&(A[n]=A[t],n++);A.length=n}switch(A.length){case 1:return A[0];case 2:return A[0]+" or "+A[1];default:return A.slice(0,-1).join(", ")+", or "+A[A.length-1]}}(e)+" but "+function(e){return e?'"'+o(e)+'"':"end of input"}(t)+" found."};const f=0xffffffffffffffffn;function b(e,t){return 0xffffffffffffffffn&(e<<t|e>>64n-t)}function y(e,t){return e*t&f}const I=(k=0xa187eb39cdcaed8f31c4b365b102e01en,function(){let e=BigInt(k&f),t=BigInt(k>>64n&f);const n=y(b(y(e,5n),7n),9n);return t^=e,e=(b(e,24n)^t^t<<16n)&f,t=b(t,37n),k=t<<64n|e,n});var k;const w=Array.from({length:2},()=>Array.from({length:6},()=>Array.from({length:128},()=>I()))),C=Array.from({length:8},()=>I()),v=Array.from({length:16},()=>I()),S=I(),E="w",x="b",V="p",N="b",M="r",B="q",j="k",D="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";class T{color;from;to;piece;captured;promotion;flags;san;lan;before;after;constructor(e,t){const{color:n,piece:A,from:o,to:r,flags:i,captured:s,promotion:a}=t,c=te(o),l=te(r);this.color=n,this.piece=A,this.from=c,this.to=l,this.san=e._moveToSan(t,e._moves({legal:!0})),this.lan=c+l,this.before=e.fen(),e._makeMove(t),this.after=e.fen(),e._undoMove(),this.flags="";for(const e in O)O[e]&i&&(this.flags+=Z[e]);s&&(this.captured=s),a&&(this.promotion=a,this.lan+=a)}isCapture(){return this.flags.indexOf(Z.CAPTURE)>-1}isPromotion(){return this.flags.indexOf(Z.PROMOTION)>-1}isEnPassant(){return this.flags.indexOf(Z.EP_CAPTURE)>-1}isKingsideCastle(){return this.flags.indexOf(Z.KSIDE_CASTLE)>-1}isQueensideCastle(){return this.flags.indexOf(Z.QSIDE_CASTLE)>-1}isBigPawn(){return this.flags.indexOf(Z.BIG_PAWN)>-1}}const Q=-1,Z={NORMAL:"n",CAPTURE:"c",BIG_PAWN:"b",EP_CAPTURE:"e",PROMOTION:"p",KSIDE_CASTLE:"k",QSIDE_CASTLE:"q",NULL_MOVE:"-"},P=["a8","b8","c8","d8","e8","f8","g8","h8","a7","b7","c7","d7","e7","f7","g7","h7","a6","b6","c6","d6","e6","f6","g6","h6","a5","b5","c5","d5","e5","f5","g5","h5","a4","b4","c4","d4","e4","f4","g4","h4","a3","b3","c3","d3","e3","f3","g3","h3","a2","b2","c2","d2","e2","f2","g2","h2","a1","b1","c1","d1","e1","f1","g1","h1"],O={NORMAL:1,CAPTURE:2,BIG_PAWN:4,EP_CAPTURE:8,PROMOTION:16,KSIDE_CASTLE:32,QSIDE_CASTLE:64,NULL_MOVE:128},U={Event:"?",Site:"?",Date:"????.??.??",Round:"?",White:"?",Black:"?",Result:"*"},q={...U,WhiteTitle:null,BlackTitle:null,WhiteElo:null,BlackElo:null,WhiteUSCF:null,BlackUSCF:null,WhiteNA:null,BlackNA:null,WhiteType:null,BlackType:null,EventDate:null,EventSponsor:null,Section:null,Stage:null,Board:null,Opening:null,Variation:null,SubVariation:null,ECO:null,NIC:null,Time:null,UTCTime:null,UTCDate:null,TimeControl:null,SetUp:null,FEN:null,Termination:null,Annotator:null,Mode:null,PlyCount:null},J={a8:0,b8:1,c8:2,d8:3,e8:4,f8:5,g8:6,h8:7,a7:16,b7:17,c7:18,d7:19,e7:20,f7:21,g7:22,h7:23,a6:32,b6:33,c6:34,d6:35,e6:36,f6:37,g6:38,h6:39,a5:48,b5:49,c5:50,d5:51,e5:52,f5:53,g5:54,h5:55,a4:64,b4:65,c4:66,d4:67,e4:68,f4:69,g4:70,h4:71,a3:80,b3:81,c3:82,d3:83,e3:84,f3:85,g3:86,h3:87,a2:96,b2:97,c2:98,d2:99,e2:100,f2:101,g2:102,h2:103,a1:112,b1:113,c1:114,d1:115,e1:116,f1:117,g1:118,h1:119},K={b:[16,32,17,15],w:[-16,-32,-17,-15]},G={n:[-18,-33,-31,-14,18,33,31,14],b:[-17,-15,17,15],r:[-16,1,16,-1],q:[-17,-16,-15,1,17,16,15,-1],k:[-17,-16,-15,1,17,16,15,-1]},R=[20,0,0,0,0,0,0,24,0,0,0,0,0,0,20,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,24,24,24,24,24,24,56,0,56,24,24,24,24,24,24,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,20,0,0,0,0,0,0,24,0,0,0,0,0,0,20],F=[17,0,0,0,0,0,0,16,0,0,0,0,0,0,15,0,0,17,0,0,0,0,0,16,0,0,0,0,0,15,0,0,0,0,17,0,0,0,0,16,0,0,0,0,15,0,0,0,0,0,0,17,0,0,0,16,0,0,0,15,0,0,0,0,0,0,0,0,17,0,0,16,0,0,15,0,0,0,0,0,0,0,0,0,0,17,0,16,0,15,0,0,0,0,0,0,0,0,0,0,0,0,17,16,15,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-15,-16,-17,0,0,0,0,0,0,0,0,0,0,0,0,-15,0,-16,0,-17,0,0,0,0,0,0,0,0,0,0,-15,0,0,-16,0,0,-17,0,0,0,0,0,0,0,0,-15,0,0,0,-16,0,0,0,-17,0,0,0,0,0,0,-15,0,0,0,0,-16,0,0,0,0,-17,0,0,0,0,-15,0,0,0,0,0,-16,0,0,0,0,0,-17,0,0,-15,0,0,0,0,0,0,-16,0,0,0,0,0,0,-17],L={p:1,n:2,b:4,r:8,q:16,k:32},z=["n",N,M,B],W={[j]:O.KSIDE_CASTLE,[B]:O.QSIDE_CASTLE},Y={w:[{square:J.a1,flag:O.QSIDE_CASTLE},{square:J.h1,flag:O.KSIDE_CASTLE}],b:[{square:J.a8,flag:O.QSIDE_CASTLE},{square:J.h8,flag:O.KSIDE_CASTLE}]},_={b:1,w:6},H="--";function X(e){return e>>4}function $(e){return 15&e}function ee(e){return-1!=="0123456789".indexOf(e)}function te(e){const t=$(e),n=X(e);return"abcdefgh".substring(t,t+1)+"87654321".substring(n,n+1)}function ne(e){return e===E?x:E}function Ae(e){const t=e.split(/\s+/);if(6!==t.length)return{ok:!1,error:"Invalid FEN: must contain six space-delimited fields"};const n=parseInt(t[5],10);if(isNaN(n)||n<=0)return{ok:!1,error:"Invalid FEN: move number must be a positive integer"};const A=parseInt(t[4],10);if(isNaN(A)||A<0)return{ok:!1,error:"Invalid FEN: half move counter number must be a non-negative integer"};if(!/^(-|[abcdefgh][36])$/.test(t[3]))return{ok:!1,error:"Invalid FEN: en-passant square is invalid"};if(/[^kKqQ-]/.test(t[2]))return{ok:!1,error:"Invalid FEN: castling availability is invalid"};if(!/^(w|b)$/.test(t[1]))return{ok:!1,error:"Invalid FEN: side-to-move is invalid"};const o=t[0].split("/");if(8!==o.length)return{ok:!1,error:"Invalid FEN: piece data does not contain 8 '/'-delimited rows"};for(let e=0;e<o.length;e++){let t=0,n=!1;for(let A=0;A<o[e].length;A++)if(ee(o[e][A])){if(n)return{ok:!1,error:"Invalid FEN: piece data is invalid (consecutive number)"};t+=parseInt(o[e][A],10),n=!0}else{if(!/^[prnbqkPRNBQK]$/.test(o[e][A]))return{ok:!1,error:"Invalid FEN: piece data is invalid (invalid piece)"};t+=1,n=!1}if(8!==t)return{ok:!1,error:"Invalid FEN: piece data is invalid (too many squares in rank)"}}if("3"==t[3][1]&&"w"==t[1]||"6"==t[3][1]&&"b"==t[1])return{ok:!1,error:"Invalid FEN: illegal en-passant square"};const r=[{color:"white",regex:/K/g},{color:"black",regex:/k/g}];for(const{color:e,regex:n}of r){if(!n.test(t[0]))return{ok:!1,error:`Invalid FEN: missing ${e} king`};if((t[0].match(n)||[]).length>1)return{ok:!1,error:`Invalid FEN: too many ${e} kings`}}return Array.from(o[0]+o[7]).some(e=>"P"===e.toUpperCase())?{ok:!1,error:"Invalid FEN: some pawns are on the edge rows"}:{ok:!0}}function oe(e,t,n,A,o,r=void 0,i=O.NORMAL){const s=X(A);if(o!==V||7!==s&&0!==s)e.push({color:t,from:n,to:A,piece:o,captured:r,flags:i});else for(let s=0;s<z.length;s++){const a=z[s];e.push({color:t,from:n,to:A,piece:o,captured:r,promotion:a,flags:i|O.PROMOTION})}}function re(e){let t=e.charAt(0);if(t>="a"&&t<="h"){if(e.match(/[a-h]\d.*[a-h]\d/))return;return V}return t=t.toLowerCase(),"o"===t?j:t}function ie(e){return e.replace(/=/,"").replace(/[+#]?[?!]*$/,"")}class se{_board=new Array(128);_turn=E;_header={};_kings={w:Q,b:Q};_epSquare=-1;_halfMoves=0;_moveNumber=0;_history=[];_comments={};_castling={w:0,b:0};_hash=0n;_positionCount=new Map;constructor(e=D,{skipValidation:t=!1}={}){this.load(e,{skipValidation:t})}clear({preserveHeaders:e=!1}={}){this._board=new Array(128),this._kings={w:Q,b:Q},this._turn=E,this._castling={w:0,b:0},this._epSquare=Q,this._halfMoves=0,this._moveNumber=1,this._history=[],this._comments={},this._header=e?this._header:{...q},this._hash=this._computeHash(),this._positionCount=new Map,this._header.SetUp=null,this._header.FEN=null}load(e,{skipValidation:t=!1,preserveHeaders:n=!1}={}){let A=e.split(/\s+/);if(A.length>=2&&A.length<6){const t=["-","-","0","1"];e=A.concat(t.slice(-(6-A.length))).join(" ")}if(A=e.split(/\s+/),!t){const{ok:t,error:n}=Ae(e);if(!t)throw new Error(n)}const o=A[0];let r=0;this.clear({preserveHeaders:n});for(let e=0;e<o.length;e++){const t=o.charAt(e);if("/"===t)r+=8;else if(ee(t))r+=parseInt(t,10);else{const e=t<"a"?E:x;this._put({type:t.toLowerCase(),color:e},te(r)),r++}}this._turn=A[1],A[2].indexOf("K")>-1&&(this._castling.w|=O.KSIDE_CASTLE),A[2].indexOf("Q")>-1&&(this._castling.w|=O.QSIDE_CASTLE),A[2].indexOf("k")>-1&&(this._castling.b|=O.KSIDE_CASTLE),A[2].indexOf("q")>-1&&(this._castling.b|=O.QSIDE_CASTLE),this._epSquare="-"===A[3]?Q:J[A[3]],this._halfMoves=parseInt(A[4],10),this._moveNumber=parseInt(A[5],10),this._hash=this._computeHash(),this._updateSetup(e),this._incPositionCount()}fen({forceEnpassantSquare:e=!1}={}){let t=0,n="";for(let e=J.a8;e<=J.h1;e++){if(this._board[e]){t>0&&(n+=t,t=0);const{color:A,type:o}=this._board[e];n+=A===E?o.toUpperCase():o.toLowerCase()}else t++;e+1&136&&(t>0&&(n+=t),e!==J.h1&&(n+="/"),t=0,e+=8)}let A="";this._castling[E]&O.KSIDE_CASTLE&&(A+="K"),this._castling[E]&O.QSIDE_CASTLE&&(A+="Q"),this._castling[x]&O.KSIDE_CASTLE&&(A+="k"),this._castling[x]&O.QSIDE_CASTLE&&(A+="q"),A=A||"-";let o="-";if(this._epSquare!==Q)if(e)o=te(this._epSquare);else{const e=this._epSquare+(this._turn===E?16:-16),t=[e+1,e-1];for(const e of t){if(136&e)continue;const t=this._turn;if(this._board[e]?.color===t&&this._board[e]?.type===V){this._makeMove({color:t,from:e,to:this._epSquare,piece:V,captured:V,flags:O.EP_CAPTURE});const n=!this._isKingAttacked(t);if(this._undoMove(),n){o=te(this._epSquare);break}}}}return[n,this._turn,A,o,this._halfMoves,this._moveNumber].join(" ")}_pieceKey(e){if(!this._board[e])return 0n;const{color:t,type:n}=this._board[e],A={p:0,n:1,b:2,r:3,q:4,k:5}[n];return w[{w:0,b:1}[t]][A][e]}_epKey(){return this._epSquare===Q?0n:C[7&this._epSquare]}_castlingKey(){const e=this._castling.w>>5|this._castling.b>>3;return v[e]}_computeHash(){let e=0n;for(let t=J.a8;t<=J.h1;t++)136&t?t+=7:this._board[t]&&(e^=this._pieceKey(t));return e^=this._epKey(),e^=this._castlingKey(),"b"===this._turn&&(e^=S),e}_updateSetup(e){this._history.length>0||(e!==D?(this._header.SetUp="1",this._header.FEN=e):(this._header.SetUp=null,this._header.FEN=null))}reset(){this.load(D)}get(e){return this._board[J[e]]}findPiece(e){const t=[];for(let n=J.a8;n<=J.h1;n++)136&n?n+=7:this._board[n]&&this._board[n]?.color===e.color&&this._board[n].color===e.color&&this._board[n].type===e.type&&t.push(te(n));return t}put({type:e,color:t},n){return!!this._put({type:e,color:t},n)&&(this._updateCastlingRights(),this._updateEnPassantSquare(),this._updateSetup(this.fen()),!0)}_set(e,t){this._hash^=this._pieceKey(e),this._board[e]=t,this._hash^=this._pieceKey(e)}_put({type:e,color:t},n){if(-1==="pnbrqkPNBRQK".indexOf(e.toLowerCase()))return!1;if(!(n in J))return!1;const A=J[n];if(e==j&&this._kings[t]!=Q&&this._kings[t]!=A)return!1;const o=this._board[A];return o&&o.type===j&&(this._kings[o.color]=Q),this._set(A,{type:e,color:t}),e===j&&(this._kings[t]=A),!0}_clear(e){this._hash^=this._pieceKey(e),delete this._board[e]}remove(e){const t=this.get(e);return this._clear(J[e]),t&&t.type===j&&(this._kings[t.color]=Q),this._updateCastlingRights(),this._updateEnPassantSquare(),this._updateSetup(this.fen()),t}_updateCastlingRights(){this._hash^=this._castlingKey();const e=this._board[J.e1]?.type===j&&this._board[J.e1]?.color===E,t=this._board[J.e8]?.type===j&&this._board[J.e8]?.color===x;e&&this._board[J.a1]?.type===M&&this._board[J.a1]?.color===E||(this._castling.w&=-65),e&&this._board[J.h1]?.type===M&&this._board[J.h1]?.color===E||(this._castling.w&=-33),t&&this._board[J.a8]?.type===M&&this._board[J.a8]?.color===x||(this._castling.b&=-65),t&&this._board[J.h8]?.type===M&&this._board[J.h8]?.color===x||(this._castling.b&=-33),this._hash^=this._castlingKey()}_updateEnPassantSquare(){if(this._epSquare===Q)return;const e=this._epSquare+(this._turn===E?-16:16),t=this._epSquare+(this._turn===E?16:-16),n=[t+1,t-1];if(null!==this._board[e]||null!==this._board[this._epSquare]||this._board[t]?.color!==ne(this._turn)||this._board[t]?.type!==V)return this._hash^=this._epKey(),void(this._epSquare=Q);n.some(e=>!(136&e)&&this._board[e]?.color===this._turn&&this._board[e]?.type===V)||(this._hash^=this._epKey(),this._epSquare=Q)}_attacked(e,t,n){const A=[];for(let o=J.a8;o<=J.h1;o++){if(136&o){o+=7;continue}if(void 0===this._board[o]||this._board[o].color!==e)continue;const r=this._board[o],i=o-t;if(0===i)continue;const s=i+119;if(R[s]&L[r.type]){if(r.type===V){if(i>0&&r.color===E||i<=0&&r.color===x){if(!n)return!0;A.push(te(o))}continue}if("n"===r.type||"k"===r.type){if(n){A.push(te(o));continue}return!0}const e=F[s];let a=o+e,c=!1;for(;a!==t;){if(null!=this._board[a]){c=!0;break}a+=e}if(!c){if(n){A.push(te(o));continue}return!0}}}return!!n&&A}attackers(e,t){return t?this._attacked(t,J[e],!0):this._attacked(this._turn,J[e],!0)}_isKingAttacked(e){const t=this._kings[e];return-1!==t&&this._attacked(ne(e),t)}hash(){return this._hash.toString(16)}isAttacked(e,t){return this._attacked(t,J[e])}isCheck(){return this._isKingAttacked(this._turn)}inCheck(){return this.isCheck()}isCheckmate(){return this.isCheck()&&0===this._moves().length}isStalemate(){return!this.isCheck()&&0===this._moves().length}isInsufficientMaterial(){const e={b:0,n:0,r:0,q:0,k:0,p:0},t=[];let n=0,A=0;for(let o=J.a8;o<=J.h1;o++){if(A=(A+1)%2,136&o){o+=7;continue}const r=this._board[o];r&&(e[r.type]=r.type in e?e[r.type]+1:1,r.type===N&&t.push(A),n++)}if(2===n)return!0;if(3===n&&(1===e[N]||1===e.n))return!0;if(n===e[N]+2){let e=0;const n=t.length;for(let A=0;A<n;A++)e+=t[A];if(0===e||e===n)return!0}return!1}isThreefoldRepetition(){return this._getPositionCount(this._hash)>=3}isDrawByFiftyMoves(){return this._halfMoves>=100}isDraw(){return this.isDrawByFiftyMoves()||this.isStalemate()||this.isInsufficientMaterial()||this.isThreefoldRepetition()}isGameOver(){return this.isCheckmate()||this.isDraw()}moves({verbose:e=!1,square:t,piece:n}={}){const A=this._moves({square:t,piece:n});return e?A.map(e=>new T(this,e)):A.map(e=>this._moveToSan(e,A))}_moves({legal:e=!0,piece:t,square:n}={}){const A=n?n.toLowerCase():void 0,o=t?.toLowerCase(),r=[],i=this._turn,s=ne(i);let a=J.a8,c=J.h1,l=!1;if(A){if(!(A in J))return[];a=c=J[A],l=!0}for(let e=a;e<=c;e++){if(136&e){e+=7;continue}if(!this._board[e]||this._board[e].color===s)continue;const{type:t}=this._board[e];let n;if(t===V){if(o&&o!==t)continue;n=e+K[i][0],this._board[n]||(oe(r,i,e,n,V),n=e+K[i][1],_[i]!==X(e)||this._board[n]||oe(r,i,e,n,V,void 0,O.BIG_PAWN));for(let t=2;t<4;t++)n=e+K[i][t],136&n||(this._board[n]?.color===s?oe(r,i,e,n,V,this._board[n].type,O.CAPTURE):n===this._epSquare&&oe(r,i,e,n,V,V,O.EP_CAPTURE))}else{if(o&&o!==t)continue;for(let A=0,o=G[t].length;A<o;A++){const o=G[t][A];for(n=e;n+=o,!(136&n);){if(this._board[n]){if(this._board[n].color===i)break;oe(r,i,e,n,t,this._board[n].type,O.CAPTURE);break}if(oe(r,i,e,n,t),"n"===t||t===j)break}}}}if(!(void 0!==o&&o!==j||l&&c!==this._kings[i])){if(this._castling[i]&O.KSIDE_CASTLE){const e=this._kings[i],t=e+2;this._board[e+1]||this._board[t]||this._attacked(s,this._kings[i])||this._attacked(s,e+1)||this._attacked(s,t)||oe(r,i,this._kings[i],t,j,void 0,O.KSIDE_CASTLE)}if(this._castling[i]&O.QSIDE_CASTLE){const e=this._kings[i],t=e-2;this._board[e-1]||this._board[e-2]||this._board[e-3]||this._attacked(s,this._kings[i])||this._attacked(s,e-1)||this._attacked(s,t)||oe(r,i,this._kings[i],t,j,void 0,O.QSIDE_CASTLE)}}if(!e||-1===this._kings[i])return r;const u=[];for(let e=0,t=r.length;e<t;e++)this._makeMove(r[e]),this._isKingAttacked(i)||u.push(r[e]),this._undoMove();return u}move(e,{strict:t=!1}={}){let n=null;if("string"==typeof e)n=this._moveFromSan(e,t);else if(null===e)n=this._moveFromSan(H,t);else if("object"==typeof e){const t=this._moves();for(let A=0,o=t.length;A<o;A++)if(e.from===te(t[A].from)&&e.to===te(t[A].to)&&(!("promotion"in t[A])||e.promotion===t[A].promotion)){n=t[A];break}}if(!n)throw"string"==typeof e?new Error(`Invalid move: ${e}`):new Error(`Invalid move: ${JSON.stringify(e)}`);if(this.isCheck()&&n.flags&O.NULL_MOVE)throw new Error("Null move not allowed when in check");const A=new T(this,n);return this._makeMove(n),this._incPositionCount(),A}_push(e){this._history.push({move:e,kings:{b:this._kings.b,w:this._kings.w},turn:this._turn,castling:{b:this._castling.b,w:this._castling.w},epSquare:this._epSquare,halfMoves:this._halfMoves,moveNumber:this._moveNumber})}_movePiece(e,t){this._hash^=this._pieceKey(e),this._board[t]=this._board[e],delete this._board[e],this._hash^=this._pieceKey(t)}_makeMove(e){const t=this._turn,n=ne(t);if(this._push(e),e.flags&O.NULL_MOVE)return t===x&&this._moveNumber++,this._halfMoves++,this._turn=n,void(this._epSquare=Q);if(this._hash^=this._epKey(),this._hash^=this._castlingKey(),e.captured&&(this._hash^=this._pieceKey(e.to)),this._movePiece(e.from,e.to),e.flags&O.EP_CAPTURE&&(this._turn===x?this._clear(e.to-16):this._clear(e.to+16)),e.promotion&&(this._clear(e.to),this._set(e.to,{type:e.promotion,color:t})),this._board[e.to].type===j){if(this._kings[t]=e.to,e.flags&O.KSIDE_CASTLE){const t=e.to-1,n=e.to+1;this._movePiece(n,t)}else if(e.flags&O.QSIDE_CASTLE){const t=e.to+1,n=e.to-2;this._movePiece(n,t)}this._castling[t]=0}if(this._castling[t])for(let n=0,A=Y[t].length;n<A;n++)if(e.from===Y[t][n].square&&this._castling[t]&Y[t][n].flag){this._castling[t]^=Y[t][n].flag;break}if(this._castling[n])for(let t=0,A=Y[n].length;t<A;t++)if(e.to===Y[n][t].square&&this._castling[n]&Y[n][t].flag){this._castling[n]^=Y[n][t].flag;break}if(this._hash^=this._castlingKey(),e.flags&O.BIG_PAWN){let A;A=t===x?e.to-16:e.to+16,(e.to-1&136||this._board[e.to-1]?.type!==V||this._board[e.to-1]?.color!==n)&&(e.to+1&136||this._board[e.to+1]?.type!==V||this._board[e.to+1]?.color!==n)?this._epSquare=Q:(this._epSquare=A,this._hash^=this._epKey())}else this._epSquare=Q;e.piece===V||e.flags&(O.CAPTURE|O.EP_CAPTURE)?this._halfMoves=0:this._halfMoves++,t===x&&this._moveNumber++,this._turn=n,this._hash^=S}undo(){const e=this._hash,t=this._undoMove();if(t){const n=new T(this,t);return this._decPositionCount(e),n}return null}_undoMove(){const e=this._history.pop();if(void 0===e)return null;this._hash^=this._epKey(),this._hash^=this._castlingKey();const t=e.move;this._kings=e.kings,this._turn=e.turn,this._castling=e.castling,this._epSquare=e.epSquare,this._halfMoves=e.halfMoves,this._moveNumber=e.moveNumber,this._hash^=this._epKey(),this._hash^=this._castlingKey(),this._hash^=S;const n=this._turn,A=ne(n);if(t.flags&O.NULL_MOVE)return t;if(this._movePiece(t.to,t.from),t.piece&&(this._clear(t.from),this._set(t.from,{type:t.piece,color:n})),t.captured)if(t.flags&O.EP_CAPTURE){let e;e=n===x?t.to-16:t.to+16,this._set(e,{type:V,color:A})}else this._set(t.to,{type:t.captured,color:A});if(t.flags&(O.KSIDE_CASTLE|O.QSIDE_CASTLE)){let e,n;t.flags&O.KSIDE_CASTLE?(e=t.to+1,n=t.to-1):(e=t.to-2,n=t.to+1),this._movePiece(n,e)}return t}pgn({newline:e="\n",maxWidth:t=0}={}){const n=[];let A=!1;for(const t in this._header){this._header[t]&&n.push(`[${t} "${this._header[t]}"]`+e),A=!0}A&&this._history.length&&n.push(e);const o=e=>{const t=this._comments[this.fen()];if(void 0!==t){e=`${e}${e.length>0?" ":""}{${t}}`}return e},r=[];for(;this._history.length>0;)r.push(this._undoMove());const i=[];let s="";for(0===r.length&&i.push(o(""));r.length>0;){s=o(s);const e=r.pop();if(!e)break;if(this._history.length||"b"!==e.color)"w"===e.color&&(s.length&&i.push(s),s=this._moveNumber+".");else{const e=`${this._moveNumber}. ...`;s=s?`${s} ${e}`:e}s=s+" "+this._moveToSan(e,this._moves({legal:!0})),this._makeMove(e)}if(s.length&&i.push(o(s)),i.push(this._header.Result||"*"),0===t)return n.join("")+i.join(" ");const a=function(){return n.length>0&&" "===n[n.length-1]&&(n.pop(),!0)},c=function(A,o){for(const r of o.split(" "))if(r){if(A+r.length>t){for(;a();)A--;n.push(e),A=0}n.push(r),A+=r.length,n.push(" "),A++}return a()&&A--,A};let l=0;for(let A=0;A<i.length;A++)l+i[A].length>t&&i[A].includes("{")?l=c(l,i[A]):(l+i[A].length>t&&0!==A?(" "===n[n.length-1]&&n.pop(),n.push(e),l=0):0!==A&&(n.push(" "),l++),n.push(i[A]),l+=i[A].length);return n.join("")}header(...e){for(let t=0;t<e.length;t+=2)"string"==typeof e[t]&&"string"==typeof e[t+1]&&(this._header[e[t]]=e[t+1]);return this._header}setHeader(e,t){return this._header[e]=t??U[e]??null,this.getHeaders()}removeHeader(e){return e in this._header&&(this._header[e]=U[e]||null,!0)}getHeaders(){const e={};for(const[t,n]of Object.entries(this._header))null!==n&&(e[t]=n);return e}loadPgn(e,{strict:t=!1,newlineChar:n="\r?\n"}={}){"\r?\n"!==n&&(e=e.replace(new RegExp(n,"g"),"\n"));const A=m(e);this.reset();const o=A.headers;let r="";for(const e in o)"fen"===e.toLowerCase()&&(r=o[e]),this.header(e,o[e]);if(t){if("1"===o.SetUp){if(!("FEN"in o))throw new Error("Invalid PGN: FEN tag must be supplied with SetUp tag");this.load(o.FEN,{preserveHeaders:!0})}}else r&&this.load(r,{preserveHeaders:!0});let i=A.root;for(;i;){if(i.move){const e=this._moveFromSan(i.move,t);if(null==e)throw new Error(`Invalid move in PGN: ${i.move}`);this._makeMove(e),this._incPositionCount()}void 0!==i.comment&&(this._comments[this.fen()]=i.comment),i=i.variations[0]}const s=A.result;s&&Object.keys(this._header).length&&this._header.Result!==s&&this.setHeader("Result",s)}_moveToSan(e,t){let n="";if(e.flags&O.KSIDE_CASTLE)n="O-O";else if(e.flags&O.QSIDE_CASTLE)n="O-O-O";else{if(e.flags&O.NULL_MOVE)return H;if(e.piece!==V){const A=function(e,t){const n=e.from,A=e.to,o=e.piece;let r=0,i=0,s=0;for(let e=0,a=t.length;e<a;e++){const a=t[e].from,c=t[e].to;o===t[e].piece&&n!==a&&A===c&&(r++,X(n)===X(a)&&i++,$(n)===$(a)&&s++)}return r>0?i>0&&s>0?te(n):s>0?te(n).charAt(1):te(n).charAt(0):""}(e,t);n+=e.piece.toUpperCase()+A}e.flags&(O.CAPTURE|O.EP_CAPTURE)&&(e.piece===V&&(n+=te(e.from)[0]),n+="x"),n+=te(e.to),e.promotion&&(n+="="+e.promotion.toUpperCase())}return this._makeMove(e),this.isCheck()&&(this.isCheckmate()?n+="#":n+="+"),this._undoMove(),n}_moveFromSan(e,t=!1){let n=ie(e);if(t||("0-0"===n?n="O-O":"0-0-0"===n&&(n="O-O-O")),n==H){return{color:this._turn,from:0,to:0,piece:"k",flags:O.NULL_MOVE}}let A,o,r,i,s,a=re(n),c=this._moves({legal:!0,piece:a});for(let e=0,t=c.length;e<t;e++)if(n===ie(this._moveToSan(c[e],c)))return c[e];if(t)return null;let l=!1;if(o=n.match(/([pnbrqkPNBRQK])?([a-h][1-8])x?-?([a-h][1-8])([qrbnQRBN])?/),o?(A=o[1],r=o[2],i=o[3],s=o[4],1==r.length&&(l=!0)):(o=n.match(/([pnbrqkPNBRQK])?([a-h]?[1-8]?)x?-?([a-h][1-8])([qrbnQRBN])?/),o&&(A=o[1],r=o[2],i=o[3],s=o[4],1==r.length&&(l=!0))),a=re(n),c=this._moves({legal:!0,piece:A||a}),!i)return null;for(let e=0,t=c.length;e<t;e++)if(r){if(!(A&&A.toLowerCase()!=c[e].piece||J[r]!=c[e].from||J[i]!=c[e].to||s&&s.toLowerCase()!=c[e].promotion))return c[e];if(l){const t=te(c[e].from);if(!(A&&A.toLowerCase()!=c[e].piece||J[i]!=c[e].to||r!=t[0]&&r!=t[1]||s&&s.toLowerCase()!=c[e].promotion))return c[e]}}else if(n===ie(this._moveToSan(c[e],c)).replace("x",""))return c[e];return null}ascii(){let e=" +------------------------+\n";for(let t=J.a8;t<=J.h1;t++){if(0===$(t)&&(e+=" "+"87654321"[X(t)]+" |"),this._board[t]){const n=this._board[t].type;e+=" "+(this._board[t].color===E?n.toUpperCase():n.toLowerCase())+" "}else e+=" . ";t+1&136&&(e+="|\n",t+=8)}return e+=" +------------------------+\n",e+=" a b c d e f g h",e}perft(e){const t=this._moves({legal:!1});let n=0;const A=this._turn;for(let o=0,r=t.length;o<r;o++)this._makeMove(t[o]),this._isKingAttacked(A)||(e-1>0?n+=this.perft(e-1):n++),this._undoMove();return n}setTurn(e){return this._turn!=e&&(this.move("--"),!0)}turn(){return this._turn}board(){const e=[];let t=[];for(let n=J.a8;n<=J.h1;n++)null==this._board[n]?t.push(null):t.push({square:te(n),type:this._board[n].type,color:this._board[n].color}),n+1&136&&(e.push(t),t=[],n+=8);return e}squareColor(e){if(e in J){const t=J[e];return(X(t)+$(t))%2==0?"light":"dark"}return null}history({verbose:e=!1}={}){const t=[],n=[];for(;this._history.length>0;)t.push(this._undoMove());for(;;){const A=t.pop();if(!A)break;e?n.push(new T(this,A)):n.push(this._moveToSan(A,this._moves())),this._makeMove(A)}return n}_getPositionCount(e){return this._positionCount.get(e)??0}_incPositionCount(){this._positionCount.set(this._hash,(this._positionCount.get(this._hash)??0)+1)}_decPositionCount(e){const t=this._positionCount.get(e)??0;1===t?this._positionCount.delete(e):this._positionCount.set(e,t-1)}_pruneComments(){const e=[],t={},n=e=>{e in this._comments&&(t[e]=this._comments[e])};for(;this._history.length>0;)e.push(this._undoMove());for(n(this.fen());;){const t=e.pop();if(!t)break;this._makeMove(t),n(this.fen())}this._comments=t}getComment(){return this._comments[this.fen()]}setComment(e){this._comments[this.fen()]=e.replace("{","[").replace("}","]")}deleteComment(){return this.removeComment()}removeComment(){const e=this._comments[this.fen()];return delete this._comments[this.fen()],e}getComments(){return this._pruneComments(),Object.keys(this._comments).map(e=>({fen:e,comment:this._comments[e]}))}deleteComments(){return this.removeComments()}removeComments(){return this._pruneComments(),Object.keys(this._comments).map(e=>{const t=this._comments[e];return delete this._comments[e],{fen:e,comment:t}})}setCastlingRights(e,t){for(const n of[j,B])void 0!==t[n]&&(t[n]?this._castling[e]|=W[n]:this._castling[e]&=~W[n]);this._updateCastlingRights();const n=this.getCastlingRights(e);return!(void 0!==t[j]&&t[j]!==n[j]||void 0!==t[B]&&t[B]!==n[B])}getCastlingRights(e){return{[j]:0!==(this._castling[e]&W[j]),[B]:0!==(this._castling[e]&W[B])}}moveNumber(){return this._moveNumber}}const ae={initial:"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",empty:"8/8/8/8/8/8/8/8 w - - 0 1"},ce=ae.initial,le={fen:ae,initialFen:ce,emptyFen:ae.empty},ue=e=>{const[n,A]=t.useState(e.fen||ce),o=e?.skipValidation||!1,[r,i]=t.useState(new se(n,{skipValidation:o}));t.useEffect(()=>{e.fen&&(A(e.fen),i(new se(e.fen,{skipValidation:o})),a([]))},[e.fen,e.reset]);const[s,a]=t.useState([]),c=e.lastMove&&e.lastMove.promotion,l="w"===r.turn()?"white":"black",[u]=t.useState(e.orientation||l),h=(e,t,n)=>{a([e,t]);try{const o=r.move({from:e,to:t,promotion:n});return A(r.fen()),o}catch{return!1}};return{chess:r,fen:n,turnColor:l,lastMove:s,orientation:u,promotion:c,onMove:h,onPromote:e=>h(s[0],s[1],e),onUndo:()=>{const e=r.undo();return e?(A(r.fen()),a([]),e):null}}},he=()=>{const{theme:e,setTheme:n}=t.useContext(i);return{theme:e,setTheme:n,handleChecked:e=>{const t=e.target.name,A=e.target.checked;u.local.set(`chessground.${t}`,A),n(e=>({...e,[t]:A}))},handleChange:e=>{const t=e.target.name,A=e.target.value;u.local.set(`chessground.${t}`,A),n(e=>({...e,[t]:A}))}}},pe=(e=!1)=>{const[n,A]=t.useState(e);return{isOpen:n,show:()=>{A(!0)},hide:()=>{A(!1)},toggle:()=>{A(!n)}}};function ge(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var A=n.call(e,t||"default");if("object"!=typeof A)return A;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}
27
+ */!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(p,Error),p.prototype.format=function(e){var t="Error: "+this.message;if(this.location){var n,A=null;for(n=0;n<e.length;n++)if(e[n].source===this.location.source){A=e[n].text.split(/\r\n|\n|\r/g);break}var r=this.location.start,o=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(r):r,s=this.location.source+":"+o.line+":"+o.column;if(A){var i=this.location.end,a=d("",o.line.toString().length," "),c=A[r.line-1],l=(r.line===i.line?i.column:c.length+1)-r.column||1;t+="\n --\x3e "+s+"\n"+a+" |\n"+o.line+" | "+c+"\n"+a+" | "+d("",r.column-1," ")+d("",l,"^")}else t+="\n at "+s}return t},p.buildMessage=function(e,t){var n={literal:function(e){return'"'+r(e.text)+'"'},class:function(e){var t=e.parts.map(function(e){return Array.isArray(e)?o(e[0])+"-"+o(e[1]):o(e)});return"["+(e.inverted?"^":"")+t.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(e){return e.description}};function A(e){return e.charCodeAt(0).toString(16).toUpperCase()}function r(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+A(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+A(e)})}function o(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(e){return"\\x0"+A(e)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(e){return"\\x"+A(e)})}function s(e){return n[e.type](e)}return"Expected "+function(e){var t,n,A=e.map(s);if(A.sort(),A.length>0){for(t=1,n=1;t<A.length;t++)A[t-1]!==A[t]&&(A[n]=A[t],n++);A.length=n}switch(A.length){case 1:return A[0];case 2:return A[0]+" or "+A[1];default:return A.slice(0,-1).join(", ")+", or "+A[A.length-1]}}(e)+" but "+function(e){return e?'"'+r(e)+'"':"end of input"}(t)+" found."};const f=0xffffffffffffffffn;function b(e,t){return 0xffffffffffffffffn&(e<<t|e>>64n-t)}function y(e,t){return e*t&f}const I=(k=0xa187eb39cdcaed8f31c4b365b102e01en,function(){let e=BigInt(k&f),t=BigInt(k>>64n&f);const n=y(b(y(e,5n),7n),9n);return t^=e,e=(b(e,24n)^t^t<<16n)&f,t=b(t,37n),k=t<<64n|e,n});var k;const w=Array.from({length:2},()=>Array.from({length:6},()=>Array.from({length:128},()=>I()))),v=Array.from({length:8},()=>I()),C=Array.from({length:16},()=>I()),S=I(),E="w",x="b",V="p",N="b",M="r",j="q",B="k",D="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";class T{color;from;to;piece;captured;promotion;flags;san;lan;before;after;constructor(e,t){const{color:n,piece:A,from:r,to:o,flags:s,captured:i,promotion:a}=t,c=te(r),l=te(o);this.color=n,this.piece=A,this.from=c,this.to=l,this.san=e._moveToSan(t,e._moves({legal:!0})),this.lan=c+l,this.before=e.fen(),e._makeMove(t),this.after=e.fen(),e._undoMove(),this.flags="";for(const e in O)O[e]&s&&(this.flags+=Z[e]);i&&(this.captured=i),a&&(this.promotion=a,this.lan+=a)}isCapture(){return this.flags.indexOf(Z.CAPTURE)>-1}isPromotion(){return this.flags.indexOf(Z.PROMOTION)>-1}isEnPassant(){return this.flags.indexOf(Z.EP_CAPTURE)>-1}isKingsideCastle(){return this.flags.indexOf(Z.KSIDE_CASTLE)>-1}isQueensideCastle(){return this.flags.indexOf(Z.QSIDE_CASTLE)>-1}isBigPawn(){return this.flags.indexOf(Z.BIG_PAWN)>-1}}const Q=-1,Z={NORMAL:"n",CAPTURE:"c",BIG_PAWN:"b",EP_CAPTURE:"e",PROMOTION:"p",KSIDE_CASTLE:"k",QSIDE_CASTLE:"q",NULL_MOVE:"-"},P=["a8","b8","c8","d8","e8","f8","g8","h8","a7","b7","c7","d7","e7","f7","g7","h7","a6","b6","c6","d6","e6","f6","g6","h6","a5","b5","c5","d5","e5","f5","g5","h5","a4","b4","c4","d4","e4","f4","g4","h4","a3","b3","c3","d3","e3","f3","g3","h3","a2","b2","c2","d2","e2","f2","g2","h2","a1","b1","c1","d1","e1","f1","g1","h1"],O={NORMAL:1,CAPTURE:2,BIG_PAWN:4,EP_CAPTURE:8,PROMOTION:16,KSIDE_CASTLE:32,QSIDE_CASTLE:64,NULL_MOVE:128},U={Event:"?",Site:"?",Date:"????.??.??",Round:"?",White:"?",Black:"?",Result:"*"},q={...U,WhiteTitle:null,BlackTitle:null,WhiteElo:null,BlackElo:null,WhiteUSCF:null,BlackUSCF:null,WhiteNA:null,BlackNA:null,WhiteType:null,BlackType:null,EventDate:null,EventSponsor:null,Section:null,Stage:null,Board:null,Opening:null,Variation:null,SubVariation:null,ECO:null,NIC:null,Time:null,UTCTime:null,UTCDate:null,TimeControl:null,SetUp:null,FEN:null,Termination:null,Annotator:null,Mode:null,PlyCount:null},J={a8:0,b8:1,c8:2,d8:3,e8:4,f8:5,g8:6,h8:7,a7:16,b7:17,c7:18,d7:19,e7:20,f7:21,g7:22,h7:23,a6:32,b6:33,c6:34,d6:35,e6:36,f6:37,g6:38,h6:39,a5:48,b5:49,c5:50,d5:51,e5:52,f5:53,g5:54,h5:55,a4:64,b4:65,c4:66,d4:67,e4:68,f4:69,g4:70,h4:71,a3:80,b3:81,c3:82,d3:83,e3:84,f3:85,g3:86,h3:87,a2:96,b2:97,c2:98,d2:99,e2:100,f2:101,g2:102,h2:103,a1:112,b1:113,c1:114,d1:115,e1:116,f1:117,g1:118,h1:119},K={b:[16,32,17,15],w:[-16,-32,-17,-15]},G={n:[-18,-33,-31,-14,18,33,31,14],b:[-17,-15,17,15],r:[-16,1,16,-1],q:[-17,-16,-15,1,17,16,15,-1],k:[-17,-16,-15,1,17,16,15,-1]},R=[20,0,0,0,0,0,0,24,0,0,0,0,0,0,20,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,24,24,24,24,24,24,56,0,56,24,24,24,24,24,24,0,0,0,0,0,0,2,53,56,53,2,0,0,0,0,0,0,0,0,0,0,0,20,2,24,2,20,0,0,0,0,0,0,0,0,0,0,20,0,0,24,0,0,20,0,0,0,0,0,0,0,0,20,0,0,0,24,0,0,0,20,0,0,0,0,0,0,20,0,0,0,0,24,0,0,0,0,20,0,0,0,0,20,0,0,0,0,0,24,0,0,0,0,0,20,0,0,20,0,0,0,0,0,0,24,0,0,0,0,0,0,20],F=[17,0,0,0,0,0,0,16,0,0,0,0,0,0,15,0,0,17,0,0,0,0,0,16,0,0,0,0,0,15,0,0,0,0,17,0,0,0,0,16,0,0,0,0,15,0,0,0,0,0,0,17,0,0,0,16,0,0,0,15,0,0,0,0,0,0,0,0,17,0,0,16,0,0,15,0,0,0,0,0,0,0,0,0,0,17,0,16,0,15,0,0,0,0,0,0,0,0,0,0,0,0,17,16,15,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,-15,-16,-17,0,0,0,0,0,0,0,0,0,0,0,0,-15,0,-16,0,-17,0,0,0,0,0,0,0,0,0,0,-15,0,0,-16,0,0,-17,0,0,0,0,0,0,0,0,-15,0,0,0,-16,0,0,0,-17,0,0,0,0,0,0,-15,0,0,0,0,-16,0,0,0,0,-17,0,0,0,0,-15,0,0,0,0,0,-16,0,0,0,0,0,-17,0,0,-15,0,0,0,0,0,0,-16,0,0,0,0,0,0,-17],L={p:1,n:2,b:4,r:8,q:16,k:32},z=["n",N,M,j],W={[B]:O.KSIDE_CASTLE,[j]:O.QSIDE_CASTLE},Y={w:[{square:J.a1,flag:O.QSIDE_CASTLE},{square:J.h1,flag:O.KSIDE_CASTLE}],b:[{square:J.a8,flag:O.QSIDE_CASTLE},{square:J.h8,flag:O.KSIDE_CASTLE}]},_={b:1,w:6},H="--";function X(e){return e>>4}function $(e){return 15&e}function ee(e){return-1!=="0123456789".indexOf(e)}function te(e){const t=$(e),n=X(e);return"abcdefgh".substring(t,t+1)+"87654321".substring(n,n+1)}function ne(e){return e===E?x:E}function Ae(e){const t=e.split(/\s+/);if(6!==t.length)return{ok:!1,error:"Invalid FEN: must contain six space-delimited fields"};const n=parseInt(t[5],10);if(isNaN(n)||n<=0)return{ok:!1,error:"Invalid FEN: move number must be a positive integer"};const A=parseInt(t[4],10);if(isNaN(A)||A<0)return{ok:!1,error:"Invalid FEN: half move counter number must be a non-negative integer"};if(!/^(-|[abcdefgh][36])$/.test(t[3]))return{ok:!1,error:"Invalid FEN: en-passant square is invalid"};if(/[^kKqQ-]/.test(t[2]))return{ok:!1,error:"Invalid FEN: castling availability is invalid"};if(!/^(w|b)$/.test(t[1]))return{ok:!1,error:"Invalid FEN: side-to-move is invalid"};const r=t[0].split("/");if(8!==r.length)return{ok:!1,error:"Invalid FEN: piece data does not contain 8 '/'-delimited rows"};for(let e=0;e<r.length;e++){let t=0,n=!1;for(let A=0;A<r[e].length;A++)if(ee(r[e][A])){if(n)return{ok:!1,error:"Invalid FEN: piece data is invalid (consecutive number)"};t+=parseInt(r[e][A],10),n=!0}else{if(!/^[prnbqkPRNBQK]$/.test(r[e][A]))return{ok:!1,error:"Invalid FEN: piece data is invalid (invalid piece)"};t+=1,n=!1}if(8!==t)return{ok:!1,error:"Invalid FEN: piece data is invalid (too many squares in rank)"}}if("3"==t[3][1]&&"w"==t[1]||"6"==t[3][1]&&"b"==t[1])return{ok:!1,error:"Invalid FEN: illegal en-passant square"};const o=[{color:"white",regex:/K/g},{color:"black",regex:/k/g}];for(const{color:e,regex:n}of o){if(!n.test(t[0]))return{ok:!1,error:`Invalid FEN: missing ${e} king`};if((t[0].match(n)||[]).length>1)return{ok:!1,error:`Invalid FEN: too many ${e} kings`}}return Array.from(r[0]+r[7]).some(e=>"P"===e.toUpperCase())?{ok:!1,error:"Invalid FEN: some pawns are on the edge rows"}:{ok:!0}}function re(e,t,n,A,r,o=void 0,s=O.NORMAL){const i=X(A);if(r!==V||7!==i&&0!==i)e.push({color:t,from:n,to:A,piece:r,captured:o,flags:s});else for(let i=0;i<z.length;i++){const a=z[i];e.push({color:t,from:n,to:A,piece:r,captured:o,promotion:a,flags:s|O.PROMOTION})}}function oe(e){let t=e.charAt(0);if(t>="a"&&t<="h"){if(e.match(/[a-h]\d.*[a-h]\d/))return;return V}return t=t.toLowerCase(),"o"===t?B:t}function se(e){return e.replace(/=/,"").replace(/[+#]?[?!]*$/,"")}class ie{_board=new Array(128);_turn=E;_header={};_kings={w:Q,b:Q};_epSquare=-1;_halfMoves=0;_moveNumber=0;_history=[];_comments={};_castling={w:0,b:0};_hash=0n;_positionCount=new Map;constructor(e=D,{skipValidation:t=!1}={}){this.load(e,{skipValidation:t})}clear({preserveHeaders:e=!1}={}){this._board=new Array(128),this._kings={w:Q,b:Q},this._turn=E,this._castling={w:0,b:0},this._epSquare=Q,this._halfMoves=0,this._moveNumber=1,this._history=[],this._comments={},this._header=e?this._header:{...q},this._hash=this._computeHash(),this._positionCount=new Map,this._header.SetUp=null,this._header.FEN=null}load(e,{skipValidation:t=!1,preserveHeaders:n=!1}={}){let A=e.split(/\s+/);if(A.length>=2&&A.length<6){const t=["-","-","0","1"];e=A.concat(t.slice(-(6-A.length))).join(" ")}if(A=e.split(/\s+/),!t){const{ok:t,error:n}=Ae(e);if(!t)throw new Error(n)}const r=A[0];let o=0;this.clear({preserveHeaders:n});for(let e=0;e<r.length;e++){const t=r.charAt(e);if("/"===t)o+=8;else if(ee(t))o+=parseInt(t,10);else{const e=t<"a"?E:x;this._put({type:t.toLowerCase(),color:e},te(o)),o++}}this._turn=A[1],A[2].indexOf("K")>-1&&(this._castling.w|=O.KSIDE_CASTLE),A[2].indexOf("Q")>-1&&(this._castling.w|=O.QSIDE_CASTLE),A[2].indexOf("k")>-1&&(this._castling.b|=O.KSIDE_CASTLE),A[2].indexOf("q")>-1&&(this._castling.b|=O.QSIDE_CASTLE),this._epSquare="-"===A[3]?Q:J[A[3]],this._halfMoves=parseInt(A[4],10),this._moveNumber=parseInt(A[5],10),this._hash=this._computeHash(),this._updateSetup(e),this._incPositionCount()}fen({forceEnpassantSquare:e=!1}={}){let t=0,n="";for(let e=J.a8;e<=J.h1;e++){if(this._board[e]){t>0&&(n+=t,t=0);const{color:A,type:r}=this._board[e];n+=A===E?r.toUpperCase():r.toLowerCase()}else t++;e+1&136&&(t>0&&(n+=t),e!==J.h1&&(n+="/"),t=0,e+=8)}let A="";this._castling[E]&O.KSIDE_CASTLE&&(A+="K"),this._castling[E]&O.QSIDE_CASTLE&&(A+="Q"),this._castling[x]&O.KSIDE_CASTLE&&(A+="k"),this._castling[x]&O.QSIDE_CASTLE&&(A+="q"),A=A||"-";let r="-";if(this._epSquare!==Q)if(e)r=te(this._epSquare);else{const e=this._epSquare+(this._turn===E?16:-16),t=[e+1,e-1];for(const e of t){if(136&e)continue;const t=this._turn;if(this._board[e]?.color===t&&this._board[e]?.type===V){this._makeMove({color:t,from:e,to:this._epSquare,piece:V,captured:V,flags:O.EP_CAPTURE});const n=!this._isKingAttacked(t);if(this._undoMove(),n){r=te(this._epSquare);break}}}}return[n,this._turn,A,r,this._halfMoves,this._moveNumber].join(" ")}_pieceKey(e){if(!this._board[e])return 0n;const{color:t,type:n}=this._board[e],A={p:0,n:1,b:2,r:3,q:4,k:5}[n];return w[{w:0,b:1}[t]][A][e]}_epKey(){return this._epSquare===Q?0n:v[7&this._epSquare]}_castlingKey(){const e=this._castling.w>>5|this._castling.b>>3;return C[e]}_computeHash(){let e=0n;for(let t=J.a8;t<=J.h1;t++)136&t?t+=7:this._board[t]&&(e^=this._pieceKey(t));return e^=this._epKey(),e^=this._castlingKey(),"b"===this._turn&&(e^=S),e}_updateSetup(e){this._history.length>0||(e!==D?(this._header.SetUp="1",this._header.FEN=e):(this._header.SetUp=null,this._header.FEN=null))}reset(){this.load(D)}get(e){return this._board[J[e]]}findPiece(e){const t=[];for(let n=J.a8;n<=J.h1;n++)136&n?n+=7:this._board[n]&&this._board[n]?.color===e.color&&this._board[n].color===e.color&&this._board[n].type===e.type&&t.push(te(n));return t}put({type:e,color:t},n){return!!this._put({type:e,color:t},n)&&(this._updateCastlingRights(),this._updateEnPassantSquare(),this._updateSetup(this.fen()),!0)}_set(e,t){this._hash^=this._pieceKey(e),this._board[e]=t,this._hash^=this._pieceKey(e)}_put({type:e,color:t},n){if(-1==="pnbrqkPNBRQK".indexOf(e.toLowerCase()))return!1;if(!(n in J))return!1;const A=J[n];if(e==B&&this._kings[t]!=Q&&this._kings[t]!=A)return!1;const r=this._board[A];return r&&r.type===B&&(this._kings[r.color]=Q),this._set(A,{type:e,color:t}),e===B&&(this._kings[t]=A),!0}_clear(e){this._hash^=this._pieceKey(e),delete this._board[e]}remove(e){const t=this.get(e);return this._clear(J[e]),t&&t.type===B&&(this._kings[t.color]=Q),this._updateCastlingRights(),this._updateEnPassantSquare(),this._updateSetup(this.fen()),t}_updateCastlingRights(){this._hash^=this._castlingKey();const e=this._board[J.e1]?.type===B&&this._board[J.e1]?.color===E,t=this._board[J.e8]?.type===B&&this._board[J.e8]?.color===x;e&&this._board[J.a1]?.type===M&&this._board[J.a1]?.color===E||(this._castling.w&=-65),e&&this._board[J.h1]?.type===M&&this._board[J.h1]?.color===E||(this._castling.w&=-33),t&&this._board[J.a8]?.type===M&&this._board[J.a8]?.color===x||(this._castling.b&=-65),t&&this._board[J.h8]?.type===M&&this._board[J.h8]?.color===x||(this._castling.b&=-33),this._hash^=this._castlingKey()}_updateEnPassantSquare(){if(this._epSquare===Q)return;const e=this._epSquare+(this._turn===E?-16:16),t=this._epSquare+(this._turn===E?16:-16),n=[t+1,t-1];if(null!==this._board[e]||null!==this._board[this._epSquare]||this._board[t]?.color!==ne(this._turn)||this._board[t]?.type!==V)return this._hash^=this._epKey(),void(this._epSquare=Q);n.some(e=>!(136&e)&&this._board[e]?.color===this._turn&&this._board[e]?.type===V)||(this._hash^=this._epKey(),this._epSquare=Q)}_attacked(e,t,n){const A=[];for(let r=J.a8;r<=J.h1;r++){if(136&r){r+=7;continue}if(void 0===this._board[r]||this._board[r].color!==e)continue;const o=this._board[r],s=r-t;if(0===s)continue;const i=s+119;if(R[i]&L[o.type]){if(o.type===V){if(s>0&&o.color===E||s<=0&&o.color===x){if(!n)return!0;A.push(te(r))}continue}if("n"===o.type||"k"===o.type){if(n){A.push(te(r));continue}return!0}const e=F[i];let a=r+e,c=!1;for(;a!==t;){if(null!=this._board[a]){c=!0;break}a+=e}if(!c){if(n){A.push(te(r));continue}return!0}}}return!!n&&A}attackers(e,t){return t?this._attacked(t,J[e],!0):this._attacked(this._turn,J[e],!0)}_isKingAttacked(e){const t=this._kings[e];return-1!==t&&this._attacked(ne(e),t)}hash(){return this._hash.toString(16)}isAttacked(e,t){return this._attacked(t,J[e])}isCheck(){return this._isKingAttacked(this._turn)}inCheck(){return this.isCheck()}isCheckmate(){return this.isCheck()&&0===this._moves().length}isStalemate(){return!this.isCheck()&&0===this._moves().length}isInsufficientMaterial(){const e={b:0,n:0,r:0,q:0,k:0,p:0},t=[];let n=0,A=0;for(let r=J.a8;r<=J.h1;r++){if(A=(A+1)%2,136&r){r+=7;continue}const o=this._board[r];o&&(e[o.type]=o.type in e?e[o.type]+1:1,o.type===N&&t.push(A),n++)}if(2===n)return!0;if(3===n&&(1===e[N]||1===e.n))return!0;if(n===e[N]+2){let e=0;const n=t.length;for(let A=0;A<n;A++)e+=t[A];if(0===e||e===n)return!0}return!1}isThreefoldRepetition(){return this._getPositionCount(this._hash)>=3}isDrawByFiftyMoves(){return this._halfMoves>=100}isDraw(){return this.isDrawByFiftyMoves()||this.isStalemate()||this.isInsufficientMaterial()||this.isThreefoldRepetition()}isGameOver(){return this.isCheckmate()||this.isDraw()}moves({verbose:e=!1,square:t,piece:n}={}){const A=this._moves({square:t,piece:n});return e?A.map(e=>new T(this,e)):A.map(e=>this._moveToSan(e,A))}_moves({legal:e=!0,piece:t,square:n}={}){const A=n?n.toLowerCase():void 0,r=t?.toLowerCase(),o=[],s=this._turn,i=ne(s);let a=J.a8,c=J.h1,l=!1;if(A){if(!(A in J))return[];a=c=J[A],l=!0}for(let e=a;e<=c;e++){if(136&e){e+=7;continue}if(!this._board[e]||this._board[e].color===i)continue;const{type:t}=this._board[e];let n;if(t===V){if(r&&r!==t)continue;n=e+K[s][0],this._board[n]||(re(o,s,e,n,V),n=e+K[s][1],_[s]!==X(e)||this._board[n]||re(o,s,e,n,V,void 0,O.BIG_PAWN));for(let t=2;t<4;t++)n=e+K[s][t],136&n||(this._board[n]?.color===i?re(o,s,e,n,V,this._board[n].type,O.CAPTURE):n===this._epSquare&&re(o,s,e,n,V,V,O.EP_CAPTURE))}else{if(r&&r!==t)continue;for(let A=0,r=G[t].length;A<r;A++){const r=G[t][A];for(n=e;n+=r,!(136&n);){if(this._board[n]){if(this._board[n].color===s)break;re(o,s,e,n,t,this._board[n].type,O.CAPTURE);break}if(re(o,s,e,n,t),"n"===t||t===B)break}}}}if(!(void 0!==r&&r!==B||l&&c!==this._kings[s])){if(this._castling[s]&O.KSIDE_CASTLE){const e=this._kings[s],t=e+2;this._board[e+1]||this._board[t]||this._attacked(i,this._kings[s])||this._attacked(i,e+1)||this._attacked(i,t)||re(o,s,this._kings[s],t,B,void 0,O.KSIDE_CASTLE)}if(this._castling[s]&O.QSIDE_CASTLE){const e=this._kings[s],t=e-2;this._board[e-1]||this._board[e-2]||this._board[e-3]||this._attacked(i,this._kings[s])||this._attacked(i,e-1)||this._attacked(i,t)||re(o,s,this._kings[s],t,B,void 0,O.QSIDE_CASTLE)}}if(!e||-1===this._kings[s])return o;const u=[];for(let e=0,t=o.length;e<t;e++)this._makeMove(o[e]),this._isKingAttacked(s)||u.push(o[e]),this._undoMove();return u}move(e,{strict:t=!1}={}){let n=null;if("string"==typeof e)n=this._moveFromSan(e,t);else if(null===e)n=this._moveFromSan(H,t);else if("object"==typeof e){const t=this._moves();for(let A=0,r=t.length;A<r;A++)if(e.from===te(t[A].from)&&e.to===te(t[A].to)&&(!("promotion"in t[A])||e.promotion===t[A].promotion)){n=t[A];break}}if(!n)throw"string"==typeof e?new Error(`Invalid move: ${e}`):new Error(`Invalid move: ${JSON.stringify(e)}`);if(this.isCheck()&&n.flags&O.NULL_MOVE)throw new Error("Null move not allowed when in check");const A=new T(this,n);return this._makeMove(n),this._incPositionCount(),A}_push(e){this._history.push({move:e,kings:{b:this._kings.b,w:this._kings.w},turn:this._turn,castling:{b:this._castling.b,w:this._castling.w},epSquare:this._epSquare,halfMoves:this._halfMoves,moveNumber:this._moveNumber})}_movePiece(e,t){this._hash^=this._pieceKey(e),this._board[t]=this._board[e],delete this._board[e],this._hash^=this._pieceKey(t)}_makeMove(e){const t=this._turn,n=ne(t);if(this._push(e),e.flags&O.NULL_MOVE)return t===x&&this._moveNumber++,this._halfMoves++,this._turn=n,void(this._epSquare=Q);if(this._hash^=this._epKey(),this._hash^=this._castlingKey(),e.captured&&(this._hash^=this._pieceKey(e.to)),this._movePiece(e.from,e.to),e.flags&O.EP_CAPTURE&&(this._turn===x?this._clear(e.to-16):this._clear(e.to+16)),e.promotion&&(this._clear(e.to),this._set(e.to,{type:e.promotion,color:t})),this._board[e.to].type===B){if(this._kings[t]=e.to,e.flags&O.KSIDE_CASTLE){const t=e.to-1,n=e.to+1;this._movePiece(n,t)}else if(e.flags&O.QSIDE_CASTLE){const t=e.to+1,n=e.to-2;this._movePiece(n,t)}this._castling[t]=0}if(this._castling[t])for(let n=0,A=Y[t].length;n<A;n++)if(e.from===Y[t][n].square&&this._castling[t]&Y[t][n].flag){this._castling[t]^=Y[t][n].flag;break}if(this._castling[n])for(let t=0,A=Y[n].length;t<A;t++)if(e.to===Y[n][t].square&&this._castling[n]&Y[n][t].flag){this._castling[n]^=Y[n][t].flag;break}if(this._hash^=this._castlingKey(),e.flags&O.BIG_PAWN){let A;A=t===x?e.to-16:e.to+16,(e.to-1&136||this._board[e.to-1]?.type!==V||this._board[e.to-1]?.color!==n)&&(e.to+1&136||this._board[e.to+1]?.type!==V||this._board[e.to+1]?.color!==n)?this._epSquare=Q:(this._epSquare=A,this._hash^=this._epKey())}else this._epSquare=Q;e.piece===V||e.flags&(O.CAPTURE|O.EP_CAPTURE)?this._halfMoves=0:this._halfMoves++,t===x&&this._moveNumber++,this._turn=n,this._hash^=S}undo(){const e=this._hash,t=this._undoMove();if(t){const n=new T(this,t);return this._decPositionCount(e),n}return null}_undoMove(){const e=this._history.pop();if(void 0===e)return null;this._hash^=this._epKey(),this._hash^=this._castlingKey();const t=e.move;this._kings=e.kings,this._turn=e.turn,this._castling=e.castling,this._epSquare=e.epSquare,this._halfMoves=e.halfMoves,this._moveNumber=e.moveNumber,this._hash^=this._epKey(),this._hash^=this._castlingKey(),this._hash^=S;const n=this._turn,A=ne(n);if(t.flags&O.NULL_MOVE)return t;if(this._movePiece(t.to,t.from),t.piece&&(this._clear(t.from),this._set(t.from,{type:t.piece,color:n})),t.captured)if(t.flags&O.EP_CAPTURE){let e;e=n===x?t.to-16:t.to+16,this._set(e,{type:V,color:A})}else this._set(t.to,{type:t.captured,color:A});if(t.flags&(O.KSIDE_CASTLE|O.QSIDE_CASTLE)){let e,n;t.flags&O.KSIDE_CASTLE?(e=t.to+1,n=t.to-1):(e=t.to-2,n=t.to+1),this._movePiece(n,e)}return t}pgn({newline:e="\n",maxWidth:t=0}={}){const n=[];let A=!1;for(const t in this._header){this._header[t]&&n.push(`[${t} "${this._header[t]}"]`+e),A=!0}A&&this._history.length&&n.push(e);const r=e=>{const t=this._comments[this.fen()];if(void 0!==t){e=`${e}${e.length>0?" ":""}{${t}}`}return e},o=[];for(;this._history.length>0;)o.push(this._undoMove());const s=[];let i="";for(0===o.length&&s.push(r(""));o.length>0;){i=r(i);const e=o.pop();if(!e)break;if(this._history.length||"b"!==e.color)"w"===e.color&&(i.length&&s.push(i),i=this._moveNumber+".");else{const e=`${this._moveNumber}. ...`;i=i?`${i} ${e}`:e}i=i+" "+this._moveToSan(e,this._moves({legal:!0})),this._makeMove(e)}if(i.length&&s.push(r(i)),s.push(this._header.Result||"*"),0===t)return n.join("")+s.join(" ");const a=function(){return n.length>0&&" "===n[n.length-1]&&(n.pop(),!0)},c=function(A,r){for(const o of r.split(" "))if(o){if(A+o.length>t){for(;a();)A--;n.push(e),A=0}n.push(o),A+=o.length,n.push(" "),A++}return a()&&A--,A};let l=0;for(let A=0;A<s.length;A++)l+s[A].length>t&&s[A].includes("{")?l=c(l,s[A]):(l+s[A].length>t&&0!==A?(" "===n[n.length-1]&&n.pop(),n.push(e),l=0):0!==A&&(n.push(" "),l++),n.push(s[A]),l+=s[A].length);return n.join("")}header(...e){for(let t=0;t<e.length;t+=2)"string"==typeof e[t]&&"string"==typeof e[t+1]&&(this._header[e[t]]=e[t+1]);return this._header}setHeader(e,t){return this._header[e]=t??U[e]??null,this.getHeaders()}removeHeader(e){return e in this._header&&(this._header[e]=U[e]||null,!0)}getHeaders(){const e={};for(const[t,n]of Object.entries(this._header))null!==n&&(e[t]=n);return e}loadPgn(e,{strict:t=!1,newlineChar:n="\r?\n"}={}){"\r?\n"!==n&&(e=e.replace(new RegExp(n,"g"),"\n"));const A=m(e);this.reset();const r=A.headers;let o="";for(const e in r)"fen"===e.toLowerCase()&&(o=r[e]),this.header(e,r[e]);if(t){if("1"===r.SetUp){if(!("FEN"in r))throw new Error("Invalid PGN: FEN tag must be supplied with SetUp tag");this.load(r.FEN,{preserveHeaders:!0})}}else o&&this.load(o,{preserveHeaders:!0});let s=A.root;for(;s;){if(s.move){const e=this._moveFromSan(s.move,t);if(null==e)throw new Error(`Invalid move in PGN: ${s.move}`);this._makeMove(e),this._incPositionCount()}void 0!==s.comment&&(this._comments[this.fen()]=s.comment),s=s.variations[0]}const i=A.result;i&&Object.keys(this._header).length&&this._header.Result!==i&&this.setHeader("Result",i)}_moveToSan(e,t){let n="";if(e.flags&O.KSIDE_CASTLE)n="O-O";else if(e.flags&O.QSIDE_CASTLE)n="O-O-O";else{if(e.flags&O.NULL_MOVE)return H;if(e.piece!==V){const A=function(e,t){const n=e.from,A=e.to,r=e.piece;let o=0,s=0,i=0;for(let e=0,a=t.length;e<a;e++){const a=t[e].from,c=t[e].to;r===t[e].piece&&n!==a&&A===c&&(o++,X(n)===X(a)&&s++,$(n)===$(a)&&i++)}return o>0?s>0&&i>0?te(n):i>0?te(n).charAt(1):te(n).charAt(0):""}(e,t);n+=e.piece.toUpperCase()+A}e.flags&(O.CAPTURE|O.EP_CAPTURE)&&(e.piece===V&&(n+=te(e.from)[0]),n+="x"),n+=te(e.to),e.promotion&&(n+="="+e.promotion.toUpperCase())}return this._makeMove(e),this.isCheck()&&(this.isCheckmate()?n+="#":n+="+"),this._undoMove(),n}_moveFromSan(e,t=!1){let n=se(e);if(t||("0-0"===n?n="O-O":"0-0-0"===n&&(n="O-O-O")),n==H){return{color:this._turn,from:0,to:0,piece:"k",flags:O.NULL_MOVE}}let A,r,o,s,i,a=oe(n),c=this._moves({legal:!0,piece:a});for(let e=0,t=c.length;e<t;e++)if(n===se(this._moveToSan(c[e],c)))return c[e];if(t)return null;let l=!1;if(r=n.match(/([pnbrqkPNBRQK])?([a-h][1-8])x?-?([a-h][1-8])([qrbnQRBN])?/),r?(A=r[1],o=r[2],s=r[3],i=r[4],1==o.length&&(l=!0)):(r=n.match(/([pnbrqkPNBRQK])?([a-h]?[1-8]?)x?-?([a-h][1-8])([qrbnQRBN])?/),r&&(A=r[1],o=r[2],s=r[3],i=r[4],1==o.length&&(l=!0))),a=oe(n),c=this._moves({legal:!0,piece:A||a}),!s)return null;for(let e=0,t=c.length;e<t;e++)if(o){if(!(A&&A.toLowerCase()!=c[e].piece||J[o]!=c[e].from||J[s]!=c[e].to||i&&i.toLowerCase()!=c[e].promotion))return c[e];if(l){const t=te(c[e].from);if(!(A&&A.toLowerCase()!=c[e].piece||J[s]!=c[e].to||o!=t[0]&&o!=t[1]||i&&i.toLowerCase()!=c[e].promotion))return c[e]}}else if(n===se(this._moveToSan(c[e],c)).replace("x",""))return c[e];return null}ascii(){let e=" +------------------------+\n";for(let t=J.a8;t<=J.h1;t++){if(0===$(t)&&(e+=" "+"87654321"[X(t)]+" |"),this._board[t]){const n=this._board[t].type;e+=" "+(this._board[t].color===E?n.toUpperCase():n.toLowerCase())+" "}else e+=" . ";t+1&136&&(e+="|\n",t+=8)}return e+=" +------------------------+\n",e+=" a b c d e f g h",e}perft(e){const t=this._moves({legal:!1});let n=0;const A=this._turn;for(let r=0,o=t.length;r<o;r++)this._makeMove(t[r]),this._isKingAttacked(A)||(e-1>0?n+=this.perft(e-1):n++),this._undoMove();return n}setTurn(e){return this._turn!=e&&(this.move("--"),!0)}turn(){return this._turn}board(){const e=[];let t=[];for(let n=J.a8;n<=J.h1;n++)null==this._board[n]?t.push(null):t.push({square:te(n),type:this._board[n].type,color:this._board[n].color}),n+1&136&&(e.push(t),t=[],n+=8);return e}squareColor(e){if(e in J){const t=J[e];return(X(t)+$(t))%2==0?"light":"dark"}return null}history({verbose:e=!1}={}){const t=[],n=[];for(;this._history.length>0;)t.push(this._undoMove());for(;;){const A=t.pop();if(!A)break;e?n.push(new T(this,A)):n.push(this._moveToSan(A,this._moves())),this._makeMove(A)}return n}_getPositionCount(e){return this._positionCount.get(e)??0}_incPositionCount(){this._positionCount.set(this._hash,(this._positionCount.get(this._hash)??0)+1)}_decPositionCount(e){const t=this._positionCount.get(e)??0;1===t?this._positionCount.delete(e):this._positionCount.set(e,t-1)}_pruneComments(){const e=[],t={},n=e=>{e in this._comments&&(t[e]=this._comments[e])};for(;this._history.length>0;)e.push(this._undoMove());for(n(this.fen());;){const t=e.pop();if(!t)break;this._makeMove(t),n(this.fen())}this._comments=t}getComment(){return this._comments[this.fen()]}setComment(e){this._comments[this.fen()]=e.replace("{","[").replace("}","]")}deleteComment(){return this.removeComment()}removeComment(){const e=this._comments[this.fen()];return delete this._comments[this.fen()],e}getComments(){return this._pruneComments(),Object.keys(this._comments).map(e=>({fen:e,comment:this._comments[e]}))}deleteComments(){return this.removeComments()}removeComments(){return this._pruneComments(),Object.keys(this._comments).map(e=>{const t=this._comments[e];return delete this._comments[e],{fen:e,comment:t}})}setCastlingRights(e,t){for(const n of[B,j])void 0!==t[n]&&(t[n]?this._castling[e]|=W[n]:this._castling[e]&=~W[n]);this._updateCastlingRights();const n=this.getCastlingRights(e);return!(void 0!==t[B]&&t[B]!==n[B]||void 0!==t[j]&&t[j]!==n[j])}getCastlingRights(e){return{[B]:0!==(this._castling[e]&W[B]),[j]:0!==(this._castling[e]&W[j])}}moveNumber(){return this._moveNumber}}const ae={initial:"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",empty:"8/8/8/8/8/8/8/8 w - - 0 1"},ce=ae.initial,le={fen:ae,initialFen:ce,emptyFen:ae.empty},ue=e=>{const[n,A]=t.useState(e.fen||ce),r=e?.skipValidation||!1,[o,s]=t.useState(new ie(n,{skipValidation:r}));t.useEffect(()=>{e.fen&&(A(e.fen),s(new ie(e.fen,{skipValidation:r})),a([]))},[e.fen,e.reset]);const[i,a]=t.useState([]),c=e.lastMove&&e.lastMove.promotion,l="w"===o.turn()?"white":"black",[u]=t.useState(e.orientation||l),h=(e,t,n)=>{a([e,t]);try{const r=o.move({from:e,to:t,promotion:n});return A(o.fen()),r}catch{return!1}};return{chess:o,fen:n,turnColor:l,lastMove:i,orientation:u,promotion:c,onMove:h,onPromote:e=>h(i[0],i[1],e),onUndo:()=>{const e=o.undo();return e?(A(o.fen()),a([]),e):null}}},he=()=>{const{theme:e,setTheme:n}=t.useContext(s);return{theme:e,setTheme:n,handleChecked:e=>{const t=e.target.name,A=e.target.checked;u.local.set(`chessground.${t}`,A),n(e=>({...e,[t]:A}))},handleChange:e=>{const t=e.target.name,A=e.target.value;u.local.set(`chessground.${t}`,A),n(e=>({...e,[t]:A}))}}},ge=(e=!1)=>{const[n,A]=t.useState(e);return{isOpen:n,show:()=>{A(!0)},hide:()=>{A(!1)},toggle:()=>{A(!n)}}};function pe(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var A=n.call(e,t||"default");if("object"!=typeof A)return A;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}
28
28
  /** @license React v16.13.1
29
29
  * react-is.production.min.js
30
30
  *
@@ -32,4 +32,4 @@
32
32
  *
33
33
  * This source code is licensed under the MIT license found in the
34
34
  * LICENSE file in the root directory of this source tree.
35
- */(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var de="function"==typeof Symbol&&Symbol.for,me=de?Symbol.for("react.element"):60103,fe=de?Symbol.for("react.portal"):60106,be=de?Symbol.for("react.fragment"):60107,ye=de?Symbol.for("react.strict_mode"):60108,Ie=de?Symbol.for("react.profiler"):60114,ke=de?Symbol.for("react.provider"):60109,we=de?Symbol.for("react.context"):60110,Ce=de?Symbol.for("react.async_mode"):60111,ve=de?Symbol.for("react.concurrent_mode"):60111,Se=de?Symbol.for("react.forward_ref"):60112,Ee=de?Symbol.for("react.suspense"):60113,xe=de?Symbol.for("react.suspense_list"):60120,Ve=de?Symbol.for("react.memo"):60115,Ne=de?Symbol.for("react.lazy"):60116,Me=de?Symbol.for("react.block"):60121,Be=de?Symbol.for("react.fundamental"):60117,je=de?Symbol.for("react.responder"):60118,De=de?Symbol.for("react.scope"):60119;function Te(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case me:switch(e=e.type){case Ce:case ve:case be:case Ie:case ye:case Ee:return e;default:switch(e=e&&e.$$typeof){case we:case Se:case Ne:case Ve:case ke:return e;default:return t}}case fe:return t}}}function Qe(e){return Te(e)===ve}var Ze={AsyncMode:Ce,ConcurrentMode:ve,ContextConsumer:we,ContextProvider:ke,Element:me,ForwardRef:Se,Fragment:be,Lazy:Ne,Memo:Ve,Portal:fe,Profiler:Ie,StrictMode:ye,Suspense:Ee,isAsyncMode:function(e){return Qe(e)||Te(e)===Ce},isConcurrentMode:Qe,isContextConsumer:function(e){return Te(e)===we},isContextProvider:function(e){return Te(e)===ke},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===me},isForwardRef:function(e){return Te(e)===Se},isFragment:function(e){return Te(e)===be},isLazy:function(e){return Te(e)===Ne},isMemo:function(e){return Te(e)===Ve},isPortal:function(e){return Te(e)===fe},isProfiler:function(e){return Te(e)===Ie},isStrictMode:function(e){return Te(e)===ye},isSuspense:function(e){return Te(e)===Ee},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===be||e===ve||e===Ie||e===ye||e===Ee||e===xe||"object"==typeof e&&null!==e&&(e.$$typeof===Ne||e.$$typeof===Ve||e.$$typeof===ke||e.$$typeof===we||e.$$typeof===Se||e.$$typeof===Be||e.$$typeof===je||e.$$typeof===De||e.$$typeof===Me)},typeOf:Te},Pe=l(function(e,t){"production"!==process.env.NODE_ENV&&function(){var e="function"==typeof Symbol&&Symbol.for,n=e?Symbol.for("react.element"):60103,A=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,r=e?Symbol.for("react.strict_mode"):60108,i=e?Symbol.for("react.profiler"):60114,s=e?Symbol.for("react.provider"):60109,a=e?Symbol.for("react.context"):60110,c=e?Symbol.for("react.async_mode"):60111,l=e?Symbol.for("react.concurrent_mode"):60111,u=e?Symbol.for("react.forward_ref"):60112,h=e?Symbol.for("react.suspense"):60113,p=e?Symbol.for("react.suspense_list"):60120,g=e?Symbol.for("react.memo"):60115,d=e?Symbol.for("react.lazy"):60116,m=e?Symbol.for("react.block"):60121,f=e?Symbol.for("react.fundamental"):60117,b=e?Symbol.for("react.responder"):60118,y=e?Symbol.for("react.scope"):60119;function I(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:var p=e.type;switch(p){case c:case l:case o:case i:case r:case h:return p;default:var m=p&&p.$$typeof;switch(m){case a:case u:case d:case g:case s:return m;default:return t}}case A:return t}}}var k=c,w=l,C=a,v=s,S=n,E=u,x=o,V=d,N=g,M=A,B=i,j=r,D=h,T=!1;function Q(e){return I(e)===l}t.AsyncMode=k,t.ConcurrentMode=w,t.ContextConsumer=C,t.ContextProvider=v,t.Element=S,t.ForwardRef=E,t.Fragment=x,t.Lazy=V,t.Memo=N,t.Portal=M,t.Profiler=B,t.StrictMode=j,t.Suspense=D,t.isAsyncMode=function(e){return T||(T=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),Q(e)||I(e)===c},t.isConcurrentMode=Q,t.isContextConsumer=function(e){return I(e)===a},t.isContextProvider=function(e){return I(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return I(e)===u},t.isFragment=function(e){return I(e)===o},t.isLazy=function(e){return I(e)===d},t.isMemo=function(e){return I(e)===g},t.isPortal=function(e){return I(e)===A},t.isProfiler=function(e){return I(e)===i},t.isStrictMode=function(e){return I(e)===r},t.isSuspense=function(e){return I(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===l||e===i||e===r||e===h||e===p||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===g||e.$$typeof===s||e.$$typeof===a||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===m)},t.typeOf=I}()}),Oe=l(function(e){"production"===process.env.NODE_ENV?e.exports=Ze:e.exports=Pe}),Ue=Object.getOwnPropertySymbols,qe=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable;var Ke=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var A=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==A.join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,A,o=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),r=1;r<arguments.length;r++){for(var i in n=Object(arguments[r]))qe.call(n,i)&&(o[i]=n[i]);if(Ue){A=Ue(n);for(var s=0;s<A.length;s++)Je.call(n,A[s])&&(o[A[s]]=n[A[s]])}}return o},Ge="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Re=function(){};if("production"!==process.env.NODE_ENV){var Fe=Ge,Le={},ze=Function.call.bind(Object.prototype.hasOwnProperty);Re=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}function We(e,t,n,A,o){if("production"!==process.env.NODE_ENV)for(var r in e)if(ze(e,r)){var i;try{if("function"!=typeof e[r]){var s=Error((A||"React class")+": "+n+" type `"+r+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[r]+"`.");throw s.name="Invariant Violation",s}i=e[r](t,r,A,n,null,Fe)}catch(e){i=e}if(!i||i instanceof Error||Re((A||"React class")+": type specification of "+n+" `"+r+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof i+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),i instanceof Error&&!(i.message in Le)){Le[i.message]=!0;var a=o?o():"";Re("Failed "+n+" type: "+i.message+(null!=a?a:""))}}}We.resetWarningCache=function(){"production"!==process.env.NODE_ENV&&(Le={})};var Ye=We,_e=Function.call.bind(Object.prototype.hasOwnProperty),He=function(){};function Xe(){return null}"production"!==process.env.NODE_ENV&&(He=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}});var $e=function(e,t){var n="function"==typeof Symbol&&Symbol.iterator;var A="<<anonymous>>",o={array:a("array"),bool:a("boolean"),func:a("function"),number:a("number"),object:a("object"),string:a("string"),symbol:a("symbol"),any:s(Xe),arrayOf:function(e){return s(function(t,n,A,o,r){if("function"!=typeof e)return new i("Property `"+r+"` of component `"+A+"` has invalid PropType notation inside arrayOf.");var s=t[n];if(!Array.isArray(s))return new i("Invalid "+o+" `"+r+"` of type `"+l(s)+"` supplied to `"+A+"`, expected an array.");for(var a=0;a<s.length;a++){var c=e(s,a,A,o,r+"["+a+"]",Ge);if(c instanceof Error)return c}return null})},element:s(function(t,n,A,o,r){var s=t[n];return e(s)?null:new i("Invalid "+o+" `"+r+"` of type `"+l(s)+"` supplied to `"+A+"`, expected a single ReactElement.")}),elementType:s(function(e,t,n,A,o){var r=e[t];return Oe.isValidElementType(r)?null:new i("Invalid "+A+" `"+o+"` of type `"+l(r)+"` supplied to `"+n+"`, expected a single ReactElement type.")}),instanceOf:function(e){return s(function(t,n,o,r,s){if(!(t[n]instanceof e)){var a=e.name||A;return new i("Invalid "+r+" `"+s+"` of type `"+(((c=t[n]).constructor&&c.constructor.name?c.constructor.name:A)+"` supplied to `")+o+"`, expected instance of `"+a+"`.")}var c;return null})},node:s(function(e,t,n,A,o){return c(e[t])?null:new i("Invalid "+A+" `"+o+"` supplied to `"+n+"`, expected a ReactNode.")}),objectOf:function(e){return s(function(t,n,A,o,r){if("function"!=typeof e)return new i("Property `"+r+"` of component `"+A+"` has invalid PropType notation inside objectOf.");var s=t[n],a=l(s);if("object"!==a)return new i("Invalid "+o+" `"+r+"` of type `"+a+"` supplied to `"+A+"`, expected an object.");for(var c in s)if(_e(s,c)){var u=e(s,c,A,o,r+"."+c,Ge);if(u instanceof Error)return u}return null})},oneOf:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&He(arguments.length>1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),Xe;return s(function(t,n,A,o,s){for(var a=t[n],c=0;c<e.length;c++)if(r(a,e[c]))return null;var l=JSON.stringify(e,function(e,t){return"symbol"===u(t)?String(t):t});return new i("Invalid "+o+" `"+s+"` of value `"+String(a)+"` supplied to `"+A+"`, expected one of "+l+".")})},oneOfType:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&He("Invalid argument supplied to oneOfType, expected an instance of array."),Xe;for(var t=0;t<e.length;t++){var n=e[t];if("function"!=typeof n)return He("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+h(n)+" at index "+t+"."),Xe}return s(function(t,n,A,o,r){for(var s=0;s<e.length;s++)if(null==(0,e[s])(t,n,A,o,r,Ge))return null;return new i("Invalid "+o+" `"+r+"` supplied to `"+A+"`.")})},shape:function(e){return s(function(t,n,A,o,r){var s=t[n],a=l(s);if("object"!==a)return new i("Invalid "+o+" `"+r+"` of type `"+a+"` supplied to `"+A+"`, expected `object`.");for(var c in e){var u=e[c];if(u){var h=u(s,c,A,o,r+"."+c,Ge);if(h)return h}}return null})},exact:function(e){return s(function(t,n,A,o,r){var s=t[n],a=l(s);if("object"!==a)return new i("Invalid "+o+" `"+r+"` of type `"+a+"` supplied to `"+A+"`, expected `object`.");var c=Ke({},t[n],e);for(var u in c){var h=e[u];if(!h)return new i("Invalid "+o+" `"+r+"` key `"+u+"` supplied to `"+A+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var p=h(s,u,A,o,r+"."+u,Ge);if(p)return p}return null})}};function r(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function i(e){this.message=e,this.stack=""}function s(e){if("production"!==process.env.NODE_ENV)var n={},o=0;function r(r,s,a,c,l,u,h){if(c=c||A,u=u||a,h!==Ge){if(t){var p=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw p.name="Invariant Violation",p}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var g=c+":"+a;!n[g]&&o<3&&(He("You are manually calling a React.PropTypes validation function for the `"+u+"` prop on `"+c+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),n[g]=!0,o++)}}return null==s[a]?r?null===s[a]?new i("The "+l+" `"+u+"` is marked as required in `"+c+"`, but its value is `null`."):new i("The "+l+" `"+u+"` is marked as required in `"+c+"`, but its value is `undefined`."):null:e(s,a,c,l,u)}var s=r.bind(null,!1);return s.isRequired=r.bind(null,!0),s}function a(e){return s(function(t,n,A,o,r,s){var a=t[n];return l(a)!==e?new i("Invalid "+o+" `"+r+"` of type `"+u(a)+"` supplied to `"+A+"`, expected `"+e+"`."):null})}function c(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(c);if(null===t||e(t))return!0;var A=function(e){var t=e&&(n&&e[n]||e["@@iterator"]);if("function"==typeof t)return t}(t);if(!A)return!1;var o,r=A.call(t);if(A!==t.entries){for(;!(o=r.next()).done;)if(!c(o.value))return!1}else for(;!(o=r.next()).done;){var i=o.value;if(i&&!c(i[1]))return!1}return!0;default:return!1}}function l(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}(t,e)?"symbol":t}function u(e){if(null==e)return""+e;var t=l(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function h(e){var t=u(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return i.prototype=Error.prototype,o.checkPropTypes=Ye,o.resetWarningCache=Ye.resetWarningCache,o.PropTypes=o,o};function et(){}function tt(){}tt.resetWarningCache=et;var nt=l(function(e){if("production"!==process.env.NODE_ENV){var t=Oe;e.exports=$e(t.isElement,!0)}else e.exports=function(){function e(e,t,n,A,o,r){if(r!==Ge){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:tt,resetWarningCache:et};return n.PropTypes=n,n}()});const At=["white","black"],ot=["a","b","c","d","e","f","g","h"],rt=["1","2","3","4","5","6","7","8"],it=[...rt].reverse(),st=Array.prototype.concat(...ot.map(e=>rt.map(t=>e+t))),at=e=>st[8*e[0]+e[1]],ct=e=>[e.charCodeAt(0)-97,e.charCodeAt(1)-49],lt=st.map(ct);const ut=()=>{let e;return{start(){e=performance.now()},cancel(){e=void 0},stop(){if(!e)return 0;const t=performance.now()-e;return e=void 0,t}}},ht=e=>"white"===e?"black":"white",pt=(e,t)=>{const n=e[0]-t[0],A=e[1]-t[1];return n*n+A*A},gt=(e,t)=>e.role===t.role&&e.color===t.color,dt=(e,t,n,A)=>[(t?e[0]:7-e[0])*n,(t?7-e[1]:e[1])*A],mt=e=>{const t=e.width/8,n=e.height/8;return(e,A)=>dt(e,A,t,n)},ft=(e,t)=>dt(e,t,100,100),bt=(e,t)=>{e.style.transform=`translate(${t[0]}px,${t[1]}px)`},yt=(e,t)=>{e.style.transform=`translate(${t[0]}%,${t[1]}%)`},It=(e,t)=>{e.style.visibility=t?"visible":"hidden"},kt=e=>{var t;return e.clientX||0===e.clientX?[e.clientX,e.clientY]:(null===(t=e.targetTouches)||void 0===t?void 0:t[0])?[e.targetTouches[0].clientX,e.targetTouches[0].clientY]:void 0},wt=e=>2===e.buttons||2===e.button,Ct=(e,t)=>{const n=document.createElement(e);return t&&(n.className=t),n};function vt(e,t,n){const A=ct(e);return t||(A[0]=7-A[0],A[1]=7-A[1]),[n.left+n.width*A[0]/8+n.width/16,n.top+n.height*(7-A[1])/8+n.height/16]}function St(e,t){return Math.abs(e-t)}const Et=(e,t,n,A)=>{const o=St(e,n),r=St(t,A);return 1===o&&2===r||2===o&&1===r},xt=(e,t,n,A)=>St(e,n)===St(t,A),Vt=(e,t,n,A)=>e===n||t===A,Nt=(e,t,n,A)=>xt(e,t,n,A)||Vt(e,t,n,A);function Mt(e,t,n){const A=e.get(t);if(!A)return[];const o=ct(t),r=A.role,i="pawn"===r?(s=A.color,(e,t,n,A)=>St(e,n)<2&&("white"===s?A===t+1||t<=1&&A===t+2&&e===n:A===t-1||t>=6&&A===t-2&&e===n)):"knight"===r?Et:"bishop"===r?xt:"rook"===r?Vt:"queen"===r?Nt:function(e,t,n){return(A,o,r,i)=>St(A,r)<2&&St(o,i)<2||n&&o===i&&o===("white"===e?0:7)&&(4===A&&(2===r&&t.includes(0)||6===r&&t.includes(7))||t.includes(r))}(A.color,function(e,t){const n="white"===t?"1":"8",A=[];for(const[o,r]of e)o[1]===n&&r.color===t&&"rook"===r.role&&A.push(ct(o)[0]);return A}(e,A.color),n);var s;return lt.filter(e=>(o[0]!==e[0]||o[1]!==e[1])&&i(o[0],o[1],e[0],e[1])).map(at)}function Bt(e,...t){e&&setTimeout(()=>e(...t),1)}function jt(e){e.premovable.current&&(e.premovable.current=void 0,Bt(e.premovable.events.unset))}function Dt(e){const t=e.predroppable;t.current&&(t.current=void 0,Bt(t.events.unset))}function Tt(e,t,n){const A=e.pieces.get(t),o=e.pieces.get(n);if(t===n||!A)return!1;const r=o&&o.color!==A.color?o:void 0;return n===e.selected&&Jt(e),Bt(e.events.move,t,n,r),function(e,t,n){if(!e.autoCastle)return!1;const A=e.pieces.get(t);if(!A||"king"!==A.role)return!1;const o=ct(t),r=ct(n);if(0!==o[1]&&7!==o[1]||o[1]!==r[1])return!1;4!==o[0]||e.pieces.has(n)||(6===r[0]?n=at([7,r[1]]):2===r[0]&&(n=at([0,r[1]])));const i=e.pieces.get(n);return!(!i||i.color!==A.color||"rook"!==i.role||(e.pieces.delete(t),e.pieces.delete(n),o[0]<r[0]?(e.pieces.set(at([6,r[1]]),A),e.pieces.set(at([5,r[1]]),i)):(e.pieces.set(at([2,r[1]]),A),e.pieces.set(at([3,r[1]]),i)),0))}(e,t,n)||(e.pieces.set(n,A),e.pieces.delete(t)),e.lastMove=[t,n],e.check=void 0,Bt(e.events.change),r||!0}function Qt(e,t,n,A){if(e.pieces.has(n)){if(!A)return!1;e.pieces.delete(n)}return Bt(e.events.dropNewPiece,t,n),e.pieces.set(n,t),e.lastMove=[n],e.check=void 0,Bt(e.events.change),e.movable.dests=void 0,e.turnColor=ht(e.turnColor),!0}function Zt(e,t,n){const A=Tt(e,t,n);return A&&(e.movable.dests=void 0,e.turnColor=ht(e.turnColor),e.animation.current=void 0),A}function Pt(e,t,n){if(Gt(e,t,n)){const A=Zt(e,t,n);if(A){const o=e.hold.stop();Jt(e);const r={premove:!1,ctrlKey:e.stats.ctrlKey,holdTime:o};return!0!==A&&(r.captured=A),Bt(e.movable.events.after,t,n,r),!0}}else if(function(e,t,n){return t!==n&&Rt(e,t)&&Mt(e.pieces,t,e.premovable.castle).includes(n)}(e,t,n))return function(e,t,n,A){Dt(e),e.premovable.current=[t,n],Bt(e.premovable.events.set,t,n,A)}(e,t,n,{ctrlKey:e.stats.ctrlKey}),Jt(e),!0;return Jt(e),!1}function Ot(e,t,n,A){const o=e.pieces.get(t);o&&(function(e,t,n){const A=e.pieces.get(t);return!(!A||t!==n&&e.pieces.has(n)||"both"!==e.movable.color&&(e.movable.color!==A.color||e.turnColor!==A.color))}(e,t,n)||A)?(e.pieces.delete(t),Qt(e,o,n,A),Bt(e.movable.events.afterNewPiece,o.role,n,{premove:!1,predrop:!1})):o&&function(e,t,n){const A=e.pieces.get(t),o=e.pieces.get(n);return!!A&&(!o||o.color!==e.movable.color)&&e.predroppable.enabled&&("pawn"!==A.role||"1"!==n[1]&&"8"!==n[1])&&e.movable.color===A.color&&e.turnColor!==A.color}(e,t,n)?function(e,t,n){jt(e),e.predroppable.current={role:t,key:n},Bt(e.predroppable.events.set,t,n)}(e,o.role,n):(jt(e),Dt(e)),e.pieces.delete(t),Jt(e)}function Ut(e,t,n){if(Bt(e.events.select,t),e.selected){if(e.selected===t&&!e.draggable.enabled)return Jt(e),void e.hold.cancel();if((e.selectable.enabled||n)&&e.selected!==t&&Pt(e,e.selected,t))return void(e.stats.dragged=!1)}(Kt(e,t)||Rt(e,t))&&(qt(e,t),e.hold.start())}function qt(e,t){e.selected=t,Rt(e,t)?e.premovable.dests=Mt(e.pieces,t,e.premovable.castle):e.premovable.dests=void 0}function Jt(e){e.selected=void 0,e.premovable.dests=void 0,e.hold.cancel()}function Kt(e,t){const n=e.pieces.get(t);return!!n&&("both"===e.movable.color||e.movable.color===n.color&&e.turnColor===n.color)}function Gt(e,t,n){var A,o;return t!==n&&Kt(e,t)&&(e.movable.free||!!(null===(o=null===(A=e.movable.dests)||void 0===A?void 0:A.get(t))||void 0===o?void 0:o.includes(n)))}function Rt(e,t){const n=e.pieces.get(t);return!!n&&e.premovable.enabled&&e.movable.color===n.color&&e.turnColor!==n.color}function Ft(e){const t=e.premovable.current;if(!t)return!1;const n=t[0],A=t[1];let o=!1;if(Gt(e,n,A)){const t=Zt(e,n,A);if(t){const r={premove:!0};!0!==t&&(r.captured=t),Bt(e.movable.events.after,n,A,r),o=!0}}return jt(e),o}function Lt(e){jt(e),Dt(e),Jt(e)}function zt(e){e.movable.color=e.movable.dests=e.animation.current=void 0,Lt(e)}function Wt(e,t,n){let A=Math.floor(8*(e[0]-n.left)/n.width);t||(A=7-A);let o=7-Math.floor(8*(e[1]-n.top)/n.height);return t||(o=7-o),A>=0&&A<8&&o>=0&&o<8?at([A,o]):void 0}function Yt(e){return"white"===e.orientation}const _t="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",Ht={p:"pawn",r:"rook",n:"knight",b:"bishop",q:"queen",k:"king"},Xt={pawn:"p",rook:"r",knight:"n",bishop:"b",queen:"q",king:"k"};function $t(e){"start"===e&&(e=_t);const t=new Map;let n=7,A=0;for(const o of e)switch(o){case" ":return t;case"/":if(--n,n<0)return t;A=0;break;case"~":{const e=t.get(at([A,n]));e&&(e.promoted=!0);break}default:{const e=o.charCodeAt(0);if(e<57)A+=e-48;else{const e=o.toLowerCase();t.set(at([A,n]),{role:Ht[e],color:o===e?"black":"white"}),++A}}}return t}function en(e,t){var n,A;if((null===(n=t.movable)||void 0===n?void 0:n.dests)&&(e.movable.dests=void 0),(null===(A=t.drawable)||void 0===A?void 0:A.autoShapes)&&(e.drawable.autoShapes=[]),tn(e,t),t.fen&&(e.pieces=$t(t.fen),e.drawable.shapes=[]),"check"in t&&function(e,t){if(e.check=void 0,!0===t&&(t=e.turnColor),t)for(const[n,A]of e.pieces)"king"===A.role&&A.color===t&&(e.check=n)}(e,t.check||!1),"lastMove"in t&&!t.lastMove?e.lastMove=void 0:t.lastMove&&(e.lastMove=t.lastMove),e.selected&&qt(e,e.selected),(!e.animation.duration||e.animation.duration<100)&&(e.animation.enabled=!1),!e.movable.rookCastle&&e.movable.dests){const t="white"===e.movable.color?"1":"8",n="e"+t,A=e.movable.dests.get(n),o=e.pieces.get(n);if(!A||!o||"king"!==o.role)return;e.movable.dests.set(n,A.filter(e=>!(e==="a"+t&&A.includes("c"+t)||e==="h"+t&&A.includes("g"+t))))}}function tn(e,t){for(const n in t)nn(e[n])&&nn(t[n])?tn(e[n],t[n]):e[n]=t[n]}function nn(e){return"object"==typeof e}function An(e,t){return t.animation.enabled?function(e,t){const n=new Map(t.pieces),A=e(t),o=function(e,t){const n=new Map,A=[],o=new Map,r=[],i=[],s=new Map;let a,c,l;for(const[t,n]of e)s.set(t,rn(t,n));for(const e of st)a=t.pieces.get(e),c=s.get(e),a?c?gt(a,c.piece)||(r.push(c),i.push(rn(e,a))):i.push(rn(e,a)):c&&r.push(c);for(const e of i)c=sn(e,r.filter(t=>gt(e.piece,t.piece))),c&&(l=[c.pos[0]-e.pos[0],c.pos[1]-e.pos[1]],n.set(e.key,l.concat(l)),A.push(c.key));for(const e of r)A.includes(e.key)||o.set(e.key,e.piece);return{anims:n,fadings:o}}(n,t);if(o.anims.size||o.fadings.size){const e=t.animation.current&&t.animation.current.start;t.animation.current={start:performance.now(),frequency:1/t.animation.duration,plan:o},e||an(t,performance.now())}else t.dom.redraw();return A}(e,t):on(e,t)}function on(e,t){const n=e(t);return t.dom.redraw(),n}function rn(e,t){return{key:e,pos:ct(e),piece:t}}function sn(e,t){return t.sort((t,n)=>pt(e.pos,t.pos)-pt(e.pos,n.pos))[0]}function an(e,t){const n=e.animation.current;if(void 0===n)return void(e.dom.destroyed||e.dom.redrawNow());const A=1-(t-n.start)*n.frequency;if(A<=0)e.animation.current=void 0,e.dom.redrawNow();else{const t=function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1}(A);for(const e of n.plan.anims.values())e[2]=e[0]*t,e[3]=e[1]*t;e.dom.redrawNow(!0),requestAnimationFrame((t=performance.now())=>an(e,t))}}const cn=["green","red","blue","yellow"];function ln(e,t){if(t.touches&&t.touches.length>1)return;t.stopPropagation(),t.preventDefault(),t.ctrlKey?Jt(e):Lt(e);const n=kt(t),A=Wt(n,Yt(e),e.dom.bounds());A&&(e.drawable.current={orig:A,pos:n,brush:dn(t),snapToValidMove:e.drawable.defaultSnapToValidMove},un(e))}function un(e){requestAnimationFrame(()=>{const t=e.drawable.current;if(t){const n=Wt(t.pos,Yt(e),e.dom.bounds());n||(t.snapToValidMove=!1);const A=t.snapToValidMove?function(e,t,n,A){const o=ct(e),r=lt.filter(e=>Nt(o[0],o[1],e[0],e[1])||Et(o[0],o[1],e[0],e[1])),i=r.map(e=>vt(at(e),n,A)).map(e=>pt(t,e)),[,s]=i.reduce((e,t,n)=>e[0]<t?e:[t,n],[i[0],0]);return at(r[s])}(t.orig,t.pos,Yt(e),e.dom.bounds()):n;A!==t.mouseSq&&(t.mouseSq=A,t.dest=A!==t.orig?A:void 0,e.dom.redrawNow()),un(e)}})}function hn(e,t){e.drawable.current&&(e.drawable.current.pos=kt(t))}function pn(e){const t=e.drawable.current;t&&(t.mouseSq&&function(e,t){const n=e=>e.orig===t.orig&&e.dest===t.dest,A=e.shapes.find(n);A&&(e.shapes=e.shapes.filter(e=>!n(e)));A&&A.brush===t.brush||e.shapes.push(t);mn(e)}(e.drawable,t),gn(e))}function gn(e){e.drawable.current&&(e.drawable.current=void 0,e.dom.redraw())}function dn(e){var t;const n=(e.shiftKey||e.ctrlKey)&&wt(e),A=e.altKey||e.metaKey||(null===(t=e.getModifierState)||void 0===t?void 0:t.call(e,"AltGraph"));return cn[(n?1:0)+(A?2:0)]}function mn(e){e.onChange&&e.onChange(e.shapes)}function fn(e,t){if(!t.isTrusted||void 0!==t.button&&0!==t.button)return;if(t.touches&&t.touches.length>1)return;const n=e.dom.bounds(),A=kt(t),o=Wt(A,Yt(e),n);if(!o)return;const r=e.pieces.get(o),i=e.selected;i||!e.drawable.enabled||!e.drawable.eraseOnClick&&r&&r.color===e.turnColor||function(e){e.drawable.shapes.length&&(e.drawable.shapes=[],e.dom.redraw(),mn(e.drawable))}(e),!1===t.cancelable||t.touches&&e.movable.color&&!r&&!i&&!function(e,t){const n=Yt(e),A=e.dom.bounds(),o=Math.pow(A.width/8,2);for(const r in e.pieces){const e=vt(r,n,A);if(pt(e,t)<=o)return!0}return!1}(e,A)||t.preventDefault();const s=!!e.premovable.current,a=!!e.predroppable.current;e.stats.ctrlKey=t.ctrlKey,e.selected&&Gt(e,e.selected,o)?An(e=>Ut(e,o),e):Ut(e,o);const c=e.selected===o,l=Cn(e,o);if(r&&l&&c&&function(e,t){const n=e.pieces.get(t);return!!n&&e.draggable.enabled&&("both"===e.movable.color||e.movable.color===n.color&&(e.turnColor===n.color||e.premovable.enabled))}(e,o)){e.draggable.current={orig:o,piece:r,origPos:A,pos:A,started:e.draggable.autoDistance&&e.stats.dragged,element:l,previouslySelected:i,originTarget:t.target},l.cgDragging=!0,l.classList.add("dragging");const s=e.dom.elements.ghost;s&&(s.className=`ghost ${r.color} ${r.role}`,bt(s,mt(n)(ct(o),Yt(e))),It(s,!0)),bn(e)}else s&&jt(e),a&&Dt(e);e.dom.redraw()}function bn(e){requestAnimationFrame(()=>{var t;const n=e.draggable.current;if(!n)return;(null===(t=e.animation.current)||void 0===t?void 0:t.plan.anims.has(n.orig))&&(e.animation.current=void 0);const A=e.pieces.get(n.orig);if(A&&gt(A,n.piece)){if(!n.started&&pt(n.pos,n.origPos)>=Math.pow(e.draggable.distance,2)&&(n.started=!0),n.started){if("function"==typeof n.element){const e=n.element();if(!e)return;e.cgDragging=!0,e.classList.add("dragging"),n.element=e}const t=e.dom.bounds();bt(n.element,[n.pos[0]-t.left-t.width/16,n.pos[1]-t.top-t.height/16])}}else kn(e);bn(e)})}function yn(e,t){e.draggable.current&&(!t.touches||t.touches.length<2)&&(e.draggable.current.pos=kt(t))}function In(e,t){const n=e.draggable.current;if(!n)return;if("touchend"===t.type&&!1!==t.cancelable&&t.preventDefault(),"touchend"===t.type&&n.originTarget!==t.target&&!n.newPiece)return void(e.draggable.current=void 0);jt(e),Dt(e);const A=Wt(kt(t)||n.pos,Yt(e),e.dom.bounds());A&&n.started&&n.orig!==A?n.newPiece?Ot(e,n.orig,A,n.force):(e.stats.ctrlKey=t.ctrlKey,Pt(e,n.orig,A)&&(e.stats.dragged=!0)):n.newPiece?e.pieces.delete(n.orig):e.draggable.deleteOnDropOff&&!A&&(e.pieces.delete(n.orig),Bt(e.events.change)),(n.orig!==n.previouslySelected||n.orig!==A&&A)&&e.selectable.enabled||Jt(e),wn(e),e.draggable.current=void 0,e.dom.redraw()}function kn(e){const t=e.draggable.current;t&&(t.newPiece&&e.pieces.delete(t.orig),e.draggable.current=void 0,Jt(e),wn(e),e.dom.redraw())}function wn(e){const t=e.dom.elements;t.ghost&&It(t.ghost,!1)}function Cn(e,t){let n=e.dom.elements.board.firstChild;for(;n;){if(n.cgKey===t&&"PIECE"===n.tagName)return n;n=n.nextSibling}}function vn(e,t){e.exploding&&(t?e.exploding.stage=t:e.exploding=void 0,e.dom.redraw())}function Sn(e,t){function n(){!function(e){e.orientation=ht(e.orientation),e.animation.current=e.draggable.current=e.selected=void 0}(e),t()}return{set(t){t.orientation&&t.orientation!==e.orientation&&n(),(t.fen?An:on)(e=>en(e,t),e)},state:e,getFen:()=>{return t=e.pieces,it.map(e=>ot.map(n=>{const A=t.get(n+e);if(A){const e=Xt[A.role];return"white"===A.color?e.toUpperCase():e}return"1"}).join("")).join("/").replace(/1{2,}/g,e=>e.length.toString());var t},toggleOrientation:n,setPieces(t){An(e=>function(e,t){for(const[n,A]of t)A?e.pieces.set(n,A):e.pieces.delete(n)}(e,t),e)},selectSquare(t,n){t?An(e=>Ut(e,t,n),e):e.selected&&(Jt(e),e.dom.redraw())},move(t,n){An(e=>Tt(e,t,n),e)},newPiece(t,n){An(e=>Qt(e,t,n),e)},playPremove(){if(e.premovable.current){if(An(Ft,e))return!0;e.dom.redraw()}return!1},playPredrop(t){if(e.predroppable.current){const n=function(e,t){const n=e.predroppable.current;let A=!1;if(!n)return!1;t(n)&&Qt(e,{role:n.role,color:e.movable.color},n.key)&&(Bt(e.movable.events.afterNewPiece,n.role,n.key,{premove:!1,predrop:!0}),A=!0);return Dt(e),A}(e,t);return e.dom.redraw(),n}return!1},cancelPremove(){on(jt,e)},cancelPredrop(){on(Dt,e)},cancelMove(){on(e=>{Lt(e),kn(e)},e)},stop(){on(e=>{zt(e),kn(e)},e)},explode(t){!function(e,t){e.exploding={stage:1,keys:t},e.dom.redraw(),setTimeout(()=>{vn(e,2),setTimeout(()=>vn(e,void 0),120)},120)}(e,t)},setAutoShapes(t){on(e=>e.drawable.autoShapes=t,e)},setShapes(t){on(e=>e.drawable.shapes=t,e)},getKeyAtDomPos:t=>Wt(t,Yt(e),e.dom.bounds()),redrawAll:t,dragNewPiece(t,n,A){!function(e,t,n,A){const o="a0";e.pieces.set(o,t),e.dom.redraw();const r=kt(n);e.draggable.current={orig:o,piece:t,origPos:r,pos:r,started:!0,element:()=>Cn(e,o),originTarget:n.target,newPiece:!0,force:!!A},bn(e)}(e,t,n,A)},destroy(){zt(e),e.dom.unbind&&e.dom.unbind(),e.dom.destroyed=!0}}}function En(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function xn(e,t,n){const A=e.drawable,o=A.current,r=o&&o.mouseSq?o:void 0,i=new Map,s=e.dom.bounds();for(const e of A.shapes.concat(A.autoShapes).concat(r?[r]:[]))e.dest&&i.set(e.dest,(i.get(e.dest)||0)+1);const a=A.shapes.concat(A.autoShapes).map(e=>({shape:e,current:!1,hash:Nn(e,i,!1,s)}));r&&a.push({shape:r,current:!0,hash:Nn(r,i,!0,s)});const c=a.map(e=>e.hash).join(";");if(c===e.drawable.prevSvgHash)return;e.drawable.prevSvgHash=c;const l=t.querySelector("defs"),u=t.querySelector("g"),h=n.querySelector("g");!function(e,t,n){const A=new Map;let o;for(const n of t)n.shape.dest&&(o=e.brushes[n.shape.brush],n.shape.modifiers&&(o=Pn(o,n.shape.modifiers)),A.set(o.key,o));const r=new Set;let i=n.firstChild;for(;i;)r.add(i.getAttribute("cgKey")),i=i.nextSibling;for(const[e,t]of A.entries())r.has(e)||n.appendChild(Tn(t))}(A,a,l),Vn(e,a.filter(e=>!e.shape.customSvg),A.brushes,i,u),Vn(e,a.filter(e=>e.shape.customSvg),A.brushes,i,h)}function Vn(e,t,n,A,o){const r=e.dom.bounds(),i=new Map,s=[];for(const e of t)i.set(e.hash,!1);let a,c=o.firstChild;for(;c;)a=c.getAttribute("cgHash"),i.has(a)?i.set(a,!0):s.push(c),c=c.nextSibling;for(const e of s)o.removeChild(e);for(const s of t)i.get(s.hash)||o.appendChild(Dn(e,s,n,A,r))}function Nn({orig:e,dest:t,brush:n,piece:A,modifiers:o,customSvg:r},i,s,a){return[a.width,a.height,s,e,t,n,t&&(i.get(t)||0)>1,A&&Mn(A),o&&Bn(o),r&&jn(r)].filter(e=>e).join(",")}function Mn(e){return[e.color,e.role,e.scale].filter(e=>e).join(",")}function Bn(e){return""+(e.lineWidth||"")}function jn(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)>>>0;return"custom-"+t.toString()}function Dn(e,{shape:t,current:n,hash:A},o,r,i){let s;if(t.customSvg){const n=Zn(ct(t.orig),e.orientation);s=function(e,t,n){const{width:A,height:o}=n,r=A/8,i=o/8,s=t[0]*r,a=(7-t[1])*i,c=Qn(En("g"),{transform:`translate(${s},${a})`}),l=Qn(En("svg"),{width:r,height:i,viewBox:"0 0 100 100"});return c.appendChild(l),l.innerHTML=e,c}(t.customSvg,n,i)}else if(t.piece)s=function(e,t,n,A){const o=qn(t,A),r=A.width/8*(n.scale||1),i=n.color[0]+("knight"===n.role?"n":n.role[0]).toUpperCase();return Qn(En("image"),{className:`${n.role} ${n.color}`,x:o[0]-r/2,y:o[1]-r/2,width:r,height:r,href:e+i+".svg"})}(e.drawable.pieces.baseUrl,Zn(ct(t.orig),e.orientation),t.piece,i);else{const A=Zn(ct(t.orig),e.orientation);if(t.dest){let a=o[t.brush];t.modifiers&&(a=Pn(a,t.modifiers)),s=function(e,t,n,A,o,r){const i=function(e,t){return(t?20:10)/512*e.width}(r,o&&!A),s=qn(t,r),a=qn(n,r),c=a[0]-s[0],l=a[1]-s[1],u=Math.atan2(l,c),h=Math.cos(u)*i,p=Math.sin(u)*i;return Qn(En("line"),{stroke:e.color,"stroke-width":On(e,A,r),"stroke-linecap":"round","marker-end":"url(#arrowhead-"+e.key+")",opacity:Un(e,A),x1:s[0],y1:s[1],x2:a[0]-h,y2:a[1]-p})}(a,A,Zn(ct(t.dest),e.orientation),n,(r.get(t.dest)||0)>1,i)}else s=function(e,t,n,A){const o=qn(t,A),r=function(e){const t=e.width/512;return[3*t,4*t]}(A),i=(A.width+A.height)/32;return Qn(En("circle"),{stroke:e.color,"stroke-width":r[n?0:1],fill:"none",opacity:Un(e,n),cx:o[0],cy:o[1],r:i-r[1]/2})}(o[t.brush],A,n,i)}return s.setAttribute("cgHash",A),s}function Tn(e){const t=Qn(En("marker"),{id:"arrowhead-"+e.key,orient:"auto",markerWidth:4,markerHeight:8,refX:2.05,refY:2.01});return t.appendChild(Qn(En("path"),{d:"M0,0 V4 L3,2 Z",fill:e.color})),t.setAttribute("cgKey",e.key),t}function Qn(e,t){for(const n in t)e.setAttribute(n,t[n]);return e}function Zn(e,t){return"white"===t?e:[7-e[0],7-e[1]]}function Pn(e,t){return{color:e.color,opacity:Math.round(10*e.opacity)/10,lineWidth:Math.round(t.lineWidth||e.lineWidth),key:[e.key,t.lineWidth].filter(e=>e).join("")}}function On(e,t,n){return(e.lineWidth||10)*(t?.85:1)/512*n.width}function Un(e,t){return(e.opacity||1)*(t?.9:1)}function qn(e,t){return[(e[0]+.5)*t.width/8,(7.5-e[1])*t.height/8]}function Jn(e,t){const n=Ct("coords",t);let A;for(const t of e)A=Ct("coord"),A.textContent=t,n.appendChild(A);return n}function Kn(e,t){const n=e.dom.elements.board;if(!e.dom.relative&&e.resizable&&"ResizeObserver"in window){new window.ResizeObserver(t).observe(n)}if(e.viewOnly)return;const A=function(e){return t=>{e.draggable.current?kn(e):e.drawable.current?gn(e):t.shiftKey||wt(t)?e.drawable.enabled&&ln(e,t):e.viewOnly||(e.dropmode.active?function(e,t){if(!e.dropmode.active)return;jt(e),Dt(e);const n=e.dropmode.piece;if(n){e.pieces.set("a0",n);const A=kt(t),o=A&&Wt(A,Yt(e),e.dom.bounds());o&&Ot(e,"a0",o)}e.dom.redraw()}(e,t):fn(e,t))}}(e);n.addEventListener("touchstart",A,{passive:!1}),n.addEventListener("mousedown",A,{passive:!1}),(e.disableContextMenu||e.drawable.enabled)&&n.addEventListener("contextmenu",e=>e.preventDefault())}function Gn(e,t,n,A){return e.addEventListener(t,n,A),()=>e.removeEventListener(t,n,A)}function Rn(e,t,n){return A=>{e.drawable.current?e.drawable.enabled&&n(e,A):e.viewOnly||t(e,A)}}function Fn(e){const t=Yt(e),n=e.dom.relative?ft:mt(e.dom.bounds()),A=e.dom.relative?yt:bt,o=e.dom.elements.board,r=e.pieces,i=e.animation.current,s=i?i.plan.anims:new Map,a=i?i.plan.fadings:new Map,c=e.draggable.current,l=function(e){var t;const n=new Map;if(e.lastMove&&e.highlight.lastMove)for(const t of e.lastMove)Hn(n,t,"last-move");e.check&&e.highlight.check&&Hn(n,e.check,"check");if(e.selected&&(Hn(n,e.selected,"selected"),e.movable.showDests)){const A=null===(t=e.movable.dests)||void 0===t?void 0:t.get(e.selected);if(A)for(const t of A)Hn(n,t,"move-dest"+(e.pieces.has(t)?" oc":""));const o=e.premovable.dests;if(o)for(const t of o)Hn(n,t,"premove-dest"+(e.pieces.has(t)?" oc":""))}const A=e.premovable.current;if(A)for(const e of A)Hn(n,e,"current-premove");else e.predroppable.current&&Hn(n,e.predroppable.current.key,"current-premove");const o=e.exploding;if(o)for(const e of o.keys)Hn(n,e,"exploding"+o.stage);return n}(e),u=new Set,h=new Set,p=new Map,g=new Map;let d,m,f,b,y,I,k,w,C,v;for(m=o.firstChild;m;){if(d=m.cgKey,Ln(m))if(f=r.get(d),y=s.get(d),I=a.get(d),b=m.cgPiece,!m.cgDragging||c&&c.orig===d||(m.classList.remove("dragging"),A(m,n(ct(d),t)),m.cgDragging=!1),!I&&m.cgFading&&(m.cgFading=!1,m.classList.remove("fading")),f){if(y&&m.cgAnimating&&b===_n(f)){const e=ct(d);e[0]+=y[2],e[1]+=y[3],m.classList.add("anim"),A(m,n(e,t))}else m.cgAnimating&&(m.cgAnimating=!1,m.classList.remove("anim"),A(m,n(ct(d),t)),e.addPieceZIndex&&(m.style.zIndex=Yn(ct(d),t)));b!==_n(f)||I&&m.cgFading?I&&b===_n(I)?(m.classList.add("fading"),m.cgFading=!0):Xn(p,b,m):u.add(d)}else Xn(p,b,m);else if(zn(m)){const e=m.className;l.get(d)===e?h.add(d):Xn(g,e,m)}m=m.nextSibling}for(const[e,r]of l)if(!h.has(e)){C=g.get(r),v=C&&C.pop();const i=n(ct(e),t);if(v)v.cgKey=e,A(v,i);else{const t=Ct("square",r);t.cgKey=e,A(t,i),o.insertBefore(t,o.firstChild)}}for(const[i,a]of r)if(y=s.get(i),!u.has(i))if(k=p.get(_n(a)),w=k&&k.pop(),w){w.cgKey=i,w.cgFading&&(w.classList.remove("fading"),w.cgFading=!1);const o=ct(i);e.addPieceZIndex&&(w.style.zIndex=Yn(o,t)),y&&(w.cgAnimating=!0,w.classList.add("anim"),o[0]+=y[2],o[1]+=y[3]),A(w,n(o,t))}else{const r=_n(a),s=Ct("piece",r),c=ct(i);s.cgPiece=r,s.cgKey=i,y&&(s.cgAnimating=!0,c[0]+=y[2],c[1]+=y[3]),A(s,n(c,t)),e.addPieceZIndex&&(s.style.zIndex=Yn(c,t)),o.appendChild(s)}for(const t of p.values())Wn(e,t);for(const t of g.values())Wn(e,t)}function Ln(e){return"PIECE"===e.tagName}function zn(e){return"SQUARE"===e.tagName}function Wn(e,t){for(const n of t)e.dom.elements.board.removeChild(n)}function Yn(e,t){let n=2+8*e[1]+(7-e[0]);return t&&(n=67-n),n+""}function _n(e){return`${e.color} ${e.role}`}function Hn(e,t,n){const A=e.get(t);A?e.set(t,`${A} ${n}`):e.set(t,n)}function Xn(e,t,n){const A=e.get(t);A?A.push(n):e.set(t,[n])}function $n(e,t){const n={pieces:$t(_t),orientation:"white",turnColor:"white",coordinates:!0,autoCastle:!0,viewOnly:!1,disableContextMenu:!1,resizable:!0,addPieceZIndex:!1,pieceKey:!1,highlight:{lastMove:!0,check:!0},animation:{enabled:!0,duration:200},movable:{free:!0,color:"both",showDests:!0,events:{},rookCastle:!0},premovable:{enabled:!0,showDests:!0,castle:!0,events:{}},predroppable:{enabled:!1,events:{}},draggable:{enabled:!0,distance:3,autoDistance:!0,showGhost:!0,deleteOnDropOff:!1},dropmode:{active:!1},selectable:{enabled:!0},stats:{dragged:!("ontouchstart"in window)},events:{},drawable:{enabled:!0,visible:!0,defaultSnapToValidMove:!0,eraseOnClick:!0,shapes:[],autoShapes:[],brushes:{green:{key:"g",color:"#15781B",opacity:1,lineWidth:10},red:{key:"r",color:"#882020",opacity:1,lineWidth:10},blue:{key:"b",color:"#003088",opacity:1,lineWidth:10},yellow:{key:"y",color:"#e68f00",opacity:1,lineWidth:10},paleBlue:{key:"pb",color:"#003088",opacity:.4,lineWidth:15},paleGreen:{key:"pg",color:"#15781B",opacity:.4,lineWidth:15},paleRed:{key:"pr",color:"#882020",opacity:.4,lineWidth:15},paleGrey:{key:"pgr",color:"#4a4a4a",opacity:.35,lineWidth:15}},pieces:{baseUrl:"https://lichess1.org/assets/piece/cburnett/"},prevSvgHash:""},hold:ut()};function A(){const t="dom"in n?n.dom.unbind:void 0,A=n.viewOnly&&!n.drawable.visible,o=function(e,t,n){e.innerHTML="",e.classList.add("cg-wrap");for(const n of At)e.classList.toggle("orientation-"+n,t.orientation===n);e.classList.toggle("manipulable",!t.viewOnly);const A=Ct("cg-helper");e.appendChild(A);const o=Ct("cg-container");A.appendChild(o);const r=Ct("cg-board");let i,s,a;if(o.appendChild(r),t.drawable.visible&&!n&&(i=Qn(En("svg"),{class:"cg-shapes"}),i.appendChild(En("defs")),i.appendChild(En("g")),s=Qn(En("svg"),{class:"cg-custom-svgs"}),s.appendChild(En("g")),o.appendChild(i),o.appendChild(s)),t.coordinates){const e="black"===t.orientation?" black":"";o.appendChild(Jn(rt,"ranks"+e)),o.appendChild(Jn(ot,"files"+e))}return t.draggable.showGhost&&!n&&(a=Ct("piece","ghost"),It(a,!1),o.appendChild(a)),{board:r,container:o,ghost:a,svg:i,customSvg:s}}(e,n,A),r=function(e){let t;const n=()=>(void 0===t&&(t=e()),t);return n.clear=()=>{t=void 0},n}(()=>o.board.getBoundingClientRect()),i=e=>{Fn(a),!e&&o.svg&&xn(a,o.svg,o.customSvg)},s=()=>{r.clear(),function(e){if(e.dom.relative)return;const t=Yt(e),n=mt(e.dom.bounds());let A=e.dom.elements.board.firstChild;for(;A;)(Ln(A)&&!A.cgAnimating||zn(A))&&bt(A,n(ct(A.cgKey),t)),A=A.nextSibling}(a),o.svg&&xn(a,o.svg,o.customSvg)},a=n;return a.dom={elements:o,bounds:r,redraw:eA(i),redrawNow:i,unbind:t,relative:A},a.drawable.prevSvgHash="",i(!1),Kn(a,s),t||(a.dom.unbind=function(e,t){const n=[];if(e.dom.relative||!e.resizable||"ResizeObserver"in window||n.push(Gn(document.body,"chessground.resize",t)),!e.viewOnly){const t=Rn(e,yn,hn),A=Rn(e,In,pn);for(const e of["touchmove","mousemove"])n.push(Gn(document,e,t));for(const e of["touchend","mouseup"])n.push(Gn(document,e,A));const o=()=>e.dom.bounds.clear();n.push(Gn(document,"scroll",o,{capture:!0,passive:!0})),n.push(Gn(window,"resize",o,{passive:!0}))}return()=>n.forEach(e=>e())}(a,s)),a.events.insert&&a.events.insert(o),a}return en(n,t||{}),Sn(A(),A)}function eA(e){let t=!1;return()=>{t||(t=!0,requestAnimationFrame(()=>{e(),t=!1}))}}class tA extends o.default.Component{buildConfigFromProps(e){const t={events:{}};return Object.keys(tA.types).forEach(n=>{const A=e[n];if(void 0!==A){const e=n.match(/^on([A-Z]\S*)/);e?t.events[e[1].toLowerCase()]=A:t[n]=A}}),t}componentDidMount(){this.board=$n(this.el,this.buildConfigFromProps(this.props)),this.board.setShapes(this.props.shapes||[])}componentDidUpdate(e){const t=this.buildConfigFromProps(this.props);this.props.fen===e.fen&&delete t.fen,this.board?this.board.set(t):this.board=$n(this.el,t),this.board.setShapes(this.props.shapes||[])}render(){const t={style:{...this.props.style}};return this.props.width&&(t.style.width=this.props.width),this.props.height&&(t.style.height=this.props.height),e.jsx("div",{ref:e=>this.el=e,...t})}}ge(tA,"types",{width:nt.oneOfType([nt.string,nt.number]),height:nt.oneOfType([nt.string,nt.number]),fen:nt.string,orientation:nt.string,turnColor:nt.string,check:nt.string,lastMove:nt.array,selected:nt.string,coordinates:nt.bool,autoCastle:nt.bool,viewOnly:nt.bool,disableContextMenu:nt.bool,resizable:nt.bool,addPieceZIndex:nt.bool,hightlight:nt.object,animation:nt.object,movable:nt.object,premovable:nt.object,predroppable:nt.object,draggable:nt.object,selectable:nt.object,onChange:nt.func,onMove:nt.func,onDropNewPiece:nt.func,onSelect:nt.func,items:nt.object,drawable:nt.object}),ge(tA,"defaultProps",{coordinates:!1,resizable:!0,hightlight:{lastMove:!0,check:!0}});const nA=e=>{try{new Audio(e).play()}catch{return()=>{}}},AA=e=>{if("silent"===e)return!1;switch(e){case"lisp":return nA("data:audio/ogg;base64,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");case"piano":return nA("data:audio/ogg;base64,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");case"sfx":return nA("data:audio/ogg;base64,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");default:return nA("data:audio/ogg;base64,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")}};var oA="object"==typeof global&&global&&global.Object===Object&&global,rA="object"==typeof self&&self&&self.Object===Object&&self,iA=oA||rA||Function("return this")(),sA=iA.Symbol,aA=Object.prototype,cA=aA.hasOwnProperty,lA=aA.toString,uA=sA?sA.toStringTag:void 0;var hA=Object.prototype.toString;var pA=sA?sA.toStringTag:void 0;function gA(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":pA&&pA in Object(e)?function(e){var t=cA.call(e,uA),n=e[uA];try{e[uA]=void 0;var A=!0}catch(e){}var o=lA.call(e);return A&&(t?e[uA]=n:delete e[uA]),o}(e):function(e){return hA.call(e)}(e)}function dA(e){return null!=e&&"object"==typeof e}var mA=Array.isArray;function fA(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function bA(e){if(!fA(e))return!1;var t=gA(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var yA,IA=iA["__core-js_shared__"],kA=(yA=/[^.]+$/.exec(IA&&IA.keys&&IA.keys.IE_PROTO||""))?"Symbol(src)_1."+yA:"";var wA=Function.prototype.toString;function CA(e){if(null!=e){try{return wA.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var vA=/^\[object .+?Constructor\]$/,SA=Function.prototype,EA=Object.prototype,xA=SA.toString,VA=EA.hasOwnProperty,NA=RegExp("^"+xA.call(VA).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function MA(e){return!(!fA(e)||(t=e,kA&&kA in t))&&(bA(e)?NA:vA).test(CA(e));var t}function BA(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return MA(n)?n:void 0}var jA=BA(iA,"WeakMap");function DA(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var TA=Object.prototype;function QA(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||TA)}function ZA(e){return dA(e)&&"[object Arguments]"==gA(e)}var PA=Object.prototype,OA=PA.hasOwnProperty,UA=PA.propertyIsEnumerable,qA=ZA(function(){return arguments}())?ZA:function(e){return dA(e)&&OA.call(e,"callee")&&!UA.call(e,"callee")};var JA="object"==typeof exports&&exports&&!exports.nodeType&&exports,KA=JA&&"object"==typeof module&&module&&!module.nodeType&&module,GA=KA&&KA.exports===JA?iA.Buffer:void 0,RA=(GA?GA.isBuffer:void 0)||function(){return!1},FA={};FA["[object Float32Array]"]=FA["[object Float64Array]"]=FA["[object Int8Array]"]=FA["[object Int16Array]"]=FA["[object Int32Array]"]=FA["[object Uint8Array]"]=FA["[object Uint8ClampedArray]"]=FA["[object Uint16Array]"]=FA["[object Uint32Array]"]=!0,FA["[object Arguments]"]=FA["[object Array]"]=FA["[object ArrayBuffer]"]=FA["[object Boolean]"]=FA["[object DataView]"]=FA["[object Date]"]=FA["[object Error]"]=FA["[object Function]"]=FA["[object Map]"]=FA["[object Number]"]=FA["[object Object]"]=FA["[object RegExp]"]=FA["[object Set]"]=FA["[object String]"]=FA["[object WeakMap]"]=!1;var LA,zA="object"==typeof exports&&exports&&!exports.nodeType&&exports,WA=zA&&"object"==typeof module&&module&&!module.nodeType&&module,YA=WA&&WA.exports===zA&&oA.process,_A=function(){try{var e=WA&&WA.require&&WA.require("util").types;return e||YA&&YA.binding&&YA.binding("util")}catch(e){}}(),HA=_A&&_A.isTypedArray,XA=HA?(LA=HA,function(e){return LA(e)}):function(e){return dA(e)&&DA(e.length)&&!!FA[gA(e)]};var $A=function(e,t){return function(n){return e(t(n))}}(Object.keys,Object),eo=$A,to=Object.prototype.hasOwnProperty;var no=BA(iA,"Map"),Ao=BA(iA,"DataView"),oo=BA(iA,"Promise"),ro=BA(iA,"Set"),io="[object Map]",so="[object Promise]",ao="[object Set]",co="[object WeakMap]",lo="[object DataView]",uo=CA(Ao),ho=CA(no),po=CA(oo),go=CA(ro),mo=CA(jA),fo=gA;(Ao&&fo(new Ao(new ArrayBuffer(1)))!=lo||no&&fo(new no)!=io||oo&&fo(oo.resolve())!=so||ro&&fo(new ro)!=ao||jA&&fo(new jA)!=co)&&(fo=function(e){var t=gA(e),n="[object Object]"==t?e.constructor:void 0,A=n?CA(n):"";if(A)switch(A){case uo:return lo;case ho:return io;case po:return so;case go:return ao;case mo:return co}return t});var bo=fo,yo=Object.prototype.hasOwnProperty;function Io(e){if(null==e)return!0;if(function(e){return null!=e&&DA(e.length)&&!bA(e)}(e)&&(mA(e)||"string"==typeof e||"function"==typeof e.splice||RA(e)||XA(e)||qA(e)))return!e.length;var t=bo(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(QA(e))return!function(e){if(!QA(e))return eo(e);var t=[];for(var n in Object(e))to.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e).length;for(var n in e)if(yo.call(e,n))return!1;return!0}const ko=e=>{const t={};e.orientation&&(t.orientation=e.orientation,"w"===t.orientation&&(t.orientation="white"),"b"===t.orientation&&(t.orientation="black"));const n=["shapes","onSelect","drawable","lastMove"];for(const A of n)void 0!==e[A]&&null!==e[A]&&("shapes"!==A&&"function"!=typeof e[A]&&"object"==typeof e[A]&&Io(e[A])||(t[A]=e[A]));return!1===e.drawable&&(t.drawable={enabled:!1}),t.shapes&&(t.shapes=(e=>{try{return e.forEach(e=>{e.dest=e.dest.replace(/\]/g,"")}),e}catch{return e}})(t.shapes)),e.editing&&(t.movable={free:!1},t.drawable={enabled:!1},t.selectable={enabled:!0}),e.viewOnly&&(t.viewOnly=!0,t.draggable=!1,t.movable={free:!1},t.drawable={enabled:!1},t.selectable={enabled:!1}),e.readOnly&&(t.draggable=!1,t.movable={free:!1},t.drawable={enabled:!1},t.selectable={enabled:!1},t.coordinates=!1),t};var wo=(e,t,n)=>{try{const A=e.get(t);return"p"===A.type&&("w"===A.color&&"8"===n[1]||"b"===A.color&&"1"===n[1])}catch{return!1}};const Co=e=>Ae(e)&&(e=>{if(!e)return!1;const t=e.split(" ")[0];return 1===(t.match(/k/g)||[]).length&&1===(t.match(/K/g)||[]).length})(e),vo=(e,t,n=!1)=>{if(!Co(e.fen()))return{free:!1};const A=new Map,o="w"===e.turn()?"white":"black";P.forEach(t=>{const n=e.moves({square:t,verbose:!0});n.length&&A.set(t,n.map(e=>e.to))});const r={color:o,dests:A,free:!1};return n&&t&&t!==o&&(r.color=t,r.dests=new Map),r};var So=l(function(e,t){e.exports=((e,t)=>(()=>{var n={494:()=>{},156:t=>{t.exports=e},111:e=>{e.exports=t}},A={};function o(e){var t=A[e];if(void 0!==t)return t.exports;var r=A[e]={exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{o.r(r),o.d(r,{default:()=>a});var e=o(156),t=o.n(e),n=o(111);function A(e){const{children:n,replace:A,bodyClass:o,header:r,footer:i,onDragStart:s,onDragEnd:a,onClose:c,closeButton:l,closeButtonPosition:u}=e;return A?n:t().createElement("div",{className:"panel panel-default "+("bottom"===u?"additional-row":"")},t().createElement("div",{className:"panel-heading",onTouchStart:s,onMouseDown:s,onTouchEnd:a,onMouseUp:a},r&&t().createElement("h3",{className:"panel-title"},r)),t().createElement("div",{className:o},n),i&&t().createElement("div",{className:"panel-footer"},i),t().createElement("div",{className:"close",onClick:c,style:{position:"header"===u?"absolute":"static",margin:"bottom"===u?"10px auto":""}},l))}A.defaultProps={closeButton:"×",closeButtonPosition:"header",replace:!1,draggable:!1};const i=A;function s(A){let o=Math.random().toString();const[r,s]=(0,e.useState)(!1),[a,c]=(0,e.useState)(null),[l,u]=(0,e.useState)(null),[h,p]=(0,e.useState)(0),[g,d]=(0,e.useState)(0),[m,f]=(0,e.useState)(0),[b,y]=(0,e.useState)(0),{isOpen:I,onClose:k}=A,w=(0,e.useCallback)(()=>{document.body.classList.remove("body-modal-fix")},[]);(0,e.useEffect)(()=>(I&&(document.addEventListener("keydown",C),document.activeElement instanceof HTMLElement&&document.activeElement.blur(),document.body.classList.add("body-modal-fix")),()=>{document.querySelector(".pure-modal")||(document.removeEventListener("keydown",C),w(),c(null),u(null),p(0),d(0),f(0),y(0))}),[I]);const C=(0,e.useCallback)(e=>{const t=document.querySelectorAll(".pure-modal"),n=t.length>1,A=t[t.length-1];return!(n&&!A.className.includes(o)||"Escape"!==e.key||!document.activeElement||(v(e),0))},[v,o]);if(!I)return null;function v(e){e&&(e.stopPropagation(),e.preventDefault()),null==k||k({isPassive:Boolean(e)})}function S(e){return e instanceof TouchEvent&&e.changedTouches.length>0?{pageX:e.changedTouches[0].pageX,pageY:e.changedTouches[0].pageY}:e instanceof MouseEvent?{pageX:e.pageX,pageY:e.pageY}:{pageX:0,pageY:0}}function E(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return x();e.preventDefault();const{pageX:t,pageY:n}=S(e);"number"==typeof a&&"number"==typeof l&&(p(t-a-m),d(n-l-b))}function x(){return s(!1)}const{children:V,replace:N=!1,className:M,header:B,footer:j,scrollable:D=!0,draggable:T=!1,width:Q,closeButton:Z,closeButtonPosition:P,portal:O=!1}=A;let U=["pure-modal-backdrop"],q=["pure-modal",o],J=["panel-body"];M&&(q=q.concat(M)),D?J=J.concat("scrollable"):(U=U.concat("scrollable"),q=q.concat("auto-height")),T&&(U=U.concat("backdrop-overflow-hidden"));const K=t().createElement("div",{className:U.join(" "),onMouseDown:function(e){if(e){if(!e.target.classList.contains("pure-modal-backdrop"))return;e.stopPropagation(),e.preventDefault()}v(e)},onTouchMove:r?E:void 0,onMouseMove:r?E:void 0},t().createElement("div",{className:q.join(" "),style:{transform:`translate(${h}px, ${g}px)`,transition:"none",width:Q}},t().createElement(i,{replace:N,header:B,footer:j,onDragStart:T?function(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return;e.preventDefault();const{pageX:t,pageY:n}=S(e),{top:A,left:o}=e.currentTarget.getBoundingClientRect();s(!0),c("number"==typeof a?a:o),u("number"==typeof l?l:A),f(t-o),y(n-A)}:void 0,onDragEnd:T?x:void 0,onClose:v,bodyClass:J.join(" "),closeButton:Z,closeButtonPosition:P},V)));return O?(0,n.createPortal)(K,document.body):K}o(494);const a=t().memo(s)})(),r})())(o.default,r.default)}),Eo=c(So);const xo=({role:t,color:n,highlighted:A,selectPiece:o})=>{const r="bin"===t;return e.jsx("div",{className:p("edit-square border border-gray-300 rounded",A&&"bg-orange-300"),children:e.jsx("piece",{className:p("spare-piece",t,n,r&&"next-trash"),onClick:()=>{"function"==typeof o&&o({role:t,color:n})}})})},Vo=({isOpen:t,hide:n,onPromote:A,color:o="white"})=>{const r=e=>{A(e),n()};return e.jsx(Eo,{closeButton:"",isOpen:t,children:e.jsxs("div",{className:"promote flex gap-2 py-1.5 justify-center",children:[e.jsx(xo,{color:o,role:"queen",selectPiece:()=>r("q")}),e.jsx(xo,{color:o,role:"rook",selectPiece:()=>r("r")}),e.jsx(xo,{color:o,role:"bishop",selectPiece:()=>r("b")}),e.jsx(xo,{color:o,role:"knight",selectPiece:()=>r("n")})]})})},No=(n,A)=>{const{theme:o}=he(),{isOpen:r,show:i,hide:s}=pe(),{chess:a,fen:c,turnColor:l,lastMove:u,orientation:h,promotion:g,onMove:d,onPromote:m,onUndo:f}=ue(n),b=async(e,t,A)=>{const r=A?.promotion||g;if(!d(e,t,r)){return wo(a,e,t)&&!r&&i(),!1}return o.playSounds&&AA(o.sounds),"function"==typeof n.onMove&&await n.onMove(a),!0},{onSetPremove:y,onUnsetPremove:I,onPlayPremove:k,onCancelPremove:w,onPremovePromotion:C}=(e=>{const n=t.useRef(null),A=t.useCallback((e,t,A)=>{n.current={orig:e,dest:t,promotion:A?.promotion||null}},[]),o=t.useCallback(()=>{n.current=null},[]),r=t.useCallback(()=>"q",[]);return{onSetPremove:A,onUnsetPremove:o,onPlayPremove:t.useCallback(async()=>{if(n.current){const{orig:t,dest:A,promotion:o}=n.current,r={orig:t,dest:A,promotion:o};n.current=null;const i={promotion:r.promotion||"q"};return await e(r.orig,r.dest,i)}return!1},[e]),onCancelPremove:t.useCallback(()=>!!n.current&&(n.current=null,!0),[]),onPremovePromotion:r}})(b),v=t.useRef(),S=async(e,t,n)=>{if(n){const A={promotion:n};return await b(e,t,A)}return await b(e,t)},E=async()=>(v.current?.board&&v.current.board.cancelPremove(),await k());t.useImperativeHandle(A,()=>({board:v.current?.board,chess:a,undo:f,move:S,playPremove:E,cancelPremove:w}));t.useEffect(()=>{"function"==typeof n.setPromoting&&n.setPromoting(r)},[r]),t.useEffect(()=>{"function"==typeof n.onFenChange&&n.onFenChange(c)},[c]);const x=n.premoves?{enabled:!0,showDests:!0,castle:!0,events:{set:y,unset:I},promote:C}:{enabled:!1};return e.jsxs("div",{className:p("chessground",o.highlight&&"highlight",o.board,o.pieces),children:[e.jsx(tA,{ref:v,coordinates:o.coordinates,onMove:b,fen:c,turnColor:l,lastMove:u,orientation:h,movable:vo(a,h,n.premoves),premovable:x,...ko(n)}),e.jsx(Vo,{isOpen:r,hide:s,color:l,onPromote:async e=>{if(!m(e))return!1;o.playSounds&&AA(o.sounds),"function"==typeof n.onMove&&await n.onMove(a)}})]})};var Mo=t.forwardRef(No);const Bo=e=>{try{return"w"===e.split(" ")[1]?"white":"black"}catch{return"white"}},jo=e=>{const[n,A]=t.useState((e=>{try{return e.orientation?e.orientation:e.fen?Bo(e.fen):"white"}catch{return"white"}})(e));return t.useEffect(()=>{e.reset&&A(Bo(e.fen))},[e.reset]),[n,()=>{A(e=>"white"===e?"black":"white")}]},Do=()=>{const{theme:t,handleChange:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Board"}),e.jsxs("select",{name:"board",className:"bg-white border border-gray-300 px-2 py-1.5 w-full text-gray-800 rounded",defaultValue:t.board,onChange:n,children:[e.jsx("option",{value:"green",children:"Green"}),e.jsx("option",{value:"brown",children:"Brown"}),e.jsx("option",{value:"ruby",children:"Ruby"}),e.jsx("option",{value:"purple",children:"Purple"}),e.jsx("option",{value:"teal",children:"Teal"})]})]})},To=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Coordinates"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"coordinates",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.coordinates,onChange:n})})]})},Qo=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Highlight moves"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"highlight",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.highlight,onChange:n})})]})},Zo=()=>{const{theme:t,handleChange:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Pieces"}),e.jsxs("select",{name:"pieces",className:"bg-white border border-gray-300 px-2 py-1.5 w-full text-gray-800 rounded",defaultValue:t.pieces,onChange:n,children:[e.jsx("option",{value:"cburnett",children:"Cburnett"}),e.jsx("option",{value:"neo",children:"Neo"}),e.jsx("option",{value:"alpha",children:"Alpha"}),e.jsx("option",{value:"bases",children:"Bases"}),e.jsx("option",{value:"classic",children:"Classic"})]})]})},Po=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Play sounds"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"playSounds",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.playSounds,onChange:n})})]})},Oo=()=>{const{theme:t,handleChange:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Sounds"}),e.jsxs("select",{name:"sounds",className:"bg-white border border-gray-300 px-2 py-1.5 w-full text-gray-800 rounded",defaultValue:t.sounds,onChange:n,children:[e.jsx("option",{value:"robot",children:"Robot"}),e.jsx("option",{value:"piano",children:"Piano"}),e.jsx("option",{value:"lisp",children:"Lisp"}),e.jsx("option",{value:"sfx",children:"SFX"})]})]})},Uo=()=>{const{isOpen:t,show:n,hide:A}=pe();return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"next-button next-settings",title:"Settings",onClick:n,children:e.jsx("i",{className:"next-cog"})}),e.jsx(Eo,{header:"Settings",isOpen:t,onClose:A,children:e.jsxs("div",{className:"grid grid-cols-2 gap-3 items-center text-sm",children:[e.jsx(Zo,{}),e.jsx(Do,{}),e.jsx(Qo,{}),e.jsx(Po,{}),e.jsx(Oo,{}),e.jsx(To,{})]})})]})},qo=t=>e.jsx("button",{type:"button",className:"next-button next-flip",title:"Flip board",...t,children:e.jsx("i",{className:"next-sync"})}),Jo=({flip:t,readOnly:n})=>n?null:e.jsxs("div",{className:"chessground-footer text-gray-400 flex flex-row-reverse gap-2 py-1.5",children:[e.jsx(Uo,{}),e.jsx(qo,{onClick:t})]}),Ko=(t,n)=>{const[A,o]=jo(t);return e.jsx(h,{children:e.jsxs("div",{className:"next-chessground",children:[e.jsx(Mo,{...t,ref:n,orientation:A}),e.jsx(Jo,{flip:o,readOnly:t.readOnly})]})})};var Go=t.forwardRef(Ko);const Ro=t=>{const{theme:n}=he();return e.jsx("div",{className:p("spare-pieces flex gap-2",n.pieces),children:["bin","pawn","knight","bishop","rook","queen","king"].map(n=>((t,n)=>{const{color:A="white",selected:o={role:null,color:null}}=n,r=t===o.role&&A===o.color;return e.jsx(xo,{highlighted:r,role:t,color:A,...n},`${t}-${A}`)})(n,t))})},Fo=e=>{const t=new Map;return t.set(e,null),t},Lo=({onChange:n})=>{const[A,o]=t.useState("w"),[r,i]=t.useState("-");t.useEffect(()=>{"function"==typeof n&&n([A,r].join(" "))},[A,r]);const s=e=>{const{value:t}=e.target;o(t)},a=e=>{const{value:t}=e.target;i(((e,t)=>{if(!t)return e;const n=["K","Q","k","q"].map(n=>n!==t?e.includes(n)?n:"":e.includes(t)?"":t).join("");return n.length?n:"-"})(r,t))};return e.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[e.jsxs("div",{className:"flex gap-2 w-full",children:[e.jsxs("div",{children:[e.jsx("input",{defaultChecked:!0,className:"mx-1",type:"radio",id:"white-radio",name:"side-to-move",value:"w",onChange:s}),e.jsx("label",{htmlFor:"white-radio",children:"White to move"})]}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"radio",id:"black-radio",name:"side-to-move",value:"b",onChange:s}),e.jsx("label",{htmlFor:"black-radio",children:"Black to move"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[e.jsxs("div",{className:"flex w-full gap-4",children:[e.jsx("div",{children:e.jsx("span",{children:"White can"})}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"white-short-castle",value:"K",onChange:a}),e.jsx("label",{htmlFor:"white-short-castle",children:"O-O"})]}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"white-long-castle",value:"Q",onChange:a}),e.jsx("label",{htmlFor:"white-long-castle",children:"O-O-O"})]})]}),e.jsxs("div",{className:"flex w-full gap-4",children:[e.jsx("div",{children:e.jsx("span",{children:"Black can"})}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"black-short-castle",value:"k",onChange:a}),e.jsx("label",{htmlFor:"black-short-castle",children:"O-O"})]}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"black-long-castle",value:"q",onChange:a}),e.jsx("label",{htmlFor:"black-long-castle",children:"O-O-O"})]})]})]})]})},zo=(n,A)=>{const[o,r]=t.useState(n.fen||le.emptyFen),[i,s]=t.useState({role:null,color:null});t.useEffect(()=>{n.fen&&r(n.fen)},[n.fen]),t.useEffect(()=>{"function"==typeof n.onSelect&&n.onSelect(o)},[o]);return e.jsx(h,{children:e.jsxs("div",{className:"next-chessground gap-2",children:[e.jsx(Ro,{selected:i,selectPiece:s,color:"black"}),e.jsx(Mo,{...n,ref:A,fen:o,onSelect:e=>{const t=o.split(" ");t.shift();const n=t.join(" "),s=((e,t,n)=>{if(!e)throw new Error("Chessground is not defined");if(!t||!t.role||!t.color)return e.getFen();if("bin"===t.role)return e.setPieces(Fo(n)),e.getFen();const A=e.state.pieces.get(n);return A?A.role===t.role&&A.color===t.color?(e.setPieces(Fo(n)),e.getFen()):(e.setPieces(Fo(n)),e.newPiece(t,n),e.getFen()):(e.newPiece(t,n),e.getFen())})(A.current.board,i,e),a=[s,n].join(" ");r(a)},editing:!0,skipValidation:!0}),e.jsx(Ro,{selected:i,selectPiece:s,color:"white"}),e.jsx(Lo,{onChange:e=>{const t=[o.split(" ")[0],e,"- 0 1"].join(" ");r(t)}})]})})};var Wo=t.forwardRef(zo);function Yo(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var A=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&A.firstChild?A.insertBefore(o,A.firstChild):A.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}Yo(".brown .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgeG1sbnM6eD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIHZpZXdCb3g9IjAgMCA4IDgiICBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsbD0iI2I1ODg2MyIvPjxnIGlkPSJhIj4gIDxnIGlkPSJiIj4gICAgPGcgaWQ9ImMiPiAgICAgIDxnIGlkPSJkIj4gICAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNmMGQ5YjUiIGlkPSJlIi8+ICAgICAgICA8dXNlIHg9IjIiIGhyZWY9IiNlIiB4OmhyZWY9IiNlIi8+ICAgICAgPC9nPiAgICAgIDx1c2UgeD0iNCIgaHJlZj0iI2QiIHg6aHJlZj0iI2QiLz4gICAgPC9nPiAgICA8dXNlIHg9IjEiIHk9IjEiIGhyZWY9IiNjIiB4OmhyZWY9IiNjIi8+ICA8L2c+ICA8dXNlIHk9IjIiIGhyZWY9IiNiIiB4OmhyZWY9IiNiIi8+PC9nPjx1c2UgeT0iNCIgaHJlZj0iI2EiIHg6aHJlZj0iI2EiLz48L3N2Zz4=');\n}\n.green .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgeG1sbnM6eD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIHZpZXdCb3g9IjAgMCA4IDgiICBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsbD0iIzc3OTU1NiIvPjxnIGlkPSJhIj4gIDxnIGlkPSJiIj4gICAgPGcgaWQ9ImMiPiAgICAgIDxnIGlkPSJkIj4gICAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNFQkVDRDAiIGlkPSJlIi8+ICAgICAgICA8dXNlIHg9IjIiIGhyZWY9IiNlIiB4OmhyZWY9IiNlIi8+ICAgICAgPC9nPiAgICAgIDx1c2UgeD0iNCIgaHJlZj0iI2QiIHg6aHJlZj0iI2QiLz4gICAgPC9nPiAgICA8dXNlIHg9IjEiIHk9IjEiIGhyZWY9IiNjIiB4OmhyZWY9IiNjIi8+ICA8L2c+ICA8dXNlIHk9IjIiIGhyZWY9IiNiIiB4OmhyZWY9IiNiIi8+PC9nPjx1c2UgeT0iNCIgaHJlZj0iI2EiIHg6aHJlZj0iI2EiLz48L3N2Zz4=');\n}\n.ruby .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,CjxzdmcgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgIHhtbG5zOng9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiICB2aWV3Qm94PSIwIDAgOCA4IiAgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IiM4QjI2MzUiLz48ZyBpZD0iYSI+ICA8ZyBpZD0iYiI+ICAgIDxnIGlkPSJjIj4gICAgICA8ZyBpZD0iZCI+ICAgICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjRDJENEM4IiBpZD0iZSIvPiAgICAgICAgPHVzZSB4PSIyIiBocmVmPSIjZSIgeDpocmVmPSIjZSIvPiAgICAgIDwvZz4gICAgICA8dXNlIHg9IjQiIGhyZWY9IiNkIiB4OmhyZWY9IiNkIi8+ICAgIDwvZz4gICAgPHVzZSB4PSIxIiB5PSIxIiBocmVmPSIjYyIgeDpocmVmPSIjYyIvPiAgPC9nPiAgPHVzZSB5PSIyIiBocmVmPSIjYiIgeDpocmVmPSIjYiIvPjwvZz48dXNlIHk9IjQiIGhyZWY9IiNhIiB4OmhyZWY9IiNhIi8+PC9zdmc+');\n}\n.purple .cg-wrap cg-board {\n background-image: url('data:image/png;base64,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');\n}\n.teal .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,CjxzdmcgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgIHhtbG5zOng9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiICB2aWV3Qm94PSIwIDAgOCA4IiAgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IiMxYzcyYWQiLz48ZyBpZD0iYSI+ICA8ZyBpZD0iYiI+ICAgIDxnIGlkPSJjIj4gICAgICA8ZyBpZD0iZCI+ICAgICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjZTNlYmYzIiBpZD0iZSIvPiAgICAgICAgPHVzZSB4PSIyIiBocmVmPSIjZSIgeDpocmVmPSIjZSIvPiAgICAgIDwvZz4gICAgICA8dXNlIHg9IjQiIGhyZWY9IiNkIiB4OmhyZWY9IiNkIi8+ICAgIDwvZz4gICAgPHVzZSB4PSIxIiB5PSIxIiBocmVmPSIjYyIgeDpocmVmPSIjYyIvPiAgPC9nPiAgPHVzZSB5PSIyIiBocmVmPSIjYiIgeDpocmVmPSIjYiIvPjwvZz48dXNlIHk9IjQiIGhyZWY9IiNhIiB4OmhyZWY9IiNhIi8+PC9zdmc+');\n}\n");Yo(".next-chessground .chessground {\n grid-area: board;\n position: relative;\n display: block;\n height: 0;\n padding-bottom: 100%;\n padding-right: 100%;\n width: 100%;\n border-radius: 0.25rem;\n overflow: hidden;\n}\n\n.next-chessground .cg-wrap {\n display: table;\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.next-chessground cg-helper {\n position: absolute;\n width: 12.5%;\n padding-bottom: 12.5%;\n display: table;\n bottom: 0;\n}\n\n.next-chessground cg-container {\n position: absolute;\n width: 800%;\n height: 800%;\n display: block;\n bottom: 0;\n}\n\n.next-chessground cg-board {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n line-height: 0;\n background-size: cover;\n cursor: pointer;\n}\n\n.next-chessground cg-board square {\n position: absolute;\n top: 0;\n left: 0;\n width: 12.5%;\n height: 12.5%;\n pointer-events: none;\n}\n.next-chessground cg-board square.selected {\n background-color: rgba(246, 246, 130, 0.8);\n}\n.next-chessground .highlight cg-board square.last-move {\n will-change: transform;\n background-color: rgba(246, 246, 130, 0.5);\n}\n.next-chessground .highlight .correct cg-board square.last-move {\n background-color: rgba(155, 240, 0, 0.4);\n}\n.next-chessground .highlight .incorrect cg-board square.last-move {\n background-color: rgba(240, 0, 0, 0.4);\n}\n\n.next-chessground cg-board square.check {\n background: radial-gradient(\n ellipse at center,\n rgba(255, 0, 0, 1) 0%,\n rgba(231, 0, 0, 1) 25%,\n rgba(169, 0, 0, 0) 89%,\n rgba(158, 0, 0, 0) 100%\n );\n}\n.next-chessground cg-board square.current-premove {\n background-color: rgba(235, 97, 80, 0.8);\n}\n.next-chessground cg-board piece {\n position: absolute;\n top: 0;\n left: 0;\n width: 12.5%;\n height: 12.5%;\n background-size: cover;\n z-index: 2;\n will-change: transform;\n pointer-events: none;\n}\n.next-chessground cg-board piece.dragging {\n cursor: move;\n z-index: 9;\n}\n.next-chessground cg-board piece.anim {\n z-index: 8;\n}\n.next-chessground cg-board piece.fading {\n z-index: 1;\n opacity: 0.5;\n}\n.next-chessground cg-board piece.ghost {\n opacity: 0.3;\n}\n.next-chessground .cg-wrap svg {\n overflow: hidden;\n position: relative;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 2;\n opacity: 0.6;\n}\n.next-chessground .cg-wrap svg image {\n opacity: 0.5;\n}\n\n.next-chessground .spare-pieces {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n.next-chessground .spare-piece {\n top: 0;\n left: 0;\n padding-bottom: 100%;\n padding-left: 100%;\n position: absolute;\n background-size: contain;\n background-position: 0% -100%;\n cursor: pointer;\n}\n.next-chessground .edit-square {\n display: table;\n position: relative;\n width: 14.285%;\n padding-bottom: 13.285%;\n}\n.next-chessground .promote .edit-square {\n width: 20%;\n padding-bottom: 20%;\n}\n");Yo("coords {\n position: absolute;\n display: flex;\n pointer-events: none;\n user-select: none;\n color: #fff;\n font-weight: bold;\n font-size: 0.5rem;\n opacity: 0.8;\n}\n.coords-no coords {\n display: none;\n}\n@media (min-width: 640px) {\n coords {\n font-size: 0.75rem;\n }\n}\ncoords.ranks {\n flex-flow: column-reverse;\n top: 0;\n right: 0;\n height: 100%;\n width: 0.8em;\n}\ncoords.ranks.black {\n flex-flow: column;\n}\ncoords.files {\n bottom: 0;\n left: 0;\n flex-flow: row;\n width: 100%;\n}\ncoords.files.black {\n flex-flow: row-reverse;\n}\ncoords.files coord {\n padding-left: 4px;\n}\ncoords coord {\n flex: 1 1 auto;\n}\n\n.orientation-white .files coord:nth-child(2n + 1),\n.orientation-white .ranks coord:nth-child(2n),\n.orientation-black .files coord:nth-child(2n),\n.orientation-black .ranks coord:nth-child(2n + 1) {\n color: #fff;\n}\n.orientation-white .files coord:nth-child(2n),\n.orientation-white .ranks coord:nth-child(2n + 1),\n.orientation-black .files coord:nth-child(2n + 1),\n.orientation-black .ranks coord:nth-child(2n) {\n color: #779556;\n}\n");Yo(".next-chessground .next-cog {\n width: 1rem;\n height: 1rem;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBmaWxsPSIjOUY5REIwIiBkPSJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHoiLz48L3N2Zz4=');\n}\n.next-chessground .next-sync {\n width: 1rem;\n height: 1rem;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBmaWxsPSIjOUY5REIwIiBkPSJNMzcwLjcyIDEzMy4yOEMzMzkuNDU4IDEwNC4wMDggMjk4Ljg4OCA4Ny45NjIgMjU1Ljg0OCA4OGMtNzcuNDU4LjA2OC0xNDQuMzI4IDUzLjE3OC0xNjIuNzkxIDEyNi44NS0xLjM0NCA1LjM2My02LjEyMiA5LjE1LTExLjY1MSA5LjE1SDI0LjEwM2MtNy40OTggMC0xMy4xOTQtNi44MDctMTEuODA3LTE0LjE3NkMzMy45MzMgOTQuOTI0IDEzNC44MTMgOCAyNTYgOGM2Ni40NDggMCAxMjYuNzkxIDI2LjEzNiAxNzEuMzE1IDY4LjY4NUw0NjMuMDMgNDAuOTdDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzQ5ek0zMiAyOTZoMTM0LjA1OWMyMS4zODIgMCAzMi4wOSAyNS44NTEgMTYuOTcxIDQwLjk3MWwtNDEuNzUgNDEuNzVjMzEuMjYyIDI5LjI3MyA3MS44MzUgNDUuMzE5IDExNC44NzYgNDUuMjggNzcuNDE4LS4wNyAxNDQuMzE1LTUzLjE0NCAxNjIuNzg3LTEyNi44NDkgMS4zNDQtNS4zNjMgNi4xMjItOS4xNSAxMS42NTEtOS4xNWg1Ny4zMDRjNy40OTggMCAxMy4xOTQgNi44MDcgMTEuODA3IDE0LjE3NkM0NzguMDY3IDQxNy4wNzYgMzc3LjE4NyA1MDQgMjU2IDUwNGMtNjYuNDQ4IDAtMTI2Ljc5MS0yNi4xMzYtMTcxLjMxNS02OC42ODVMNDguOTcgNDcxLjAzQzMzLjg1MSA0ODYuMTQ5IDggNDc1LjQ0MSA4IDQ1NC4wNTlWMzIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHoiLz48L3N2Zz4=');\n}\n.next-chessground .next-trash {\n width: 1rem;\n height: 1rem;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii05NiAtOTYgNjQwIDY0MCI+PHBhdGggZD0iTTI2OCA0MTZoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6TTQzMiA4MGgtODIuNDFsLTM0LTU2LjdBNDggNDggMCAwIDAgMjc0LjQxIDBIMTczLjU5YTQ4IDQ4IDAgMCAwLTQxLjE2IDIzLjNMOTguNDEgODBIMTZBMTYgMTYgMCAwIDAgMCA5NnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNnYzMzZhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOGgxNmExNiAxNiAwIDAgMCAxNi0xNlY5NmExNiAxNiAwIDAgMC0xNi0xNnpNMTcxLjg0IDUwLjkxQTYgNiAwIDAgMSAxNzcgNDhoOTRhNiA2IDAgMCAxIDUuMTUgMi45MUwyOTMuNjEgODBIMTU0LjM5ek0zNjggNDY0SDgwVjEyOGgyODh6bS0yMTItNDhoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6Ii8+PC9zdmc+');\n}\n");Yo("*,\n::after,\n::before {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n}\n\n.next-chessground {\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n.next-chessground .checkbox {\n display: flex;\n margin: 0;\n align-items: center;\n padding-left: 0.25rem;\n width: 2.75rem;\n height: 1.75rem;\n outline: none;\n appearance: none;\n transition: 0.2s ease-in-out;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n cursor: pointer;\n}\n.next-chessground .checkbox:before {\n background-color: rgba(156, 163, 175);\n width: 1rem;\n height: 1rem;\n border-radius: 999px;\n content: '';\n transition: 0.2s ease-in-out;\n}\n.next-chessground .checkbox:checked:before {\n background-color: rgba(4, 120, 87);\n transform: translate(1rem, 0);\n}\n.next-chessground .next-button {\n background-color: transparent;\n background-image: none;\n cursor: pointer;\n display: flex;\n outline: none;\n\n padding: 0;\n line-height: inherit;\n color: inherit;\n font-size: 100%;\n}\n.next-chessground .next-button:focus {\n outline: none;\n}\n");Yo(".pure-modal {\n box-shadow: rgba(0, 0, 0, 0.5) 0px 5px 15px 0px;\n color: rgba(55, 65, 81);\n}\n.pure-modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.backdrop-overflow-hidden {\n overflow: hidden !important;\n}\n.pure-modal-backdrop .pure-modal {\n width: 300px;\n max-width: 100%;\n box-sizing: border-box;\n transition: all 0.2s ease-in-out;\n max-height: 100%;\n}\n.pure-modal.auto-height {\n position: static;\n}\n.pure-modal-backdrop.scrollable {\n overflow-y: auto;\n}\n.pure-modal-backdrop .panel {\n display: grid;\n grid-template-rows: repeat(3, min-content);\n}\n.pure-modal-backdrop:not(.scrollable) .panel {\n grid-template-rows: min-content minmax(0, 1fr) min-content;\n max-height: -moz-available;\n max-height: -webkit-fill-available;\n max-height: fill-available;\n height: 100%;\n}\n.pure-modal > * > * {\n flex: 0 0 auto;\n}\n.pure-modal > * > .scrollable {\n overflow-x: hidden;\n overflow-scrolling: touch;\n}\n@media (max-width: 480px) {\n .pure-modal-backdrop .pure-modal {\n width: 100%;\n }\n}\n.pure-modal .panel-body {\n background-color: #fff;\n}\n.pure-modal .panel-heading {\n background: #f0f0f0;\n}\n.pure-modal .panel-title {\n padding: 12px 45px 12px 15px;\n margin: 0;\n}\n.pure-modal .close {\n right: 6px;\n top: 6px;\n z-index: 1;\n width: 30px;\n height: 30px;\n border-radius: 15px;\n text-align: center;\n line-height: 30px;\n cursor: pointer;\n font-size: 1.85rem;\n}\n.pure-modal .panel-heading .close:hover {\n color: #000;\n}\n.pure-modal .panel-body {\n padding: 15px;\n}\n.pure-modal .panel-footer {\n padding: 12px 45px 12px 15px;\n background: #f0f0f0;\n}\n.pure-modal .panel-body,\n.pure-modal .panel-footer,\n.pure-modal .panel-title {\n word-break: break-all;\n}\n.pure-modal-backdrop .additional-row,\n.pure-modal-backdrop:not(.scrollable) .additional-row {\n display: grid;\n grid-template-rows: min-content minmax(0, 1fr) min-content min-content;\n}\n");Yo("/**\n * Cburnett\n */\n.cburnett piece.pawn.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wP.svg');\n}\n.cburnett piece.bishop.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wB.svg');\n}\n.cburnett piece.knight.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wN.svg');\n}\n.cburnett piece.rook.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wR.svg');\n}\n.cburnett piece.queen.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wQ.svg');\n}\n.cburnett piece.king.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wK.svg');\n}\n.cburnett piece.pawn.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bP.svg');\n}\n.cburnett piece.bishop.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bB.svg');\n}\n.cburnett piece.knight.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bN.svg');\n}\n.cburnett piece.rook.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bR.svg');\n}\n.cburnett piece.queen.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bQ.svg');\n}\n.cburnett piece.king.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bK.svg');\n}\n\n/**\n * Classic\n */\n.classic piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wp.png');\n}\n.classic piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wb.png');\n}\n.classic piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wn.png');\n}\n.classic piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wr.png');\n}\n.classic piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wq.png');\n}\n.classic piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wk.png');\n}\n.classic piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bp.png');\n}\n.classic piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bb.png');\n}\n.classic piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bn.png');\n}\n.classic piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/br.png');\n}\n.classic piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bq.png');\n}\n.classic piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bk.png');\n}\n\n/**\n * Neo\n */\n.neo piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wp.png');\n}\n.neo piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wb.png');\n}\n.neo piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wn.png');\n}\n.neo piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wr.png');\n}\n.neo piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wq.png');\n}\n.neo piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wk.png');\n}\n.neo piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bp.png');\n}\n.neo piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bb.png');\n}\n.neo piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bn.png');\n}\n.neo piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/br.png');\n}\n.neo piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bq.png');\n}\n.neo piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bk.png');\n}\n\n/**\n * Alpha\n */\n.alpha piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wp.png');\n}\n.alpha piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wb.png');\n}\n.alpha piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wn.png');\n}\n.alpha piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wr.png');\n}\n.alpha piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wq.png');\n}\n.alpha piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wk.png');\n}\n.alpha piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bp.png');\n}\n.alpha piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bb.png');\n}\n.alpha piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bn.png');\n}\n.alpha piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/br.png');\n}\n.alpha piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bq.png');\n}\n.alpha piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bk.png');\n}\n\n/**\n * Bases\n */\n.bases piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wp.png');\n}\n.bases piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wb.png');\n}\n.bases piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wn.png');\n}\n.bases piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wr.png');\n}\n.bases piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wq.png');\n}\n.bases piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wk.png');\n}\n.bases piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bp.png');\n}\n.bases piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bb.png');\n}\n.bases piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bn.png');\n}\n.bases piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/br.png');\n}\n.bases piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bq.png');\n}\n.bases piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bk.png');\n}\n");Yo(".flex {\n display: flex;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-row-reverse {\n flex-direction: row-reverse;\n}\n.grid {\n display: grid;\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.w-full {\n width: 100%;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.px-2 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-resize {\n cursor: nesw-resize;\n}\n.outline-none,\n.outline-none:focus {\n outline: none;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-gray-400 {\n color: rgba(156, 163, 175);\n}\n.text-gray-800 {\n color: rgba(31, 41, 55);\n}\n.bg-white {\n background-color: #fff;\n}\n.bg-orange-300 {\n background-color: #fbd38d;\n}\n.border {\n border-width: 1px;\n border-style: solid;\n}\n.border-gray-300 {\n border-color: rgba(209, 213, 219);\n}\n.rounded {\n border-radius: 0.25rem;\n}\n"),exports.NextChessground=Go,exports.NextEditor=Wo,exports.Stockfish=class{constructor(e){if("undefined"==typeof window)return!1;if(!window.chessEngineWorker){const t=e??process.env.STOCKFISH_PATH;window.chessEngineWorker=new Worker(t)}this.skillLevel=20,this.maxDepth=40,this.resolveTimeout=null,this.isAnalyzing=!1,this.fen=le.initialFen}getTurnFromFen(e){return e.split(" ")[1]}normalizeScoreValue(e){const{fen:t}=this;return"b"===this.getTurnFromFen(t)?-1*e:e}isInfoMessage(e){return!(!e||!e.data)&&e.data.startsWith("info")}setSkillLevel(){window.chessEngineWorker.postMessage("setoption name Skill Level value "+this.skillLevel),window.chessEngineWorker.postMessage("setoption name Skill Level Maximum Error value 5000"),window.chessEngineWorker.postMessage("setoption name Skill Level Probability value 1")}async init(){await this.use_uci(),await this.is_ready(),this.setSkillLevel()}getScoreFromInfo(e){if(e.startsWith("info depth 0")){const t=e.split(" "),n=t[4],A=this.normalizeScoreValue(Number(t[5]));return this.isAnalyzing=!1,{type:n,value:A}}if(e.startsWith("info depth ")){const t=e.split(" ");return{type:t[8],value:this.normalizeScoreValue(Number(t[9]))}}return{type:"cp",value:0}}parseData(e){const t=e.split(" ")[2];let n="";e.indexOf(" pv ")>-1&&(n=e.split(" pv ")[1].split(" bmc ")[0]);return{depth:t,pv:n,score:this.getScoreFromInfo(e)}}use_uci(){return new Promise(e=>{window.chessEngineWorker.postMessage("uci"),window.chessEngineWorker.onmessage=t=>{"uciok"===t.data&&e(t)}})}is_ready(){return new Promise(e=>{window.chessEngineWorker.postMessage("isready"),window.chessEngineWorker.onmessage=t=>{"readyok"===t.data&&e(t)}})}set_position(e){return new Promise(t=>{this.fen=e,window.chessEngineWorker.postMessage("position fen "+e),t()})}async new_position(e){await this.stop(),await this.is_ready(),this.set_position(e),this.go_infinite()}set_multipv(e){window.chessEngineWorker.postMessage("setoption name MultiPV value "+e)}get_score(e,t=15){return new Promise(n=>{window.chessEngineWorker.postMessage("position fen "+e),window.chessEngineWorker.postMessage("go depth 15"),window.chessEngineWorker.onmessage=e=>{if(e.data.startsWith("info depth "+t)){const t=e.data.split(" "),A=t[8],o=Number(t[9]);n({type:A,value:o})}else if(e.data.startsWith("info depth 0")){const t=e.data.split(" "),A=t[4],o=Number(t[5]);n({type:A,value:o})}}})}go_depth(e){return new Promise(t=>{window.chessEngineWorker.postMessage("go depth "+e),window.chessEngineWorker.onmessage=e=>{e.data.startsWith("bestmove")&&t(e.data)}})}go_time(e){return new Promise(t=>{window.chessEngineWorker.postMessage("go movetime "+e),window.chessEngineWorker.onmessage=e=>{e.data.startsWith("bestmove")&&t(e.data)}})}go_infinite(e){window.chessEngineWorker.postMessage("go infinite"),this.isAnalyzing=!0,window.chessEngineWorker.onmessage=t=>{if(this.isInfoMessage(t)&&"function"==typeof e){const n=this.parseData(t.data);n.depth>this.maxDepth&&this.stop(),e(n)}}}stop(){return new Promise(e=>{this.isAnalyzing||e(),window.chessEngineWorker.postMessage("stop"),window.chessEngineWorker.onmessage=t=>{t.data.startsWith("bestmove")&&(this.isAnalyzing=!1,e(t.data))}})}quit(){window.chessEngineWorker.postMessage("quit")}},exports.constants=le,exports.default=Go,exports.isValidFen=Co,exports.useChess=ue,exports.useChessground=he;
35
+ */(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var de="function"==typeof Symbol&&Symbol.for,me=de?Symbol.for("react.element"):60103,fe=de?Symbol.for("react.portal"):60106,be=de?Symbol.for("react.fragment"):60107,ye=de?Symbol.for("react.strict_mode"):60108,Ie=de?Symbol.for("react.profiler"):60114,ke=de?Symbol.for("react.provider"):60109,we=de?Symbol.for("react.context"):60110,ve=de?Symbol.for("react.async_mode"):60111,Ce=de?Symbol.for("react.concurrent_mode"):60111,Se=de?Symbol.for("react.forward_ref"):60112,Ee=de?Symbol.for("react.suspense"):60113,xe=de?Symbol.for("react.suspense_list"):60120,Ve=de?Symbol.for("react.memo"):60115,Ne=de?Symbol.for("react.lazy"):60116,Me=de?Symbol.for("react.block"):60121,je=de?Symbol.for("react.fundamental"):60117,Be=de?Symbol.for("react.responder"):60118,De=de?Symbol.for("react.scope"):60119;function Te(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case me:switch(e=e.type){case ve:case Ce:case be:case Ie:case ye:case Ee:return e;default:switch(e=e&&e.$$typeof){case we:case Se:case Ne:case Ve:case ke:return e;default:return t}}case fe:return t}}}function Qe(e){return Te(e)===Ce}var Ze={AsyncMode:ve,ConcurrentMode:Ce,ContextConsumer:we,ContextProvider:ke,Element:me,ForwardRef:Se,Fragment:be,Lazy:Ne,Memo:Ve,Portal:fe,Profiler:Ie,StrictMode:ye,Suspense:Ee,isAsyncMode:function(e){return Qe(e)||Te(e)===ve},isConcurrentMode:Qe,isContextConsumer:function(e){return Te(e)===we},isContextProvider:function(e){return Te(e)===ke},isElement:function(e){return"object"==typeof e&&null!==e&&e.$$typeof===me},isForwardRef:function(e){return Te(e)===Se},isFragment:function(e){return Te(e)===be},isLazy:function(e){return Te(e)===Ne},isMemo:function(e){return Te(e)===Ve},isPortal:function(e){return Te(e)===fe},isProfiler:function(e){return Te(e)===Ie},isStrictMode:function(e){return Te(e)===ye},isSuspense:function(e){return Te(e)===Ee},isValidElementType:function(e){return"string"==typeof e||"function"==typeof e||e===be||e===Ce||e===Ie||e===ye||e===Ee||e===xe||"object"==typeof e&&null!==e&&(e.$$typeof===Ne||e.$$typeof===Ve||e.$$typeof===ke||e.$$typeof===we||e.$$typeof===Se||e.$$typeof===je||e.$$typeof===Be||e.$$typeof===De||e.$$typeof===Me)},typeOf:Te},Pe=l(function(e,t){"production"!==process.env.NODE_ENV&&function(){var e="function"==typeof Symbol&&Symbol.for,n=e?Symbol.for("react.element"):60103,A=e?Symbol.for("react.portal"):60106,r=e?Symbol.for("react.fragment"):60107,o=e?Symbol.for("react.strict_mode"):60108,s=e?Symbol.for("react.profiler"):60114,i=e?Symbol.for("react.provider"):60109,a=e?Symbol.for("react.context"):60110,c=e?Symbol.for("react.async_mode"):60111,l=e?Symbol.for("react.concurrent_mode"):60111,u=e?Symbol.for("react.forward_ref"):60112,h=e?Symbol.for("react.suspense"):60113,g=e?Symbol.for("react.suspense_list"):60120,p=e?Symbol.for("react.memo"):60115,d=e?Symbol.for("react.lazy"):60116,m=e?Symbol.for("react.block"):60121,f=e?Symbol.for("react.fundamental"):60117,b=e?Symbol.for("react.responder"):60118,y=e?Symbol.for("react.scope"):60119;function I(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:var g=e.type;switch(g){case c:case l:case r:case s:case o:case h:return g;default:var m=g&&g.$$typeof;switch(m){case a:case u:case d:case p:case i:return m;default:return t}}case A:return t}}}var k=c,w=l,v=a,C=i,S=n,E=u,x=r,V=d,N=p,M=A,j=s,B=o,D=h,T=!1;function Q(e){return I(e)===l}t.AsyncMode=k,t.ConcurrentMode=w,t.ContextConsumer=v,t.ContextProvider=C,t.Element=S,t.ForwardRef=E,t.Fragment=x,t.Lazy=V,t.Memo=N,t.Portal=M,t.Profiler=j,t.StrictMode=B,t.Suspense=D,t.isAsyncMode=function(e){return T||(T=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),Q(e)||I(e)===c},t.isConcurrentMode=Q,t.isContextConsumer=function(e){return I(e)===a},t.isContextProvider=function(e){return I(e)===i},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===n},t.isForwardRef=function(e){return I(e)===u},t.isFragment=function(e){return I(e)===r},t.isLazy=function(e){return I(e)===d},t.isMemo=function(e){return I(e)===p},t.isPortal=function(e){return I(e)===A},t.isProfiler=function(e){return I(e)===s},t.isStrictMode=function(e){return I(e)===o},t.isSuspense=function(e){return I(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===r||e===l||e===s||e===o||e===h||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===d||e.$$typeof===p||e.$$typeof===i||e.$$typeof===a||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===m)},t.typeOf=I}()}),Oe=l(function(e){"production"===process.env.NODE_ENV?e.exports=Ze:e.exports=Pe}),Ue=Object.getOwnPropertySymbols,qe=Object.prototype.hasOwnProperty,Je=Object.prototype.propertyIsEnumerable;var Ke=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var A=Object.getOwnPropertyNames(t).map(function(e){return t[e]});if("0123456789"!==A.join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,A,r=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),o=1;o<arguments.length;o++){for(var s in n=Object(arguments[o]))qe.call(n,s)&&(r[s]=n[s]);if(Ue){A=Ue(n);for(var i=0;i<A.length;i++)Je.call(n,A[i])&&(r[A[i]]=n[A[i]])}}return r},Ge="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",Re=function(){};if("production"!==process.env.NODE_ENV){var Fe=Ge,Le={},ze=Function.call.bind(Object.prototype.hasOwnProperty);Re=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}}}function We(e,t,n,A,r){if("production"!==process.env.NODE_ENV)for(var o in e)if(ze(e,o)){var s;try{if("function"!=typeof e[o]){var i=Error((A||"React class")+": "+n+" type `"+o+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[o]+"`.");throw i.name="Invariant Violation",i}s=e[o](t,o,A,n,null,Fe)}catch(e){s=e}if(!s||s instanceof Error||Re((A||"React class")+": type specification of "+n+" `"+o+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof s+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),s instanceof Error&&!(s.message in Le)){Le[s.message]=!0;var a=r?r():"";Re("Failed "+n+" type: "+s.message+(null!=a?a:""))}}}We.resetWarningCache=function(){"production"!==process.env.NODE_ENV&&(Le={})};var Ye=We,_e=Function.call.bind(Object.prototype.hasOwnProperty),He=function(){};function Xe(){return null}"production"!==process.env.NODE_ENV&&(He=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}});var $e=function(e,t){var n="function"==typeof Symbol&&Symbol.iterator;var A="<<anonymous>>",r={array:a("array"),bool:a("boolean"),func:a("function"),number:a("number"),object:a("object"),string:a("string"),symbol:a("symbol"),any:i(Xe),arrayOf:function(e){return i(function(t,n,A,r,o){if("function"!=typeof e)return new s("Property `"+o+"` of component `"+A+"` has invalid PropType notation inside arrayOf.");var i=t[n];if(!Array.isArray(i))return new s("Invalid "+r+" `"+o+"` of type `"+l(i)+"` supplied to `"+A+"`, expected an array.");for(var a=0;a<i.length;a++){var c=e(i,a,A,r,o+"["+a+"]",Ge);if(c instanceof Error)return c}return null})},element:i(function(t,n,A,r,o){var i=t[n];return e(i)?null:new s("Invalid "+r+" `"+o+"` of type `"+l(i)+"` supplied to `"+A+"`, expected a single ReactElement.")}),elementType:i(function(e,t,n,A,r){var o=e[t];return Oe.isValidElementType(o)?null:new s("Invalid "+A+" `"+r+"` of type `"+l(o)+"` supplied to `"+n+"`, expected a single ReactElement type.")}),instanceOf:function(e){return i(function(t,n,r,o,i){if(!(t[n]instanceof e)){var a=e.name||A;return new s("Invalid "+o+" `"+i+"` of type `"+(((c=t[n]).constructor&&c.constructor.name?c.constructor.name:A)+"` supplied to `")+r+"`, expected instance of `"+a+"`.")}var c;return null})},node:i(function(e,t,n,A,r){return c(e[t])?null:new s("Invalid "+A+" `"+r+"` supplied to `"+n+"`, expected a ReactNode.")}),objectOf:function(e){return i(function(t,n,A,r,o){if("function"!=typeof e)return new s("Property `"+o+"` of component `"+A+"` has invalid PropType notation inside objectOf.");var i=t[n],a=l(i);if("object"!==a)return new s("Invalid "+r+" `"+o+"` of type `"+a+"` supplied to `"+A+"`, expected an object.");for(var c in i)if(_e(i,c)){var u=e(i,c,A,r,o+"."+c,Ge);if(u instanceof Error)return u}return null})},oneOf:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&He(arguments.length>1?"Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).":"Invalid argument supplied to oneOf, expected an array."),Xe;return i(function(t,n,A,r,i){for(var a=t[n],c=0;c<e.length;c++)if(o(a,e[c]))return null;var l=JSON.stringify(e,function(e,t){return"symbol"===u(t)?String(t):t});return new s("Invalid "+r+" `"+i+"` of value `"+String(a)+"` supplied to `"+A+"`, expected one of "+l+".")})},oneOfType:function(e){if(!Array.isArray(e))return"production"!==process.env.NODE_ENV&&He("Invalid argument supplied to oneOfType, expected an instance of array."),Xe;for(var t=0;t<e.length;t++){var n=e[t];if("function"!=typeof n)return He("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+h(n)+" at index "+t+"."),Xe}return i(function(t,n,A,r,o){for(var i=0;i<e.length;i++)if(null==(0,e[i])(t,n,A,r,o,Ge))return null;return new s("Invalid "+r+" `"+o+"` supplied to `"+A+"`.")})},shape:function(e){return i(function(t,n,A,r,o){var i=t[n],a=l(i);if("object"!==a)return new s("Invalid "+r+" `"+o+"` of type `"+a+"` supplied to `"+A+"`, expected `object`.");for(var c in e){var u=e[c];if(u){var h=u(i,c,A,r,o+"."+c,Ge);if(h)return h}}return null})},exact:function(e){return i(function(t,n,A,r,o){var i=t[n],a=l(i);if("object"!==a)return new s("Invalid "+r+" `"+o+"` of type `"+a+"` supplied to `"+A+"`, expected `object`.");var c=Ke({},t[n],e);for(var u in c){var h=e[u];if(!h)return new s("Invalid "+r+" `"+o+"` key `"+u+"` supplied to `"+A+"`.\nBad object: "+JSON.stringify(t[n],null," ")+"\nValid keys: "+JSON.stringify(Object.keys(e),null," "));var g=h(i,u,A,r,o+"."+u,Ge);if(g)return g}return null})}};function o(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function s(e){this.message=e,this.stack=""}function i(e){if("production"!==process.env.NODE_ENV)var n={},r=0;function o(o,i,a,c,l,u,h){if(c=c||A,u=u||a,h!==Ge){if(t){var g=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw g.name="Invariant Violation",g}if("production"!==process.env.NODE_ENV&&"undefined"!=typeof console){var p=c+":"+a;!n[p]&&r<3&&(He("You are manually calling a React.PropTypes validation function for the `"+u+"` prop on `"+c+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),n[p]=!0,r++)}}return null==i[a]?o?null===i[a]?new s("The "+l+" `"+u+"` is marked as required in `"+c+"`, but its value is `null`."):new s("The "+l+" `"+u+"` is marked as required in `"+c+"`, but its value is `undefined`."):null:e(i,a,c,l,u)}var i=o.bind(null,!1);return i.isRequired=o.bind(null,!0),i}function a(e){return i(function(t,n,A,r,o,i){var a=t[n];return l(a)!==e?new s("Invalid "+r+" `"+o+"` of type `"+u(a)+"` supplied to `"+A+"`, expected `"+e+"`."):null})}function c(t){switch(typeof t){case"number":case"string":case"undefined":return!0;case"boolean":return!t;case"object":if(Array.isArray(t))return t.every(c);if(null===t||e(t))return!0;var A=function(e){var t=e&&(n&&e[n]||e["@@iterator"]);if("function"==typeof t)return t}(t);if(!A)return!1;var r,o=A.call(t);if(A!==t.entries){for(;!(r=o.next()).done;)if(!c(r.value))return!1}else for(;!(r=o.next()).done;){var s=r.value;if(s&&!c(s[1]))return!1}return!0;default:return!1}}function l(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":function(e,t){return"symbol"===e||!!t&&("Symbol"===t["@@toStringTag"]||"function"==typeof Symbol&&t instanceof Symbol)}(t,e)?"symbol":t}function u(e){if(null==e)return""+e;var t=l(e);if("object"===t){if(e instanceof Date)return"date";if(e instanceof RegExp)return"regexp"}return t}function h(e){var t=u(e);switch(t){case"array":case"object":return"an "+t;case"boolean":case"date":case"regexp":return"a "+t;default:return t}}return s.prototype=Error.prototype,r.checkPropTypes=Ye,r.resetWarningCache=Ye.resetWarningCache,r.PropTypes=r,r};function et(){}function tt(){}tt.resetWarningCache=et;var nt=l(function(e){if("production"!==process.env.NODE_ENV){var t=Oe;e.exports=$e(t.isElement,!0)}else e.exports=function(){function e(e,t,n,A,r,o){if(o!==Ge){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:tt,resetWarningCache:et};return n.PropTypes=n,n}()});const At=["white","black"],rt=["a","b","c","d","e","f","g","h"],ot=["1","2","3","4","5","6","7","8"],st=[...ot].reverse(),it=Array.prototype.concat(...rt.map(e=>ot.map(t=>e+t))),at=e=>it[8*e[0]+e[1]],ct=e=>[e.charCodeAt(0)-97,e.charCodeAt(1)-49],lt=it.map(ct);const ut=()=>{let e;return{start(){e=performance.now()},cancel(){e=void 0},stop(){if(!e)return 0;const t=performance.now()-e;return e=void 0,t}}},ht=e=>"white"===e?"black":"white",gt=(e,t)=>{const n=e[0]-t[0],A=e[1]-t[1];return n*n+A*A},pt=(e,t)=>e.role===t.role&&e.color===t.color,dt=(e,t,n,A)=>[(t?e[0]:7-e[0])*n,(t?7-e[1]:e[1])*A],mt=e=>{const t=e.width/8,n=e.height/8;return(e,A)=>dt(e,A,t,n)},ft=(e,t)=>dt(e,t,100,100),bt=(e,t)=>{e.style.transform=`translate(${t[0]}px,${t[1]}px)`},yt=(e,t)=>{e.style.transform=`translate(${t[0]}%,${t[1]}%)`},It=(e,t)=>{e.style.visibility=t?"visible":"hidden"},kt=e=>{var t;return e.clientX||0===e.clientX?[e.clientX,e.clientY]:(null===(t=e.targetTouches)||void 0===t?void 0:t[0])?[e.targetTouches[0].clientX,e.targetTouches[0].clientY]:void 0},wt=e=>2===e.buttons||2===e.button,vt=(e,t)=>{const n=document.createElement(e);return t&&(n.className=t),n};function Ct(e,t,n){const A=ct(e);return t||(A[0]=7-A[0],A[1]=7-A[1]),[n.left+n.width*A[0]/8+n.width/16,n.top+n.height*(7-A[1])/8+n.height/16]}function St(e,t){return Math.abs(e-t)}const Et=(e,t,n,A)=>{const r=St(e,n),o=St(t,A);return 1===r&&2===o||2===r&&1===o},xt=(e,t,n,A)=>St(e,n)===St(t,A),Vt=(e,t,n,A)=>e===n||t===A,Nt=(e,t,n,A)=>xt(e,t,n,A)||Vt(e,t,n,A);function Mt(e,t,n){const A=e.get(t);if(!A)return[];const r=ct(t),o=A.role,s="pawn"===o?(i=A.color,(e,t,n,A)=>St(e,n)<2&&("white"===i?A===t+1||t<=1&&A===t+2&&e===n:A===t-1||t>=6&&A===t-2&&e===n)):"knight"===o?Et:"bishop"===o?xt:"rook"===o?Vt:"queen"===o?Nt:function(e,t,n){return(A,r,o,s)=>St(A,o)<2&&St(r,s)<2||n&&r===s&&r===("white"===e?0:7)&&(4===A&&(2===o&&t.includes(0)||6===o&&t.includes(7))||t.includes(o))}(A.color,function(e,t){const n="white"===t?"1":"8",A=[];for(const[r,o]of e)r[1]===n&&o.color===t&&"rook"===o.role&&A.push(ct(r)[0]);return A}(e,A.color),n);var i;return lt.filter(e=>(r[0]!==e[0]||r[1]!==e[1])&&s(r[0],r[1],e[0],e[1])).map(at)}function jt(e,...t){e&&setTimeout(()=>e(...t),1)}function Bt(e){e.premovable.current&&(e.premovable.current=void 0,jt(e.premovable.events.unset))}function Dt(e){const t=e.predroppable;t.current&&(t.current=void 0,jt(t.events.unset))}function Tt(e,t,n){const A=e.pieces.get(t),r=e.pieces.get(n);if(t===n||!A)return!1;const o=r&&r.color!==A.color?r:void 0;return n===e.selected&&Jt(e),jt(e.events.move,t,n,o),function(e,t,n){if(!e.autoCastle)return!1;const A=e.pieces.get(t);if(!A||"king"!==A.role)return!1;const r=ct(t),o=ct(n);if(0!==r[1]&&7!==r[1]||r[1]!==o[1])return!1;4!==r[0]||e.pieces.has(n)||(6===o[0]?n=at([7,o[1]]):2===o[0]&&(n=at([0,o[1]])));const s=e.pieces.get(n);return!(!s||s.color!==A.color||"rook"!==s.role||(e.pieces.delete(t),e.pieces.delete(n),r[0]<o[0]?(e.pieces.set(at([6,o[1]]),A),e.pieces.set(at([5,o[1]]),s)):(e.pieces.set(at([2,o[1]]),A),e.pieces.set(at([3,o[1]]),s)),0))}(e,t,n)||(e.pieces.set(n,A),e.pieces.delete(t)),e.lastMove=[t,n],e.check=void 0,jt(e.events.change),o||!0}function Qt(e,t,n,A){if(e.pieces.has(n)){if(!A)return!1;e.pieces.delete(n)}return jt(e.events.dropNewPiece,t,n),e.pieces.set(n,t),e.lastMove=[n],e.check=void 0,jt(e.events.change),e.movable.dests=void 0,e.turnColor=ht(e.turnColor),!0}function Zt(e,t,n){const A=Tt(e,t,n);return A&&(e.movable.dests=void 0,e.turnColor=ht(e.turnColor),e.animation.current=void 0),A}function Pt(e,t,n){if(Gt(e,t,n)){const A=Zt(e,t,n);if(A){const r=e.hold.stop();Jt(e);const o={premove:!1,ctrlKey:e.stats.ctrlKey,holdTime:r};return!0!==A&&(o.captured=A),jt(e.movable.events.after,t,n,o),!0}}else if(function(e,t,n){return t!==n&&Rt(e,t)&&Mt(e.pieces,t,e.premovable.castle).includes(n)}(e,t,n))return function(e,t,n,A){Dt(e),e.premovable.current=[t,n],jt(e.premovable.events.set,t,n,A)}(e,t,n,{ctrlKey:e.stats.ctrlKey}),Jt(e),!0;return Jt(e),!1}function Ot(e,t,n,A){const r=e.pieces.get(t);r&&(function(e,t,n){const A=e.pieces.get(t);return!(!A||t!==n&&e.pieces.has(n)||"both"!==e.movable.color&&(e.movable.color!==A.color||e.turnColor!==A.color))}(e,t,n)||A)?(e.pieces.delete(t),Qt(e,r,n,A),jt(e.movable.events.afterNewPiece,r.role,n,{premove:!1,predrop:!1})):r&&function(e,t,n){const A=e.pieces.get(t),r=e.pieces.get(n);return!!A&&(!r||r.color!==e.movable.color)&&e.predroppable.enabled&&("pawn"!==A.role||"1"!==n[1]&&"8"!==n[1])&&e.movable.color===A.color&&e.turnColor!==A.color}(e,t,n)?function(e,t,n){Bt(e),e.predroppable.current={role:t,key:n},jt(e.predroppable.events.set,t,n)}(e,r.role,n):(Bt(e),Dt(e)),e.pieces.delete(t),Jt(e)}function Ut(e,t,n){if(jt(e.events.select,t),e.selected){if(e.selected===t&&!e.draggable.enabled)return Jt(e),void e.hold.cancel();if((e.selectable.enabled||n)&&e.selected!==t&&Pt(e,e.selected,t))return void(e.stats.dragged=!1)}(Kt(e,t)||Rt(e,t))&&(qt(e,t),e.hold.start())}function qt(e,t){e.selected=t,Rt(e,t)?e.premovable.dests=Mt(e.pieces,t,e.premovable.castle):e.premovable.dests=void 0}function Jt(e){e.selected=void 0,e.premovable.dests=void 0,e.hold.cancel()}function Kt(e,t){const n=e.pieces.get(t);return!!n&&("both"===e.movable.color||e.movable.color===n.color&&e.turnColor===n.color)}function Gt(e,t,n){var A,r;return t!==n&&Kt(e,t)&&(e.movable.free||!!(null===(r=null===(A=e.movable.dests)||void 0===A?void 0:A.get(t))||void 0===r?void 0:r.includes(n)))}function Rt(e,t){const n=e.pieces.get(t);return!!n&&e.premovable.enabled&&e.movable.color===n.color&&e.turnColor!==n.color}function Ft(e){const t=e.premovable.current;if(!t)return!1;const n=t[0],A=t[1];let r=!1;if(Gt(e,n,A)){const t=Zt(e,n,A);if(t){const o={premove:!0};!0!==t&&(o.captured=t),jt(e.movable.events.after,n,A,o),r=!0}}return Bt(e),r}function Lt(e){Bt(e),Dt(e),Jt(e)}function zt(e){e.movable.color=e.movable.dests=e.animation.current=void 0,Lt(e)}function Wt(e,t,n){let A=Math.floor(8*(e[0]-n.left)/n.width);t||(A=7-A);let r=7-Math.floor(8*(e[1]-n.top)/n.height);return t||(r=7-r),A>=0&&A<8&&r>=0&&r<8?at([A,r]):void 0}function Yt(e){return"white"===e.orientation}const _t="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",Ht={p:"pawn",r:"rook",n:"knight",b:"bishop",q:"queen",k:"king"},Xt={pawn:"p",rook:"r",knight:"n",bishop:"b",queen:"q",king:"k"};function $t(e){"start"===e&&(e=_t);const t=new Map;let n=7,A=0;for(const r of e)switch(r){case" ":return t;case"/":if(--n,n<0)return t;A=0;break;case"~":{const e=t.get(at([A,n]));e&&(e.promoted=!0);break}default:{const e=r.charCodeAt(0);if(e<57)A+=e-48;else{const e=r.toLowerCase();t.set(at([A,n]),{role:Ht[e],color:r===e?"black":"white"}),++A}}}return t}function en(e,t){var n,A;if((null===(n=t.movable)||void 0===n?void 0:n.dests)&&(e.movable.dests=void 0),(null===(A=t.drawable)||void 0===A?void 0:A.autoShapes)&&(e.drawable.autoShapes=[]),tn(e,t),t.fen&&(e.pieces=$t(t.fen),e.drawable.shapes=[]),"check"in t&&function(e,t){if(e.check=void 0,!0===t&&(t=e.turnColor),t)for(const[n,A]of e.pieces)"king"===A.role&&A.color===t&&(e.check=n)}(e,t.check||!1),"lastMove"in t&&!t.lastMove?e.lastMove=void 0:t.lastMove&&(e.lastMove=t.lastMove),e.selected&&qt(e,e.selected),(!e.animation.duration||e.animation.duration<100)&&(e.animation.enabled=!1),!e.movable.rookCastle&&e.movable.dests){const t="white"===e.movable.color?"1":"8",n="e"+t,A=e.movable.dests.get(n),r=e.pieces.get(n);if(!A||!r||"king"!==r.role)return;e.movable.dests.set(n,A.filter(e=>!(e==="a"+t&&A.includes("c"+t)||e==="h"+t&&A.includes("g"+t))))}}function tn(e,t){for(const n in t)nn(e[n])&&nn(t[n])?tn(e[n],t[n]):e[n]=t[n]}function nn(e){return"object"==typeof e}function An(e,t){return t.animation.enabled?function(e,t){const n=new Map(t.pieces),A=e(t),r=function(e,t){const n=new Map,A=[],r=new Map,o=[],s=[],i=new Map;let a,c,l;for(const[t,n]of e)i.set(t,on(t,n));for(const e of it)a=t.pieces.get(e),c=i.get(e),a?c?pt(a,c.piece)||(o.push(c),s.push(on(e,a))):s.push(on(e,a)):c&&o.push(c);for(const e of s)c=sn(e,o.filter(t=>pt(e.piece,t.piece))),c&&(l=[c.pos[0]-e.pos[0],c.pos[1]-e.pos[1]],n.set(e.key,l.concat(l)),A.push(c.key));for(const e of o)A.includes(e.key)||r.set(e.key,e.piece);return{anims:n,fadings:r}}(n,t);if(r.anims.size||r.fadings.size){const e=t.animation.current&&t.animation.current.start;t.animation.current={start:performance.now(),frequency:1/t.animation.duration,plan:r},e||an(t,performance.now())}else t.dom.redraw();return A}(e,t):rn(e,t)}function rn(e,t){const n=e(t);return t.dom.redraw(),n}function on(e,t){return{key:e,pos:ct(e),piece:t}}function sn(e,t){return t.sort((t,n)=>gt(e.pos,t.pos)-gt(e.pos,n.pos))[0]}function an(e,t){const n=e.animation.current;if(void 0===n)return void(e.dom.destroyed||e.dom.redrawNow());const A=1-(t-n.start)*n.frequency;if(A<=0)e.animation.current=void 0,e.dom.redrawNow();else{const t=function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1}(A);for(const e of n.plan.anims.values())e[2]=e[0]*t,e[3]=e[1]*t;e.dom.redrawNow(!0),requestAnimationFrame((t=performance.now())=>an(e,t))}}const cn=["green","red","blue","yellow"];function ln(e,t){if(t.touches&&t.touches.length>1)return;t.stopPropagation(),t.preventDefault(),t.ctrlKey?Jt(e):Lt(e);const n=kt(t),A=Wt(n,Yt(e),e.dom.bounds());A&&(e.drawable.current={orig:A,pos:n,brush:dn(t),snapToValidMove:e.drawable.defaultSnapToValidMove},un(e))}function un(e){requestAnimationFrame(()=>{const t=e.drawable.current;if(t){const n=Wt(t.pos,Yt(e),e.dom.bounds());n||(t.snapToValidMove=!1);const A=t.snapToValidMove?function(e,t,n,A){const r=ct(e),o=lt.filter(e=>Nt(r[0],r[1],e[0],e[1])||Et(r[0],r[1],e[0],e[1])),s=o.map(e=>Ct(at(e),n,A)).map(e=>gt(t,e)),[,i]=s.reduce((e,t,n)=>e[0]<t?e:[t,n],[s[0],0]);return at(o[i])}(t.orig,t.pos,Yt(e),e.dom.bounds()):n;A!==t.mouseSq&&(t.mouseSq=A,t.dest=A!==t.orig?A:void 0,e.dom.redrawNow()),un(e)}})}function hn(e,t){e.drawable.current&&(e.drawable.current.pos=kt(t))}function gn(e){const t=e.drawable.current;t&&(t.mouseSq&&function(e,t){const n=e=>e.orig===t.orig&&e.dest===t.dest,A=e.shapes.find(n);A&&(e.shapes=e.shapes.filter(e=>!n(e)));A&&A.brush===t.brush||e.shapes.push(t);mn(e)}(e.drawable,t),pn(e))}function pn(e){e.drawable.current&&(e.drawable.current=void 0,e.dom.redraw())}function dn(e){var t;const n=(e.shiftKey||e.ctrlKey)&&wt(e),A=e.altKey||e.metaKey||(null===(t=e.getModifierState)||void 0===t?void 0:t.call(e,"AltGraph"));return cn[(n?1:0)+(A?2:0)]}function mn(e){e.onChange&&e.onChange(e.shapes)}function fn(e,t){if(!t.isTrusted||void 0!==t.button&&0!==t.button)return;if(t.touches&&t.touches.length>1)return;const n=e.dom.bounds(),A=kt(t),r=Wt(A,Yt(e),n);if(!r)return;const o=e.pieces.get(r),s=e.selected;s||!e.drawable.enabled||!e.drawable.eraseOnClick&&o&&o.color===e.turnColor||function(e){e.drawable.shapes.length&&(e.drawable.shapes=[],e.dom.redraw(),mn(e.drawable))}(e),!1===t.cancelable||t.touches&&e.movable.color&&!o&&!s&&!function(e,t){const n=Yt(e),A=e.dom.bounds(),r=Math.pow(A.width/8,2);for(const o in e.pieces){const e=Ct(o,n,A);if(gt(e,t)<=r)return!0}return!1}(e,A)||t.preventDefault();const i=!!e.premovable.current,a=!!e.predroppable.current;e.stats.ctrlKey=t.ctrlKey,e.selected&&Gt(e,e.selected,r)?An(e=>Ut(e,r),e):Ut(e,r);const c=e.selected===r,l=vn(e,r);if(o&&l&&c&&function(e,t){const n=e.pieces.get(t);return!!n&&e.draggable.enabled&&("both"===e.movable.color||e.movable.color===n.color&&(e.turnColor===n.color||e.premovable.enabled))}(e,r)){e.draggable.current={orig:r,piece:o,origPos:A,pos:A,started:e.draggable.autoDistance&&e.stats.dragged,element:l,previouslySelected:s,originTarget:t.target},l.cgDragging=!0,l.classList.add("dragging");const i=e.dom.elements.ghost;i&&(i.className=`ghost ${o.color} ${o.role}`,bt(i,mt(n)(ct(r),Yt(e))),It(i,!0)),bn(e)}else i&&Bt(e),a&&Dt(e);e.dom.redraw()}function bn(e){requestAnimationFrame(()=>{var t;const n=e.draggable.current;if(!n)return;(null===(t=e.animation.current)||void 0===t?void 0:t.plan.anims.has(n.orig))&&(e.animation.current=void 0);const A=e.pieces.get(n.orig);if(A&&pt(A,n.piece)){if(!n.started&&gt(n.pos,n.origPos)>=Math.pow(e.draggable.distance,2)&&(n.started=!0),n.started){if("function"==typeof n.element){const e=n.element();if(!e)return;e.cgDragging=!0,e.classList.add("dragging"),n.element=e}const t=e.dom.bounds();bt(n.element,[n.pos[0]-t.left-t.width/16,n.pos[1]-t.top-t.height/16])}}else kn(e);bn(e)})}function yn(e,t){e.draggable.current&&(!t.touches||t.touches.length<2)&&(e.draggable.current.pos=kt(t))}function In(e,t){const n=e.draggable.current;if(!n)return;if("touchend"===t.type&&!1!==t.cancelable&&t.preventDefault(),"touchend"===t.type&&n.originTarget!==t.target&&!n.newPiece)return void(e.draggable.current=void 0);Bt(e),Dt(e);const A=Wt(kt(t)||n.pos,Yt(e),e.dom.bounds());A&&n.started&&n.orig!==A?n.newPiece?Ot(e,n.orig,A,n.force):(e.stats.ctrlKey=t.ctrlKey,Pt(e,n.orig,A)&&(e.stats.dragged=!0)):n.newPiece?e.pieces.delete(n.orig):e.draggable.deleteOnDropOff&&!A&&(e.pieces.delete(n.orig),jt(e.events.change)),(n.orig!==n.previouslySelected||n.orig!==A&&A)&&e.selectable.enabled||Jt(e),wn(e),e.draggable.current=void 0,e.dom.redraw()}function kn(e){const t=e.draggable.current;t&&(t.newPiece&&e.pieces.delete(t.orig),e.draggable.current=void 0,Jt(e),wn(e),e.dom.redraw())}function wn(e){const t=e.dom.elements;t.ghost&&It(t.ghost,!1)}function vn(e,t){let n=e.dom.elements.board.firstChild;for(;n;){if(n.cgKey===t&&"PIECE"===n.tagName)return n;n=n.nextSibling}}function Cn(e,t){e.exploding&&(t?e.exploding.stage=t:e.exploding=void 0,e.dom.redraw())}function Sn(e,t){function n(){!function(e){e.orientation=ht(e.orientation),e.animation.current=e.draggable.current=e.selected=void 0}(e),t()}return{set(t){t.orientation&&t.orientation!==e.orientation&&n(),(t.fen?An:rn)(e=>en(e,t),e)},state:e,getFen:()=>{return t=e.pieces,st.map(e=>rt.map(n=>{const A=t.get(n+e);if(A){const e=Xt[A.role];return"white"===A.color?e.toUpperCase():e}return"1"}).join("")).join("/").replace(/1{2,}/g,e=>e.length.toString());var t},toggleOrientation:n,setPieces(t){An(e=>function(e,t){for(const[n,A]of t)A?e.pieces.set(n,A):e.pieces.delete(n)}(e,t),e)},selectSquare(t,n){t?An(e=>Ut(e,t,n),e):e.selected&&(Jt(e),e.dom.redraw())},move(t,n){An(e=>Tt(e,t,n),e)},newPiece(t,n){An(e=>Qt(e,t,n),e)},playPremove(){if(e.premovable.current){if(An(Ft,e))return!0;e.dom.redraw()}return!1},playPredrop(t){if(e.predroppable.current){const n=function(e,t){const n=e.predroppable.current;let A=!1;if(!n)return!1;t(n)&&Qt(e,{role:n.role,color:e.movable.color},n.key)&&(jt(e.movable.events.afterNewPiece,n.role,n.key,{premove:!1,predrop:!0}),A=!0);return Dt(e),A}(e,t);return e.dom.redraw(),n}return!1},cancelPremove(){rn(Bt,e)},cancelPredrop(){rn(Dt,e)},cancelMove(){rn(e=>{Lt(e),kn(e)},e)},stop(){rn(e=>{zt(e),kn(e)},e)},explode(t){!function(e,t){e.exploding={stage:1,keys:t},e.dom.redraw(),setTimeout(()=>{Cn(e,2),setTimeout(()=>Cn(e,void 0),120)},120)}(e,t)},setAutoShapes(t){rn(e=>e.drawable.autoShapes=t,e)},setShapes(t){rn(e=>e.drawable.shapes=t,e)},getKeyAtDomPos:t=>Wt(t,Yt(e),e.dom.bounds()),redrawAll:t,dragNewPiece(t,n,A){!function(e,t,n,A){const r="a0";e.pieces.set(r,t),e.dom.redraw();const o=kt(n);e.draggable.current={orig:r,piece:t,origPos:o,pos:o,started:!0,element:()=>vn(e,r),originTarget:n.target,newPiece:!0,force:!!A},bn(e)}(e,t,n,A)},destroy(){zt(e),e.dom.unbind&&e.dom.unbind(),e.dom.destroyed=!0}}}function En(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function xn(e,t,n){const A=e.drawable,r=A.current,o=r&&r.mouseSq?r:void 0,s=new Map,i=e.dom.bounds();for(const e of A.shapes.concat(A.autoShapes).concat(o?[o]:[]))e.dest&&s.set(e.dest,(s.get(e.dest)||0)+1);const a=A.shapes.concat(A.autoShapes).map(e=>({shape:e,current:!1,hash:Nn(e,s,!1,i)}));o&&a.push({shape:o,current:!0,hash:Nn(o,s,!0,i)});const c=a.map(e=>e.hash).join(";");if(c===e.drawable.prevSvgHash)return;e.drawable.prevSvgHash=c;const l=t.querySelector("defs"),u=t.querySelector("g"),h=n.querySelector("g");!function(e,t,n){const A=new Map;let r;for(const n of t)n.shape.dest&&(r=e.brushes[n.shape.brush],n.shape.modifiers&&(r=Pn(r,n.shape.modifiers)),A.set(r.key,r));const o=new Set;let s=n.firstChild;for(;s;)o.add(s.getAttribute("cgKey")),s=s.nextSibling;for(const[e,t]of A.entries())o.has(e)||n.appendChild(Tn(t))}(A,a,l),Vn(e,a.filter(e=>!e.shape.customSvg),A.brushes,s,u),Vn(e,a.filter(e=>e.shape.customSvg),A.brushes,s,h)}function Vn(e,t,n,A,r){const o=e.dom.bounds(),s=new Map,i=[];for(const e of t)s.set(e.hash,!1);let a,c=r.firstChild;for(;c;)a=c.getAttribute("cgHash"),s.has(a)?s.set(a,!0):i.push(c),c=c.nextSibling;for(const e of i)r.removeChild(e);for(const i of t)s.get(i.hash)||r.appendChild(Dn(e,i,n,A,o))}function Nn({orig:e,dest:t,brush:n,piece:A,modifiers:r,customSvg:o},s,i,a){return[a.width,a.height,i,e,t,n,t&&(s.get(t)||0)>1,A&&Mn(A),r&&jn(r),o&&Bn(o)].filter(e=>e).join(",")}function Mn(e){return[e.color,e.role,e.scale].filter(e=>e).join(",")}function jn(e){return""+(e.lineWidth||"")}function Bn(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)>>>0;return"custom-"+t.toString()}function Dn(e,{shape:t,current:n,hash:A},r,o,s){let i;if(t.customSvg){const n=Zn(ct(t.orig),e.orientation);i=function(e,t,n){const{width:A,height:r}=n,o=A/8,s=r/8,i=t[0]*o,a=(7-t[1])*s,c=Qn(En("g"),{transform:`translate(${i},${a})`}),l=Qn(En("svg"),{width:o,height:s,viewBox:"0 0 100 100"});return c.appendChild(l),l.innerHTML=e,c}(t.customSvg,n,s)}else if(t.piece)i=function(e,t,n,A){const r=qn(t,A),o=A.width/8*(n.scale||1),s=n.color[0]+("knight"===n.role?"n":n.role[0]).toUpperCase();return Qn(En("image"),{className:`${n.role} ${n.color}`,x:r[0]-o/2,y:r[1]-o/2,width:o,height:o,href:e+s+".svg"})}(e.drawable.pieces.baseUrl,Zn(ct(t.orig),e.orientation),t.piece,s);else{const A=Zn(ct(t.orig),e.orientation);if(t.dest){let a=r[t.brush];t.modifiers&&(a=Pn(a,t.modifiers)),i=function(e,t,n,A,r,o){const s=function(e,t){return(t?20:10)/512*e.width}(o,r&&!A),i=qn(t,o),a=qn(n,o),c=a[0]-i[0],l=a[1]-i[1],u=Math.atan2(l,c),h=Math.cos(u)*s,g=Math.sin(u)*s;return Qn(En("line"),{stroke:e.color,"stroke-width":On(e,A,o),"stroke-linecap":"round","marker-end":"url(#arrowhead-"+e.key+")",opacity:Un(e,A),x1:i[0],y1:i[1],x2:a[0]-h,y2:a[1]-g})}(a,A,Zn(ct(t.dest),e.orientation),n,(o.get(t.dest)||0)>1,s)}else i=function(e,t,n,A){const r=qn(t,A),o=function(e){const t=e.width/512;return[3*t,4*t]}(A),s=(A.width+A.height)/32;return Qn(En("circle"),{stroke:e.color,"stroke-width":o[n?0:1],fill:"none",opacity:Un(e,n),cx:r[0],cy:r[1],r:s-o[1]/2})}(r[t.brush],A,n,s)}return i.setAttribute("cgHash",A),i}function Tn(e){const t=Qn(En("marker"),{id:"arrowhead-"+e.key,orient:"auto",markerWidth:4,markerHeight:8,refX:2.05,refY:2.01});return t.appendChild(Qn(En("path"),{d:"M0,0 V4 L3,2 Z",fill:e.color})),t.setAttribute("cgKey",e.key),t}function Qn(e,t){for(const n in t)e.setAttribute(n,t[n]);return e}function Zn(e,t){return"white"===t?e:[7-e[0],7-e[1]]}function Pn(e,t){return{color:e.color,opacity:Math.round(10*e.opacity)/10,lineWidth:Math.round(t.lineWidth||e.lineWidth),key:[e.key,t.lineWidth].filter(e=>e).join("")}}function On(e,t,n){return(e.lineWidth||10)*(t?.85:1)/512*n.width}function Un(e,t){return(e.opacity||1)*(t?.9:1)}function qn(e,t){return[(e[0]+.5)*t.width/8,(7.5-e[1])*t.height/8]}function Jn(e,t){const n=vt("coords",t);let A;for(const t of e)A=vt("coord"),A.textContent=t,n.appendChild(A);return n}function Kn(e,t){const n=e.dom.elements.board;if(!e.dom.relative&&e.resizable&&"ResizeObserver"in window){new window.ResizeObserver(t).observe(n)}if(e.viewOnly)return;const A=function(e){return t=>{e.draggable.current?kn(e):e.drawable.current?pn(e):t.shiftKey||wt(t)?e.drawable.enabled&&ln(e,t):e.viewOnly||(e.dropmode.active?function(e,t){if(!e.dropmode.active)return;Bt(e),Dt(e);const n=e.dropmode.piece;if(n){e.pieces.set("a0",n);const A=kt(t),r=A&&Wt(A,Yt(e),e.dom.bounds());r&&Ot(e,"a0",r)}e.dom.redraw()}(e,t):fn(e,t))}}(e);n.addEventListener("touchstart",A,{passive:!1}),n.addEventListener("mousedown",A,{passive:!1}),(e.disableContextMenu||e.drawable.enabled)&&n.addEventListener("contextmenu",e=>e.preventDefault())}function Gn(e,t,n,A){return e.addEventListener(t,n,A),()=>e.removeEventListener(t,n,A)}function Rn(e,t,n){return A=>{e.drawable.current?e.drawable.enabled&&n(e,A):e.viewOnly||t(e,A)}}function Fn(e){const t=Yt(e),n=e.dom.relative?ft:mt(e.dom.bounds()),A=e.dom.relative?yt:bt,r=e.dom.elements.board,o=e.pieces,s=e.animation.current,i=s?s.plan.anims:new Map,a=s?s.plan.fadings:new Map,c=e.draggable.current,l=function(e){var t;const n=new Map;if(e.lastMove&&e.highlight.lastMove)for(const t of e.lastMove)Hn(n,t,"last-move");e.check&&e.highlight.check&&Hn(n,e.check,"check");if(e.selected&&(Hn(n,e.selected,"selected"),e.movable.showDests)){const A=null===(t=e.movable.dests)||void 0===t?void 0:t.get(e.selected);if(A)for(const t of A)Hn(n,t,"move-dest"+(e.pieces.has(t)?" oc":""));const r=e.premovable.dests;if(r)for(const t of r)Hn(n,t,"premove-dest"+(e.pieces.has(t)?" oc":""))}const A=e.premovable.current;if(A)for(const e of A)Hn(n,e,"current-premove");else e.predroppable.current&&Hn(n,e.predroppable.current.key,"current-premove");const r=e.exploding;if(r)for(const e of r.keys)Hn(n,e,"exploding"+r.stage);return n}(e),u=new Set,h=new Set,g=new Map,p=new Map;let d,m,f,b,y,I,k,w,v,C;for(m=r.firstChild;m;){if(d=m.cgKey,Ln(m))if(f=o.get(d),y=i.get(d),I=a.get(d),b=m.cgPiece,!m.cgDragging||c&&c.orig===d||(m.classList.remove("dragging"),A(m,n(ct(d),t)),m.cgDragging=!1),!I&&m.cgFading&&(m.cgFading=!1,m.classList.remove("fading")),f){if(y&&m.cgAnimating&&b===_n(f)){const e=ct(d);e[0]+=y[2],e[1]+=y[3],m.classList.add("anim"),A(m,n(e,t))}else m.cgAnimating&&(m.cgAnimating=!1,m.classList.remove("anim"),A(m,n(ct(d),t)),e.addPieceZIndex&&(m.style.zIndex=Yn(ct(d),t)));b!==_n(f)||I&&m.cgFading?I&&b===_n(I)?(m.classList.add("fading"),m.cgFading=!0):Xn(g,b,m):u.add(d)}else Xn(g,b,m);else if(zn(m)){const e=m.className;l.get(d)===e?h.add(d):Xn(p,e,m)}m=m.nextSibling}for(const[e,o]of l)if(!h.has(e)){v=p.get(o),C=v&&v.pop();const s=n(ct(e),t);if(C)C.cgKey=e,A(C,s);else{const t=vt("square",o);t.cgKey=e,A(t,s),r.insertBefore(t,r.firstChild)}}for(const[s,a]of o)if(y=i.get(s),!u.has(s))if(k=g.get(_n(a)),w=k&&k.pop(),w){w.cgKey=s,w.cgFading&&(w.classList.remove("fading"),w.cgFading=!1);const r=ct(s);e.addPieceZIndex&&(w.style.zIndex=Yn(r,t)),y&&(w.cgAnimating=!0,w.classList.add("anim"),r[0]+=y[2],r[1]+=y[3]),A(w,n(r,t))}else{const o=_n(a),i=vt("piece",o),c=ct(s);i.cgPiece=o,i.cgKey=s,y&&(i.cgAnimating=!0,c[0]+=y[2],c[1]+=y[3]),A(i,n(c,t)),e.addPieceZIndex&&(i.style.zIndex=Yn(c,t)),r.appendChild(i)}for(const t of g.values())Wn(e,t);for(const t of p.values())Wn(e,t)}function Ln(e){return"PIECE"===e.tagName}function zn(e){return"SQUARE"===e.tagName}function Wn(e,t){for(const n of t)e.dom.elements.board.removeChild(n)}function Yn(e,t){let n=2+8*e[1]+(7-e[0]);return t&&(n=67-n),n+""}function _n(e){return`${e.color} ${e.role}`}function Hn(e,t,n){const A=e.get(t);A?e.set(t,`${A} ${n}`):e.set(t,n)}function Xn(e,t,n){const A=e.get(t);A?A.push(n):e.set(t,[n])}function $n(e,t){const n={pieces:$t(_t),orientation:"white",turnColor:"white",coordinates:!0,autoCastle:!0,viewOnly:!1,disableContextMenu:!1,resizable:!0,addPieceZIndex:!1,pieceKey:!1,highlight:{lastMove:!0,check:!0},animation:{enabled:!0,duration:200},movable:{free:!0,color:"both",showDests:!0,events:{},rookCastle:!0},premovable:{enabled:!0,showDests:!0,castle:!0,events:{}},predroppable:{enabled:!1,events:{}},draggable:{enabled:!0,distance:3,autoDistance:!0,showGhost:!0,deleteOnDropOff:!1},dropmode:{active:!1},selectable:{enabled:!0},stats:{dragged:!("ontouchstart"in window)},events:{},drawable:{enabled:!0,visible:!0,defaultSnapToValidMove:!0,eraseOnClick:!0,shapes:[],autoShapes:[],brushes:{green:{key:"g",color:"#15781B",opacity:1,lineWidth:10},red:{key:"r",color:"#882020",opacity:1,lineWidth:10},blue:{key:"b",color:"#003088",opacity:1,lineWidth:10},yellow:{key:"y",color:"#e68f00",opacity:1,lineWidth:10},paleBlue:{key:"pb",color:"#003088",opacity:.4,lineWidth:15},paleGreen:{key:"pg",color:"#15781B",opacity:.4,lineWidth:15},paleRed:{key:"pr",color:"#882020",opacity:.4,lineWidth:15},paleGrey:{key:"pgr",color:"#4a4a4a",opacity:.35,lineWidth:15}},pieces:{baseUrl:"https://lichess1.org/assets/piece/cburnett/"},prevSvgHash:""},hold:ut()};function A(){const t="dom"in n?n.dom.unbind:void 0,A=n.viewOnly&&!n.drawable.visible,r=function(e,t,n){e.innerHTML="",e.classList.add("cg-wrap");for(const n of At)e.classList.toggle("orientation-"+n,t.orientation===n);e.classList.toggle("manipulable",!t.viewOnly);const A=vt("cg-helper");e.appendChild(A);const r=vt("cg-container");A.appendChild(r);const o=vt("cg-board");let s,i,a;if(r.appendChild(o),t.drawable.visible&&!n&&(s=Qn(En("svg"),{class:"cg-shapes"}),s.appendChild(En("defs")),s.appendChild(En("g")),i=Qn(En("svg"),{class:"cg-custom-svgs"}),i.appendChild(En("g")),r.appendChild(s),r.appendChild(i)),t.coordinates){const e="black"===t.orientation?" black":"";r.appendChild(Jn(ot,"ranks"+e)),r.appendChild(Jn(rt,"files"+e))}return t.draggable.showGhost&&!n&&(a=vt("piece","ghost"),It(a,!1),r.appendChild(a)),{board:o,container:r,ghost:a,svg:s,customSvg:i}}(e,n,A),o=function(e){let t;const n=()=>(void 0===t&&(t=e()),t);return n.clear=()=>{t=void 0},n}(()=>r.board.getBoundingClientRect()),s=e=>{Fn(a),!e&&r.svg&&xn(a,r.svg,r.customSvg)},i=()=>{o.clear(),function(e){if(e.dom.relative)return;const t=Yt(e),n=mt(e.dom.bounds());let A=e.dom.elements.board.firstChild;for(;A;)(Ln(A)&&!A.cgAnimating||zn(A))&&bt(A,n(ct(A.cgKey),t)),A=A.nextSibling}(a),r.svg&&xn(a,r.svg,r.customSvg)},a=n;return a.dom={elements:r,bounds:o,redraw:eA(s),redrawNow:s,unbind:t,relative:A},a.drawable.prevSvgHash="",s(!1),Kn(a,i),t||(a.dom.unbind=function(e,t){const n=[];if(e.dom.relative||!e.resizable||"ResizeObserver"in window||n.push(Gn(document.body,"chessground.resize",t)),!e.viewOnly){const t=Rn(e,yn,hn),A=Rn(e,In,gn);for(const e of["touchmove","mousemove"])n.push(Gn(document,e,t));for(const e of["touchend","mouseup"])n.push(Gn(document,e,A));const r=()=>e.dom.bounds.clear();n.push(Gn(document,"scroll",r,{capture:!0,passive:!0})),n.push(Gn(window,"resize",r,{passive:!0}))}return()=>n.forEach(e=>e())}(a,i)),a.events.insert&&a.events.insert(r),a}return en(n,t||{}),Sn(A(),A)}function eA(e){let t=!1;return()=>{t||(t=!0,requestAnimationFrame(()=>{e(),t=!1}))}}class tA extends r.default.Component{buildConfigFromProps(e){const t={events:{}};return Object.keys(tA.types).forEach(n=>{const A=e[n];if(void 0!==A){const e=n.match(/^on([A-Z]\S*)/);e?t.events[e[1].toLowerCase()]=A:t[n]=A}}),t}componentDidMount(){this.board=$n(this.el,this.buildConfigFromProps(this.props)),this.board.setShapes(this.props.shapes||[])}componentDidUpdate(e){const t=this.buildConfigFromProps(this.props);this.props.fen===e.fen&&delete t.fen,this.board?this.board.set(t):this.board=$n(this.el,t),this.board.setShapes(this.props.shapes||[])}render(){const t={style:{...this.props.style}};return this.props.width&&(t.style.width=this.props.width),this.props.height&&(t.style.height=this.props.height),e.jsx("div",{ref:e=>this.el=e,...t})}}pe(tA,"types",{width:nt.oneOfType([nt.string,nt.number]),height:nt.oneOfType([nt.string,nt.number]),fen:nt.string,orientation:nt.string,turnColor:nt.string,check:nt.string,lastMove:nt.array,selected:nt.string,coordinates:nt.bool,autoCastle:nt.bool,viewOnly:nt.bool,disableContextMenu:nt.bool,resizable:nt.bool,addPieceZIndex:nt.bool,hightlight:nt.object,animation:nt.object,movable:nt.object,premovable:nt.object,predroppable:nt.object,draggable:nt.object,selectable:nt.object,onChange:nt.func,onMove:nt.func,onDropNewPiece:nt.func,onSelect:nt.func,items:nt.object,drawable:nt.object}),pe(tA,"defaultProps",{coordinates:!1,resizable:!0,hightlight:{lastMove:!0,check:!0}});const nA=e=>{try{new Audio(e).play()}catch{return()=>{}}},AA=e=>{if("silent"===e)return!1;switch(e){case"lisp":return nA("data:audio/ogg;base64,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");case"piano":return nA("data:audio/ogg;base64,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");case"sfx":return nA("data:audio/ogg;base64,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");default:return nA("data:audio/ogg;base64,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")}};var rA="object"==typeof global&&global&&global.Object===Object&&global,oA="object"==typeof self&&self&&self.Object===Object&&self,sA=rA||oA||Function("return this")(),iA=sA.Symbol,aA=Object.prototype,cA=aA.hasOwnProperty,lA=aA.toString,uA=iA?iA.toStringTag:void 0;var hA=Object.prototype.toString;var gA=iA?iA.toStringTag:void 0;function pA(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":gA&&gA in Object(e)?function(e){var t=cA.call(e,uA),n=e[uA];try{e[uA]=void 0;var A=!0}catch(e){}var r=lA.call(e);return A&&(t?e[uA]=n:delete e[uA]),r}(e):function(e){return hA.call(e)}(e)}function dA(e){return null!=e&&"object"==typeof e}var mA=Array.isArray;function fA(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function bA(e){if(!fA(e))return!1;var t=pA(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}var yA,IA=sA["__core-js_shared__"],kA=(yA=/[^.]+$/.exec(IA&&IA.keys&&IA.keys.IE_PROTO||""))?"Symbol(src)_1."+yA:"";var wA=Function.prototype.toString;function vA(e){if(null!=e){try{return wA.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var CA=/^\[object .+?Constructor\]$/,SA=Function.prototype,EA=Object.prototype,xA=SA.toString,VA=EA.hasOwnProperty,NA=RegExp("^"+xA.call(VA).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function MA(e){return!(!fA(e)||(t=e,kA&&kA in t))&&(bA(e)?NA:CA).test(vA(e));var t}function jA(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return MA(n)?n:void 0}var BA=jA(sA,"WeakMap");function DA(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var TA=Object.prototype;function QA(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||TA)}function ZA(e){return dA(e)&&"[object Arguments]"==pA(e)}var PA=Object.prototype,OA=PA.hasOwnProperty,UA=PA.propertyIsEnumerable,qA=ZA(function(){return arguments}())?ZA:function(e){return dA(e)&&OA.call(e,"callee")&&!UA.call(e,"callee")};var JA="object"==typeof exports&&exports&&!exports.nodeType&&exports,KA=JA&&"object"==typeof module&&module&&!module.nodeType&&module,GA=KA&&KA.exports===JA?sA.Buffer:void 0,RA=(GA?GA.isBuffer:void 0)||function(){return!1},FA={};FA["[object Float32Array]"]=FA["[object Float64Array]"]=FA["[object Int8Array]"]=FA["[object Int16Array]"]=FA["[object Int32Array]"]=FA["[object Uint8Array]"]=FA["[object Uint8ClampedArray]"]=FA["[object Uint16Array]"]=FA["[object Uint32Array]"]=!0,FA["[object Arguments]"]=FA["[object Array]"]=FA["[object ArrayBuffer]"]=FA["[object Boolean]"]=FA["[object DataView]"]=FA["[object Date]"]=FA["[object Error]"]=FA["[object Function]"]=FA["[object Map]"]=FA["[object Number]"]=FA["[object Object]"]=FA["[object RegExp]"]=FA["[object Set]"]=FA["[object String]"]=FA["[object WeakMap]"]=!1;var LA,zA="object"==typeof exports&&exports&&!exports.nodeType&&exports,WA=zA&&"object"==typeof module&&module&&!module.nodeType&&module,YA=WA&&WA.exports===zA&&rA.process,_A=function(){try{var e=WA&&WA.require&&WA.require("util").types;return e||YA&&YA.binding&&YA.binding("util")}catch(e){}}(),HA=_A&&_A.isTypedArray,XA=HA?(LA=HA,function(e){return LA(e)}):function(e){return dA(e)&&DA(e.length)&&!!FA[pA(e)]};var $A=function(e,t){return function(n){return e(t(n))}}(Object.keys,Object),er=$A,tr=Object.prototype.hasOwnProperty;var nr=jA(sA,"Map"),Ar=jA(sA,"DataView"),rr=jA(sA,"Promise"),or=jA(sA,"Set"),sr="[object Map]",ir="[object Promise]",ar="[object Set]",cr="[object WeakMap]",lr="[object DataView]",ur=vA(Ar),hr=vA(nr),gr=vA(rr),pr=vA(or),dr=vA(BA),mr=pA;(Ar&&mr(new Ar(new ArrayBuffer(1)))!=lr||nr&&mr(new nr)!=sr||rr&&mr(rr.resolve())!=ir||or&&mr(new or)!=ar||BA&&mr(new BA)!=cr)&&(mr=function(e){var t=pA(e),n="[object Object]"==t?e.constructor:void 0,A=n?vA(n):"";if(A)switch(A){case ur:return lr;case hr:return sr;case gr:return ir;case pr:return ar;case dr:return cr}return t});var fr=mr,br=Object.prototype.hasOwnProperty;function yr(e){if(null==e)return!0;if(function(e){return null!=e&&DA(e.length)&&!bA(e)}(e)&&(mA(e)||"string"==typeof e||"function"==typeof e.splice||RA(e)||XA(e)||qA(e)))return!e.length;var t=fr(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(QA(e))return!function(e){if(!QA(e))return er(e);var t=[];for(var n in Object(e))tr.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e).length;for(var n in e)if(br.call(e,n))return!1;return!0}const Ir=e=>{const t={};e.orientation&&(t.orientation=e.orientation,"w"===t.orientation&&(t.orientation="white"),"b"===t.orientation&&(t.orientation="black"));const n=["shapes","onSelect","drawable","lastMove"];for(const A of n)void 0!==e[A]&&null!==e[A]&&("shapes"!==A&&"function"!=typeof e[A]&&"object"==typeof e[A]&&yr(e[A])||(t[A]=e[A]));return!1===e.drawable&&(t.drawable={enabled:!1}),t.shapes&&(t.shapes=(e=>{try{return e.forEach(e=>{e.dest=e.dest.replace(/\]/g,"")}),e}catch{return e}})(t.shapes)),e.editing&&(t.movable={free:!1},t.drawable={enabled:!1},t.selectable={enabled:!0}),e.viewOnly&&(t.viewOnly=!0,t.draggable=!1,t.movable={free:!1},t.drawable={enabled:!1},t.selectable={enabled:!1}),e.readOnly&&(t.draggable=!1,t.movable={free:!1},t.drawable={enabled:!1},t.selectable={enabled:!1},t.coordinates=!1),t};var kr=(e,t,n)=>{try{const A=e.get(t);return"p"===A.type&&("w"===A.color&&"8"===n[1]||"b"===A.color&&"1"===n[1])}catch{return!1}};const wr=e=>Ae(e)&&(e=>{if(!e)return!1;const t=e.split(" ")[0];return 1===(t.match(/k/g)||[]).length&&1===(t.match(/K/g)||[]).length})(e),vr=(e,t,n=!1,A=!0)=>{if(!wr(e.fen()))return{free:!1};const r=new Map,o="w"===e.turn()?"white":"black";P.forEach(t=>{const n=e.moves({square:t,verbose:!0});n.length&&r.set(t,n.map(e=>e.to))});const s={color:o,dests:r,free:!1,showDests:A};return n&&t&&t!==o&&(s.color=t,s.dests=new Map),s};var Cr=l(function(e,t){e.exports=((e,t)=>(()=>{var n={494:()=>{},156:t=>{t.exports=e},111:e=>{e.exports=t}},A={};function r(e){var t=A[e];if(void 0!==t)return t.exports;var o=A[e]={exports:{}};return n[e](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=>{r.r(o),r.d(o,{default:()=>a});var e=r(156),t=r.n(e),n=r(111);function A(e){const{children:n,replace:A,bodyClass:r,header:o,footer:s,onDragStart:i,onDragEnd:a,onClose:c,closeButton:l,closeButtonPosition:u}=e;return A?n:t().createElement("div",{className:"panel panel-default "+("bottom"===u?"additional-row":"")},t().createElement("div",{className:"panel-heading",onTouchStart:i,onMouseDown:i,onTouchEnd:a,onMouseUp:a},o&&t().createElement("h3",{className:"panel-title"},o)),t().createElement("div",{className:r},n),s&&t().createElement("div",{className:"panel-footer"},s),t().createElement("div",{className:"close",onClick:c,style:{position:"header"===u?"absolute":"static",margin:"bottom"===u?"10px auto":""}},l))}A.defaultProps={closeButton:"×",closeButtonPosition:"header",replace:!1,draggable:!1};const s=A;function i(A){let r=Math.random().toString();const[o,i]=(0,e.useState)(!1),[a,c]=(0,e.useState)(null),[l,u]=(0,e.useState)(null),[h,g]=(0,e.useState)(0),[p,d]=(0,e.useState)(0),[m,f]=(0,e.useState)(0),[b,y]=(0,e.useState)(0),{isOpen:I,onClose:k}=A,w=(0,e.useCallback)(()=>{document.body.classList.remove("body-modal-fix")},[]);(0,e.useEffect)(()=>(I&&(document.addEventListener("keydown",v),document.activeElement instanceof HTMLElement&&document.activeElement.blur(),document.body.classList.add("body-modal-fix")),()=>{document.querySelector(".pure-modal")||(document.removeEventListener("keydown",v),w(),c(null),u(null),g(0),d(0),f(0),y(0))}),[I]);const v=(0,e.useCallback)(e=>{const t=document.querySelectorAll(".pure-modal"),n=t.length>1,A=t[t.length-1];return!(n&&!A.className.includes(r)||"Escape"!==e.key||!document.activeElement||(C(e),0))},[C,r]);if(!I)return null;function C(e){e&&(e.stopPropagation(),e.preventDefault()),null==k||k({isPassive:Boolean(e)})}function S(e){return e instanceof TouchEvent&&e.changedTouches.length>0?{pageX:e.changedTouches[0].pageX,pageY:e.changedTouches[0].pageY}:e instanceof MouseEvent?{pageX:e.pageX,pageY:e.pageY}:{pageX:0,pageY:0}}function E(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return x();e.preventDefault();const{pageX:t,pageY:n}=S(e);"number"==typeof a&&"number"==typeof l&&(g(t-a-m),d(n-l-b))}function x(){return i(!1)}const{children:V,replace:N=!1,className:M,header:j,footer:B,scrollable:D=!0,draggable:T=!1,width:Q,closeButton:Z,closeButtonPosition:P,portal:O=!1}=A;let U=["pure-modal-backdrop"],q=["pure-modal",r],J=["panel-body"];M&&(q=q.concat(M)),D?J=J.concat("scrollable"):(U=U.concat("scrollable"),q=q.concat("auto-height")),T&&(U=U.concat("backdrop-overflow-hidden"));const K=t().createElement("div",{className:U.join(" "),onMouseDown:function(e){if(e){if(!e.target.classList.contains("pure-modal-backdrop"))return;e.stopPropagation(),e.preventDefault()}C(e)},onTouchMove:o?E:void 0,onMouseMove:o?E:void 0},t().createElement("div",{className:q.join(" "),style:{transform:`translate(${h}px, ${p}px)`,transition:"none",width:Q}},t().createElement(s,{replace:N,header:j,footer:B,onDragStart:T?function(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return;e.preventDefault();const{pageX:t,pageY:n}=S(e),{top:A,left:r}=e.currentTarget.getBoundingClientRect();i(!0),c("number"==typeof a?a:r),u("number"==typeof l?l:A),f(t-r),y(n-A)}:void 0,onDragEnd:T?x:void 0,onClose:C,bodyClass:J.join(" "),closeButton:Z,closeButtonPosition:P},V)));return O?(0,n.createPortal)(K,document.body):K}r(494);const a=t().memo(i)})(),o})())(r.default,o.default)}),Sr=c(Cr);const Er=({role:t,color:n,highlighted:A,selectPiece:r})=>{const o="bin"===t;return e.jsx("div",{className:g("edit-square border border-gray-300 rounded",A&&"bg-orange-300"),children:e.jsx("piece",{className:g("spare-piece",t,n,o&&"next-trash"),onClick:()=>{"function"==typeof r&&r({role:t,color:n})}})})},xr=({isOpen:t,hide:n,onPromote:A,color:r="white"})=>{const o=e=>{A(e),n()};return e.jsx(Sr,{closeButton:"",isOpen:t,children:e.jsxs("div",{className:"promote flex gap-2 py-1.5 justify-center",children:[e.jsx(Er,{color:r,role:"queen",selectPiece:()=>o("q")}),e.jsx(Er,{color:r,role:"rook",selectPiece:()=>o("r")}),e.jsx(Er,{color:r,role:"bishop",selectPiece:()=>o("b")}),e.jsx(Er,{color:r,role:"knight",selectPiece:()=>o("n")})]})})},Vr=(n,A)=>{const{theme:r}=he(),{isOpen:o,show:s,hide:i}=ge(),{chess:a,fen:c,turnColor:l,lastMove:u,orientation:h,promotion:p,onMove:d,onPromote:m,onUndo:f}=ue(n),b=async(e,t,A)=>{const o=A?.promotion||p;if(!d(e,t,o)){return kr(a,e,t)&&!o&&s(),!1}return r.playSounds&&AA(r.sounds),"function"==typeof n.onMove&&await n.onMove(a),!0},{onSetPremove:y,onUnsetPremove:I,onPlayPremove:k,onCancelPremove:w,onPremovePromotion:v}=(e=>{const n=t.useRef(null),A=t.useCallback((e,t,A)=>{n.current={orig:e,dest:t,promotion:A?.promotion||null}},[]),r=t.useCallback(()=>{n.current=null},[]),o=t.useCallback(()=>"q",[]);return{onSetPremove:A,onUnsetPremove:r,onPlayPremove:t.useCallback(async()=>{if(n.current){const{orig:t,dest:A,promotion:r}=n.current,o={orig:t,dest:A,promotion:r};n.current=null;const s={promotion:o.promotion||"q"};return await e(o.orig,o.dest,s)}return!1},[e]),onCancelPremove:t.useCallback(()=>!!n.current&&(n.current=null,!0),[]),onPremovePromotion:o}})(b),C=t.useRef(),S=async(e,t,n)=>{if(n){const A={promotion:n};return await b(e,t,A)}return await b(e,t)},E=async()=>(C.current?.board&&C.current.board.cancelPremove(),await k());t.useImperativeHandle(A,()=>({board:C.current?.board,chess:a,undo:f,move:S,playPremove:E,cancelPremove:w}));t.useEffect(()=>{"function"==typeof n.setPromoting&&n.setPromoting(o)},[o]),t.useEffect(()=>{"function"==typeof n.onFenChange&&n.onFenChange(c)},[c]);const x=n.premoves?{enabled:!0,showDests:!0,castle:!0,events:{set:y,unset:I},promote:v}:{enabled:!1};return e.jsxs("div",{className:g("chessground",r.highlight&&"highlight",r.board,r.pieces),children:[e.jsx(tA,{ref:C,coordinates:r.coordinates,onMove:b,fen:c,turnColor:l,lastMove:u,orientation:h,movable:vr(a,h,n.premoves,r.showLegalMoves),premovable:x,...Ir(n)}),e.jsx(xr,{isOpen:o,hide:i,color:l,onPromote:async e=>{if(!m(e))return!1;r.playSounds&&AA(r.sounds),"function"==typeof n.onMove&&await n.onMove(a)}})]})};var Nr=t.forwardRef(Vr);const Mr=e=>{try{return"w"===e.split(" ")[1]?"white":"black"}catch{return"white"}},jr=e=>{const[n,A]=t.useState((e=>{try{return e.orientation?e.orientation:e.fen?Mr(e.fen):"white"}catch{return"white"}})(e));return t.useEffect(()=>{e.reset&&A(Mr(e.fen))},[e.reset]),[n,()=>{A(e=>"white"===e?"black":"white")}]},Br=()=>{const{theme:t,handleChange:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Board"}),e.jsxs("select",{name:"board",className:"bg-white border border-gray-300 px-2 py-1.5 w-full text-gray-800 rounded",defaultValue:t.board,onChange:n,children:[e.jsx("option",{value:"green",children:"Green"}),e.jsx("option",{value:"brown",children:"Brown"}),e.jsx("option",{value:"ruby",children:"Ruby"}),e.jsx("option",{value:"purple",children:"Purple"}),e.jsx("option",{value:"teal",children:"Teal"})]})]})},Dr=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Coordinates"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"coordinates",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.coordinates,onChange:n})})]})},Tr=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Highlight moves"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"highlight",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.highlight,onChange:n})})]})},Qr=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Show legal moves"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"showLegalMoves",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.showLegalMoves,onChange:n})})]})},Zr=()=>{const{theme:t,handleChange:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Pieces"}),e.jsxs("select",{name:"pieces",className:"bg-white border border-gray-300 px-2 py-1.5 w-full text-gray-800 rounded",defaultValue:t.pieces,onChange:n,children:[e.jsx("option",{value:"cburnett",children:"Cburnett"}),e.jsx("option",{value:"neo",children:"Neo"}),e.jsx("option",{value:"alpha",children:"Alpha"}),e.jsx("option",{value:"bases",children:"Bases"}),e.jsx("option",{value:"classic",children:"Classic"})]})]})},Pr=()=>{const{theme:t,handleChecked:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Play sounds"}),e.jsx("div",{className:"flex",children:e.jsx("input",{name:"playSounds",type:"checkbox",className:"checkbox rounded border border-gray-300",defaultChecked:t.playSounds,onChange:n})})]})},Or=()=>{const{theme:t,handleChange:n}=he();return e.jsxs(e.Fragment,{children:[e.jsx("div",{children:"Sounds"}),e.jsxs("select",{name:"sounds",className:"bg-white border border-gray-300 px-2 py-1.5 w-full text-gray-800 rounded",defaultValue:t.sounds,onChange:n,children:[e.jsx("option",{value:"robot",children:"Robot"}),e.jsx("option",{value:"piano",children:"Piano"}),e.jsx("option",{value:"lisp",children:"Lisp"}),e.jsx("option",{value:"sfx",children:"SFX"})]})]})},Ur=()=>{const{isOpen:t,show:n,hide:A}=ge();return e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"next-button next-settings",title:"Settings",onClick:n,children:e.jsx("i",{className:"next-cog"})}),e.jsx(Sr,{header:"Settings",isOpen:t,onClose:A,children:e.jsxs("div",{className:"grid grid-cols-2 gap-3 items-center text-sm",children:[e.jsx(Zr,{}),e.jsx(Br,{}),e.jsx(Tr,{}),e.jsx(Qr,{}),e.jsx(Pr,{}),e.jsx(Or,{}),e.jsx(Dr,{})]})})]})},qr=t=>e.jsx("button",{type:"button",className:"next-button next-flip",title:"Flip board",...t,children:e.jsx("i",{className:"next-sync"})}),Jr=({flip:t,readOnly:n})=>n?null:e.jsxs("div",{className:"chessground-footer text-gray-400 flex flex-row-reverse gap-2 py-1.5",children:[e.jsx(Ur,{}),e.jsx(qr,{onClick:t})]}),Kr=(t,n)=>{const[A,r]=jr(t);return e.jsx(h,{children:e.jsxs("div",{className:"next-chessground",children:[e.jsx(Nr,{...t,ref:n,orientation:A}),e.jsx(Jr,{flip:r,readOnly:t.readOnly})]})})};var Gr=t.forwardRef(Kr);const Rr=t=>{const{theme:n}=he();return e.jsx("div",{className:g("spare-pieces flex gap-2",n.pieces),children:["bin","pawn","knight","bishop","rook","queen","king"].map(n=>((t,n)=>{const{color:A="white",selected:r={role:null,color:null}}=n,o=t===r.role&&A===r.color;return e.jsx(Er,{highlighted:o,role:t,color:A,...n},`${t}-${A}`)})(n,t))})},Fr=e=>{const t=new Map;return t.set(e,null),t},Lr=({onChange:n})=>{const[A,r]=t.useState("w"),[o,s]=t.useState("-");t.useEffect(()=>{"function"==typeof n&&n([A,o].join(" "))},[A,o]);const i=e=>{const{value:t}=e.target;r(t)},a=e=>{const{value:t}=e.target;s(((e,t)=>{if(!t)return e;const n=["K","Q","k","q"].map(n=>n!==t?e.includes(n)?n:"":e.includes(t)?"":t).join("");return n.length?n:"-"})(o,t))};return e.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[e.jsxs("div",{className:"flex gap-2 w-full",children:[e.jsxs("div",{children:[e.jsx("input",{defaultChecked:!0,className:"mx-1",type:"radio",id:"white-radio",name:"side-to-move",value:"w",onChange:i}),e.jsx("label",{htmlFor:"white-radio",children:"White to move"})]}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"radio",id:"black-radio",name:"side-to-move",value:"b",onChange:i}),e.jsx("label",{htmlFor:"black-radio",children:"Black to move"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 w-full",children:[e.jsxs("div",{className:"flex w-full gap-4",children:[e.jsx("div",{children:e.jsx("span",{children:"White can"})}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"white-short-castle",value:"K",onChange:a}),e.jsx("label",{htmlFor:"white-short-castle",children:"O-O"})]}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"white-long-castle",value:"Q",onChange:a}),e.jsx("label",{htmlFor:"white-long-castle",children:"O-O-O"})]})]}),e.jsxs("div",{className:"flex w-full gap-4",children:[e.jsx("div",{children:e.jsx("span",{children:"Black can"})}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"black-short-castle",value:"k",onChange:a}),e.jsx("label",{htmlFor:"black-short-castle",children:"O-O"})]}),e.jsxs("div",{children:[e.jsx("input",{className:"mx-1",type:"checkbox",id:"black-long-castle",value:"q",onChange:a}),e.jsx("label",{htmlFor:"black-long-castle",children:"O-O-O"})]})]})]})]})},zr=(n,A)=>{const[r,o]=t.useState(n.fen||le.emptyFen),[s,i]=t.useState({role:null,color:null});t.useEffect(()=>{n.fen&&o(n.fen)},[n.fen]),t.useEffect(()=>{"function"==typeof n.onSelect&&n.onSelect(r)},[r]);return e.jsx(h,{children:e.jsxs("div",{className:"next-chessground gap-2",children:[e.jsx(Rr,{selected:s,selectPiece:i,color:"black"}),e.jsx(Nr,{...n,ref:A,fen:r,onSelect:e=>{const t=r.split(" ");t.shift();const n=t.join(" "),i=((e,t,n)=>{if(!e)throw new Error("Chessground is not defined");if(!t||!t.role||!t.color)return e.getFen();if("bin"===t.role)return e.setPieces(Fr(n)),e.getFen();const A=e.state.pieces.get(n);return A?A.role===t.role&&A.color===t.color?(e.setPieces(Fr(n)),e.getFen()):(e.setPieces(Fr(n)),e.newPiece(t,n),e.getFen()):(e.newPiece(t,n),e.getFen())})(A.current.board,s,e),a=[i,n].join(" ");o(a)},editing:!0,skipValidation:!0}),e.jsx(Rr,{selected:s,selectPiece:i,color:"white"}),e.jsx(Lr,{onChange:e=>{const t=[r.split(" ")[0],e,"- 0 1"].join(" ");o(t)}})]})})};var Wr=t.forwardRef(zr);function Yr(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var A=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css","top"===n&&A.firstChild?A.insertBefore(r,A.firstChild):A.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}}Yr(".brown .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgeG1sbnM6eD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIHZpZXdCb3g9IjAgMCA4IDgiICBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsbD0iI2I1ODg2MyIvPjxnIGlkPSJhIj4gIDxnIGlkPSJiIj4gICAgPGcgaWQ9ImMiPiAgICAgIDxnIGlkPSJkIj4gICAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNmMGQ5YjUiIGlkPSJlIi8+ICAgICAgICA8dXNlIHg9IjIiIGhyZWY9IiNlIiB4OmhyZWY9IiNlIi8+ICAgICAgPC9nPiAgICAgIDx1c2UgeD0iNCIgaHJlZj0iI2QiIHg6aHJlZj0iI2QiLz4gICAgPC9nPiAgICA8dXNlIHg9IjEiIHk9IjEiIGhyZWY9IiNjIiB4OmhyZWY9IiNjIi8+ICA8L2c+ICA8dXNlIHk9IjIiIGhyZWY9IiNiIiB4OmhyZWY9IiNiIi8+PC9nPjx1c2UgeT0iNCIgaHJlZj0iI2EiIHg6aHJlZj0iI2EiLz48L3N2Zz4=');\n}\n.green .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgeG1sbnM6eD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIHZpZXdCb3g9IjAgMCA4IDgiICBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+PHJlY3Qgd2lkdGg9IjgiIGhlaWdodD0iOCIgZmlsbD0iIzc3OTU1NiIvPjxnIGlkPSJhIj4gIDxnIGlkPSJiIj4gICAgPGcgaWQ9ImMiPiAgICAgIDxnIGlkPSJkIj4gICAgICAgIDxyZWN0IHdpZHRoPSIxIiBoZWlnaHQ9IjEiIGZpbGw9IiNFQkVDRDAiIGlkPSJlIi8+ICAgICAgICA8dXNlIHg9IjIiIGhyZWY9IiNlIiB4OmhyZWY9IiNlIi8+ICAgICAgPC9nPiAgICAgIDx1c2UgeD0iNCIgaHJlZj0iI2QiIHg6aHJlZj0iI2QiLz4gICAgPC9nPiAgICA8dXNlIHg9IjEiIHk9IjEiIGhyZWY9IiNjIiB4OmhyZWY9IiNjIi8+ICA8L2c+ICA8dXNlIHk9IjIiIGhyZWY9IiNiIiB4OmhyZWY9IiNiIi8+PC9nPjx1c2UgeT0iNCIgaHJlZj0iI2EiIHg6aHJlZj0iI2EiLz48L3N2Zz4=');\n}\n.ruby .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,CjxzdmcgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgIHhtbG5zOng9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiICB2aWV3Qm94PSIwIDAgOCA4IiAgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IiM4QjI2MzUiLz48ZyBpZD0iYSI+ICA8ZyBpZD0iYiI+ICAgIDxnIGlkPSJjIj4gICAgICA8ZyBpZD0iZCI+ICAgICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjRDJENEM4IiBpZD0iZSIvPiAgICAgICAgPHVzZSB4PSIyIiBocmVmPSIjZSIgeDpocmVmPSIjZSIvPiAgICAgIDwvZz4gICAgICA8dXNlIHg9IjQiIGhyZWY9IiNkIiB4OmhyZWY9IiNkIi8+ICAgIDwvZz4gICAgPHVzZSB4PSIxIiB5PSIxIiBocmVmPSIjYyIgeDpocmVmPSIjYyIvPiAgPC9nPiAgPHVzZSB5PSIyIiBocmVmPSIjYiIgeDpocmVmPSIjYiIvPjwvZz48dXNlIHk9IjQiIGhyZWY9IiNhIiB4OmhyZWY9IiNhIi8+PC9zdmc+');\n}\n.purple .cg-wrap cg-board {\n background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQABAMAAACNMzawAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAoAAAAKAAFDgsw8AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAABhQTFRFlXqwl3uyl3yzmX214NXq4tjt49ju5tvxH/WnVgAADqBJREFUeNrt3btVW1EUBmEHU5tboASV4Op8W6AEUwFyBcKBXzwECvbSOlzNOP/WSfb8Ek7Ety+jf6dt6L/2/tL3mfkvP/L79sMDOP3M79tTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuPz2A02Hot95f+j4F5PbDA+gTeO+eAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyew7DA9yGvvfXvk8Buf3wAPoE3rungNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcfnoAp8PQb72/9H0KyO2HB9An8N49BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hyGB7gNfe+vfZ8CcvvhAfQJvHdPAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2FJDbU0BuTwG5PQXk9hSQ21NAbk8BuT0F5PYUkNtTQG5PAbk9BeT2lw7gWEC37S8cwNNDAd22v3AAjwV0454GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J774QEehn7r/aXvU0BuPzyAPoH37ikgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3J4CcnsKyO0pILengNyeAnJ7CsjtKSC3p4DcngJyewrI7Skgt6eA3P7SARwXH/CxgK/rLxzA08PaA179/u37CwfwuPiAHwv4yp4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J4GwO1pANyeBsDtaQDcngbA7WkA3J67YcDfh374/mkb+oP8fRYH3AAs9sMDmH6C9w1gtacBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALfnkw/AsYCv6/ncA9CAXNvzuQegbxDX9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9jQAbk8D4PY0AG5PA+D2NABuTwPg9twPA74bHvA2fP+w9v3T3t9n5wE3IEM/PIDVn+B9g5h6GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwexoAt6cBcHsaALenAXB7GgC3pwFwe64c4HHxABwbgNEBTAPcu7/9AeG6Ae7d3/43CBoA9zcIGgD3nxA0AO4/IWgA3P+HQAPg/j8EGgD1AHx0AA2AwdMAqAfggwNoABSeBkA9AO8fQAPg8DQA6gF49wAaAImnAVAPwHsH0ABYPA2AegDeOYAGQONpANQDcP4AGgCPpwFQD8DZA2gARJ4GQD0A5w6gATB5GgD1AJw5gAZA5WkA1APw9gAaAJenAVAPwJsDaABkngZAPQCvD6ABsHkaAPUAvDqABkDnaQDUA/DyABoAn6cBUA/AiwNoAISeBkA9AM8PoAEwehoA9QA8O4AGQOlpANQD8P8AGgCnpwFQD8C/A2gApJ4GQD0Afw+gAbB6GgD1APw5gAZA62kA1APw+wAaAK+nAXD/tiANgPu3BWkA3D8uSgPg/nFRGgD3rwvTALh/XZgGwO1pANyeBsDtfwE/g8u1a15o2AAAAABJRU5ErkJggg==');\n}\n.teal .cg-wrap cg-board {\n background-image: url('data:image/svg+xml;base64,CjxzdmcgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgIHhtbG5zOng9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiICB2aWV3Qm94PSIwIDAgOCA4IiAgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPjxyZWN0IHdpZHRoPSI4IiBoZWlnaHQ9IjgiIGZpbGw9IiMxYzcyYWQiLz48ZyBpZD0iYSI+ICA8ZyBpZD0iYiI+ICAgIDxnIGlkPSJjIj4gICAgICA8ZyBpZD0iZCI+ICAgICAgICA8cmVjdCB3aWR0aD0iMSIgaGVpZ2h0PSIxIiBmaWxsPSIjZTNlYmYzIiBpZD0iZSIvPiAgICAgICAgPHVzZSB4PSIyIiBocmVmPSIjZSIgeDpocmVmPSIjZSIvPiAgICAgIDwvZz4gICAgICA8dXNlIHg9IjQiIGhyZWY9IiNkIiB4OmhyZWY9IiNkIi8+ICAgIDwvZz4gICAgPHVzZSB4PSIxIiB5PSIxIiBocmVmPSIjYyIgeDpocmVmPSIjYyIvPiAgPC9nPiAgPHVzZSB5PSIyIiBocmVmPSIjYiIgeDpocmVmPSIjYiIvPjwvZz48dXNlIHk9IjQiIGhyZWY9IiNhIiB4OmhyZWY9IiNhIi8+PC9zdmc+');\n}\n\n.next-chessground .green cg-board square.move-dest {\n background: radial-gradient(\n rgba(20, 85, 30, 0.5) 22%,\n #208530 0,\n rgba(0, 0, 0, 0.3) 0,\n rgba(0, 0, 0, 0) 0\n );\n}\n.next-chessground .green cg-board square.oc.move-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 80%,\n rgba(20, 85, 0, 0.3) 80%\n );\n}\n.next-chessground .green cg-board square.move-dest:hover {\n background: rgba(20, 85, 30, 0.3);\n}\n\n.next-chessground .brown cg-board square.move-dest {\n background: radial-gradient(\n rgba(20, 85, 30, 0.5) 22%,\n #208530 0,\n rgba(0, 0, 0, 0.3) 0,\n rgba(0, 0, 0, 0) 0\n );\n}\n.next-chessground .brown cg-board square.oc.move-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 80%,\n rgba(20, 85, 0, 0.3) 80%\n );\n}\n.next-chessground .brown cg-board square.move-dest:hover {\n background: rgba(20, 85, 30, 0.3);\n}\n\n.next-chessground .ruby cg-board square.move-dest {\n background: radial-gradient(\n rgba(200, 180, 40, 0.6) 22%,\n rgba(200, 180, 40, 0.8) 0,\n rgba(0, 0, 0, 0.3) 0,\n rgba(0, 0, 0, 0) 0\n );\n}\n.next-chessground .ruby cg-board square.oc.move-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 80%,\n rgba(200, 180, 40, 0.3) 80%\n );\n}\n.next-chessground .ruby cg-board square.move-dest:hover {\n background: rgba(200, 180, 40, 0.3);\n}\n\n.next-chessground .purple cg-board square.move-dest {\n background: radial-gradient(\n rgba(180, 130, 255, 0.6) 22%,\n rgba(180, 130, 255, 0.8) 0,\n rgba(0, 0, 0, 0.3) 0,\n rgba(0, 0, 0, 0) 0\n );\n}\n.next-chessground .purple cg-board square.oc.move-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 80%,\n rgba(180, 130, 255, 0.3) 80%\n );\n}\n.next-chessground .purple cg-board square.move-dest:hover {\n background: rgba(180, 130, 255, 0.3);\n}\n\n.next-chessground .teal cg-board square.move-dest {\n background: radial-gradient(\n rgba(20, 200, 180, 0.6) 22%,\n rgba(20, 200, 180, 0.8) 0,\n rgba(0, 0, 0, 0.3) 0,\n rgba(0, 0, 0, 0) 0\n );\n}\n.next-chessground .teal cg-board square.oc.move-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 80%,\n rgba(20, 200, 180, 0.3) 80%\n );\n}\n.next-chessground .teal cg-board square.move-dest:hover {\n background: rgba(20, 200, 180, 0.3);\n}\n");Yr(".next-chessground .chessground {\n grid-area: board;\n position: relative;\n display: block;\n height: 0;\n padding-bottom: 100%;\n padding-right: 100%;\n width: 100%;\n border-radius: 0.25rem;\n overflow: hidden;\n}\n\n.next-chessground .cg-wrap {\n display: table;\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.next-chessground cg-helper {\n position: absolute;\n width: 12.5%;\n padding-bottom: 12.5%;\n display: table;\n bottom: 0;\n}\n\n.next-chessground cg-container {\n position: absolute;\n width: 800%;\n height: 800%;\n display: block;\n bottom: 0;\n}\n\n.next-chessground cg-board {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n line-height: 0;\n background-size: cover;\n cursor: pointer;\n}\n\n.next-chessground cg-board square {\n position: absolute;\n top: 0;\n left: 0;\n width: 12.5%;\n height: 12.5%;\n pointer-events: none;\n}\n.next-chessground cg-board square.selected {\n background-color: rgba(246, 246, 130, 0.8);\n}\n.next-chessground cg-board square.move-dest {\n pointer-events: auto;\n background: radial-gradient(\n rgba(0, 0, 0, 0.4) 22%,\n rgba(0, 0, 0, 0.15) 22%,\n rgba(0, 0, 0, 0) 73%\n );\n}\n.next-chessground cg-board square.premove-dest {\n pointer-events: auto;\n background: radial-gradient(\n rgba(20, 30, 85, 0.5) 22%,\n #203085 0,\n rgba(0, 0, 0, 0.3) 0,\n rgba(0, 0, 0, 0) 0\n );\n}\n.next-chessground cg-board square.oc.move-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 79%,\n rgba(0, 0, 0, 0.2) 80%\n );\n}\n.next-chessground cg-board square.oc.premove-dest {\n background: radial-gradient(\n transparent 0%,\n transparent 80%,\n rgba(20, 30, 85, 0.2) 80%\n );\n}\n.next-chessground cg-board square.move-dest:hover {\n background: rgba(0, 0, 0, 0.2);\n}\n.next-chessground cg-board square.premove-dest:hover {\n background: rgba(20, 30, 85, 0.2);\n}\n.next-chessground .highlight cg-board square.last-move {\n will-change: transform;\n background-color: rgba(246, 246, 130, 0.5);\n}\n.next-chessground .highlight .correct cg-board square.last-move {\n background-color: rgba(155, 240, 0, 0.4);\n}\n.next-chessground .highlight .incorrect cg-board square.last-move {\n background-color: rgba(240, 0, 0, 0.4);\n}\n\n.next-chessground cg-board square.check {\n background: radial-gradient(\n ellipse at center,\n rgba(255, 0, 0, 1) 0%,\n rgba(231, 0, 0, 1) 25%,\n rgba(169, 0, 0, 0) 89%,\n rgba(158, 0, 0, 0) 100%\n );\n}\n.next-chessground cg-board square.current-premove {\n background-color: rgba(235, 97, 80, 0.8);\n}\n.next-chessground cg-board piece {\n position: absolute;\n top: 0;\n left: 0;\n width: 12.5%;\n height: 12.5%;\n background-size: cover;\n z-index: 2;\n will-change: transform;\n pointer-events: none;\n}\n.next-chessground cg-board piece.dragging {\n cursor: move;\n z-index: 9;\n}\n.next-chessground cg-board piece.anim {\n z-index: 8;\n}\n.next-chessground cg-board piece.fading {\n z-index: 1;\n opacity: 0.5;\n}\n.next-chessground cg-board piece.ghost {\n opacity: 0.3;\n}\n.next-chessground .cg-wrap svg {\n overflow: hidden;\n position: relative;\n top: 0px;\n left: 0px;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 2;\n opacity: 0.6;\n}\n.next-chessground .cg-wrap svg image {\n opacity: 0.5;\n}\n\n.next-chessground .spare-pieces {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n.next-chessground .spare-piece {\n top: 0;\n left: 0;\n padding-bottom: 100%;\n padding-left: 100%;\n position: absolute;\n background-size: contain;\n background-position: 0% -100%;\n cursor: pointer;\n}\n.next-chessground .edit-square {\n display: table;\n position: relative;\n width: 14.285%;\n padding-bottom: 13.285%;\n}\n.next-chessground .promote .edit-square {\n width: 20%;\n padding-bottom: 20%;\n}\n");Yr("coords {\n position: absolute;\n display: flex;\n pointer-events: none;\n user-select: none;\n color: #fff;\n font-weight: bold;\n font-size: 0.5rem;\n opacity: 0.8;\n}\n.coords-no coords {\n display: none;\n}\n@media (min-width: 640px) {\n coords {\n font-size: 0.75rem;\n }\n}\ncoords.ranks {\n flex-flow: column-reverse;\n top: 0;\n right: 0;\n height: 100%;\n width: 0.8em;\n}\ncoords.ranks.black {\n flex-flow: column;\n}\ncoords.files {\n bottom: 0;\n left: 0;\n flex-flow: row;\n width: 100%;\n}\ncoords.files.black {\n flex-flow: row-reverse;\n}\ncoords.files coord {\n padding-left: 4px;\n}\ncoords coord {\n flex: 1 1 auto;\n}\n\n.orientation-white .files coord:nth-child(2n + 1),\n.orientation-white .ranks coord:nth-child(2n),\n.orientation-black .files coord:nth-child(2n),\n.orientation-black .ranks coord:nth-child(2n + 1) {\n color: #fff;\n}\n.orientation-white .files coord:nth-child(2n),\n.orientation-white .ranks coord:nth-child(2n + 1),\n.orientation-black .files coord:nth-child(2n + 1),\n.orientation-black .ranks coord:nth-child(2n) {\n color: #779556;\n}\n");Yr(".next-chessground .next-cog {\n width: 1rem;\n height: 1rem;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBmaWxsPSIjOUY5REIwIiBkPSJNNDg3LjQgMzE1LjdsLTQyLjYtMjQuNmM0LjMtMjMuMiA0LjMtNDcgMC03MC4ybDQyLjYtMjQuNmM0LjktMi44IDcuMS04LjYgNS41LTE0LTExLjEtMzUuNi0zMC02Ny44LTU0LjctOTQuNi0zLjgtNC4xLTEwLTUuMS0xNC44LTIuM0wzODAuOCAxMTBjLTE3LjktMTUuNC0zOC41LTI3LjMtNjAuOC0zNS4xVjI1LjhjMC01LjYtMy45LTEwLjUtOS40LTExLjctMzYuNy04LjItNzQuMy03LjgtMTA5LjIgMC01LjUgMS4yLTkuNCA2LjEtOS40IDExLjdWNzVjLTIyLjIgNy45LTQyLjggMTkuOC02MC44IDM1LjFMODguNyA4NS41Yy00LjktMi44LTExLTEuOS0xNC44IDIuMy0yNC43IDI2LjctNDMuNiA1OC45LTU0LjcgOTQuNi0xLjcgNS40LjYgMTEuMiA1LjUgMTRMNjcuMyAyMjFjLTQuMyAyMy4yLTQuMyA0NyAwIDcwLjJsLTQyLjYgMjQuNmMtNC45IDIuOC03LjEgOC42LTUuNSAxNCAxMS4xIDM1LjYgMzAgNjcuOCA1NC43IDk0LjYgMy44IDQuMSAxMCA1LjEgMTQuOCAyLjNsNDIuNi0yNC42YzE3LjkgMTUuNCAzOC41IDI3LjMgNjAuOCAzNS4xdjQ5LjJjMCA1LjYgMy45IDEwLjUgOS40IDExLjcgMzYuNyA4LjIgNzQuMyA3LjggMTA5LjIgMCA1LjUtMS4yIDkuNC02LjEgOS40LTExLjd2LTQ5LjJjMjIuMi03LjkgNDIuOC0xOS44IDYwLjgtMzUuMWw0Mi42IDI0LjZjNC45IDIuOCAxMSAxLjkgMTQuOC0yLjMgMjQuNy0yNi43IDQzLjYtNTguOSA1NC43LTk0LjYgMS41LTUuNS0uNy0xMS4zLTUuNi0xNC4xek0yNTYgMzM2Yy00NC4xIDAtODAtMzUuOS04MC04MHMzNS45LTgwIDgwLTgwIDgwIDM1LjkgODAgODAtMzUuOSA4MC04MCA4MHoiLz48L3N2Zz4=');\n}\n.next-chessground .next-sync {\n width: 1rem;\n height: 1rem;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgNTEyIj48cGF0aCBmaWxsPSIjOUY5REIwIiBkPSJNMzcwLjcyIDEzMy4yOEMzMzkuNDU4IDEwNC4wMDggMjk4Ljg4OCA4Ny45NjIgMjU1Ljg0OCA4OGMtNzcuNDU4LjA2OC0xNDQuMzI4IDUzLjE3OC0xNjIuNzkxIDEyNi44NS0xLjM0NCA1LjM2My02LjEyMiA5LjE1LTExLjY1MSA5LjE1SDI0LjEwM2MtNy40OTggMC0xMy4xOTQtNi44MDctMTEuODA3LTE0LjE3NkMzMy45MzMgOTQuOTI0IDEzNC44MTMgOCAyNTYgOGM2Ni40NDggMCAxMjYuNzkxIDI2LjEzNiAxNzEuMzE1IDY4LjY4NUw0NjMuMDMgNDAuOTdDNDc4LjE0OSAyNS44NTEgNTA0IDM2LjU1OSA1MDQgNTcuOTQxVjE5MmMwIDEzLjI1NS0xMC43NDUgMjQtMjQgMjRIMzQ1Ljk0MWMtMjEuMzgyIDAtMzIuMDktMjUuODUxLTE2Ljk3MS00MC45NzFsNDEuNzUtNDEuNzQ5ek0zMiAyOTZoMTM0LjA1OWMyMS4zODIgMCAzMi4wOSAyNS44NTEgMTYuOTcxIDQwLjk3MWwtNDEuNzUgNDEuNzVjMzEuMjYyIDI5LjI3MyA3MS44MzUgNDUuMzE5IDExNC44NzYgNDUuMjggNzcuNDE4LS4wNyAxNDQuMzE1LTUzLjE0NCAxNjIuNzg3LTEyNi44NDkgMS4zNDQtNS4zNjMgNi4xMjItOS4xNSAxMS42NTEtOS4xNWg1Ny4zMDRjNy40OTggMCAxMy4xOTQgNi44MDcgMTEuODA3IDE0LjE3NkM0NzguMDY3IDQxNy4wNzYgMzc3LjE4NyA1MDQgMjU2IDUwNGMtNjYuNDQ4IDAtMTI2Ljc5MS0yNi4xMzYtMTcxLjMxNS02OC42ODVMNDguOTcgNDcxLjAzQzMzLjg1MSA0ODYuMTQ5IDggNDc1LjQ0MSA4IDQ1NC4wNTlWMzIwYzAtMTMuMjU1IDEwLjc0NS0yNCAyNC0yNHoiLz48L3N2Zz4=');\n}\n.next-chessground .next-trash {\n width: 1rem;\n height: 1rem;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii05NiAtOTYgNjQwIDY0MCI+PHBhdGggZD0iTTI2OCA0MTZoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6TTQzMiA4MGgtODIuNDFsLTM0LTU2LjdBNDggNDggMCAwIDAgMjc0LjQxIDBIMTczLjU5YTQ4IDQ4IDAgMCAwLTQxLjE2IDIzLjNMOTguNDEgODBIMTZBMTYgMTYgMCAwIDAgMCA5NnYxNmExNiAxNiAwIDAgMCAxNiAxNmgxNnYzMzZhNDggNDggMCAwIDAgNDggNDhoMjg4YTQ4IDQ4IDAgMCAwIDQ4LTQ4VjEyOGgxNmExNiAxNiAwIDAgMCAxNi0xNlY5NmExNiAxNiAwIDAgMC0xNi0xNnpNMTcxLjg0IDUwLjkxQTYgNiAwIDAgMSAxNzcgNDhoOTRhNiA2IDAgMCAxIDUuMTUgMi45MUwyOTMuNjEgODBIMTU0LjM5ek0zNjggNDY0SDgwVjEyOGgyODh6bS0yMTItNDhoMjRhMTIgMTIgMCAwIDAgMTItMTJWMTg4YTEyIDEyIDAgMCAwLTEyLTEyaC0yNGExMiAxMiAwIDAgMC0xMiAxMnYyMTZhMTIgMTIgMCAwIDAgMTIgMTJ6Ii8+PC9zdmc+');\n}\n");Yr("*,\n::after,\n::before {\n box-sizing: border-box;\n border-width: 0;\n border-style: solid;\n}\n\n.next-chessground {\n display: flex;\n flex-direction: column;\n position: relative;\n width: 100%;\n}\n.next-chessground .checkbox {\n display: flex;\n margin: 0;\n align-items: center;\n padding-left: 0.25rem;\n width: 2.75rem;\n height: 1.75rem;\n outline: none;\n appearance: none;\n transition: 0.2s ease-in-out;\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n cursor: pointer;\n}\n.next-chessground .checkbox:before {\n background-color: rgba(156, 163, 175);\n width: 1rem;\n height: 1rem;\n border-radius: 999px;\n content: '';\n transition: 0.2s ease-in-out;\n}\n.next-chessground .checkbox:checked:before {\n background-color: rgba(4, 120, 87);\n transform: translate(1rem, 0);\n}\n.next-chessground .next-button {\n background-color: transparent;\n background-image: none;\n cursor: pointer;\n display: flex;\n outline: none;\n\n padding: 0;\n line-height: inherit;\n color: inherit;\n font-size: 100%;\n}\n.next-chessground .next-button:focus {\n outline: none;\n}\n");Yr(".pure-modal {\n box-shadow: rgba(0, 0, 0, 0.5) 0px 5px 15px 0px;\n color: rgba(55, 65, 81);\n}\n.pure-modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n.backdrop-overflow-hidden {\n overflow: hidden !important;\n}\n.pure-modal-backdrop .pure-modal {\n width: 300px;\n max-width: 100%;\n box-sizing: border-box;\n transition: all 0.2s ease-in-out;\n max-height: 100%;\n}\n.pure-modal.auto-height {\n position: static;\n}\n.pure-modal-backdrop.scrollable {\n overflow-y: auto;\n}\n.pure-modal-backdrop .panel {\n display: grid;\n grid-template-rows: repeat(3, min-content);\n}\n.pure-modal-backdrop:not(.scrollable) .panel {\n grid-template-rows: min-content minmax(0, 1fr) min-content;\n max-height: -moz-available;\n max-height: -webkit-fill-available;\n max-height: fill-available;\n height: 100%;\n}\n.pure-modal > * > * {\n flex: 0 0 auto;\n}\n.pure-modal > * > .scrollable {\n overflow-x: hidden;\n overflow-scrolling: touch;\n}\n@media (max-width: 480px) {\n .pure-modal-backdrop .pure-modal {\n width: 100%;\n }\n}\n.pure-modal .panel-body {\n background-color: #fff;\n}\n.pure-modal .panel-heading {\n background: #f0f0f0;\n}\n.pure-modal .panel-title {\n padding: 12px 45px 12px 15px;\n margin: 0;\n}\n.pure-modal .close {\n right: 6px;\n top: 6px;\n z-index: 1;\n width: 30px;\n height: 30px;\n border-radius: 15px;\n text-align: center;\n line-height: 30px;\n cursor: pointer;\n font-size: 1.85rem;\n}\n.pure-modal .panel-heading .close:hover {\n color: #000;\n}\n.pure-modal .panel-body {\n padding: 15px;\n}\n.pure-modal .panel-footer {\n padding: 12px 45px 12px 15px;\n background: #f0f0f0;\n}\n.pure-modal .panel-body,\n.pure-modal .panel-footer,\n.pure-modal .panel-title {\n word-break: break-all;\n}\n.pure-modal-backdrop .additional-row,\n.pure-modal-backdrop:not(.scrollable) .additional-row {\n display: grid;\n grid-template-rows: min-content minmax(0, 1fr) min-content min-content;\n}\n");Yr("/**\n * Cburnett\n */\n.cburnett piece.pawn.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wP.svg');\n}\n.cburnett piece.bishop.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wB.svg');\n}\n.cburnett piece.knight.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wN.svg');\n}\n.cburnett piece.rook.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wR.svg');\n}\n.cburnett piece.queen.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wQ.svg');\n}\n.cburnett piece.king.white {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/wK.svg');\n}\n.cburnett piece.pawn.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bP.svg');\n}\n.cburnett piece.bishop.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bB.svg');\n}\n.cburnett piece.knight.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bN.svg');\n}\n.cburnett piece.rook.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bR.svg');\n}\n.cburnett piece.queen.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bQ.svg');\n}\n.cburnett piece.king.black {\n background-image: url('https://lichess1.org/assets/_MKI2V3/piece/cburnett/bK.svg');\n}\n\n/**\n * Classic\n */\n.classic piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wp.png');\n}\n.classic piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wb.png');\n}\n.classic piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wn.png');\n}\n.classic piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wr.png');\n}\n.classic piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wq.png');\n}\n.classic piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/wk.png');\n}\n.classic piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bp.png');\n}\n.classic piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bb.png');\n}\n.classic piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bn.png');\n}\n.classic piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/br.png');\n}\n.classic piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bq.png');\n}\n.classic piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/classic/150/bk.png');\n}\n\n/**\n * Neo\n */\n.neo piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wp.png');\n}\n.neo piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wb.png');\n}\n.neo piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wn.png');\n}\n.neo piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wr.png');\n}\n.neo piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wq.png');\n}\n.neo piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/wk.png');\n}\n.neo piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bp.png');\n}\n.neo piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bb.png');\n}\n.neo piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bn.png');\n}\n.neo piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/br.png');\n}\n.neo piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bq.png');\n}\n.neo piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/neo/150/bk.png');\n}\n\n/**\n * Alpha\n */\n.alpha piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wp.png');\n}\n.alpha piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wb.png');\n}\n.alpha piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wn.png');\n}\n.alpha piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wr.png');\n}\n.alpha piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wq.png');\n}\n.alpha piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/wk.png');\n}\n.alpha piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bp.png');\n}\n.alpha piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bb.png');\n}\n.alpha piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bn.png');\n}\n.alpha piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/br.png');\n}\n.alpha piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bq.png');\n}\n.alpha piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/alpha/150/bk.png');\n}\n\n/**\n * Bases\n */\n.bases piece.pawn.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wp.png');\n}\n.bases piece.bishop.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wb.png');\n}\n.bases piece.knight.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wn.png');\n}\n.bases piece.rook.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wr.png');\n}\n.bases piece.queen.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wq.png');\n}\n.bases piece.king.white {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/wk.png');\n}\n.bases piece.pawn.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bp.png');\n}\n.bases piece.bishop.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bb.png');\n}\n.bases piece.knight.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bn.png');\n}\n.bases piece.rook.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/br.png');\n}\n.bases piece.queen.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bq.png');\n}\n.bases piece.king.black {\n background-image: url('https://images.chesscomfiles.com/chess-themes/pieces/bases/150/bk.png');\n}\n");Yr(".flex {\n display: flex;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-row-reverse {\n flex-direction: row-reverse;\n}\n.grid {\n display: grid;\n}\n.grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n.gap-2 {\n gap: 0.5rem;\n}\n.gap-3 {\n gap: 0.75rem;\n}\n.w-full {\n width: 100%;\n}\n.items-center {\n align-items: center;\n}\n.justify-center {\n justify-content: center;\n}\n.py-1\\.5 {\n padding-top: 0.375rem;\n padding-bottom: 0.375rem;\n}\n.px-2 {\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n}\n.cursor-pointer {\n cursor: pointer;\n}\n.cursor-resize {\n cursor: nesw-resize;\n}\n.outline-none,\n.outline-none:focus {\n outline: none;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-gray-400 {\n color: rgba(156, 163, 175);\n}\n.text-gray-800 {\n color: rgba(31, 41, 55);\n}\n.bg-white {\n background-color: #fff;\n}\n.bg-orange-300 {\n background-color: #fbd38d;\n}\n.border {\n border-width: 1px;\n border-style: solid;\n}\n.border-gray-300 {\n border-color: rgba(209, 213, 219);\n}\n.rounded {\n border-radius: 0.25rem;\n}\n"),exports.NextChessground=Gr,exports.NextEditor=Wr,exports.Stockfish=class{constructor(e){if("undefined"==typeof window)return!1;if(!window.chessEngineWorker){const t=e??process.env.STOCKFISH_PATH;window.chessEngineWorker=new Worker(t)}this.skillLevel=20,this.maxDepth=40,this.resolveTimeout=null,this.isAnalyzing=!1,this.fen=le.initialFen}getTurnFromFen(e){return e.split(" ")[1]}normalizeScoreValue(e){const{fen:t}=this;return"b"===this.getTurnFromFen(t)?-1*e:e}isInfoMessage(e){return!(!e||!e.data)&&e.data.startsWith("info")}setSkillLevel(){window.chessEngineWorker.postMessage("setoption name Skill Level value "+this.skillLevel),window.chessEngineWorker.postMessage("setoption name Skill Level Maximum Error value 5000"),window.chessEngineWorker.postMessage("setoption name Skill Level Probability value 1")}async init(){await this.use_uci(),await this.is_ready(),this.setSkillLevel()}getScoreFromInfo(e){if(e.startsWith("info depth 0")){const t=e.split(" "),n=t[4],A=this.normalizeScoreValue(Number(t[5]));return this.isAnalyzing=!1,{type:n,value:A}}if(e.startsWith("info depth ")){const t=e.split(" ");return{type:t[8],value:this.normalizeScoreValue(Number(t[9]))}}return{type:"cp",value:0}}parseData(e){const t=e.split(" ")[2];let n="";e.indexOf(" pv ")>-1&&(n=e.split(" pv ")[1].split(" bmc ")[0]);return{depth:t,pv:n,score:this.getScoreFromInfo(e)}}use_uci(){return new Promise(e=>{window.chessEngineWorker.postMessage("uci"),window.chessEngineWorker.onmessage=t=>{"uciok"===t.data&&e(t)}})}is_ready(){return new Promise(e=>{window.chessEngineWorker.postMessage("isready"),window.chessEngineWorker.onmessage=t=>{"readyok"===t.data&&e(t)}})}set_position(e){return new Promise(t=>{this.fen=e,window.chessEngineWorker.postMessage("position fen "+e),t()})}async new_position(e){await this.stop(),await this.is_ready(),this.set_position(e),this.go_infinite()}set_multipv(e){window.chessEngineWorker.postMessage("setoption name MultiPV value "+e)}get_score(e,t=15){return new Promise(n=>{window.chessEngineWorker.postMessage("position fen "+e),window.chessEngineWorker.postMessage("go depth 15"),window.chessEngineWorker.onmessage=e=>{if(e.data.startsWith("info depth "+t)){const t=e.data.split(" "),A=t[8],r=Number(t[9]);n({type:A,value:r})}else if(e.data.startsWith("info depth 0")){const t=e.data.split(" "),A=t[4],r=Number(t[5]);n({type:A,value:r})}}})}go_depth(e){return new Promise(t=>{window.chessEngineWorker.postMessage("go depth "+e),window.chessEngineWorker.onmessage=e=>{e.data.startsWith("bestmove")&&t(e.data)}})}go_time(e){return new Promise(t=>{window.chessEngineWorker.postMessage("go movetime "+e),window.chessEngineWorker.onmessage=e=>{e.data.startsWith("bestmove")&&t(e.data)}})}go_infinite(e){window.chessEngineWorker.postMessage("go infinite"),this.isAnalyzing=!0,window.chessEngineWorker.onmessage=t=>{if(this.isInfoMessage(t)&&"function"==typeof e){const n=this.parseData(t.data);n.depth>this.maxDepth&&this.stop(),e(n)}}}stop(){return new Promise(e=>{this.isAnalyzing||e(),window.chessEngineWorker.postMessage("stop"),window.chessEngineWorker.onmessage=t=>{t.data.startsWith("bestmove")&&(this.isAnalyzing=!1,e(t.data))}})}quit(){window.chessEngineWorker.postMessage("quit")}},exports.constants=le,exports.default=Gr,exports.isValidFen=wr,exports.useChess=ue,exports.useChessground=he;