@lichess-org/pgn-viewer 2.5.0 → 2.5.1
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/README.md +12 -0
- package/demo/lichess-pgn-viewer.js +5 -2
- package/dist/lichess-pgn-viewer.min.js +3 -3
- package/dist/translation.d.ts +1 -1
- package/dist/translation.js +5 -2
- package/dist/translation.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/view/menu.d.ts +3 -2
- package/dist/view/menu.js +2 -2
- package/dist/view/menu.js.map +1 -1
- package/package.json +1 -1
- package/src/translation.ts +5 -2
- package/src/view/menu.ts +3 -3
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Lichess PGN Viewer
|
|
2
2
|
|
|
3
|
+
[](https://github.com/lichess-org/pgn-viewer/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/@lichess-org/pgn-viewer)
|
|
5
|
+
|
|
3
6
|
PGN viewer widget, designed to be embedded in content pages.
|
|
4
7
|
|
|
5
8
|
This won't replace a fully featured [analysis board](https://lichess.org/analysis).
|
|
@@ -136,3 +139,12 @@ pnpm test:watch
|
|
|
136
139
|
- Vue.js: [dragunovartem99/vue-pgn-viewer](https://github.com/dragunovartem99/vue-pgn-viewer)
|
|
137
140
|
|
|
138
141
|
More? Please make a pull request to include it here.
|
|
142
|
+
|
|
143
|
+
## Release procedure
|
|
144
|
+
|
|
145
|
+
- https://github.com/lichess-org/pgn-viewer/actions/workflows/release.yaml
|
|
146
|
+
- [Run workflow]
|
|
147
|
+
- Branch: master
|
|
148
|
+
- Version tag: vX.Y.Z
|
|
149
|
+
|
|
150
|
+
The release workflow will increment the package.json version, create the tag, the github release, and publish to npm
|
|
@@ -2637,8 +2637,11 @@ var parseComment = (comment) => {
|
|
|
2637
2637
|
|
|
2638
2638
|
// src/translation.ts
|
|
2639
2639
|
var defaultTranslator = (key) => defaultTranslations[key];
|
|
2640
|
-
function translate(
|
|
2641
|
-
return (key, ...args) =>
|
|
2640
|
+
function translate(custom) {
|
|
2641
|
+
return (key, ...args) => {
|
|
2642
|
+
const translated = custom && custom(key) || defaultTranslator(key);
|
|
2643
|
+
return interpolate(translated ?? key, args);
|
|
2644
|
+
};
|
|
2642
2645
|
}
|
|
2643
2646
|
var interpolate = (str, args) => {
|
|
2644
2647
|
let result = str;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Ee=["a","b","c","d","e","f","g","h"],nt=["1","2","3","4","5","6","7","8"];var H=["white","black"],U=["pawn","knight","bishop","rook","queen","king"],zn=["a","h"],oe=e=>"role"in e;var g=e=>e!==void 0,M=e=>e==="white"?"black":"white",J=e=>e>>3,L=e=>e&7,rt=(e,t)=>0<=e&&e<8&&0<=t&&t<8?e+8*t:void 0,se=e=>{switch(e){case"pawn":return"p";case"knight":return"n";case"bishop":return"b";case"rook":return"r";case"queen":return"q";case"king":return"k"}};function Ae(e){switch(e.toLowerCase()){case"p":return"pawn";case"n":return"knight";case"b":return"bishop";case"r":return"rook";case"q":return"queen";case"k":return"king";default:return}}function he(e){if(e.length===2)return rt(e.charCodeAt(0)-97,e.charCodeAt(1)-49)}var j=e=>Ee[L(e)]+nt[J(e)];var zt=e=>oe(e)?`${se(e.role).toUpperCase()}@${j(e.to)}`:j(e.from)+j(e.to)+(e.promotion?se(e.promotion):""),Ke=(e,t)=>e==="white"?t==="a"?2:6:t==="a"?58:62,it=(e,t)=>e==="white"?t==="a"?3:5:t==="a"?59:61;var Fn=e=>(e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),Math.imul(e+(e>>>4)&252645135,16843009)>>24),Ft=e=>(e=e>>>8&16711935|(e&16711935)<<8,e>>>16&65535|(e&65535)<<16),Hn=e=>(e=e>>>1&1431655765|(e&1431655765)<<1,e=e>>>2&858993459|(e&858993459)<<2,e=e>>>4&252645135|(e&252645135)<<4,Ft(e)),u=class e{constructor(t,n){this.lo=t|0,this.hi=n|0}static fromSquare(t){return t>=32?new e(0,1<<t-32):new e(1<<t,0)}static fromRank(t){return new e(255,0).shl64(8*t)}static fromFile(t){return new e(16843009<<t,16843009<<t)}static empty(){return new e(0,0)}static full(){return new e(4294967295,4294967295)}static corners(){return new e(129,2164260864)}static center(){return new e(402653184,24)}static backranks(){return new e(255,4278190080)}static backrank(t){return t==="white"?new e(255,0):new e(0,4278190080)}static lightSquares(){return new e(1437226410,1437226410)}static darkSquares(){return new e(2857740885,2857740885)}complement(){return new e(~this.lo,~this.hi)}xor(t){return new e(this.lo^t.lo,this.hi^t.hi)}union(t){return new e(this.lo|t.lo,this.hi|t.hi)}intersect(t){return new e(this.lo&t.lo,this.hi&t.hi)}diff(t){return new e(this.lo&~t.lo,this.hi&~t.hi)}intersects(t){return this.intersect(t).nonEmpty()}isDisjoint(t){return this.intersect(t).isEmpty()}supersetOf(t){return t.diff(this).isEmpty()}subsetOf(t){return this.diff(t).isEmpty()}shr64(t){return t>=64?e.empty():t>=32?new e(this.hi>>>t-32,0):t>0?new e(this.lo>>>t^this.hi<<32-t,this.hi>>>t):this}shl64(t){return t>=64?e.empty():t>=32?new e(0,this.lo<<t-32):t>0?new e(this.lo<<t,this.hi<<t^this.lo>>>32-t):this}bswap64(){return new e(Ft(this.hi),Ft(this.lo))}rbit64(){return new e(Hn(this.hi),Hn(this.lo))}minus64(t){let n=this.lo-t.lo,r=(n&t.lo&1)+(t.lo>>>1)+(n>>>1)>>>31;return new e(n,this.hi-(t.hi+r))}equals(t){return this.lo===t.lo&&this.hi===t.hi}size(){return Fn(this.lo)+Fn(this.hi)}isEmpty(){return this.lo===0&&this.hi===0}nonEmpty(){return this.lo!==0||this.hi!==0}has(t){return(t>=32?this.hi&1<<t-32:this.lo&1<<t)!==0}set(t,n){return n?this.with(t):this.without(t)}with(t){return t>=32?new e(this.lo,this.hi|1<<t-32):new e(this.lo|1<<t,this.hi)}without(t){return t>=32?new e(this.lo,this.hi&~(1<<t-32)):new e(this.lo&~(1<<t),this.hi)}toggle(t){return t>=32?new e(this.lo,this.hi^1<<t-32):new e(this.lo^1<<t,this.hi)}last(){if(this.hi!==0)return 63-Math.clz32(this.hi);if(this.lo!==0)return 31-Math.clz32(this.lo)}first(){if(this.lo!==0)return 31-Math.clz32(this.lo&-this.lo);if(this.hi!==0)return 63-Math.clz32(this.hi&-this.hi)}withoutFirst(){return this.lo!==0?new e(this.lo&this.lo-1,this.hi):new e(0,this.hi&this.hi-1)}moreThanOne(){return this.hi!==0&&this.lo!==0||(this.lo&this.lo-1)!==0||(this.hi&this.hi-1)!==0}singleSquare(){return this.moreThanOne()?void 0:this.last()}*[Symbol.iterator](){let t=this.lo,n=this.hi;for(;t!==0;){let r=31-Math.clz32(t&-t);t^=1<<r,yield r}for(;n!==0;){let r=31-Math.clz32(n&-n);n^=1<<r,yield 32+r}}*reversed(){let t=this.lo,n=this.hi;for(;n!==0;){let r=31-Math.clz32(n);n^=1<<r,yield 32+r}for(;t!==0;){let r=31-Math.clz32(t);t^=1<<r,yield r}}};var ot=(e,t)=>{let n=u.empty();for(let r of t){let i=e+r;0<=i&&i<64&&Math.abs(L(e)-L(i))<=2&&(n=n.with(i))}return n},be=e=>{let t=[];for(let n=0;n<64;n++)t[n]=e(n);return t},qi=be(e=>ot(e,[-9,-8,-7,-1,1,7,8,9])),Di=be(e=>ot(e,[-17,-15,-10,-6,6,10,15,17])),Li={white:be(e=>ot(e,[7,9])),black:be(e=>ot(e,[-7,-9]))},ae=e=>qi[e],qe=e=>Di[e],we=(e,t)=>Li[e][t],Ht=be(e=>u.fromFile(L(e)).without(e)),Vt=be(e=>u.fromRank(J(e)).without(e)),Gt=be(e=>{let t=new u(134480385,2151686160),n=8*(J(e)-L(e));return(n>=0?t.shl64(n):t.shr64(-n)).without(e)}),Wt=be(e=>{let t=new u(270549120,16909320),n=8*(J(e)+L(e)-7);return(n>=0?t.shl64(n):t.shr64(-n)).without(e)}),Ut=(e,t,n)=>{let r=n.intersect(t),i=r.bswap64();return r=r.minus64(e),i=i.minus64(e.bswap64()),r.xor(i.bswap64()).intersect(t)},Bi=(e,t)=>Ut(u.fromSquare(e),Ht[e],t),Ii=(e,t)=>{let n=Vt[e],r=t.intersect(n),i=r.rbit64();return r=r.minus64(u.fromSquare(e)),i=i.minus64(u.fromSquare(63-e)),r.xor(i.rbit64()).intersect(n)},ve=(e,t)=>{let n=u.fromSquare(e);return Ut(n,Gt[e],t).xor(Ut(n,Wt[e],t))},ye=(e,t)=>Bi(e,t).xor(Ii(e,t)),$e=(e,t)=>ve(e,t).xor(ye(e,t)),st=(e,t,n)=>{switch(e.role){case"pawn":return we(e.color,t);case"knight":return qe(t);case"bishop":return ve(t,n);case"rook":return ye(t,n);case"queen":return $e(t,n);case"king":return ae(t)}},jt=(e,t)=>{let n=u.fromSquare(t);return Vt[e].intersects(n)?Vt[e].with(e):Wt[e].intersects(n)?Wt[e].with(e):Gt[e].intersects(n)?Gt[e].with(e):Ht[e].intersects(n)?Ht[e].with(e):u.empty()},xe=(e,t)=>jt(e,t).intersect(u.full().shl64(e).xor(u.full().shl64(t))).withoutFirst();var de=class e{constructor(){}static default(){let t=new e;return t.reset(),t}reset(){this.occupied=new u(65535,4294901760),this.promoted=u.empty(),this.white=new u(65535,0),this.black=new u(0,4294901760),this.pawn=new u(65280,16711680),this.knight=new u(66,1107296256),this.bishop=new u(36,603979776),this.rook=new u(129,2164260864),this.queen=new u(8,134217728),this.king=new u(16,268435456)}static empty(){let t=new e;return t.clear(),t}clear(){this.occupied=u.empty(),this.promoted=u.empty();for(let t of H)this[t]=u.empty();for(let t of U)this[t]=u.empty()}clone(){let t=new e;t.occupied=this.occupied,t.promoted=this.promoted;for(let n of H)t[n]=this[n];for(let n of U)t[n]=this[n];return t}getColor(t){if(this.white.has(t))return"white";if(this.black.has(t))return"black"}getRole(t){for(let n of U)if(this[n].has(t))return n}get(t){let n=this.getColor(t);if(!n)return;let r=this.getRole(t),i=this.promoted.has(t);return{color:n,role:r,promoted:i}}take(t){let n=this.get(t);return n&&(this.occupied=this.occupied.without(t),this[n.color]=this[n.color].without(t),this[n.role]=this[n.role].without(t),n.promoted&&(this.promoted=this.promoted.without(t))),n}set(t,n){let r=this.take(t);return this.occupied=this.occupied.with(t),this[n.color]=this[n.color].with(t),this[n.role]=this[n.role].with(t),n.promoted&&(this.promoted=this.promoted.with(t)),r}has(t){return this.occupied.has(t)}*[Symbol.iterator](){for(let t of this.occupied)yield[t,this.get(t)]}pieces(t,n){return this[t].intersect(this[n])}rooksAndQueens(){return this.rook.union(this.queen)}bishopsAndQueens(){return this.bishop.union(this.queen)}steppers(){return this.knight.union(this.pawn).union(this.king)}sliders(){return this.bishop.union(this.rook).union(this.queen)}kingOf(t){return this.pieces(t,"king").singleSquare()}};var fe=class e{constructor(){}static empty(){let t=new e;for(let n of U)t[n]=0;return t}static fromBoard(t,n){let r=new e;for(let i of U)r[i]=t.pieces(n,i).size();return r}clone(){let t=new e;for(let n of U)t[n]=this[n];return t}equals(t){return U.every(n=>this[n]===t[n])}add(t){let n=new e;for(let r of U)n[r]=this[r]+t[r];return n}subtract(t){let n=new e;for(let r of U)n[r]=this[r]-t[r];return n}nonEmpty(){return U.some(t=>this[t]>0)}isEmpty(){return!this.nonEmpty()}hasPawns(){return this.pawn>0}hasNonPawns(){return this.knight>0||this.bishop>0||this.rook>0||this.queen>0||this.king>0}size(){return this.pawn+this.knight+this.bishop+this.rook+this.queen+this.king}},_e=class e{constructor(t,n){this.white=t,this.black=n}static empty(){return new e(fe.empty(),fe.empty())}static fromBoard(t){return new e(fe.fromBoard(t,"white"),fe.fromBoard(t,"black"))}clone(){return new e(this.white.clone(),this.black.clone())}equals(t){return this.white.equals(t.white)&&this.black.equals(t.black)}add(t){return new e(this.white.add(t.white),this.black.add(t.black))}subtract(t){return new e(this.white.subtract(t.white),this.black.subtract(t.black))}count(t){return this.white[t]+this.black[t]}size(){return this.white.size()+this.black.size()}isEmpty(){return this.white.isEmpty()&&this.black.isEmpty()}nonEmpty(){return!this.isEmpty()}hasPawns(){return this.white.hasPawns()||this.black.hasPawns()}hasNonPawns(){return this.white.hasNonPawns()||this.black.hasNonPawns()}},Se=class e{constructor(t,n){this.white=t,this.black=n}static default(){return new e(3,3)}clone(){return new e(this.white,this.black)}equals(t){return this.white===t.white&&this.black===t.black}};var at=class{unwrap(t,n){let r=this._chain(i=>m.ok(t?t(i):i),i=>n?m.ok(n(i)):m.err(i));if(r.isErr)throw r.error;return r.value}map(t,n){return this._chain(r=>m.ok(t(r)),r=>m.err(n?n(r):r))}chain(t,n){return this._chain(t,n??(r=>m.err(r)))}},Yt=class extends at{constructor(t){super(),this.value=t,this.isOk=!0,this.isErr=!1}_chain(t,n){return t(this.value)}},Zt=class extends at{constructor(t){super(),this.error=t,this.isOk=!1,this.isErr=!0}_chain(t,n){return n(this.error)}},m;(function(e){function t(i){return new Yt(i)}e.ok=t;function n(i){return new Zt(i||new Error)}e.err=n;function r(i){if(Array.isArray(i)){let a=[];for(let l=0;l<i.length;l++){let c=i[l];if(c.isErr)return c;a.push(c.value)}return e.ok(a)}let o={},s=Object.keys(i);for(let a=0;a<s.length;a++){let l=i[s[a]];if(l.isErr)return l;o[s[a]]=l.value}return e.ok(o)}e.all=r})(m||(m={}));var q;(function(e){e.Empty="ERR_EMPTY",e.OppositeCheck="ERR_OPPOSITE_CHECK",e.PawnsOnBackrank="ERR_PAWNS_ON_BACKRANK",e.Kings="ERR_KINGS",e.Variant="ERR_VARIANT"})(q||(q={}));var D=class extends Error{},Ki=(e,t,n,r)=>n[t].intersect(ye(e,r).intersect(n.rooksAndQueens()).union(ve(e,r).intersect(n.bishopsAndQueens())).union(qe(e).intersect(n.knight)).union(ae(e).intersect(n.king)).union(we(M(t),e).intersect(n.pawn))),ce=class e{constructor(){}static default(){let t=new e;return t.castlingRights=u.corners(),t.rook={white:{a:0,h:7},black:{a:56,h:63}},t.path={white:{a:new u(14,0),h:new u(96,0)},black:{a:new u(0,234881024),h:new u(0,1610612736)}},t}static empty(){let t=new e;return t.castlingRights=u.empty(),t.rook={white:{a:void 0,h:void 0},black:{a:void 0,h:void 0}},t.path={white:{a:u.empty(),h:u.empty()},black:{a:u.empty(),h:u.empty()}},t}clone(){let t=new e;return t.castlingRights=this.castlingRights,t.rook={white:{a:this.rook.white.a,h:this.rook.white.h},black:{a:this.rook.black.a,h:this.rook.black.h}},t.path={white:{a:this.path.white.a,h:this.path.white.h},black:{a:this.path.black.a,h:this.path.black.h}},t}add(t,n,r,i){let o=Ke(t,n),s=it(t,n);this.castlingRights=this.castlingRights.with(i),this.rook[t][n]=i,this.path[t][n]=xe(i,s).with(s).union(xe(r,o).with(o)).without(r).without(i)}static fromSetup(t){let n=e.empty(),r=t.castlingRights.intersect(t.board.rook);for(let i of H){let o=u.backrank(i),s=t.board.kingOf(i);if(!g(s)||!o.has(s))continue;let a=r.intersect(t.board[i]).intersect(o),l=a.first();g(l)&&l<s&&n.add(i,"a",s,l);let c=a.last();g(c)&&s<c&&n.add(i,"h",s,c)}return n}discardRook(t){if(this.castlingRights.has(t)){this.castlingRights=this.castlingRights.without(t);for(let n of H)for(let r of zn)this.rook[n][r]===t&&(this.rook[n][r]=void 0)}}discardColor(t){this.castlingRights=this.castlingRights.diff(u.backrank(t)),this.rook[t].a=void 0,this.rook[t].h=void 0}},ee=class{constructor(t){this.rules=t}reset(){this.board=de.default(),this.pockets=void 0,this.turn="white",this.castles=ce.default(),this.epSquare=void 0,this.remainingChecks=void 0,this.halfmoves=0,this.fullmoves=1}setupUnchecked(t){this.board=t.board.clone(),this.board.promoted=u.empty(),this.pockets=void 0,this.turn=t.turn,this.castles=ce.fromSetup(t),this.epSquare=$i(this,t.epSquare),this.remainingChecks=void 0,this.halfmoves=t.halfmoves,this.fullmoves=t.fullmoves}kingAttackers(t,n,r){return Ki(t,n,this.board,r)}playCaptureAt(t,n){this.halfmoves=0,n.role==="rook"&&this.castles.discardRook(t),this.pockets&&this.pockets[M(n.color)][n.promoted?"pawn":n.role]++}ctx(){let t=this.isVariantEnd(),n=this.board.kingOf(this.turn);if(!g(n))return{king:n,blockers:u.empty(),checkers:u.empty(),variantEnd:t,mustCapture:!1};let r=ye(n,u.empty()).intersect(this.board.rooksAndQueens()).union(ve(n,u.empty()).intersect(this.board.bishopsAndQueens())).intersect(this.board[M(this.turn)]),i=u.empty();for(let s of r){let a=xe(n,s).intersect(this.board.occupied);a.moreThanOne()||(i=i.union(a))}let o=this.kingAttackers(n,M(this.turn),this.board.occupied);return{king:n,blockers:i,checkers:o,variantEnd:t,mustCapture:!1}}clone(){var t,n;let r=new this.constructor;return r.board=this.board.clone(),r.pockets=(t=this.pockets)===null||t===void 0?void 0:t.clone(),r.turn=this.turn,r.castles=this.castles.clone(),r.epSquare=this.epSquare,r.remainingChecks=(n=this.remainingChecks)===null||n===void 0?void 0:n.clone(),r.halfmoves=this.halfmoves,r.fullmoves=this.fullmoves,r}validate(){if(this.board.occupied.isEmpty())return m.err(new D(q.Empty));if(this.board.king.size()!==2)return m.err(new D(q.Kings));if(!g(this.board.kingOf(this.turn)))return m.err(new D(q.Kings));let t=this.board.kingOf(M(this.turn));return g(t)?this.kingAttackers(t,this.turn,this.board.occupied).nonEmpty()?m.err(new D(q.OppositeCheck)):u.backranks().intersects(this.board.pawn)?m.err(new D(q.PawnsOnBackrank)):m.ok(void 0):m.err(new D(q.Kings))}dropDests(t){return u.empty()}dests(t,n){if(n=n||this.ctx(),n.variantEnd)return u.empty();let r=this.board.get(t);if(!r||r.color!==this.turn)return u.empty();let i,o;if(r.role==="pawn"){i=we(this.turn,t).intersect(this.board[M(this.turn)]);let s=this.turn==="white"?8:-8,a=t+s;if(0<=a&&a<64&&!this.board.occupied.has(a)){i=i.with(a);let l=this.turn==="white"?t<16:t>=48,c=a+s;l&&!this.board.occupied.has(c)&&(i=i.with(c))}g(this.epSquare)&&Fi(this,t,n)&&(o=u.fromSquare(this.epSquare))}else r.role==="bishop"?i=ve(t,this.board.occupied):r.role==="knight"?i=qe(t):r.role==="rook"?i=ye(t,this.board.occupied):r.role==="queen"?i=$e(t,this.board.occupied):i=ae(t);if(i=i.diff(this.board[this.turn]),g(n.king)){if(r.role==="king"){let s=this.board.occupied.without(t);for(let a of i)this.kingAttackers(a,M(this.turn),s).nonEmpty()&&(i=i.without(a));return i.union(ct(this,"a",n)).union(ct(this,"h",n))}if(n.checkers.nonEmpty()){let s=n.checkers.singleSquare();if(!g(s))return u.empty();i=i.intersect(xe(s,n.king).with(s))}n.blockers.has(t)&&(i=i.intersect(jt(t,n.king)))}return o&&(i=i.union(o)),i}isVariantEnd(){return!1}variantOutcome(t){}hasInsufficientMaterial(t){return this.board[t].intersect(this.board.pawn.union(this.board.rooksAndQueens())).nonEmpty()?!1:this.board[t].intersects(this.board.knight)?this.board[t].size()<=2&&this.board[M(t)].diff(this.board.king).diff(this.board.queen).isEmpty():this.board[t].intersects(this.board.bishop)?(!this.board.bishop.intersects(u.darkSquares())||!this.board.bishop.intersects(u.lightSquares()))&&this.board.pawn.isEmpty()&&this.board.knight.isEmpty():!0}toSetup(){var t,n;return{board:this.board.clone(),pockets:(t=this.pockets)===null||t===void 0?void 0:t.clone(),turn:this.turn,castlingRights:this.castles.castlingRights,epSquare:zi(this),remainingChecks:(n=this.remainingChecks)===null||n===void 0?void 0:n.clone(),halfmoves:Math.min(this.halfmoves,150),fullmoves:Math.min(Math.max(this.fullmoves,1),9999)}}isInsufficientMaterial(){return H.every(t=>this.hasInsufficientMaterial(t))}hasDests(t){t=t||this.ctx();for(let n of this.board[this.turn])if(this.dests(n,t).nonEmpty())return!0;return this.dropDests(t).nonEmpty()}isLegal(t,n){if(oe(t))return!this.pockets||this.pockets[this.turn][t.role]<=0||t.role==="pawn"&&u.backranks().has(t.to)?!1:this.dropDests(n).has(t.to);{if(t.promotion==="pawn"||t.promotion==="king"&&this.rules!=="antichess"||!!t.promotion!==(this.board.pawn.has(t.from)&&u.backranks().has(t.to)))return!1;let r=this.dests(t.from,n);return r.has(t.to)||r.has(Vn(this,t).to)}}isCheck(){let t=this.board.kingOf(this.turn);return g(t)&&this.kingAttackers(t,M(this.turn),this.board.occupied).nonEmpty()}isEnd(t){return(t?t.variantEnd:this.isVariantEnd())?!0:this.isInsufficientMaterial()||!this.hasDests(t)}isCheckmate(t){return t=t||this.ctx(),!t.variantEnd&&t.checkers.nonEmpty()&&!this.hasDests(t)}isStalemate(t){return t=t||this.ctx(),!t.variantEnd&&t.checkers.isEmpty()&&!this.hasDests(t)}outcome(t){let n=this.variantOutcome(t);return n||(t=t||this.ctx(),this.isCheckmate(t)?{winner:M(this.turn)}:this.isInsufficientMaterial()||this.isStalemate(t)?{winner:void 0}:void 0)}allDests(t){t=t||this.ctx();let n=new Map;if(t.variantEnd)return n;for(let r of this.board[this.turn])n.set(r,this.dests(r,t));return n}play(t){let n=this.turn,r=this.epSquare,i=Qt(this,t);if(this.epSquare=void 0,this.halfmoves+=1,n==="black"&&(this.fullmoves+=1),this.turn=M(n),oe(t))this.board.set(t.to,{role:t.role,color:n}),this.pockets&&this.pockets[n][t.role]--,t.role==="pawn"&&(this.halfmoves=0);else{let o=this.board.take(t.from);if(!o)return;let s;if(o.role==="pawn"){this.halfmoves=0,t.to===r&&(s=this.board.take(t.to+(n==="white"?-8:8)));let a=t.from-t.to;Math.abs(a)===16&&8<=t.from&&t.from<=55&&(this.epSquare=t.from+t.to>>1),t.promotion&&(o.role=t.promotion,o.promoted=!!this.pockets)}else if(o.role==="rook")this.castles.discardRook(t.from);else if(o.role==="king"){if(i){let a=this.castles.rook[n][i];if(g(a)){let l=this.board.take(a);this.board.set(Ke(n,i),o),l&&this.board.set(it(n,i),l)}}this.castles.discardColor(n)}if(!i){let a=this.board.set(t.to,o)||s;a&&this.playCaptureAt(t.to,a)}}this.remainingChecks&&this.isCheck()&&(this.remainingChecks[n]=Math.max(this.remainingChecks[n]-1,0))}},ze=class extends ee{constructor(){super("chess")}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}},$i=(e,t)=>{if(!g(t))return;let n=e.turn==="white"?5:2,r=e.turn==="white"?8:-8;if(J(t)!==n||e.board.occupied.has(t+r))return;let i=t-r;if(!(!e.board.pawn.has(i)||!e.board[M(e.turn)].has(i)))return t},zi=e=>{if(!g(e.epSquare))return;let t=e.ctx(),r=e.board.pieces(e.turn,"pawn").intersect(we(M(e.turn),e.epSquare));for(let i of r)if(e.dests(i,t).has(e.epSquare))return e.epSquare},Fi=(e,t,n)=>{if(!g(e.epSquare)||!we(e.turn,t).has(e.epSquare))return!1;if(!g(n.king))return!0;let r=e.turn==="white"?8:-8,i=e.epSquare-r;return e.kingAttackers(n.king,M(e.turn),e.board.occupied.toggle(t).toggle(i).with(e.epSquare)).without(i).isEmpty()},ct=(e,t,n)=>{if(!g(n.king)||n.checkers.nonEmpty())return u.empty();let r=e.castles.rook[e.turn][t];if(!g(r))return u.empty();if(e.castles.path[e.turn][t].intersects(e.board.occupied))return u.empty();let i=Ke(e.turn,t),o=xe(n.king,i),s=e.board.occupied.without(n.king);for(let c of o)if(e.kingAttackers(c,M(e.turn),s).nonEmpty())return u.empty();let a=it(e.turn,t),l=e.board.occupied.toggle(n.king).toggle(r).toggle(a);return e.kingAttackers(i,M(e.turn),l).nonEmpty()?u.empty():u.fromSquare(r)},lt=(e,t,n)=>{if(n.variantEnd)return u.empty();let r=e.board.get(t);if(!r||r.color!==e.turn)return u.empty();let i=st(r,t,e.board.occupied);if(r.role==="pawn"){let o=e.board[M(e.turn)];g(e.epSquare)&&(o=o.with(e.epSquare)),i=i.intersect(o);let s=e.turn==="white"?8:-8,a=t+s;if(0<=a&&a<64&&!e.board.occupied.has(a)){i=i.with(a);let l=e.turn==="white"?t<16:t>=48,c=a+s;l&&!e.board.occupied.has(c)&&(i=i.with(c))}return i}else i=i.diff(e.board[e.turn]);return t===n.king?i.union(ct(e,"a",n)).union(ct(e,"h",n)):i};var Qt=(e,t)=>{if(oe(t))return;let n=t.to-t.from;if(!(Math.abs(n)!==2&&!e.board[e.turn].has(t.to))&&e.board.king.has(t.from))return n>0?"h":"a"},Vn=(e,t)=>{let n=Qt(e,t);if(!n)return t;let r=e.castles.rook[e.turn][n];return{from:t.from,to:g(r)?r:t.to}};var Gn=e=>oe(e)?String.fromCharCode(35+e.to,139+["queen","rook","bishop","knight","pawn"].indexOf(e.role)):String.fromCharCode(35+e.from,e.promotion?99+8*["queen","rook","bishop","knight","king"].indexOf(e.promotion)+L(e.to):35+e.to);var Vi="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",Gi=Vi+" w KQkq -",Ta=Gi+" 0 1",Wi="8/8/8/8/8/8/8/8",Ui=Wi+" w - -",Na=Ui+" 0 1",$;(function(e){e.Fen="ERR_FEN",e.Board="ERR_BOARD",e.Pockets="ERR_POCKETS",e.Turn="ERR_TURN",e.Castling="ERR_CASTLING",e.EpSquare="ERR_EP_SQUARE",e.RemainingChecks="ERR_REMAINING_CHECKS",e.Halfmoves="ERR_HALFMOVES",e.Fullmoves="ERR_FULLMOVES"})($||($={}));var z=class extends Error{},ji=(e,t,n)=>{let r=e.indexOf(t);for(;n-- >0&&r!==-1;)r=e.indexOf(t,r+t.length);return r},De=e=>/^\d{1,4}$/.test(e)?parseInt(e,10):void 0,Yn=e=>{let t=Ae(e);return t&&{role:t,color:e.toLowerCase()===e?"black":"white"}},Xt=e=>{let t=de.empty(),n=7,r=0;for(let i=0;i<e.length;i++){let o=e[i];if(o==="/"&&r===8)r=0,n--;else{let s=parseInt(o,10);if(s>0)r+=s;else{if(r>=8||n<0)return m.err(new z($.Board));let a=r+n*8,l=Yn(o);if(!l)return m.err(new z($.Board));e[i+1]==="~"&&(l.promoted=!0,i++),t.set(a,l),r++}}}return n!==0||r!==8?m.err(new z($.Board)):m.ok(t)},Wn=e=>{if(e.length>64)return m.err(new z($.Pockets));let t=_e.empty();for(let n of e){let r=Yn(n);if(!r)return m.err(new z($.Pockets));t[r.color][r.role]++}return m.ok(t)},Yi=(e,t)=>{let n=u.empty();if(t==="-")return m.ok(n);for(let r of t){let i=r.toLowerCase(),o=r===i?"black":"white",s=o==="white"?0:7;if("a"<=i&&i<="h")n=n.with(rt(i.charCodeAt(0)-97,s));else if(i==="k"||i==="q"){let a=e[o].intersect(u.backrank(o)).intersect(e.rook.union(e.king)),l=i==="k"?a.last():a.first();n=n.with(g(l)&&e.rook.has(l)?l:rt(i==="k"?7:0,s))}else return m.err(new z($.Castling))}return H.some(r=>u.backrank(r).intersect(n).size()>2)?m.err(new z($.Castling)):m.ok(n)},Un=e=>{let t=e.split("+");if(t.length===3&&t[0]===""){let n=De(t[1]),r=De(t[2]);return!g(n)||n>3||!g(r)||r>3?m.err(new z($.RemainingChecks)):m.ok(new Se(3-n,3-r))}else if(t.length===2){let n=De(t[0]),r=De(t[1]);return!g(n)||n>3||!g(r)||r>3?m.err(new z($.RemainingChecks)):m.ok(new Se(n,r))}else return m.err(new z($.RemainingChecks))},Zn=e=>{let t=e.split(/[\s_]+/),n=t.shift(),r,i=m.ok(void 0);if(n.endsWith("]")){let a=n.indexOf("[");if(a===-1)return m.err(new z($.Fen));r=Xt(n.slice(0,a)),i=Wn(n.slice(a+1,-1))}else{let a=ji(n,"/",7);a===-1?r=Xt(n):(r=Xt(n.slice(0,a)),i=Wn(n.slice(a+1)))}let o,s=t.shift();if(!g(s)||s==="w")o="white";else if(s==="b")o="black";else return m.err(new z($.Turn));return r.chain(a=>{let l=t.shift(),c=g(l)?Yi(a,l):m.ok(u.empty()),p=t.shift(),f;if(g(p)&&p!=="-"&&(f=he(p),!g(f)))return m.err(new z($.EpSquare));let C=t.shift(),k;g(C)&&C.includes("+")&&(k=Un(C),C=t.shift());let h=g(C)?De(C):0;if(!g(h))return m.err(new z($.Halfmoves));let d=t.shift(),w=g(d)?De(d):1;if(!g(w))return m.err(new z($.Fullmoves));let b=t.shift(),y=m.ok(void 0);if(g(b)){if(g(k))return m.err(new z($.RemainingChecks));y=Un(b)}else g(k)&&(y=k);return t.length>0?m.err(new z($.Fen)):i.chain(E=>c.chain(x=>y.map(P=>({board:a,pockets:E,turn:o,castlingRights:x,remainingChecks:P,epSquare:f,halfmoves:h,fullmoves:Math.max(1,w)}))))})};var Zi=e=>{let t=se(e.role);return e.color==="white"&&(t=t.toUpperCase()),e.promoted&&(t+="~"),t},Qi=e=>{let t="",n=0;for(let r=7;r>=0;r--)for(let i=0;i<8;i++){let o=i+r*8,s=e.get(o);s?(n>0&&(t+=n,n=0),t+=Zi(s)):n++,i===7&&(n>0&&(t+=n,n=0),r!==0&&(t+="/"))}return t},jn=e=>U.map(t=>se(t).repeat(e[t])).join(""),Xi=e=>jn(e.white).toUpperCase()+jn(e.black),Ji=(e,t)=>{let n="";for(let r of H){let i=u.backrank(r),o=e.kingOf(r);g(o)&&!i.has(o)&&(o=void 0);let s=e.pieces(r,"rook").intersect(i);for(let a of t.intersect(i).reversed())if(a===s.first()&&g(o)&&a<o)n+=r==="white"?"Q":"q";else if(a===s.last()&&g(o)&&o<a)n+=r==="white"?"K":"k";else{let l=Ee[L(a)];n+=r==="white"?l.toUpperCase():l}}return n||"-"},eo=e=>`${e.white}+${e.black}`,ut=(e,t)=>[Qi(e.board)+(e.pockets?`[${Xi(e.pockets)}]`:""),e.turn[0],Ji(e.board,e.castlingRights),g(e.epSquare)?j(e.epSquare):"-",...e.remainingChecks?[eo(e.remainingChecks)]:[],...t?.epd?[]:[Math.max(0,Math.min(e.halfmoves,9999)),Math.max(1,Math.min(e.fullmoves,9999))]].join(" ");var no=(e,t)=>{let n="";if(oe(t))t.role!=="pawn"&&(n=se(t.role).toUpperCase()),n+="@"+j(t.to);else{let r=e.board.getRole(t.from);if(!r)return"--";if(r==="king"&&(e.board[e.turn].has(t.to)||Math.abs(t.to-t.from)===2))n=t.to>t.from?"O-O":"O-O-O";else{let i=e.board.occupied.has(t.to)||r==="pawn"&&L(t.from)!==L(t.to);if(r!=="pawn"){n=se(r).toUpperCase();let o;if(r==="king"?o=ae(t.to).intersect(e.board.king):r==="queen"?o=$e(t.to,e.board.occupied).intersect(e.board.queen):r==="rook"?o=ye(t.to,e.board.occupied).intersect(e.board.rook):r==="bishop"?o=ve(t.to,e.board.occupied).intersect(e.board.bishop):o=qe(t.to).intersect(e.board.knight),o=o.intersect(e.board[e.turn]).without(t.from),o.nonEmpty()){let s=e.ctx();for(let a of o)e.dests(a,s).has(t.to)||(o=o.without(a));if(o.nonEmpty()){let a=!1,l=o.intersects(u.fromRank(J(t.from)));o.intersects(u.fromFile(L(t.from)))?a=!0:l=!0,l&&(n+=Ee[L(t.from)]),a&&(n+=nt[J(t.from)])}}}else i&&(n=Ee[L(t.from)]);i&&(n+="x"),n+=j(t.to),t.promotion&&(n+="="+se(t.promotion).toUpperCase())}}return n},Qn=(e,t)=>{var n;let r=no(e,t);return e.play(t),!((n=e.outcome())===null||n===void 0)&&n.winner?r+"#":e.isCheck()?r+"+":r};var Xn=(e,t)=>{let n=e.ctx(),r=t.match(/^([NBRQK])?([a-h])?([1-8])?[-x]?([a-h][1-8])(?:=?([nbrqkNBRQK]))?[+#]?$/);if(!r){let p;if(t==="O-O"||t==="O-O+"||t==="O-O#"?p="h":(t==="O-O-O"||t==="O-O-O+"||t==="O-O-O#")&&(p="a"),p){let k=e.castles.rook[e.turn][p];return!g(n.king)||!g(k)||!e.dests(n.king,n).has(k)?void 0:{from:n.king,to:k}}let f=t.match(/^([pnbrqkPNBRQK])?@([a-h][1-8])[+#]?$/);if(!f)return;let C={role:f[1]?Ae(f[1]):"pawn",to:he(f[2])};return e.isLegal(C,n)?C:void 0}let i=r[1]?Ae(r[1]):"pawn",o=he(r[4]),s=r[5]?Ae(r[5]):void 0;if(!!s!==(i==="pawn"&&u.backranks().has(o))||s==="king"&&e.rules!=="antichess")return;let a=e.board.pieces(e.turn,i);i==="pawn"&&!r[2]?a=a.intersect(u.fromFile(L(o))):r[2]&&(a=a.intersect(u.fromFile(r[2].charCodeAt(0)-97))),r[3]&&(a=a.intersect(u.fromRank(r[3].charCodeAt(0)-49)));let l=i==="pawn"?u.fromFile(L(o)):u.empty();a=a.intersect(l.union(st({color:M(e.turn),role:i},o,e.board.occupied)));let c;for(let p of a)if(e.dests(p,n).has(o)){if(g(c))return;c=p}if(g(c))return{from:c,to:o,promotion:s}};var ht=class extends ee{constructor(){super("crazyhouse")}reset(){super.reset(),this.pockets=_e.empty()}setupUnchecked(t){super.setupUnchecked(t),this.board.promoted=t.board.promoted.intersect(t.board.occupied).diff(t.board.king).diff(t.board.pawn),this.pockets=t.pockets?t.pockets.clone():_e.empty()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){return super.validate().chain(t=>{var n,r;return!((n=this.pockets)===null||n===void 0)&&n.count("king")?m.err(new D(q.Kings)):(((r=this.pockets)===null||r===void 0?void 0:r.size())||0)+this.board.occupied.size()>64?m.err(new D(q.Variant)):m.ok(void 0)})}hasInsufficientMaterial(t){return this.pockets?this.board.occupied.size()+this.pockets.size()<=3&&this.board.pawn.isEmpty()&&this.board.promoted.isEmpty()&&this.board.rooksAndQueens().isEmpty()&&this.pockets.count("pawn")<=0&&this.pockets.count("rook")<=0&&this.pockets.count("queen")<=0:super.hasInsufficientMaterial(t)}dropDests(t){var n,r;let i=this.board.occupied.complement().intersect(!((n=this.pockets)===null||n===void 0)&&n[this.turn].hasNonPawns()?u.full():!((r=this.pockets)===null||r===void 0)&&r[this.turn].hasPawns()?u.backranks().complement():u.empty());if(t=t||this.ctx(),g(t.king)&&t.checkers.nonEmpty()){let o=t.checkers.singleSquare();return g(o)?i.intersect(xe(o,t.king)):u.empty()}else return i}},dt=class extends ee{constructor(){super("atomic")}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){if(this.board.occupied.isEmpty())return m.err(new D(q.Empty));if(this.board.king.size()>2)return m.err(new D(q.Kings));let t=this.board.kingOf(M(this.turn));return g(t)?this.kingAttackers(t,this.turn,this.board.occupied).nonEmpty()?m.err(new D(q.OppositeCheck)):u.backranks().intersects(this.board.pawn)?m.err(new D(q.PawnsOnBackrank)):m.ok(void 0):m.err(new D(q.Kings))}kingAttackers(t,n,r){let i=this.board.pieces(n,"king");return i.isEmpty()||ae(t).intersects(i)?u.empty():super.kingAttackers(t,n,r)}playCaptureAt(t,n){super.playCaptureAt(t,n),this.board.take(t);for(let r of ae(t).intersect(this.board.occupied).diff(this.board.pawn)){let i=this.board.take(r);i?.role==="rook"&&this.castles.discardRook(r),i?.role==="king"&&this.castles.discardColor(i.color)}}hasInsufficientMaterial(t){if(this.board.pieces(M(t),"king").isEmpty())return!1;if(this.board[t].diff(this.board.king).isEmpty())return!0;if(this.board[M(t)].diff(this.board.king).nonEmpty()){if(this.board.occupied.equals(this.board.bishop.union(this.board.king))){if(!this.board.bishop.intersect(this.board.white).intersects(u.darkSquares()))return!this.board.bishop.intersect(this.board.black).intersects(u.lightSquares());if(!this.board.bishop.intersect(this.board.white).intersects(u.lightSquares()))return!this.board.bishop.intersect(this.board.black).intersects(u.darkSquares())}return!1}return this.board.queen.nonEmpty()||this.board.pawn.nonEmpty()?!1:this.board.knight.union(this.board.bishop).union(this.board.rook).size()===1?!0:this.board.occupied.equals(this.board.knight.union(this.board.king))?this.board.knight.size()<=2:!1}dests(t,n){n=n||this.ctx();let r=u.empty();for(let i of lt(this,t,n)){let o=this.clone();o.play({from:t,to:i});let s=o.board.kingOf(this.turn);g(s)&&(!g(o.board.kingOf(o.turn))||o.kingAttackers(s,o.turn,o.board.occupied).isEmpty())&&(r=r.with(i))}return r}isVariantEnd(){return!!this.variantOutcome()}variantOutcome(t){for(let n of H)if(this.board.pieces(n,"king").isEmpty())return{winner:M(n)}}},ft=class extends ee{constructor(){super("antichess")}reset(){super.reset(),this.castles=ce.empty()}setupUnchecked(t){super.setupUnchecked(t),this.castles=ce.empty()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){return this.board.occupied.isEmpty()?m.err(new D(q.Empty)):u.backranks().intersects(this.board.pawn)?m.err(new D(q.PawnsOnBackrank)):m.ok(void 0)}kingAttackers(t,n,r){return u.empty()}ctx(){let t=super.ctx();if(g(this.epSquare)&&we(M(this.turn),this.epSquare).intersects(this.board.pieces(this.turn,"pawn")))return t.mustCapture=!0,t;let n=this.board[M(this.turn)];for(let r of this.board[this.turn])if(lt(this,r,t).intersects(n))return t.mustCapture=!0,t;return t}dests(t,n){n=n||this.ctx();let r=lt(this,t,n),i=this.board[M(this.turn)];return r.intersect(n.mustCapture?g(this.epSquare)&&this.board.getRole(t)==="pawn"?i.with(this.epSquare):i:u.full())}hasInsufficientMaterial(t){if(this.board[t].isEmpty())return!1;if(this.board[M(t)].isEmpty())return!0;if(this.board.occupied.equals(this.board.bishop)){let n=this.board[t].intersects(u.lightSquares()),r=this.board[t].intersects(u.darkSquares()),i=this.board[M(t)].isDisjoint(u.lightSquares()),o=this.board[M(t)].isDisjoint(u.darkSquares());return n&&i||r&&o}return this.board.occupied.equals(this.board.knight)&&this.board.occupied.size()===2?this.board.white.intersects(u.lightSquares())!==this.board.black.intersects(u.darkSquares())!=(this.turn===t):!1}isVariantEnd(){return this.board[this.turn].isEmpty()}variantOutcome(t){if(t=t||this.ctx(),t.variantEnd||this.isStalemate(t))return{winner:this.turn}}},pt=class extends ee{constructor(){super("kingofthehill")}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}hasInsufficientMaterial(t){return!1}isVariantEnd(){return this.board.king.intersects(u.center())}variantOutcome(t){for(let n of H)if(this.board.pieces(n,"king").intersects(u.center()))return{winner:n}}},mt=class extends ee{constructor(){super("3check")}reset(){super.reset(),this.remainingChecks=Se.default()}setupUnchecked(t){var n;super.setupUnchecked(t),this.remainingChecks=((n=t.remainingChecks)===null||n===void 0?void 0:n.clone())||Se.default()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}hasInsufficientMaterial(t){return this.board.pieces(t,"king").equals(this.board[t])}isVariantEnd(){return!!this.remainingChecks&&(this.remainingChecks.white<=0||this.remainingChecks.black<=0)}variantOutcome(t){if(this.remainingChecks){for(let n of H)if(this.remainingChecks[n]<=0)return{winner:n}}}},io=()=>{let e=de.empty();return e.occupied=new u(65535,0),e.promoted=u.empty(),e.white=new u(61680,0),e.black=new u(3855,0),e.pawn=u.empty(),e.knight=new u(6168,0),e.bishop=new u(9252,0),e.rook=new u(16962,0),e.queen=new u(129,0),e.king=new u(33024,0),e},gt=class extends ee{constructor(){super("racingkings")}reset(){this.board=io(),this.pockets=void 0,this.turn="white",this.castles=ce.empty(),this.epSquare=void 0,this.remainingChecks=void 0,this.halfmoves=0,this.fullmoves=1}setupUnchecked(t){super.setupUnchecked(t),this.castles=ce.empty()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){return this.isCheck()||this.board.pawn.nonEmpty()?m.err(new D(q.Variant)):super.validate()}dests(t,n){if(n=n||this.ctx(),t===n.king)return super.dests(t,n);let r=u.empty();for(let i of super.dests(t,n)){let o={from:t,to:i},s=this.clone();s.play(o),s.isCheck()||(r=r.with(i))}return r}hasInsufficientMaterial(t){return!1}isVariantEnd(){let t=u.fromRank(7),n=this.board.king.intersect(t);if(n.isEmpty())return!1;if(this.turn==="white"||n.intersects(this.board.black))return!0;let r=this.board.kingOf("black");if(g(r)){let i=this.board.occupied.without(r);for(let o of ae(r).intersect(t).diff(this.board.black))if(this.kingAttackers(o,"white",i).isEmpty())return!1}return!0}variantOutcome(t){if(t?!t.variantEnd:!this.isVariantEnd())return;let n=u.fromRank(7),r=this.board.pieces("black","king").intersects(n),i=this.board.pieces("white","king").intersects(n);return r&&!i?{winner:"black"}:i&&!r?{winner:"white"}:{winner:void 0}}},oo=()=>{let e=de.empty();return e.occupied=new u(4294967295,4294901862),e.promoted=u.empty(),e.white=new u(4294967295,102),e.black=new u(0,4294901760),e.pawn=new u(4294967295,16711782),e.knight=new u(0,1107296256),e.bishop=new u(0,603979776),e.rook=new u(0,2164260864),e.queen=new u(0,134217728),e.king=new u(0,268435456),e},kt=class extends ee{constructor(){super("horde")}reset(){this.board=oo(),this.pockets=void 0,this.turn="white",this.castles=ce.default(),this.castles.discardColor("white"),this.epSquare=void 0,this.remainingChecks=void 0,this.halfmoves=0,this.fullmoves=1}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){if(this.board.occupied.isEmpty())return m.err(new D(q.Empty));if(this.board.king.size()!==1)return m.err(new D(q.Kings));let t=this.board.kingOf(M(this.turn));if(g(t)&&this.kingAttackers(t,this.turn,this.board.occupied).nonEmpty())return m.err(new D(q.OppositeCheck));for(let n of H){let r=this.board.pieces(n,"king").isEmpty()?u.backrank(M(n)):u.backranks();if(this.board.pieces(n,"pawn").intersects(r))return m.err(new D(q.PawnsOnBackrank))}return m.ok(void 0)}hasInsufficientMaterial(t){if(this.board.pieces(t,"king").nonEmpty())return!1;let n=k=>k==="light"?"dark":"light",r=k=>k==="light"?u.lightSquares():u.darkSquares(),i=k=>{let h=this.board.pieces(k,"bishop");return h.intersects(u.darkSquares())&&h.intersects(u.lightSquares())},o=fe.fromBoard(this.board,t),s=k=>r(k).intersect(this.board.pieces(t,"bishop")).size(),a=s("light")>=1?"light":"dark",l=o.pawn+o.knight+o.rook+o.queen+Math.min(s("dark"),2)+Math.min(s("light"),2),c=fe.fromBoard(this.board,M(t)),p=k=>r(k).intersect(this.board.pieces(M(t),"bishop")).size(),f=c.size(),C=k=>f-k;if(l===0)return!0;if(l>=4||(o.pawn>=1||o.queen>=1)&&l>=2||o.rook>=1&&l>=2&&!(l===2&&o.rook===1&&o.bishop===1&&C(p(a))===1))return!1;if(l===1){if(f===1)return!0;if(o.queen===1)return!(c.pawn>=1||c.rook>=1||p("light")>=2||p("dark")>=2);if(o.pawn===1){let k=this.board.pieces(t,"pawn").last(),h=this.clone();h.board.set(k,{color:t,role:"queen"});let d=this.clone();return d.board.set(k,{color:t,role:"knight"}),h.hasInsufficientMaterial(t)&&d.hasInsufficientMaterial(t)}else{if(o.rook===1)return!(c.pawn>=2||c.rook>=1&&c.pawn>=1||c.rook>=1&&c.knight>=1||c.pawn>=1&&c.knight>=1);if(o.bishop===1)return!(p(n(a))>=2||p(n(a))>=1&&c.pawn>=1||c.pawn>=2);if(o.knight===1)return!(f>=4&&(c.knight>=2||c.pawn>=2||c.rook>=1&&c.knight>=1||c.rook>=1&&c.bishop>=1||c.knight>=1&&c.bishop>=1||c.rook>=1&&c.pawn>=1||c.knight>=1&&c.pawn>=1||c.bishop>=1&&c.pawn>=1||i(M(t))&&c.pawn>=1)&&(p("dark")<2||C(p("dark"))>=3)&&(p("light")<2||C(p("light"))>=3))}}else{if(l===2)return f===1?!0:o.knight===2?c.pawn+c.bishop+c.knight<1:i(t)?!(c.pawn>=1||c.bishop>=1||c.knight>=1&&c.rook+c.queen>=1):o.bishop>=1&&o.knight>=1?!(c.pawn>=1||p(n(a))>=1||C(p(a))>=3):!(c.pawn>=1&&p(n(a))>=1||c.pawn>=1&&c.knight>=1||p(n(a))>=1&&c.knight>=1||p(n(a))>=2||c.knight>=2||c.pawn>=2);if(l===3)return o.knight===2&&o.bishop===1||o.knight===3||i(t)?!1:f===1}return!0}isVariantEnd(){return this.board.white.isEmpty()||this.board.black.isEmpty()}variantOutcome(t){if(this.board.white.isEmpty())return{winner:"black"};if(this.board.black.isEmpty())return{winner:"white"}}},Jn=e=>{switch(e){case"chess":return ze.default();case"antichess":return ft.default();case"atomic":return dt.default();case"horde":return kt.default();case"racingkings":return gt.default();case"kingofthehill":return pt.default();case"3check":return mt.default();case"crazyhouse":return ht.default()}},er=(e,t)=>{switch(e){case"chess":return ze.fromSetup(t);case"antichess":return ft.fromSetup(t);case"atomic":return dt.fromSetup(t);case"horde":return kt.fromSetup(t);case"racingkings":return gt.fromSetup(t);case"kingofthehill":return pt.fromSetup(t);case"3check":return mt.fromSetup(t);case"crazyhouse":return ht.fromSetup(t)}};var ao=(e=rn)=>({headers:e(),moves:new Fe}),Fe=class{constructor(){this.children=[]}*mainlineNodes(){let t=this;for(;t.children.length;){let n=t.children[0];yield n,t=n}}*mainline(){for(let t of this.mainlineNodes())yield t.data}end(){let t=this;for(;t.children.length;)t=t.children[0];return t}},bt=class extends Fe{constructor(t){super(),this.data=t}};var nr=(e,t,n)=>{let r=new Fe,i=[{before:e,after:r,ctx:t}],o;for(;o=i.pop();)for(let s=0;s<o.before.children.length;s++){let a=s<o.before.children.length-1?o.ctx.clone():o.ctx,l=o.before.children[s],c=n(a,l.data,s);if(g(c)){let p=new bt(c);o.after.children.push(p),i.push({before:l,after:p,ctx:a})}}return r};var co=e=>e?e.winner==="white"?"1-0":e.winner==="black"?"0-1":"1/2-1/2":"*",lo=e=>e==="1-0"||e==="1\u20130"||e==="1\u20140"?{winner:"white"}:e==="0-1"||e==="0\u20131"||e==="0\u20141"?{winner:"black"}:e==="1/2-1/2"||e==="1/2\u20131/2"||e==="1/2\u20141/2"?{winner:void 0}:void 0;var rn=()=>new Map([["Event","?"],["Site","?"],["Date","????.??.??"],["Round","?"],["White","?"],["Black","?"],["Result","*"]]);var tr="\uFEFF",Jt=e=>/^\s*$/.test(e),en=e=>e.startsWith("%"),tn=class extends Error{},nn=class{constructor(t,n=rn,r=1e6){this.emitGame=t,this.initHeaders=n,this.maxBudget=r,this.lineBuf=[],this.resetGame(),this.state=0}resetGame(){this.budget=this.maxBudget,this.found=!1,this.state=1,this.game=ao(this.initHeaders),this.stack=[{parent:this.game.moves,root:!0}],this.commentBuf=[]}consumeBudget(t){if(this.budget-=t,this.budget<0)throw new tn("ERR_PGN_BUDGET")}parse(t,n){if(!(this.budget<0))try{let r=0;for(;;){let i=t.indexOf(`
|
|
1
|
+
var Ee=["a","b","c","d","e","f","g","h"],nt=["1","2","3","4","5","6","7","8"];var F=["white","black"],U=["pawn","knight","bishop","rook","queen","king"],zn=["a","h"],oe=e=>"role"in e;var g=e=>e!==void 0,M=e=>e==="white"?"black":"white",J=e=>e>>3,L=e=>e&7,rt=(e,t)=>0<=e&&e<8&&0<=t&&t<8?e+8*t:void 0,se=e=>{switch(e){case"pawn":return"p";case"knight":return"n";case"bishop":return"b";case"rook":return"r";case"queen":return"q";case"king":return"k"}};function Ae(e){switch(e.toLowerCase()){case"p":return"pawn";case"n":return"knight";case"b":return"bishop";case"r":return"rook";case"q":return"queen";case"k":return"king";default:return}}function he(e){if(e.length===2)return rt(e.charCodeAt(0)-97,e.charCodeAt(1)-49)}var j=e=>Ee[L(e)]+nt[J(e)];var zt=e=>oe(e)?`${se(e.role).toUpperCase()}@${j(e.to)}`:j(e.from)+j(e.to)+(e.promotion?se(e.promotion):""),Ke=(e,t)=>e==="white"?t==="a"?2:6:t==="a"?58:62,it=(e,t)=>e==="white"?t==="a"?3:5:t==="a"?59:61;var Vn=e=>(e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),Math.imul(e+(e>>>4)&252645135,16843009)>>24),Vt=e=>(e=e>>>8&16711935|(e&16711935)<<8,e>>>16&65535|(e&65535)<<16),Fn=e=>(e=e>>>1&1431655765|(e&1431655765)<<1,e=e>>>2&858993459|(e&858993459)<<2,e=e>>>4&252645135|(e&252645135)<<4,Vt(e)),u=class e{constructor(t,n){this.lo=t|0,this.hi=n|0}static fromSquare(t){return t>=32?new e(0,1<<t-32):new e(1<<t,0)}static fromRank(t){return new e(255,0).shl64(8*t)}static fromFile(t){return new e(16843009<<t,16843009<<t)}static empty(){return new e(0,0)}static full(){return new e(4294967295,4294967295)}static corners(){return new e(129,2164260864)}static center(){return new e(402653184,24)}static backranks(){return new e(255,4278190080)}static backrank(t){return t==="white"?new e(255,0):new e(0,4278190080)}static lightSquares(){return new e(1437226410,1437226410)}static darkSquares(){return new e(2857740885,2857740885)}complement(){return new e(~this.lo,~this.hi)}xor(t){return new e(this.lo^t.lo,this.hi^t.hi)}union(t){return new e(this.lo|t.lo,this.hi|t.hi)}intersect(t){return new e(this.lo&t.lo,this.hi&t.hi)}diff(t){return new e(this.lo&~t.lo,this.hi&~t.hi)}intersects(t){return this.intersect(t).nonEmpty()}isDisjoint(t){return this.intersect(t).isEmpty()}supersetOf(t){return t.diff(this).isEmpty()}subsetOf(t){return this.diff(t).isEmpty()}shr64(t){return t>=64?e.empty():t>=32?new e(this.hi>>>t-32,0):t>0?new e(this.lo>>>t^this.hi<<32-t,this.hi>>>t):this}shl64(t){return t>=64?e.empty():t>=32?new e(0,this.lo<<t-32):t>0?new e(this.lo<<t,this.hi<<t^this.lo>>>32-t):this}bswap64(){return new e(Vt(this.hi),Vt(this.lo))}rbit64(){return new e(Fn(this.hi),Fn(this.lo))}minus64(t){let n=this.lo-t.lo,r=(n&t.lo&1)+(t.lo>>>1)+(n>>>1)>>>31;return new e(n,this.hi-(t.hi+r))}equals(t){return this.lo===t.lo&&this.hi===t.hi}size(){return Vn(this.lo)+Vn(this.hi)}isEmpty(){return this.lo===0&&this.hi===0}nonEmpty(){return this.lo!==0||this.hi!==0}has(t){return(t>=32?this.hi&1<<t-32:this.lo&1<<t)!==0}set(t,n){return n?this.with(t):this.without(t)}with(t){return t>=32?new e(this.lo,this.hi|1<<t-32):new e(this.lo|1<<t,this.hi)}without(t){return t>=32?new e(this.lo,this.hi&~(1<<t-32)):new e(this.lo&~(1<<t),this.hi)}toggle(t){return t>=32?new e(this.lo,this.hi^1<<t-32):new e(this.lo^1<<t,this.hi)}last(){if(this.hi!==0)return 63-Math.clz32(this.hi);if(this.lo!==0)return 31-Math.clz32(this.lo)}first(){if(this.lo!==0)return 31-Math.clz32(this.lo&-this.lo);if(this.hi!==0)return 63-Math.clz32(this.hi&-this.hi)}withoutFirst(){return this.lo!==0?new e(this.lo&this.lo-1,this.hi):new e(0,this.hi&this.hi-1)}moreThanOne(){return this.hi!==0&&this.lo!==0||(this.lo&this.lo-1)!==0||(this.hi&this.hi-1)!==0}singleSquare(){return this.moreThanOne()?void 0:this.last()}*[Symbol.iterator](){let t=this.lo,n=this.hi;for(;t!==0;){let r=31-Math.clz32(t&-t);t^=1<<r,yield r}for(;n!==0;){let r=31-Math.clz32(n&-n);n^=1<<r,yield 32+r}}*reversed(){let t=this.lo,n=this.hi;for(;n!==0;){let r=31-Math.clz32(n);n^=1<<r,yield 32+r}for(;t!==0;){let r=31-Math.clz32(t);t^=1<<r,yield r}}};var ot=(e,t)=>{let n=u.empty();for(let r of t){let i=e+r;0<=i&&i<64&&Math.abs(L(e)-L(i))<=2&&(n=n.with(i))}return n},be=e=>{let t=[];for(let n=0;n<64;n++)t[n]=e(n);return t},qi=be(e=>ot(e,[-9,-8,-7,-1,1,7,8,9])),Di=be(e=>ot(e,[-17,-15,-10,-6,6,10,15,17])),Li={white:be(e=>ot(e,[7,9])),black:be(e=>ot(e,[-7,-9]))},ae=e=>qi[e],qe=e=>Di[e],we=(e,t)=>Li[e][t],Ft=be(e=>u.fromFile(L(e)).without(e)),Ht=be(e=>u.fromRank(J(e)).without(e)),Gt=be(e=>{let t=new u(134480385,2151686160),n=8*(J(e)-L(e));return(n>=0?t.shl64(n):t.shr64(-n)).without(e)}),Wt=be(e=>{let t=new u(270549120,16909320),n=8*(J(e)+L(e)-7);return(n>=0?t.shl64(n):t.shr64(-n)).without(e)}),Ut=(e,t,n)=>{let r=n.intersect(t),i=r.bswap64();return r=r.minus64(e),i=i.minus64(e.bswap64()),r.xor(i.bswap64()).intersect(t)},Bi=(e,t)=>Ut(u.fromSquare(e),Ft[e],t),Ii=(e,t)=>{let n=Ht[e],r=t.intersect(n),i=r.rbit64();return r=r.minus64(u.fromSquare(e)),i=i.minus64(u.fromSquare(63-e)),r.xor(i.rbit64()).intersect(n)},ve=(e,t)=>{let n=u.fromSquare(e);return Ut(n,Gt[e],t).xor(Ut(n,Wt[e],t))},ye=(e,t)=>Bi(e,t).xor(Ii(e,t)),$e=(e,t)=>ve(e,t).xor(ye(e,t)),st=(e,t,n)=>{switch(e.role){case"pawn":return we(e.color,t);case"knight":return qe(t);case"bishop":return ve(t,n);case"rook":return ye(t,n);case"queen":return $e(t,n);case"king":return ae(t)}},jt=(e,t)=>{let n=u.fromSquare(t);return Ht[e].intersects(n)?Ht[e].with(e):Wt[e].intersects(n)?Wt[e].with(e):Gt[e].intersects(n)?Gt[e].with(e):Ft[e].intersects(n)?Ft[e].with(e):u.empty()},xe=(e,t)=>jt(e,t).intersect(u.full().shl64(e).xor(u.full().shl64(t))).withoutFirst();var de=class e{constructor(){}static default(){let t=new e;return t.reset(),t}reset(){this.occupied=new u(65535,4294901760),this.promoted=u.empty(),this.white=new u(65535,0),this.black=new u(0,4294901760),this.pawn=new u(65280,16711680),this.knight=new u(66,1107296256),this.bishop=new u(36,603979776),this.rook=new u(129,2164260864),this.queen=new u(8,134217728),this.king=new u(16,268435456)}static empty(){let t=new e;return t.clear(),t}clear(){this.occupied=u.empty(),this.promoted=u.empty();for(let t of F)this[t]=u.empty();for(let t of U)this[t]=u.empty()}clone(){let t=new e;t.occupied=this.occupied,t.promoted=this.promoted;for(let n of F)t[n]=this[n];for(let n of U)t[n]=this[n];return t}getColor(t){if(this.white.has(t))return"white";if(this.black.has(t))return"black"}getRole(t){for(let n of U)if(this[n].has(t))return n}get(t){let n=this.getColor(t);if(!n)return;let r=this.getRole(t),i=this.promoted.has(t);return{color:n,role:r,promoted:i}}take(t){let n=this.get(t);return n&&(this.occupied=this.occupied.without(t),this[n.color]=this[n.color].without(t),this[n.role]=this[n.role].without(t),n.promoted&&(this.promoted=this.promoted.without(t))),n}set(t,n){let r=this.take(t);return this.occupied=this.occupied.with(t),this[n.color]=this[n.color].with(t),this[n.role]=this[n.role].with(t),n.promoted&&(this.promoted=this.promoted.with(t)),r}has(t){return this.occupied.has(t)}*[Symbol.iterator](){for(let t of this.occupied)yield[t,this.get(t)]}pieces(t,n){return this[t].intersect(this[n])}rooksAndQueens(){return this.rook.union(this.queen)}bishopsAndQueens(){return this.bishop.union(this.queen)}steppers(){return this.knight.union(this.pawn).union(this.king)}sliders(){return this.bishop.union(this.rook).union(this.queen)}kingOf(t){return this.pieces(t,"king").singleSquare()}};var fe=class e{constructor(){}static empty(){let t=new e;for(let n of U)t[n]=0;return t}static fromBoard(t,n){let r=new e;for(let i of U)r[i]=t.pieces(n,i).size();return r}clone(){let t=new e;for(let n of U)t[n]=this[n];return t}equals(t){return U.every(n=>this[n]===t[n])}add(t){let n=new e;for(let r of U)n[r]=this[r]+t[r];return n}subtract(t){let n=new e;for(let r of U)n[r]=this[r]-t[r];return n}nonEmpty(){return U.some(t=>this[t]>0)}isEmpty(){return!this.nonEmpty()}hasPawns(){return this.pawn>0}hasNonPawns(){return this.knight>0||this.bishop>0||this.rook>0||this.queen>0||this.king>0}size(){return this.pawn+this.knight+this.bishop+this.rook+this.queen+this.king}},_e=class e{constructor(t,n){this.white=t,this.black=n}static empty(){return new e(fe.empty(),fe.empty())}static fromBoard(t){return new e(fe.fromBoard(t,"white"),fe.fromBoard(t,"black"))}clone(){return new e(this.white.clone(),this.black.clone())}equals(t){return this.white.equals(t.white)&&this.black.equals(t.black)}add(t){return new e(this.white.add(t.white),this.black.add(t.black))}subtract(t){return new e(this.white.subtract(t.white),this.black.subtract(t.black))}count(t){return this.white[t]+this.black[t]}size(){return this.white.size()+this.black.size()}isEmpty(){return this.white.isEmpty()&&this.black.isEmpty()}nonEmpty(){return!this.isEmpty()}hasPawns(){return this.white.hasPawns()||this.black.hasPawns()}hasNonPawns(){return this.white.hasNonPawns()||this.black.hasNonPawns()}},Se=class e{constructor(t,n){this.white=t,this.black=n}static default(){return new e(3,3)}clone(){return new e(this.white,this.black)}equals(t){return this.white===t.white&&this.black===t.black}};var at=class{unwrap(t,n){let r=this._chain(i=>m.ok(t?t(i):i),i=>n?m.ok(n(i)):m.err(i));if(r.isErr)throw r.error;return r.value}map(t,n){return this._chain(r=>m.ok(t(r)),r=>m.err(n?n(r):r))}chain(t,n){return this._chain(t,n??(r=>m.err(r)))}},Yt=class extends at{constructor(t){super(),this.value=t,this.isOk=!0,this.isErr=!1}_chain(t,n){return t(this.value)}},Zt=class extends at{constructor(t){super(),this.error=t,this.isOk=!1,this.isErr=!0}_chain(t,n){return n(this.error)}},m;(function(e){function t(i){return new Yt(i)}e.ok=t;function n(i){return new Zt(i||new Error)}e.err=n;function r(i){if(Array.isArray(i)){let a=[];for(let l=0;l<i.length;l++){let c=i[l];if(c.isErr)return c;a.push(c.value)}return e.ok(a)}let o={},s=Object.keys(i);for(let a=0;a<s.length;a++){let l=i[s[a]];if(l.isErr)return l;o[s[a]]=l.value}return e.ok(o)}e.all=r})(m||(m={}));var q;(function(e){e.Empty="ERR_EMPTY",e.OppositeCheck="ERR_OPPOSITE_CHECK",e.PawnsOnBackrank="ERR_PAWNS_ON_BACKRANK",e.Kings="ERR_KINGS",e.Variant="ERR_VARIANT"})(q||(q={}));var D=class extends Error{},Ki=(e,t,n,r)=>n[t].intersect(ye(e,r).intersect(n.rooksAndQueens()).union(ve(e,r).intersect(n.bishopsAndQueens())).union(qe(e).intersect(n.knight)).union(ae(e).intersect(n.king)).union(we(M(t),e).intersect(n.pawn))),ce=class e{constructor(){}static default(){let t=new e;return t.castlingRights=u.corners(),t.rook={white:{a:0,h:7},black:{a:56,h:63}},t.path={white:{a:new u(14,0),h:new u(96,0)},black:{a:new u(0,234881024),h:new u(0,1610612736)}},t}static empty(){let t=new e;return t.castlingRights=u.empty(),t.rook={white:{a:void 0,h:void 0},black:{a:void 0,h:void 0}},t.path={white:{a:u.empty(),h:u.empty()},black:{a:u.empty(),h:u.empty()}},t}clone(){let t=new e;return t.castlingRights=this.castlingRights,t.rook={white:{a:this.rook.white.a,h:this.rook.white.h},black:{a:this.rook.black.a,h:this.rook.black.h}},t.path={white:{a:this.path.white.a,h:this.path.white.h},black:{a:this.path.black.a,h:this.path.black.h}},t}add(t,n,r,i){let o=Ke(t,n),s=it(t,n);this.castlingRights=this.castlingRights.with(i),this.rook[t][n]=i,this.path[t][n]=xe(i,s).with(s).union(xe(r,o).with(o)).without(r).without(i)}static fromSetup(t){let n=e.empty(),r=t.castlingRights.intersect(t.board.rook);for(let i of F){let o=u.backrank(i),s=t.board.kingOf(i);if(!g(s)||!o.has(s))continue;let a=r.intersect(t.board[i]).intersect(o),l=a.first();g(l)&&l<s&&n.add(i,"a",s,l);let c=a.last();g(c)&&s<c&&n.add(i,"h",s,c)}return n}discardRook(t){if(this.castlingRights.has(t)){this.castlingRights=this.castlingRights.without(t);for(let n of F)for(let r of zn)this.rook[n][r]===t&&(this.rook[n][r]=void 0)}}discardColor(t){this.castlingRights=this.castlingRights.diff(u.backrank(t)),this.rook[t].a=void 0,this.rook[t].h=void 0}},ee=class{constructor(t){this.rules=t}reset(){this.board=de.default(),this.pockets=void 0,this.turn="white",this.castles=ce.default(),this.epSquare=void 0,this.remainingChecks=void 0,this.halfmoves=0,this.fullmoves=1}setupUnchecked(t){this.board=t.board.clone(),this.board.promoted=u.empty(),this.pockets=void 0,this.turn=t.turn,this.castles=ce.fromSetup(t),this.epSquare=$i(this,t.epSquare),this.remainingChecks=void 0,this.halfmoves=t.halfmoves,this.fullmoves=t.fullmoves}kingAttackers(t,n,r){return Ki(t,n,this.board,r)}playCaptureAt(t,n){this.halfmoves=0,n.role==="rook"&&this.castles.discardRook(t),this.pockets&&this.pockets[M(n.color)][n.promoted?"pawn":n.role]++}ctx(){let t=this.isVariantEnd(),n=this.board.kingOf(this.turn);if(!g(n))return{king:n,blockers:u.empty(),checkers:u.empty(),variantEnd:t,mustCapture:!1};let r=ye(n,u.empty()).intersect(this.board.rooksAndQueens()).union(ve(n,u.empty()).intersect(this.board.bishopsAndQueens())).intersect(this.board[M(this.turn)]),i=u.empty();for(let s of r){let a=xe(n,s).intersect(this.board.occupied);a.moreThanOne()||(i=i.union(a))}let o=this.kingAttackers(n,M(this.turn),this.board.occupied);return{king:n,blockers:i,checkers:o,variantEnd:t,mustCapture:!1}}clone(){var t,n;let r=new this.constructor;return r.board=this.board.clone(),r.pockets=(t=this.pockets)===null||t===void 0?void 0:t.clone(),r.turn=this.turn,r.castles=this.castles.clone(),r.epSquare=this.epSquare,r.remainingChecks=(n=this.remainingChecks)===null||n===void 0?void 0:n.clone(),r.halfmoves=this.halfmoves,r.fullmoves=this.fullmoves,r}validate(){if(this.board.occupied.isEmpty())return m.err(new D(q.Empty));if(this.board.king.size()!==2)return m.err(new D(q.Kings));if(!g(this.board.kingOf(this.turn)))return m.err(new D(q.Kings));let t=this.board.kingOf(M(this.turn));return g(t)?this.kingAttackers(t,this.turn,this.board.occupied).nonEmpty()?m.err(new D(q.OppositeCheck)):u.backranks().intersects(this.board.pawn)?m.err(new D(q.PawnsOnBackrank)):m.ok(void 0):m.err(new D(q.Kings))}dropDests(t){return u.empty()}dests(t,n){if(n=n||this.ctx(),n.variantEnd)return u.empty();let r=this.board.get(t);if(!r||r.color!==this.turn)return u.empty();let i,o;if(r.role==="pawn"){i=we(this.turn,t).intersect(this.board[M(this.turn)]);let s=this.turn==="white"?8:-8,a=t+s;if(0<=a&&a<64&&!this.board.occupied.has(a)){i=i.with(a);let l=this.turn==="white"?t<16:t>=48,c=a+s;l&&!this.board.occupied.has(c)&&(i=i.with(c))}g(this.epSquare)&&Vi(this,t,n)&&(o=u.fromSquare(this.epSquare))}else r.role==="bishop"?i=ve(t,this.board.occupied):r.role==="knight"?i=qe(t):r.role==="rook"?i=ye(t,this.board.occupied):r.role==="queen"?i=$e(t,this.board.occupied):i=ae(t);if(i=i.diff(this.board[this.turn]),g(n.king)){if(r.role==="king"){let s=this.board.occupied.without(t);for(let a of i)this.kingAttackers(a,M(this.turn),s).nonEmpty()&&(i=i.without(a));return i.union(ct(this,"a",n)).union(ct(this,"h",n))}if(n.checkers.nonEmpty()){let s=n.checkers.singleSquare();if(!g(s))return u.empty();i=i.intersect(xe(s,n.king).with(s))}n.blockers.has(t)&&(i=i.intersect(jt(t,n.king)))}return o&&(i=i.union(o)),i}isVariantEnd(){return!1}variantOutcome(t){}hasInsufficientMaterial(t){return this.board[t].intersect(this.board.pawn.union(this.board.rooksAndQueens())).nonEmpty()?!1:this.board[t].intersects(this.board.knight)?this.board[t].size()<=2&&this.board[M(t)].diff(this.board.king).diff(this.board.queen).isEmpty():this.board[t].intersects(this.board.bishop)?(!this.board.bishop.intersects(u.darkSquares())||!this.board.bishop.intersects(u.lightSquares()))&&this.board.pawn.isEmpty()&&this.board.knight.isEmpty():!0}toSetup(){var t,n;return{board:this.board.clone(),pockets:(t=this.pockets)===null||t===void 0?void 0:t.clone(),turn:this.turn,castlingRights:this.castles.castlingRights,epSquare:zi(this),remainingChecks:(n=this.remainingChecks)===null||n===void 0?void 0:n.clone(),halfmoves:Math.min(this.halfmoves,150),fullmoves:Math.min(Math.max(this.fullmoves,1),9999)}}isInsufficientMaterial(){return F.every(t=>this.hasInsufficientMaterial(t))}hasDests(t){t=t||this.ctx();for(let n of this.board[this.turn])if(this.dests(n,t).nonEmpty())return!0;return this.dropDests(t).nonEmpty()}isLegal(t,n){if(oe(t))return!this.pockets||this.pockets[this.turn][t.role]<=0||t.role==="pawn"&&u.backranks().has(t.to)?!1:this.dropDests(n).has(t.to);{if(t.promotion==="pawn"||t.promotion==="king"&&this.rules!=="antichess"||!!t.promotion!==(this.board.pawn.has(t.from)&&u.backranks().has(t.to)))return!1;let r=this.dests(t.from,n);return r.has(t.to)||r.has(Hn(this,t).to)}}isCheck(){let t=this.board.kingOf(this.turn);return g(t)&&this.kingAttackers(t,M(this.turn),this.board.occupied).nonEmpty()}isEnd(t){return(t?t.variantEnd:this.isVariantEnd())?!0:this.isInsufficientMaterial()||!this.hasDests(t)}isCheckmate(t){return t=t||this.ctx(),!t.variantEnd&&t.checkers.nonEmpty()&&!this.hasDests(t)}isStalemate(t){return t=t||this.ctx(),!t.variantEnd&&t.checkers.isEmpty()&&!this.hasDests(t)}outcome(t){let n=this.variantOutcome(t);return n||(t=t||this.ctx(),this.isCheckmate(t)?{winner:M(this.turn)}:this.isInsufficientMaterial()||this.isStalemate(t)?{winner:void 0}:void 0)}allDests(t){t=t||this.ctx();let n=new Map;if(t.variantEnd)return n;for(let r of this.board[this.turn])n.set(r,this.dests(r,t));return n}play(t){let n=this.turn,r=this.epSquare,i=Qt(this,t);if(this.epSquare=void 0,this.halfmoves+=1,n==="black"&&(this.fullmoves+=1),this.turn=M(n),oe(t))this.board.set(t.to,{role:t.role,color:n}),this.pockets&&this.pockets[n][t.role]--,t.role==="pawn"&&(this.halfmoves=0);else{let o=this.board.take(t.from);if(!o)return;let s;if(o.role==="pawn"){this.halfmoves=0,t.to===r&&(s=this.board.take(t.to+(n==="white"?-8:8)));let a=t.from-t.to;Math.abs(a)===16&&8<=t.from&&t.from<=55&&(this.epSquare=t.from+t.to>>1),t.promotion&&(o.role=t.promotion,o.promoted=!!this.pockets)}else if(o.role==="rook")this.castles.discardRook(t.from);else if(o.role==="king"){if(i){let a=this.castles.rook[n][i];if(g(a)){let l=this.board.take(a);this.board.set(Ke(n,i),o),l&&this.board.set(it(n,i),l)}}this.castles.discardColor(n)}if(!i){let a=this.board.set(t.to,o)||s;a&&this.playCaptureAt(t.to,a)}}this.remainingChecks&&this.isCheck()&&(this.remainingChecks[n]=Math.max(this.remainingChecks[n]-1,0))}},ze=class extends ee{constructor(){super("chess")}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}},$i=(e,t)=>{if(!g(t))return;let n=e.turn==="white"?5:2,r=e.turn==="white"?8:-8;if(J(t)!==n||e.board.occupied.has(t+r))return;let i=t-r;if(!(!e.board.pawn.has(i)||!e.board[M(e.turn)].has(i)))return t},zi=e=>{if(!g(e.epSquare))return;let t=e.ctx(),r=e.board.pieces(e.turn,"pawn").intersect(we(M(e.turn),e.epSquare));for(let i of r)if(e.dests(i,t).has(e.epSquare))return e.epSquare},Vi=(e,t,n)=>{if(!g(e.epSquare)||!we(e.turn,t).has(e.epSquare))return!1;if(!g(n.king))return!0;let r=e.turn==="white"?8:-8,i=e.epSquare-r;return e.kingAttackers(n.king,M(e.turn),e.board.occupied.toggle(t).toggle(i).with(e.epSquare)).without(i).isEmpty()},ct=(e,t,n)=>{if(!g(n.king)||n.checkers.nonEmpty())return u.empty();let r=e.castles.rook[e.turn][t];if(!g(r))return u.empty();if(e.castles.path[e.turn][t].intersects(e.board.occupied))return u.empty();let i=Ke(e.turn,t),o=xe(n.king,i),s=e.board.occupied.without(n.king);for(let c of o)if(e.kingAttackers(c,M(e.turn),s).nonEmpty())return u.empty();let a=it(e.turn,t),l=e.board.occupied.toggle(n.king).toggle(r).toggle(a);return e.kingAttackers(i,M(e.turn),l).nonEmpty()?u.empty():u.fromSquare(r)},lt=(e,t,n)=>{if(n.variantEnd)return u.empty();let r=e.board.get(t);if(!r||r.color!==e.turn)return u.empty();let i=st(r,t,e.board.occupied);if(r.role==="pawn"){let o=e.board[M(e.turn)];g(e.epSquare)&&(o=o.with(e.epSquare)),i=i.intersect(o);let s=e.turn==="white"?8:-8,a=t+s;if(0<=a&&a<64&&!e.board.occupied.has(a)){i=i.with(a);let l=e.turn==="white"?t<16:t>=48,c=a+s;l&&!e.board.occupied.has(c)&&(i=i.with(c))}return i}else i=i.diff(e.board[e.turn]);return t===n.king?i.union(ct(e,"a",n)).union(ct(e,"h",n)):i};var Qt=(e,t)=>{if(oe(t))return;let n=t.to-t.from;if(!(Math.abs(n)!==2&&!e.board[e.turn].has(t.to))&&e.board.king.has(t.from))return n>0?"h":"a"},Hn=(e,t)=>{let n=Qt(e,t);if(!n)return t;let r=e.castles.rook[e.turn][n];return{from:t.from,to:g(r)?r:t.to}};var Gn=e=>oe(e)?String.fromCharCode(35+e.to,139+["queen","rook","bishop","knight","pawn"].indexOf(e.role)):String.fromCharCode(35+e.from,e.promotion?99+8*["queen","rook","bishop","knight","king"].indexOf(e.promotion)+L(e.to):35+e.to);var Hi="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",Gi=Hi+" w KQkq -",Na=Gi+" 0 1",Wi="8/8/8/8/8/8/8/8",Ui=Wi+" w - -",Ta=Ui+" 0 1",$;(function(e){e.Fen="ERR_FEN",e.Board="ERR_BOARD",e.Pockets="ERR_POCKETS",e.Turn="ERR_TURN",e.Castling="ERR_CASTLING",e.EpSquare="ERR_EP_SQUARE",e.RemainingChecks="ERR_REMAINING_CHECKS",e.Halfmoves="ERR_HALFMOVES",e.Fullmoves="ERR_FULLMOVES"})($||($={}));var z=class extends Error{},ji=(e,t,n)=>{let r=e.indexOf(t);for(;n-- >0&&r!==-1;)r=e.indexOf(t,r+t.length);return r},De=e=>/^\d{1,4}$/.test(e)?parseInt(e,10):void 0,Yn=e=>{let t=Ae(e);return t&&{role:t,color:e.toLowerCase()===e?"black":"white"}},Xt=e=>{let t=de.empty(),n=7,r=0;for(let i=0;i<e.length;i++){let o=e[i];if(o==="/"&&r===8)r=0,n--;else{let s=parseInt(o,10);if(s>0)r+=s;else{if(r>=8||n<0)return m.err(new z($.Board));let a=r+n*8,l=Yn(o);if(!l)return m.err(new z($.Board));e[i+1]==="~"&&(l.promoted=!0,i++),t.set(a,l),r++}}}return n!==0||r!==8?m.err(new z($.Board)):m.ok(t)},Wn=e=>{if(e.length>64)return m.err(new z($.Pockets));let t=_e.empty();for(let n of e){let r=Yn(n);if(!r)return m.err(new z($.Pockets));t[r.color][r.role]++}return m.ok(t)},Yi=(e,t)=>{let n=u.empty();if(t==="-")return m.ok(n);for(let r of t){let i=r.toLowerCase(),o=r===i?"black":"white",s=o==="white"?0:7;if("a"<=i&&i<="h")n=n.with(rt(i.charCodeAt(0)-97,s));else if(i==="k"||i==="q"){let a=e[o].intersect(u.backrank(o)).intersect(e.rook.union(e.king)),l=i==="k"?a.last():a.first();n=n.with(g(l)&&e.rook.has(l)?l:rt(i==="k"?7:0,s))}else return m.err(new z($.Castling))}return F.some(r=>u.backrank(r).intersect(n).size()>2)?m.err(new z($.Castling)):m.ok(n)},Un=e=>{let t=e.split("+");if(t.length===3&&t[0]===""){let n=De(t[1]),r=De(t[2]);return!g(n)||n>3||!g(r)||r>3?m.err(new z($.RemainingChecks)):m.ok(new Se(3-n,3-r))}else if(t.length===2){let n=De(t[0]),r=De(t[1]);return!g(n)||n>3||!g(r)||r>3?m.err(new z($.RemainingChecks)):m.ok(new Se(n,r))}else return m.err(new z($.RemainingChecks))},Zn=e=>{let t=e.split(/[\s_]+/),n=t.shift(),r,i=m.ok(void 0);if(n.endsWith("]")){let a=n.indexOf("[");if(a===-1)return m.err(new z($.Fen));r=Xt(n.slice(0,a)),i=Wn(n.slice(a+1,-1))}else{let a=ji(n,"/",7);a===-1?r=Xt(n):(r=Xt(n.slice(0,a)),i=Wn(n.slice(a+1)))}let o,s=t.shift();if(!g(s)||s==="w")o="white";else if(s==="b")o="black";else return m.err(new z($.Turn));return r.chain(a=>{let l=t.shift(),c=g(l)?Yi(a,l):m.ok(u.empty()),p=t.shift(),f;if(g(p)&&p!=="-"&&(f=he(p),!g(f)))return m.err(new z($.EpSquare));let C=t.shift(),k;g(C)&&C.includes("+")&&(k=Un(C),C=t.shift());let h=g(C)?De(C):0;if(!g(h))return m.err(new z($.Halfmoves));let d=t.shift(),w=g(d)?De(d):1;if(!g(w))return m.err(new z($.Fullmoves));let b=t.shift(),y=m.ok(void 0);if(g(b)){if(g(k))return m.err(new z($.RemainingChecks));y=Un(b)}else g(k)&&(y=k);return t.length>0?m.err(new z($.Fen)):i.chain(E=>c.chain(x=>y.map(P=>({board:a,pockets:E,turn:o,castlingRights:x,remainingChecks:P,epSquare:f,halfmoves:h,fullmoves:Math.max(1,w)}))))})};var Zi=e=>{let t=se(e.role);return e.color==="white"&&(t=t.toUpperCase()),e.promoted&&(t+="~"),t},Qi=e=>{let t="",n=0;for(let r=7;r>=0;r--)for(let i=0;i<8;i++){let o=i+r*8,s=e.get(o);s?(n>0&&(t+=n,n=0),t+=Zi(s)):n++,i===7&&(n>0&&(t+=n,n=0),r!==0&&(t+="/"))}return t},jn=e=>U.map(t=>se(t).repeat(e[t])).join(""),Xi=e=>jn(e.white).toUpperCase()+jn(e.black),Ji=(e,t)=>{let n="";for(let r of F){let i=u.backrank(r),o=e.kingOf(r);g(o)&&!i.has(o)&&(o=void 0);let s=e.pieces(r,"rook").intersect(i);for(let a of t.intersect(i).reversed())if(a===s.first()&&g(o)&&a<o)n+=r==="white"?"Q":"q";else if(a===s.last()&&g(o)&&o<a)n+=r==="white"?"K":"k";else{let l=Ee[L(a)];n+=r==="white"?l.toUpperCase():l}}return n||"-"},eo=e=>`${e.white}+${e.black}`,ut=(e,t)=>[Qi(e.board)+(e.pockets?`[${Xi(e.pockets)}]`:""),e.turn[0],Ji(e.board,e.castlingRights),g(e.epSquare)?j(e.epSquare):"-",...e.remainingChecks?[eo(e.remainingChecks)]:[],...t?.epd?[]:[Math.max(0,Math.min(e.halfmoves,9999)),Math.max(1,Math.min(e.fullmoves,9999))]].join(" ");var no=(e,t)=>{let n="";if(oe(t))t.role!=="pawn"&&(n=se(t.role).toUpperCase()),n+="@"+j(t.to);else{let r=e.board.getRole(t.from);if(!r)return"--";if(r==="king"&&(e.board[e.turn].has(t.to)||Math.abs(t.to-t.from)===2))n=t.to>t.from?"O-O":"O-O-O";else{let i=e.board.occupied.has(t.to)||r==="pawn"&&L(t.from)!==L(t.to);if(r!=="pawn"){n=se(r).toUpperCase();let o;if(r==="king"?o=ae(t.to).intersect(e.board.king):r==="queen"?o=$e(t.to,e.board.occupied).intersect(e.board.queen):r==="rook"?o=ye(t.to,e.board.occupied).intersect(e.board.rook):r==="bishop"?o=ve(t.to,e.board.occupied).intersect(e.board.bishop):o=qe(t.to).intersect(e.board.knight),o=o.intersect(e.board[e.turn]).without(t.from),o.nonEmpty()){let s=e.ctx();for(let a of o)e.dests(a,s).has(t.to)||(o=o.without(a));if(o.nonEmpty()){let a=!1,l=o.intersects(u.fromRank(J(t.from)));o.intersects(u.fromFile(L(t.from)))?a=!0:l=!0,l&&(n+=Ee[L(t.from)]),a&&(n+=nt[J(t.from)])}}}else i&&(n=Ee[L(t.from)]);i&&(n+="x"),n+=j(t.to),t.promotion&&(n+="="+se(t.promotion).toUpperCase())}}return n},Qn=(e,t)=>{var n;let r=no(e,t);return e.play(t),!((n=e.outcome())===null||n===void 0)&&n.winner?r+"#":e.isCheck()?r+"+":r};var Xn=(e,t)=>{let n=e.ctx(),r=t.match(/^([NBRQK])?([a-h])?([1-8])?[-x]?([a-h][1-8])(?:=?([nbrqkNBRQK]))?[+#]?$/);if(!r){let p;if(t==="O-O"||t==="O-O+"||t==="O-O#"?p="h":(t==="O-O-O"||t==="O-O-O+"||t==="O-O-O#")&&(p="a"),p){let k=e.castles.rook[e.turn][p];return!g(n.king)||!g(k)||!e.dests(n.king,n).has(k)?void 0:{from:n.king,to:k}}let f=t.match(/^([pnbrqkPNBRQK])?@([a-h][1-8])[+#]?$/);if(!f)return;let C={role:f[1]?Ae(f[1]):"pawn",to:he(f[2])};return e.isLegal(C,n)?C:void 0}let i=r[1]?Ae(r[1]):"pawn",o=he(r[4]),s=r[5]?Ae(r[5]):void 0;if(!!s!==(i==="pawn"&&u.backranks().has(o))||s==="king"&&e.rules!=="antichess")return;let a=e.board.pieces(e.turn,i);i==="pawn"&&!r[2]?a=a.intersect(u.fromFile(L(o))):r[2]&&(a=a.intersect(u.fromFile(r[2].charCodeAt(0)-97))),r[3]&&(a=a.intersect(u.fromRank(r[3].charCodeAt(0)-49)));let l=i==="pawn"?u.fromFile(L(o)):u.empty();a=a.intersect(l.union(st({color:M(e.turn),role:i},o,e.board.occupied)));let c;for(let p of a)if(e.dests(p,n).has(o)){if(g(c))return;c=p}if(g(c))return{from:c,to:o,promotion:s}};var ht=class extends ee{constructor(){super("crazyhouse")}reset(){super.reset(),this.pockets=_e.empty()}setupUnchecked(t){super.setupUnchecked(t),this.board.promoted=t.board.promoted.intersect(t.board.occupied).diff(t.board.king).diff(t.board.pawn),this.pockets=t.pockets?t.pockets.clone():_e.empty()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){return super.validate().chain(t=>{var n,r;return!((n=this.pockets)===null||n===void 0)&&n.count("king")?m.err(new D(q.Kings)):(((r=this.pockets)===null||r===void 0?void 0:r.size())||0)+this.board.occupied.size()>64?m.err(new D(q.Variant)):m.ok(void 0)})}hasInsufficientMaterial(t){return this.pockets?this.board.occupied.size()+this.pockets.size()<=3&&this.board.pawn.isEmpty()&&this.board.promoted.isEmpty()&&this.board.rooksAndQueens().isEmpty()&&this.pockets.count("pawn")<=0&&this.pockets.count("rook")<=0&&this.pockets.count("queen")<=0:super.hasInsufficientMaterial(t)}dropDests(t){var n,r;let i=this.board.occupied.complement().intersect(!((n=this.pockets)===null||n===void 0)&&n[this.turn].hasNonPawns()?u.full():!((r=this.pockets)===null||r===void 0)&&r[this.turn].hasPawns()?u.backranks().complement():u.empty());if(t=t||this.ctx(),g(t.king)&&t.checkers.nonEmpty()){let o=t.checkers.singleSquare();return g(o)?i.intersect(xe(o,t.king)):u.empty()}else return i}},dt=class extends ee{constructor(){super("atomic")}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){if(this.board.occupied.isEmpty())return m.err(new D(q.Empty));if(this.board.king.size()>2)return m.err(new D(q.Kings));let t=this.board.kingOf(M(this.turn));return g(t)?this.kingAttackers(t,this.turn,this.board.occupied).nonEmpty()?m.err(new D(q.OppositeCheck)):u.backranks().intersects(this.board.pawn)?m.err(new D(q.PawnsOnBackrank)):m.ok(void 0):m.err(new D(q.Kings))}kingAttackers(t,n,r){let i=this.board.pieces(n,"king");return i.isEmpty()||ae(t).intersects(i)?u.empty():super.kingAttackers(t,n,r)}playCaptureAt(t,n){super.playCaptureAt(t,n),this.board.take(t);for(let r of ae(t).intersect(this.board.occupied).diff(this.board.pawn)){let i=this.board.take(r);i?.role==="rook"&&this.castles.discardRook(r),i?.role==="king"&&this.castles.discardColor(i.color)}}hasInsufficientMaterial(t){if(this.board.pieces(M(t),"king").isEmpty())return!1;if(this.board[t].diff(this.board.king).isEmpty())return!0;if(this.board[M(t)].diff(this.board.king).nonEmpty()){if(this.board.occupied.equals(this.board.bishop.union(this.board.king))){if(!this.board.bishop.intersect(this.board.white).intersects(u.darkSquares()))return!this.board.bishop.intersect(this.board.black).intersects(u.lightSquares());if(!this.board.bishop.intersect(this.board.white).intersects(u.lightSquares()))return!this.board.bishop.intersect(this.board.black).intersects(u.darkSquares())}return!1}return this.board.queen.nonEmpty()||this.board.pawn.nonEmpty()?!1:this.board.knight.union(this.board.bishop).union(this.board.rook).size()===1?!0:this.board.occupied.equals(this.board.knight.union(this.board.king))?this.board.knight.size()<=2:!1}dests(t,n){n=n||this.ctx();let r=u.empty();for(let i of lt(this,t,n)){let o=this.clone();o.play({from:t,to:i});let s=o.board.kingOf(this.turn);g(s)&&(!g(o.board.kingOf(o.turn))||o.kingAttackers(s,o.turn,o.board.occupied).isEmpty())&&(r=r.with(i))}return r}isVariantEnd(){return!!this.variantOutcome()}variantOutcome(t){for(let n of F)if(this.board.pieces(n,"king").isEmpty())return{winner:M(n)}}},ft=class extends ee{constructor(){super("antichess")}reset(){super.reset(),this.castles=ce.empty()}setupUnchecked(t){super.setupUnchecked(t),this.castles=ce.empty()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){return this.board.occupied.isEmpty()?m.err(new D(q.Empty)):u.backranks().intersects(this.board.pawn)?m.err(new D(q.PawnsOnBackrank)):m.ok(void 0)}kingAttackers(t,n,r){return u.empty()}ctx(){let t=super.ctx();if(g(this.epSquare)&&we(M(this.turn),this.epSquare).intersects(this.board.pieces(this.turn,"pawn")))return t.mustCapture=!0,t;let n=this.board[M(this.turn)];for(let r of this.board[this.turn])if(lt(this,r,t).intersects(n))return t.mustCapture=!0,t;return t}dests(t,n){n=n||this.ctx();let r=lt(this,t,n),i=this.board[M(this.turn)];return r.intersect(n.mustCapture?g(this.epSquare)&&this.board.getRole(t)==="pawn"?i.with(this.epSquare):i:u.full())}hasInsufficientMaterial(t){if(this.board[t].isEmpty())return!1;if(this.board[M(t)].isEmpty())return!0;if(this.board.occupied.equals(this.board.bishop)){let n=this.board[t].intersects(u.lightSquares()),r=this.board[t].intersects(u.darkSquares()),i=this.board[M(t)].isDisjoint(u.lightSquares()),o=this.board[M(t)].isDisjoint(u.darkSquares());return n&&i||r&&o}return this.board.occupied.equals(this.board.knight)&&this.board.occupied.size()===2?this.board.white.intersects(u.lightSquares())!==this.board.black.intersects(u.darkSquares())!=(this.turn===t):!1}isVariantEnd(){return this.board[this.turn].isEmpty()}variantOutcome(t){if(t=t||this.ctx(),t.variantEnd||this.isStalemate(t))return{winner:this.turn}}},pt=class extends ee{constructor(){super("kingofthehill")}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}hasInsufficientMaterial(t){return!1}isVariantEnd(){return this.board.king.intersects(u.center())}variantOutcome(t){for(let n of F)if(this.board.pieces(n,"king").intersects(u.center()))return{winner:n}}},mt=class extends ee{constructor(){super("3check")}reset(){super.reset(),this.remainingChecks=Se.default()}setupUnchecked(t){var n;super.setupUnchecked(t),this.remainingChecks=((n=t.remainingChecks)===null||n===void 0?void 0:n.clone())||Se.default()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}hasInsufficientMaterial(t){return this.board.pieces(t,"king").equals(this.board[t])}isVariantEnd(){return!!this.remainingChecks&&(this.remainingChecks.white<=0||this.remainingChecks.black<=0)}variantOutcome(t){if(this.remainingChecks){for(let n of F)if(this.remainingChecks[n]<=0)return{winner:n}}}},io=()=>{let e=de.empty();return e.occupied=new u(65535,0),e.promoted=u.empty(),e.white=new u(61680,0),e.black=new u(3855,0),e.pawn=u.empty(),e.knight=new u(6168,0),e.bishop=new u(9252,0),e.rook=new u(16962,0),e.queen=new u(129,0),e.king=new u(33024,0),e},gt=class extends ee{constructor(){super("racingkings")}reset(){this.board=io(),this.pockets=void 0,this.turn="white",this.castles=ce.empty(),this.epSquare=void 0,this.remainingChecks=void 0,this.halfmoves=0,this.fullmoves=1}setupUnchecked(t){super.setupUnchecked(t),this.castles=ce.empty()}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){return this.isCheck()||this.board.pawn.nonEmpty()?m.err(new D(q.Variant)):super.validate()}dests(t,n){if(n=n||this.ctx(),t===n.king)return super.dests(t,n);let r=u.empty();for(let i of super.dests(t,n)){let o={from:t,to:i},s=this.clone();s.play(o),s.isCheck()||(r=r.with(i))}return r}hasInsufficientMaterial(t){return!1}isVariantEnd(){let t=u.fromRank(7),n=this.board.king.intersect(t);if(n.isEmpty())return!1;if(this.turn==="white"||n.intersects(this.board.black))return!0;let r=this.board.kingOf("black");if(g(r)){let i=this.board.occupied.without(r);for(let o of ae(r).intersect(t).diff(this.board.black))if(this.kingAttackers(o,"white",i).isEmpty())return!1}return!0}variantOutcome(t){if(t?!t.variantEnd:!this.isVariantEnd())return;let n=u.fromRank(7),r=this.board.pieces("black","king").intersects(n),i=this.board.pieces("white","king").intersects(n);return r&&!i?{winner:"black"}:i&&!r?{winner:"white"}:{winner:void 0}}},oo=()=>{let e=de.empty();return e.occupied=new u(4294967295,4294901862),e.promoted=u.empty(),e.white=new u(4294967295,102),e.black=new u(0,4294901760),e.pawn=new u(4294967295,16711782),e.knight=new u(0,1107296256),e.bishop=new u(0,603979776),e.rook=new u(0,2164260864),e.queen=new u(0,134217728),e.king=new u(0,268435456),e},kt=class extends ee{constructor(){super("horde")}reset(){this.board=oo(),this.pockets=void 0,this.turn="white",this.castles=ce.default(),this.castles.discardColor("white"),this.epSquare=void 0,this.remainingChecks=void 0,this.halfmoves=0,this.fullmoves=1}static default(){let t=new this;return t.reset(),t}static fromSetup(t){let n=new this;return n.setupUnchecked(t),n.validate().map(r=>n)}clone(){return super.clone()}validate(){if(this.board.occupied.isEmpty())return m.err(new D(q.Empty));if(this.board.king.size()!==1)return m.err(new D(q.Kings));let t=this.board.kingOf(M(this.turn));if(g(t)&&this.kingAttackers(t,this.turn,this.board.occupied).nonEmpty())return m.err(new D(q.OppositeCheck));for(let n of F){let r=this.board.pieces(n,"king").isEmpty()?u.backrank(M(n)):u.backranks();if(this.board.pieces(n,"pawn").intersects(r))return m.err(new D(q.PawnsOnBackrank))}return m.ok(void 0)}hasInsufficientMaterial(t){if(this.board.pieces(t,"king").nonEmpty())return!1;let n=k=>k==="light"?"dark":"light",r=k=>k==="light"?u.lightSquares():u.darkSquares(),i=k=>{let h=this.board.pieces(k,"bishop");return h.intersects(u.darkSquares())&&h.intersects(u.lightSquares())},o=fe.fromBoard(this.board,t),s=k=>r(k).intersect(this.board.pieces(t,"bishop")).size(),a=s("light")>=1?"light":"dark",l=o.pawn+o.knight+o.rook+o.queen+Math.min(s("dark"),2)+Math.min(s("light"),2),c=fe.fromBoard(this.board,M(t)),p=k=>r(k).intersect(this.board.pieces(M(t),"bishop")).size(),f=c.size(),C=k=>f-k;if(l===0)return!0;if(l>=4||(o.pawn>=1||o.queen>=1)&&l>=2||o.rook>=1&&l>=2&&!(l===2&&o.rook===1&&o.bishop===1&&C(p(a))===1))return!1;if(l===1){if(f===1)return!0;if(o.queen===1)return!(c.pawn>=1||c.rook>=1||p("light")>=2||p("dark")>=2);if(o.pawn===1){let k=this.board.pieces(t,"pawn").last(),h=this.clone();h.board.set(k,{color:t,role:"queen"});let d=this.clone();return d.board.set(k,{color:t,role:"knight"}),h.hasInsufficientMaterial(t)&&d.hasInsufficientMaterial(t)}else{if(o.rook===1)return!(c.pawn>=2||c.rook>=1&&c.pawn>=1||c.rook>=1&&c.knight>=1||c.pawn>=1&&c.knight>=1);if(o.bishop===1)return!(p(n(a))>=2||p(n(a))>=1&&c.pawn>=1||c.pawn>=2);if(o.knight===1)return!(f>=4&&(c.knight>=2||c.pawn>=2||c.rook>=1&&c.knight>=1||c.rook>=1&&c.bishop>=1||c.knight>=1&&c.bishop>=1||c.rook>=1&&c.pawn>=1||c.knight>=1&&c.pawn>=1||c.bishop>=1&&c.pawn>=1||i(M(t))&&c.pawn>=1)&&(p("dark")<2||C(p("dark"))>=3)&&(p("light")<2||C(p("light"))>=3))}}else{if(l===2)return f===1?!0:o.knight===2?c.pawn+c.bishop+c.knight<1:i(t)?!(c.pawn>=1||c.bishop>=1||c.knight>=1&&c.rook+c.queen>=1):o.bishop>=1&&o.knight>=1?!(c.pawn>=1||p(n(a))>=1||C(p(a))>=3):!(c.pawn>=1&&p(n(a))>=1||c.pawn>=1&&c.knight>=1||p(n(a))>=1&&c.knight>=1||p(n(a))>=2||c.knight>=2||c.pawn>=2);if(l===3)return o.knight===2&&o.bishop===1||o.knight===3||i(t)?!1:f===1}return!0}isVariantEnd(){return this.board.white.isEmpty()||this.board.black.isEmpty()}variantOutcome(t){if(this.board.white.isEmpty())return{winner:"black"};if(this.board.black.isEmpty())return{winner:"white"}}},Jn=e=>{switch(e){case"chess":return ze.default();case"antichess":return ft.default();case"atomic":return dt.default();case"horde":return kt.default();case"racingkings":return gt.default();case"kingofthehill":return pt.default();case"3check":return mt.default();case"crazyhouse":return ht.default()}},er=(e,t)=>{switch(e){case"chess":return ze.fromSetup(t);case"antichess":return ft.fromSetup(t);case"atomic":return dt.fromSetup(t);case"horde":return kt.fromSetup(t);case"racingkings":return gt.fromSetup(t);case"kingofthehill":return pt.fromSetup(t);case"3check":return mt.fromSetup(t);case"crazyhouse":return ht.fromSetup(t)}};var ao=(e=rn)=>({headers:e(),moves:new Ve}),Ve=class{constructor(){this.children=[]}*mainlineNodes(){let t=this;for(;t.children.length;){let n=t.children[0];yield n,t=n}}*mainline(){for(let t of this.mainlineNodes())yield t.data}end(){let t=this;for(;t.children.length;)t=t.children[0];return t}},bt=class extends Ve{constructor(t){super(),this.data=t}};var nr=(e,t,n)=>{let r=new Ve,i=[{before:e,after:r,ctx:t}],o;for(;o=i.pop();)for(let s=0;s<o.before.children.length;s++){let a=s<o.before.children.length-1?o.ctx.clone():o.ctx,l=o.before.children[s],c=n(a,l.data,s);if(g(c)){let p=new bt(c);o.after.children.push(p),i.push({before:l,after:p,ctx:a})}}return r};var co=e=>e?e.winner==="white"?"1-0":e.winner==="black"?"0-1":"1/2-1/2":"*",lo=e=>e==="1-0"||e==="1\u20130"||e==="1\u20140"?{winner:"white"}:e==="0-1"||e==="0\u20131"||e==="0\u20141"?{winner:"black"}:e==="1/2-1/2"||e==="1/2\u20131/2"||e==="1/2\u20141/2"?{winner:void 0}:void 0;var rn=()=>new Map([["Event","?"],["Site","?"],["Date","????.??.??"],["Round","?"],["White","?"],["Black","?"],["Result","*"]]);var tr="\uFEFF",Jt=e=>/^\s*$/.test(e),en=e=>e.startsWith("%"),tn=class extends Error{},nn=class{constructor(t,n=rn,r=1e6){this.emitGame=t,this.initHeaders=n,this.maxBudget=r,this.lineBuf=[],this.resetGame(),this.state=0}resetGame(){this.budget=this.maxBudget,this.found=!1,this.state=1,this.game=ao(this.initHeaders),this.stack=[{parent:this.game.moves,root:!0}],this.commentBuf=[]}consumeBudget(t){if(this.budget-=t,this.budget<0)throw new tn("ERR_PGN_BUDGET")}parse(t,n){if(!(this.budget<0))try{let r=0;for(;;){let i=t.indexOf(`
|
|
2
2
|
`,r);if(i===-1)break;let o=i>r&&t[i-1]==="\r"?i-1:i;this.consumeBudget(i-r),this.lineBuf.push(t.slice(r,o)),r=i+1,this.handleLine()}this.consumeBudget(t.length-r),this.lineBuf.push(t.slice(r)),n?.stream||(this.handleLine(),this.emit(void 0))}catch(r){this.emit(r)}}handleLine(){let t=!0,n=this.lineBuf.join("");this.lineBuf=[];e:for(;;)switch(this.state){case 0:n.startsWith(tr)&&(n=n.slice(tr.length)),this.state=1;case 1:if(Jt(n)||en(n))return;this.found=!0,this.state=2;case 2:{if(en(n))return;let r=!0;for(;r;)r=!1,n=n.replace(/^\s*\[([A-Za-z0-9][A-Za-z0-9_+#=:-]*)\s+"((?:[^"\\]|\\"|\\\\)*)"\]/,(i,o,s)=>(this.consumeBudget(200),this.handleHeader(o,s.replace(/\\"/g,'"').replace(/\\\\/g,"\\")),r=!0,t=!1,""));if(Jt(n))return;this.state=3}case 3:{if(t){if(en(n))return;if(Jt(n))return this.emit(void 0)}let r=/(?:[NBKRQ]?[a-h]?[1-8]?[-x]?[a-h][1-8](?:=?[nbrqkNBRQK])?|[pnbrqkPNBRQK]?@[a-h][1-8]|[O0o][-–—][O0o](?:[-–—][O0o])?)[+#]?|--|Z0|0000|@@@@|{|;|\$\d{1,4}|[?!]{1,2}|\(|\)|\*|1[-–—]0|0[-–—]1|1\/2[-–—]1\/2/g,i;for(;i=r.exec(n);){let o=this.stack[this.stack.length-1],s=i[0];if(s===";")return;if(s.startsWith("$"))this.handleNag(parseInt(s.slice(1),10));else if(s==="!")this.handleNag(1);else if(s==="?")this.handleNag(2);else if(s==="!!")this.handleNag(3);else if(s==="??")this.handleNag(4);else if(s==="!?")this.handleNag(5);else if(s==="?!")this.handleNag(6);else if(s==="1-0"||s==="1\u20130"||s==="1\u20140"||s==="0-1"||s==="0\u20131"||s==="0\u20141"||s==="1/2-1/2"||s==="1/2\u20131/2"||s==="1/2\u20141/2"||s==="*")this.stack.length===1&&s!=="*"&&this.handleHeader("Result",s);else if(s==="(")this.consumeBudget(100),this.stack.push({parent:o.parent,root:!1});else if(s===")")this.stack.length>1&&this.stack.pop();else if(s==="{"){let a=r.lastIndex,l=n[a]===" "?a+1:a;n=n.slice(l),this.state=4;continue e}else this.consumeBudget(100),s.startsWith("O")||s.startsWith("0")||s.startsWith("o")?s=s.replace(/[0o]/g,"O").replace(/[–—]/g,"-"):(s==="Z0"||s==="0000"||s==="@@@@")&&(s="--"),o.node&&(o.parent=o.node),o.node=new bt({san:s,startingComments:o.startingComments}),o.startingComments=void 0,o.root=!1,o.parent.children.push(o.node)}return}case 4:{let r=n.indexOf("}");if(r===-1){this.commentBuf.push(n);return}else{let i=r>0&&n[r-1]===" "?r-1:r;this.commentBuf.push(n.slice(0,i)),this.handleComment(),n=n.slice(r),this.state=3,t=!1}}}}handleHeader(t,n){this.game.headers.set(t,t==="Result"?co(lo(n)):n)}handleNag(t){var n;this.consumeBudget(50);let r=this.stack[this.stack.length-1];r.node&&((n=r.node.data).nags||(n.nags=[]),r.node.data.nags.push(t))}handleComment(){var t,n;this.consumeBudget(100);let r=this.stack[this.stack.length-1],i=this.commentBuf.join(`
|
|
3
|
-
`);this.commentBuf=[],r.node?((t=r.node.data).comments||(t.comments=[]),r.node.data.comments.push(i)):r.root?((n=this.game).comments||(n.comments=[]),this.game.comments.push(i)):(r.startingComments||(r.startingComments=[]),r.startingComments.push(i))}emit(t){if(this.state===4&&this.handleComment(),t)return this.emitGame(this.game,t);this.found&&this.emitGame(this.game,void 0),this.resetGame()}},on=(e,t=rn)=>{let n=[];return new nn(r=>n.push(r),t,NaN).parse(e),n},uo=e=>{switch((e||"chess").toLowerCase()){case"chess":case"chess960":case"chess 960":case"standard":case"from position":case"classical":case"normal":case"fischerandom":case"fischerrandom":case"fischer random":case"wild/0":case"wild/1":case"wild/2":case"wild/3":case"wild/4":case"wild/5":case"wild/6":case"wild/7":case"wild/8":case"wild/8a":return"chess";case"crazyhouse":case"crazy house":case"house":case"zh":return"crazyhouse";case"king of the hill":case"koth":case"kingofthehill":return"kingofthehill";case"three-check":case"three check":case"threecheck":case"three check chess":case"3-check":case"3 check":case"3check":return"3check";case"antichess":case"anti chess":case"anti":return"antichess";case"atomic":case"atom":case"atomic chess":return"atomic";case"horde":case"horde chess":return"horde";case"racing kings":case"racingkings":case"racing":case"race":return"racingkings";default:return}};var rr=e=>{let t=uo(e.get("Variant"));if(!t)return m.err(new D(q.Variant));let n=e.get("FEN");return n?Zn(n).chain(r=>er(t,r)):m.ok(Jn(t))};function ho(e){switch(e){case"G":return"green";case"R":return"red";case"Y":return"yellow";case"B":return"blue";default:return}}var fo=e=>{let t=ho(e.slice(0,1)),n=he(e.slice(1,3)),r=he(e.slice(3,5));if(!(!t||!g(n))){if(e.length===3)return{color:t,from:n,to:n};if(e.length===5&&g(r))return{color:t,from:n,to:r}}};var ir=e=>{let t,n,r,i=[];return{text:e.replace(/\s?\[%(emt|clk)\s(\d{1,5}):(\d{1,2}):(\d{1,2}(?:\.\d{0,3})?)\]\s?/g,(s,a,l,c,p)=>{let f=parseInt(l,10)*3600+parseInt(c,10)*60+parseFloat(p);return a==="emt"?t=f:a==="clk"&&(n=f)," "}).replace(/\s?\[%(?:csl|cal)\s([RGYB][a-h][1-8](?:[a-h][1-8])?(?:,[RGYB][a-h][1-8](?:[a-h][1-8])?)*)\]\s?/g,(s,a)=>{for(let l of a.split(","))i.push(fo(l));return" "}).replace(/\s?\[%eval\s(?:#([+-]?\d{1,5})|([+-]?(?:\d{1,5}|\d{0,5}\.\d{1,2})))(?:,(\d{1,5}))?\]\s?/g,(s,a,l,c)=>{let p=c&&parseInt(c,10);return r=a?{mate:parseInt(a,10),depth:p}:{pawns:parseFloat(l),depth:p}," "}).trim(),shapes:i,emt:t,clock:n,evaluation:r}};var mo=e=>ko[e];function sn(e=mo){return(t,...n)=>go(e(t)??t,n)}var go=(e,t)=>{let n=e;return t.forEach((r,i)=>{n=n.replace(`%${i+1}$s`,r),n=n.replace("%s",r)}),n},ko={flipTheBoard:"Flip the board",analysisBoard:"Analysis board",practiceWithComputer:"Practice with computer",getPgn:"Get PGN",download:"Download",viewOnLichess:"View on Lichess",viewOnSite:"View on site",menu:"Menu","aria.first":"Go to first move","aria.prev":"Go to previous move","aria.next":"Go to next move","aria.last":"Go to last move","aria.gameMoves":"Game moves","aria.gameResult":"Game result","aria.variation":"Variation","aria.navigationControls":"Game navigation controls","aria.viewProfileOnLichess":"View %s's profile on Lichess","aria.chessGameBetween":"Chess game between %1$s, whites, and %2$s, blacks. %3$s","aria.gameInProgress":"Game in progress","aria.whitesWin":"Whites win","aria.blacksWin":"Blacks win","aria.draw":"Draw","aria.unknownPlayer":"Unknown player","aria.rated":"rated %s","aria.move":"Move %1$s, %2$s, %3$s","aria.white":"white","aria.black":"black","aria.remaining":"%s remaining","aria.linkOpensInNewTab":"%s, link, opens in new tab","aria.accessibleChessboard":"Accessible chessboard","aria.piece.king":"king","aria.piece.queen":"queen","aria.piece.rook":"rook","aria.piece.bishop":"bishop","aria.piece.knight":"knight","aria.piece.pawn":"pawn","aria.empty":"empty","san.takes":"takes","san.check":"check","san.checkmate":"checkmate","san.promotesTo":"promotes to","san.droppedOn":"dropped on","san.longCastling":"long castling","san.shortCastling":"short castling"};var or=["white","black"];var le=["a","b","c","d","e","f","g","h"],Ce=["1","2","3","4","5","6","7","8"];var wt=[...Ce].reverse(),vt=Array.prototype.concat(...le.map(e=>Ce.map(t=>e+t))),V=e=>vt[8*e[0]+e[1]],N=e=>[e.charCodeAt(0)-97,e.charCodeAt(1)-49],ar=e=>{if(e)return e[1]==="@"?[e.slice(2,4)]:[e.slice(0,2),e.slice(2,4)]},yt=vt.map(N);function cr(e){let t,n=()=>(t===void 0&&(t=e()),t);return n.clear=()=>{t=void 0},n}var lr=()=>{let e;return{start(){e=performance.now()},cancel(){e=void 0},stop(){if(!e)return 0;let t=performance.now()-e;return e=void 0,t}}},xt=e=>e==="white"?"black":"white",Pe=(e,t)=>{let n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r},He=(e,t)=>e.role===t.role&&e.color===t.color,Me=e=>(t,n)=>[(n?t[0]:7-t[0])*e.width/8,(n?7-t[1]:t[1])*e.height/8],Z=(e,t)=>{e.style.transform=`translate(${t[0]}px,${t[1]}px)`},an=(e,t,n=1)=>{e.style.transform=`translate(${t[0]}px,${t[1]}px) scale(${n})`},Ve=(e,t)=>{e.style.visibility=t?"visible":"hidden"},ue=e=>{var t;if(e.clientX||e.clientX===0)return[e.clientX,e.clientY];if(!((t=e.targetTouches)===null||t===void 0)&&t[0])return[e.targetTouches[0].clientX,e.targetTouches[0].clientY]},St=e=>e.button===2,Q=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n};function Ct(e,t,n){let r=N(e);return t||(r[0]=7-r[0],r[1]=7-r[1]),[n.left+n.width*r[0]/8+n.width/16,n.top+n.height*(7-r[1])/8+n.height/16]}var te=class e{constructor(t){this.path=t;this.size=()=>this.path.length/2;this.head=()=>this.path.slice(0,2);this.tail=()=>new e(this.path.slice(2));this.init=()=>new e(this.path.slice(0,-2));this.last=()=>this.path.slice(-2);this.empty=()=>this.path=="";this.contains=t=>this.path.startsWith(t.path);this.isChildOf=t=>this.init()===t;this.append=t=>new e(this.path+t);this.equals=t=>this.path==t.path}static{this.root=new e("")}};var Pt=class{constructor(t,n,r,i){this.initial=t;this.moves=n;this.players=r;this.metadata=i;this.nodeAt=t=>ur(this.moves,t);this.dataAt=t=>{let n=this.nodeAt(t);return n?wo(n)?n.data:this.initial:void 0};this.title=()=>this.players.white.name?[this.players.white.title,this.players.white.name,"vs",this.players.black.title,this.players.black.name].filter(t=>t&&!!t.trim()).join("_").replace(" ","-"):"lichess-pgn-viewer";this.pathAtMainlinePly=t=>t==0?te.root:this.mainline[Math.max(0,Math.min(this.mainline.length-1,t=="last"?9999:t-1))]?.path||te.root;this.hasPlayerName=()=>!!(this.players.white?.name||this.players.black?.name);this.mainline=Array.from(this.moves.mainline())}},bo=(e,t)=>e.children.find(n=>n.data.path.last()==t),ur=(e,t)=>{if(t.empty())return e;let n=bo(e,t.head());return n?ur(n,t.tail()):void 0},wo=e=>"data"in e,Mt=e=>"uci"in e;var cn=class e{constructor(t,n,r){this.pos=t;this.path=n;this.clocks=r;this.clone=()=>new e(this.pos.clone(),this.path,{...this.clocks})}},ln=e=>{let t=e.map(ir),n=r=>r.reduce((i,o)=>typeof o==null?i:o,void 0);return{texts:t.map(r=>r.text).filter(r=>!!r),shapes:t.flatMap(r=>r.shapes),clock:n(t.map(r=>r.clock)),emt:n(t.map(r=>r.emt))}},hr=(e,t=!1)=>{let n=on(e)[0]||on("*")[0],r=rr(n.headers).unwrap(),i=ut(r.toSetup()),o=ln(n.comments||[]),s=new Map(Array.from(n.headers,([f,C])=>[f.toLowerCase(),C])),a=So(s,t),l={fen:i,turn:r.turn,check:r.isCheck(),pos:r.clone(),comments:o.texts,shapes:o.shapes,clocks:{white:a.timeControl?.initial||o.clock,black:a.timeControl?.initial||o.clock}},c=vo(r,n.moves,a),p=xo(s,a);return new Pt(l,c,p,a)},vo=(e,t,n)=>nr(t,new cn(e,te.root,{}),(r,i,o)=>{let s=Xn(r.pos,i.san);if(!s)return;let a=Gn(s),l=r.path.append(a),c=Qn(r.pos,s);r.path=l;let p=r.pos.toSetup(),f=ln(i.comments||[]),C=ln(i.startingComments||[]),k=[...f.shapes,...C.shapes],h=(p.fullmoves-1)*2+(r.pos.turn==="white"?0:1),d=r.clocks=yo(r.clocks,r.pos.turn,f.clock);return h<2&&n.timeControl&&(d={white:n.timeControl.initial,black:n.timeControl.initial,...d}),{path:l,ply:h,move:s,san:c,uci:zt(s),fen:ut(r.pos.toSetup()),turn:r.pos.turn,check:r.pos.isCheck(),comments:f.texts,startingComments:C.texts,nags:i.nags||[],shapes:k,clocks:d,emt:f.emt}}),yo=(e,t,n)=>t=="white"?{...e,black:n}:{...e,white:n};function xo(e,t){let n=(i,o)=>{let s=e.get(`${i}${o}`);return s=="?"||s==""?void 0:s},r=i=>{let o=n(i,"");return{name:o,title:n(i,"title"),rating:parseInt(n(i,"elo")||"")||void 0,isLichessUser:t.isLichess&&!!o?.match(/^[a-z0-9][a-z0-9_-]{0,28}[a-z0-9]$/i)}};return{white:r("white"),black:r("black")}}function So(e,t){let n=e.get("chapterurl")||e.get("gameurl")||e.get("source")||e.get("site"),r=e.get("timecontrol")?.split("+").map(s=>parseInt(s)),i=r&&r[0]?{initial:r[0],increment:r[1]||0}:void 0,o=e.get("orientation");return{externalLink:n&&n.match(/^https?:\/\//)?n:void 0,isLichess:!!(t&&n?.startsWith(t)),timeControl:i,orientation:o==="white"||o==="black"?o:void 0,result:e.get("result")}}var We=class{constructor(t,n){this.opts=t;this.redraw=n;this.flipped=!1;this.pane="board";this.autoScrollRequested=!1;this.curNode=()=>this.game.nodeAt(this.path)||this.game.moves;this.curData=()=>this.game.dataAt(this.path)||this.game.initial;this.goTo=(t,n=!0)=>{let r=t=="first"?te.root:t=="prev"?this.path.init():t=="next"?this.game.nodeAt(this.path)?.children[0]?.data.path:this.game.pathAtMainlinePly("last");this.toPath(r||this.path,n)};this.canGoTo=t=>t=="prev"||t=="first"?!this.path.empty():!!this.curNode().children[0];this.toPath=(t,n=!0)=>{this.path=t,this.pane="board",this.autoScrollRequested=!0,this.redrawGround(),this.redraw(),n&&this.focus()};this.focus=()=>this.div?.focus();this.toggleMenu=()=>{this.pane=this.pane=="board"?"menu":"board",this.redraw(),this.pane=="board"&&setTimeout(()=>this.menuButton?.focus(),0)};this.togglePgn=()=>{this.pane=this.pane=="pgn"?"board":"pgn",this.redraw()};this.orientation=()=>{let t=this.opts.orientation||"white";return this.flipped?M(t):t};this.flip=()=>{this.flipped=!this.flipped,this.pane="board",this.redrawGround(),this.redraw()};this.cgState=()=>{let t=this.curData(),n=Mt(t)?ar(t.uci):this.opts.chessground?.lastMove;return{fen:t.fen,orientation:this.orientation(),check:t.check,lastMove:n,turnColor:t.turn}};this.analysisUrl=()=>this.game.metadata.isLichess&&this.game.metadata.externalLink||`https://lichess.org/analysis/${this.curData().fen.replace(" ","_")}?color=${this.orientation()}`;this.practiceUrl=()=>`${this.analysisUrl()}#practice`;this.setGround=t=>{this.ground=t,this.redrawGround()};this.redrawGround=()=>this.withGround(t=>{t.set(this.cgState()),t.setShapes(this.curData().shapes.map(n=>({orig:j(n.from),dest:j(n.to),brush:n.color})))});this.withGround=t=>this.ground&&t(this.ground);this.game=hr(t.pgn,t.lichess),t.orientation=t.orientation||this.game.metadata.orientation,this.translate=sn(t.translate),this.path=this.game.pathAtMainlinePly(t.initialPly)}};var Te=(e,t)=>Math.abs(e-t),Co=e=>(t,n,r,i)=>Te(t,r)<2&&(e==="white"?i===n+1||n<=1&&i===n+2&&t===r:i===n-1||n>=6&&i===n-2&&t===r),un=(e,t,n,r)=>{let i=Te(e,n),o=Te(t,r);return i===1&&o===2||i===2&&o===1},dr=(e,t,n,r)=>Te(e,n)===Te(t,r),fr=(e,t,n,r)=>e===n||t===r,hn=(e,t,n,r)=>dr(e,t,n,r)||fr(e,t,n,r),Po=(e,t,n)=>(r,i,o,s)=>Te(r,o)<2&&Te(i,s)<2||n&&i===s&&i===(e==="white"?0:7)&&(r===4&&(o===2&&t.includes(0)||o===6&&t.includes(7))||t.includes(o));function Mo(e,t){let n=t==="white"?"1":"8",r=[];for(let[i,o]of e)i[1]===n&&o.color===t&&o.role==="rook"&&r.push(N(i)[0]);return r}function dn(e,t,n){let r=e.get(t);if(!r)return[];let i=N(t),o=r.role,s=o==="pawn"?Co(r.color):o==="knight"?un:o==="bishop"?dr:o==="rook"?fr:o==="queen"?hn:Po(r.color,Mo(e,r.color),n);return yt.filter(a=>(i[0]!==a[0]||i[1]!==a[1])&&s(i[0],i[1],a[0],a[1])).map(V)}function W(e,...t){e&&setTimeout(()=>e(...t),1)}function pr(e){e.orientation=xt(e.orientation),e.animation.current=e.draggable.current=e.selected=void 0}function mr(e,t){for(let[n,r]of t)r?e.pieces.set(n,r):e.pieces.delete(n)}function gr(e,t){if(e.check=void 0,t===!0&&(t=e.turnColor),t)for(let[n,r]of e.pieces)r.role==="king"&&r.color===t&&(e.check=n)}function Eo(e,t,n,r){re(e),e.premovable.current=[t,n],W(e.premovable.events.set,t,n,r)}function ne(e){e.premovable.current&&(e.premovable.current=void 0,W(e.premovable.events.unset))}function Ao(e,t,n){ne(e),e.predroppable.current={role:t,key:n},W(e.predroppable.events.set,t,n)}function re(e){let t=e.predroppable;t.current&&(t.current=void 0,W(t.events.unset))}function _o(e,t,n){if(!e.autoCastle)return!1;let r=e.pieces.get(t);if(!r||r.role!=="king")return!1;let i=N(t),o=N(n);if(i[1]!==0&&i[1]!==7||i[1]!==o[1])return!1;i[0]===4&&!e.pieces.has(n)&&(o[0]===6?n=V([7,o[1]]):o[0]===2&&(n=V([0,o[1]])));let s=e.pieces.get(n);return!s||s.color!==r.color||s.role!=="rook"?!1:(e.pieces.delete(t),e.pieces.delete(n),i[0]<o[0]?(e.pieces.set(V([6,o[1]]),r),e.pieces.set(V([5,o[1]]),s)):(e.pieces.set(V([2,o[1]]),r),e.pieces.set(V([3,o[1]]),s)),!0)}function fn(e,t,n){let r=e.pieces.get(t),i=e.pieces.get(n);if(t===n||!r)return!1;let o=i&&i.color!==r.color?i:void 0;return n===e.selected&&G(e),W(e.events.move,t,n,o),_o(e,t,n)||(e.pieces.set(n,r),e.pieces.delete(t)),e.lastMove=[t,n],e.check=void 0,W(e.events.change),o||!0}function Et(e,t,n,r){if(e.pieces.has(n))if(r)e.pieces.delete(n);else return!1;return W(e.events.dropNewPiece,t,n),e.pieces.set(n,t),e.lastMove=[n],e.check=void 0,W(e.events.change),e.movable.dests=void 0,e.turnColor=xt(e.turnColor),!0}function kr(e,t,n){let r=fn(e,t,n);return r&&(e.movable.dests=void 0,e.turnColor=xt(e.turnColor),e.animation.current=void 0),r}function pn(e,t,n){if(_t(e,t,n)){let r=kr(e,t,n);if(r){let i=e.hold.stop();G(e);let o={premove:!1,ctrlKey:e.stats.ctrlKey,holdTime:i};return r!==!0&&(o.captured=r),W(e.movable.events.after,t,n,o),!0}}else if(No(e,t,n))return Eo(e,t,n,{ctrlKey:e.stats.ctrlKey}),G(e),!0;return G(e),!1}function At(e,t,n,r){let i=e.pieces.get(t);i&&(To(e,t,n)||r)?(e.pieces.delete(t),Et(e,i,n,r),W(e.movable.events.afterNewPiece,i.role,n,{premove:!1,predrop:!1})):i&&Ro(e,t,n)?Ao(e,i.role,n):(ne(e),re(e)),e.pieces.delete(t),G(e)}function Ue(e,t,n){if(W(e.events.select,t),e.selected){if(e.selected===t&&!e.draggable.enabled){G(e),e.hold.cancel();return}else if((e.selectable.enabled||n)&&e.selected!==t&&pn(e,e.selected,t)){e.stats.dragged=!1;return}}(e.selectable.enabled||e.draggable.enabled)&&(br(e,t)||gn(e,t))&&(mn(e,t),e.hold.start())}function mn(e,t){e.selected=t,gn(e,t)?e.premovable.customDests||(e.premovable.dests=dn(e.pieces,t,e.premovable.castle)):e.premovable.dests=void 0}function G(e){e.selected=void 0,e.premovable.dests=void 0,e.hold.cancel()}function br(e,t){let n=e.pieces.get(t);return!!n&&(e.movable.color==="both"||e.movable.color===n.color&&e.turnColor===n.color)}var _t=(e,t,n)=>{var r,i;return t!==n&&br(e,t)&&(e.movable.free||!!(!((i=(r=e.movable.dests)===null||r===void 0?void 0:r.get(t))===null||i===void 0)&&i.includes(n)))};function To(e,t,n){let r=e.pieces.get(t);return!!r&&(t===n||!e.pieces.has(n))&&(e.movable.color==="both"||e.movable.color===r.color&&e.turnColor===r.color)}function gn(e,t){let n=e.pieces.get(t);return!!n&&e.premovable.enabled&&e.movable.color===n.color&&e.turnColor!==n.color}function No(e,t,n){var r,i;let o=(i=(r=e.premovable.customDests)===null||r===void 0?void 0:r.get(t))!==null&&i!==void 0?i:dn(e.pieces,t,e.premovable.castle);return t!==n&&gn(e,t)&&o.includes(n)}function Ro(e,t,n){let r=e.pieces.get(t),i=e.pieces.get(n);return!!r&&(!i||i.color!==e.movable.color)&&e.predroppable.enabled&&(r.role!=="pawn"||n[1]!=="1"&&n[1]!=="8")&&e.movable.color===r.color&&e.turnColor!==r.color}function wr(e,t){let n=e.pieces.get(t);return!!n&&e.draggable.enabled&&(e.movable.color==="both"||e.movable.color===n.color&&(e.turnColor===n.color||e.premovable.enabled))}function vr(e){let t=e.premovable.current;if(!t)return!1;let n=t[0],r=t[1],i=!1;if(_t(e,n,r)){let o=kr(e,n,r);if(o){let s={premove:!0};o!==!0&&(s.captured=o),W(e.movable.events.after,n,r,s),i=!0}}return ne(e),i}function yr(e,t){let n=e.predroppable.current,r=!1;if(!n)return!1;if(t(n)){let i={role:n.role,color:e.movable.color};Et(e,i,n.key)&&(W(e.movable.events.afterNewPiece,n.role,n.key,{premove:!1,predrop:!0}),r=!0)}return re(e),r}function je(e){ne(e),re(e),G(e)}function kn(e){e.movable.color=e.movable.dests=e.animation.current=void 0,je(e)}function ie(e,t,n){let r=Math.floor(8*(e[0]-n.left)/n.width);t||(r=7-r);let i=7-Math.floor(8*(e[1]-n.top)/n.height);return t||(i=7-i),r>=0&&r<8&&i>=0&&i<8?V([r,i]):void 0}function xr(e,t,n,r){let i=N(e),o=yt.filter(c=>hn(i[0],i[1],c[0],c[1])||un(i[0],i[1],c[0],c[1])),a=o.map(c=>Ct(V(c),n,r)).map(c=>Pe(t,c)),[,l]=a.reduce((c,p,f)=>c[0]<p?c:[p,f],[a[0],0]);return V(o[l])}var B=e=>e.orientation==="white";var wn="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",Oo={p:"pawn",r:"rook",n:"knight",b:"bishop",q:"queen",k:"king"},qo={pawn:"p",rook:"r",knight:"n",bishop:"b",queen:"q",king:"k"};function Le(e){e==="start"&&(e=wn);let t=new Map,n=7,r=0;for(let i of e)switch(i){case" ":case"[":return t;case"/":if(--n,n<0)return t;r=0;break;case"~":{let o=t.get(V([r-1,n]));o&&(o.promoted=!0);break}default:{let o=i.charCodeAt(0);if(o<57)r+=o-48;else{let s=i.toLowerCase();t.set(V([r,n]),{role:Oo[s],color:i===s?"black":"white"}),++r}}}return t}function Sr(e){return wt.map(t=>le.map(n=>{let r=e.get(n+t);if(r){let i=qo[r.role];return r.color==="white"&&(i=i.toUpperCase()),r.promoted&&(i+="~"),i}else return"1"}).join("")).join("/").replace(/1{2,}/g,t=>t.length.toString())}function vn(e,t){t.animation&&(yn(e.animation,t.animation),(e.animation.duration||0)<70&&(e.animation.enabled=!1))}function Tt(e,t){var n,r,i;if(!((n=t.movable)===null||n===void 0)&&n.dests&&(e.movable.dests=void 0),!((r=t.drawable)===null||r===void 0)&&r.autoShapes&&(e.drawable.autoShapes=[]),yn(e,t),t.fen&&(e.pieces=Le(t.fen),e.drawable.shapes=((i=t.drawable)===null||i===void 0?void 0:i.shapes)||[]),"check"in t&&gr(e,t.check||!1),"lastMove"in t&&!t.lastMove?e.lastMove=void 0:t.lastMove&&(e.lastMove=t.lastMove),e.selected&&mn(e,e.selected),vn(e,t),!e.movable.rookCastle&&e.movable.dests){let o=e.movable.color==="white"?"1":"8",s="e"+o,a=e.movable.dests.get(s),l=e.pieces.get(s);if(!a||!l||l.role!=="king")return;e.movable.dests.set(s,a.filter(c=>!(c==="a"+o&&a.includes("c"+o))&&!(c==="h"+o&&a.includes("g"+o))))}}function yn(e,t){for(let n in t)n==="__proto__"||n==="constructor"||!Object.prototype.hasOwnProperty.call(t,n)||(Object.prototype.hasOwnProperty.call(e,n)&&Cr(e[n])&&Cr(t[n])?yn(e[n],t[n]):e[n]=t[n])}function Cr(e){if(typeof e!="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var pe=(e,t)=>t.animation.enabled?Io(e,t):me(e,t);function me(e,t){let n=e(t);return t.dom.redraw(),n}var xn=(e,t)=>({key:e,pos:N(e),piece:t}),Lo=(e,t)=>t.sort((n,r)=>Pe(e.pos,n.pos)-Pe(e.pos,r.pos))[0];function Bo(e,t){let n=new Map,r=[],i=new Map,o=[],s=[],a=new Map,l,c,p;for(let[f,C]of e)a.set(f,xn(f,C));for(let f of vt)l=t.pieces.get(f),c=a.get(f),l?c?He(l,c.piece)||(o.push(c),s.push(xn(f,l))):s.push(xn(f,l)):c&&o.push(c);for(let f of s)c=Lo(f,o.filter(C=>He(f.piece,C.piece))),c&&(p=[c.pos[0]-f.pos[0],c.pos[1]-f.pos[1]],n.set(f.key,p.concat(p)),r.push(c.key));for(let f of o)r.includes(f.key)||i.set(f.key,f.piece);return{anims:n,fadings:i}}function Pr(e,t){let n=e.animation.current;if(n===void 0){e.dom.destroyed||e.dom.redrawNow();return}let r=1-(t-n.start)*n.frequency;if(r<=0)e.animation.current=void 0,e.dom.redrawNow();else{let i=Ko(r);for(let o of n.plan.anims.values())o[2]=o[0]*i,o[3]=o[1]*i;e.dom.redrawNow(!0),requestAnimationFrame((o=performance.now())=>Pr(e,o))}}function Io(e,t){let n=new Map(t.pieces),r=e(t),i=Bo(n,t);if(i.anims.size||i.fadings.size){let o=t.animation.current&&t.animation.current.start;t.animation.current={start:performance.now(),frequency:1/t.animation.duration,plan:i},o||Pr(t,performance.now())}else t.dom.redraw();return r}var Ko=e=>e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1;var $o=["green","red","blue","yellow"];function Mr(e,t){if(t.touches&&t.touches.length>1)return;t.stopPropagation(),t.preventDefault(),t.ctrlKey?G(e):je(e);let n=ue(t),r=ie(n,B(e),e.dom.bounds());r&&(e.drawable.current={orig:r,pos:n,brush:zo(t),snapToValidMove:e.drawable.defaultSnapToValidMove},Er(e))}function Er(e){requestAnimationFrame(()=>{let t=e.drawable.current;if(t){let n=ie(t.pos,B(e),e.dom.bounds());n||(t.snapToValidMove=!1);let r=t.snapToValidMove?xr(t.orig,t.pos,B(e),e.dom.bounds()):n;r!==t.mouseSq&&(t.mouseSq=r,t.dest=r!==t.orig?r:void 0,e.dom.redrawNow()),Er(e)}})}function Ar(e,t){e.drawable.current&&(e.drawable.current.pos=ue(t))}function _r(e){let t=e.drawable.current;t&&(t.mouseSq&&Fo(e.drawable,t),Sn(e))}function Sn(e){e.drawable.current&&(e.drawable.current=void 0,e.dom.redraw())}function Tr(e){e.drawable.shapes.length&&(e.drawable.shapes=[],e.dom.redraw(),Nr(e.drawable))}function zo(e){var t;let n=(e.shiftKey||e.ctrlKey)&&St(e),r=e.altKey||e.metaKey||((t=e.getModifierState)===null||t===void 0?void 0:t.call(e,"AltGraph"));return $o[(n?1:0)+(r?2:0)]}function Fo(e,t){let n=i=>i.orig===t.orig&&i.dest===t.dest,r=e.shapes.find(n);r&&(e.shapes=e.shapes.filter(i=>!n(i))),(!r||r.brush!==t.brush)&&e.shapes.push({orig:t.orig,dest:t.dest,brush:t.brush}),Nr(e)}function Nr(e){e.onChange&&e.onChange(e.shapes)}function Rr(e,t){if(!(e.trustAllEvents||t.isTrusted)||t.buttons!==void 0&&t.buttons>1||t.touches&&t.touches.length>1)return;let n=e.dom.bounds(),r=ue(t),i=ie(r,B(e),n);if(!i)return;let o=e.pieces.get(i),s=e.selected;if(!s&&e.drawable.enabled&&(e.drawable.eraseOnClick||!o||o.color!==e.turnColor)&&Tr(e),t.cancelable!==!1&&(!t.touches||e.blockTouchScroll||o||s||Vo(e,r)))t.preventDefault();else if(t.touches)return;let a=!!e.premovable.current,l=!!e.predroppable.current;e.stats.ctrlKey=t.ctrlKey,e.selected&&_t(e,e.selected,i)?pe(f=>Ue(f,i),e):Ue(e,i);let c=e.selected===i,p=Br(e,i);if(o&&p&&c&&wr(e,i)){e.draggable.current={orig:i,piece:o,origPos:r,pos:r,started:e.draggable.autoDistance&&e.stats.dragged,element:p,previouslySelected:s,originTarget:t.target,keyHasChanged:!1},p.cgDragging=!0,p.classList.add("dragging");let f=e.dom.elements.ghost;f&&(f.className=`ghost ${o.color} ${o.role}`,Z(f,Me(n)(N(i),B(e))),Ve(f,!0)),Cn(e)}else a&&ne(e),l&&re(e);e.dom.redraw()}function Vo(e,t){let n=B(e),r=e.dom.bounds(),i=Math.pow(r.width/8,2);for(let o of e.pieces.keys()){let s=Ct(o,n,r);if(Pe(s,t)<=i)return!0}return!1}function Or(e,t,n,r){e.pieces.set("a0",t),e.dom.redraw();let o=ue(n);e.draggable.current={orig:"a0",piece:t,origPos:o,pos:o,started:!0,element:()=>Br(e,"a0"),originTarget:n.target,newPiece:!0,force:!!r,keyHasChanged:!1},Cn(e)}function Cn(e){requestAnimationFrame(()=>{var t;let n=e.draggable.current;if(!n)return;!((t=e.animation.current)===null||t===void 0)&&t.plan.anims.has(n.orig)&&(e.animation.current=void 0);let r=e.pieces.get(n.orig);if(!r||!He(r,n.piece))Ne(e);else if(!n.started&&Pe(n.pos,n.origPos)>=Math.pow(e.draggable.distance,2)&&(n.started=!0),n.started){if(typeof n.element=="function"){let o=n.element();if(!o)return;o.cgDragging=!0,o.classList.add("dragging"),n.element=o}let i=e.dom.bounds();Z(n.element,[n.pos[0]-i.left-i.width/16,n.pos[1]-i.top-i.height/16]),n.keyHasChanged||(n.keyHasChanged=n.orig!==ie(n.pos,B(e),i))}Cn(e)})}function qr(e,t){e.draggable.current&&(!t.touches||t.touches.length<2)&&(e.draggable.current.pos=ue(t))}function Dr(e,t){let n=e.draggable.current;if(!n)return;if(t.type==="touchend"&&t.cancelable!==!1&&t.preventDefault(),t.type==="touchend"&&n.originTarget!==t.target&&!n.newPiece){e.draggable.current=void 0;return}ne(e),re(e);let r=ue(t)||n.pos,i=ie(r,B(e),e.dom.bounds());i&&n.started&&n.orig!==i?n.newPiece?At(e,n.orig,i,n.force):(e.stats.ctrlKey=t.ctrlKey,pn(e,n.orig,i)&&(e.stats.dragged=!0)):n.newPiece?e.pieces.delete(n.orig):e.draggable.deleteOnDropOff&&!i&&(e.pieces.delete(n.orig),W(e.events.change)),(n.orig===n.previouslySelected||n.keyHasChanged)&&(n.orig===i||!i)?G(e):e.selectable.enabled||G(e),Lr(e),e.draggable.current=void 0,e.dom.redraw()}function Ne(e){let t=e.draggable.current;t&&(t.newPiece&&e.pieces.delete(t.orig),e.draggable.current=void 0,G(e),Lr(e),e.dom.redraw())}function Lr(e){let t=e.dom.elements;t.ghost&&Ve(t.ghost,!1)}function Br(e,t){let n=e.dom.elements.board.firstChild;for(;n;){if(n.cgKey===t&&n.tagName==="PIECE")return n;n=n.nextSibling}}function Kr(e,t){e.exploding={stage:1,keys:t},e.dom.redraw(),setTimeout(()=>{Ir(e,2),setTimeout(()=>Ir(e,void 0),120)},120)}function Ir(e,t){e.exploding&&(t?e.exploding.stage=t:e.exploding=void 0,e.dom.redraw())}function $r(e,t){function n(){pr(e),t()}return{set(r){r.orientation&&r.orientation!==e.orientation&&n(),vn(e,r),(r.fen?pe:me)(i=>Tt(i,r),e)},state:e,getFen:()=>Sr(e.pieces),toggleOrientation:n,setPieces(r){pe(i=>mr(i,r),e)},selectSquare(r,i){r?pe(o=>Ue(o,r,i),e):e.selected&&(G(e),e.dom.redraw())},move(r,i){pe(o=>fn(o,r,i),e)},newPiece(r,i){pe(o=>Et(o,r,i),e)},playPremove(){if(e.premovable.current){if(pe(vr,e))return!0;e.dom.redraw()}return!1},playPredrop(r){if(e.predroppable.current){let i=yr(e,r);return e.dom.redraw(),i}return!1},cancelPremove(){me(ne,e)},cancelPredrop(){me(re,e)},cancelMove(){me(r=>{je(r),Ne(r)},e)},stop(){me(r=>{kn(r),Ne(r)},e)},explode(r){Kr(e,r)},setAutoShapes(r){me(i=>i.drawable.autoShapes=r,e)},setShapes(r){me(i=>i.drawable.shapes=r,e)},getKeyAtDomPos(r){return ie(r,B(e),e.dom.bounds())},redrawAll:t,dragNewPiece(r,i,o){Or(e,r,i,o)},destroy(){kn(e),e.dom.unbind&&e.dom.unbind(),e.dom.destroyed=!0}}}function zr(){return{pieces:Le(wn),orientation:"white",turnColor:"white",coordinates:!0,coordinatesOnSquares:!1,ranksPosition:"right",autoCastle:!0,viewOnly:!1,disableContextMenu:!1,addPieceZIndex:!1,blockTouchScroll:!1,pieceKey:!1,trustAllEvents:!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},purple:{key:"purple",color:"#68217a",opacity:.65,lineWidth:10},pink:{key:"pink",color:"#ee2080",opacity:.5,lineWidth:10},white:{key:"white",color:"white",opacity:1,lineWidth:10}},prevSvgHash:""},hold:lr()}}var Fr={hilitePrimary:{key:"hilitePrimary",color:"#3291ff",opacity:1,lineWidth:1},hiliteWhite:{key:"hiliteWhite",color:"#ffffff",opacity:1,lineWidth:1}};function Gr(){let e=I("defs"),t=F(I("filter"),{id:"cg-filter-blur"});return t.appendChild(F(I("feGaussianBlur"),{stdDeviation:"0.019"})),e.appendChild(t),e}function Wr(e,t,n){var r;let i=e.drawable,o=i.current,s=o&&o.mouseSq?o:void 0,a=new Map,l=e.dom.bounds(),c=i.autoShapes.filter(k=>!k.piece);for(let k of i.shapes.concat(c).concat(s?[s]:[])){if(!k.dest)continue;let h=(r=a.get(k.dest))!==null&&r!==void 0?r:new Set,d=Ot(Rt(N(k.orig),e.orientation),l),w=Ot(Rt(N(k.dest),e.orientation),l);h.add(Mn(d,w)),a.set(k.dest,h)}let p=i.shapes.concat(c).map(k=>({shape:k,current:!1,hash:Hr(k,Pn(k.dest,a),!1,l)}));s&&p.push({shape:s,current:!0,hash:Hr(s,Pn(s.dest,a),!0,l)});let f=p.map(k=>k.hash).join(";");if(f===e.drawable.prevSvgHash)return;e.drawable.prevSvgHash=f;let C=t.querySelector("defs");Wo(i,p,C),Uo(p,t.querySelector("g"),n.querySelector("g"),k=>Zo(e,k,i.brushes,a,l))}function Wo(e,t,n){var r;let i=new Map,o;for(let l of t.filter(c=>c.shape.dest&&c.shape.brush))o=Ur(e.brushes[l.shape.brush],l.shape.modifiers),!((r=l.shape.modifiers)===null||r===void 0)&&r.hilite&&i.set(Nt(o).key,Nt(o)),i.set(o.key,o);let s=new Set,a=n.firstElementChild;for(;a;)s.add(a.getAttribute("cgKey")),a=a.nextElementSibling;for(let[l,c]of i.entries())s.has(l)||n.appendChild(Jo(c))}function Uo(e,t,n,r){let i=new Map;for(let o of e)i.set(o.hash,!1);for(let o of[t,n]){let s=[],a=o.firstElementChild,l;for(;a;)l=a.getAttribute("cgHash"),i.has(l)?i.set(l,!0):s.push(a),a=a.nextElementSibling;for(let c of s)o.removeChild(c)}for(let o of e.filter(s=>!i.get(s.hash)))for(let s of r(o))s.isCustom?n.appendChild(s.el):t.appendChild(s.el)}function Hr({orig:e,dest:t,brush:n,piece:r,modifiers:i,customSvg:o,label:s},a,l,c){var p,f;return[c.width,c.height,l,e,t,n,a&&"-",r&&jo(r),i&&Yo(i),o&&`custom-${Vr(o.html)},${(f=(p=o.center)===null||p===void 0?void 0:p[0])!==null&&f!==void 0?f:"o"}`,s&&`label-${Vr(s.text)}`].filter(C=>C).join(",")}function jo(e){return[e.color,e.role,e.scale].filter(t=>t).join(",")}function Yo(e){return[e.lineWidth,e.hilite&&"*"].filter(t=>t).join(",")}function Vr(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)>>>0;return t.toString()}function Zo(e,{shape:t,current:n,hash:r},i,o,s){var a,l;let c=Ot(Rt(N(t.orig),e.orientation),s),p=t.dest?Ot(Rt(N(t.dest),e.orientation),s):c,f=t.brush&&Ur(i[t.brush],t.modifiers),C=o.get(t.dest),k=[];if(f){let h=F(I("g"),{cgHash:r});k.push({el:h}),c[0]!==p[0]||c[1]!==p[1]?h.appendChild(Xo(t,f,c,p,n,Pn(t.dest,o))):h.appendChild(Qo(i[t.brush],c,n,s))}if(t.label){let h=t.label;(a=h.fill)!==null&&a!==void 0||(h.fill=t.brush&&i[t.brush].color);let d=t.brush?void 0:"tr";k.push({el:es(h,r,c,p,C,d),isCustom:!0})}if(t.customSvg){let h=(l=t.customSvg.center)!==null&&l!==void 0?l:"orig",[d,w]=h==="label"?Yr(c,p,C).map(y=>y-.5):h==="dest"?p:c,b=F(I("g"),{transform:`translate(${d},${w})`,cgHash:r});b.innerHTML=`<svg width="1" height="1" viewBox="0 0 100 100">${t.customSvg.html}</svg>`,k.push({el:b,isCustom:!0})}return k}function Qo(e,t,n,r){let i=ts(),o=(r.width+r.height)/(4*Math.max(r.width,r.height));return F(I("circle"),{stroke:e.color,"stroke-width":i[n?0:1],fill:"none",opacity:jr(e,n),cx:t[0],cy:t[1],r:o-i[1]/2})}function Nt(e){return["#ffffff","#fff","white"].includes(e.color)?Fr.hilitePrimary:Fr.hiliteWhite}function Xo(e,t,n,r,i,o){var s;function a(p){var f;let C=rs(o&&!i),k=r[0]-n[0],h=r[1]-n[1],d=Math.atan2(h,k),w=Math.cos(d)*C,b=Math.sin(d)*C;return F(I("line"),{stroke:p?Nt(t).color:t.color,"stroke-width":ns(t,i)+(p?.04:0),"stroke-linecap":"round","marker-end":`url(#arrowhead-${p?Nt(t).key:t.key})`,opacity:!((f=e.modifiers)===null||f===void 0)&&f.hilite?1:jr(t,i),x1:n[0],y1:n[1],x2:r[0]-w,y2:r[1]-b})}if(!(!((s=e.modifiers)===null||s===void 0)&&s.hilite))return a(!1);let l=I("g"),c=F(I("g"),{filter:"url(#cg-filter-blur)"});return c.appendChild(is(n,r)),c.appendChild(a(!0)),l.appendChild(c),l.appendChild(a(!1)),l}function Jo(e){let t=F(I("marker"),{id:"arrowhead-"+e.key,orient:"auto",overflow:"visible",markerWidth:4,markerHeight:4,refX:e.key.startsWith("hilite")?1.86:2.05,refY:2});return t.appendChild(F(I("path"),{d:"M0,0 V4 L3,2 Z",fill:e.color})),t.setAttribute("cgKey",e.key),t}function es(e,t,n,r,i,o){var s;let l=.4*.75**e.text.length,c=Yr(n,r,i),p=o==="tr"?.4:0,f=F(I("g"),{transform:`translate(${c[0]+p},${c[1]-p})`,cgHash:t});f.appendChild(F(I("circle"),{r:.4/2,"fill-opacity":o?1:.8,"stroke-opacity":o?1:.7,"stroke-width":.03,fill:(s=e.fill)!==null&&s!==void 0?s:"#666",stroke:"white"}));let C=F(I("text"),{"font-size":l,"font-family":"Noto Sans","text-anchor":"middle",fill:"white",y:.13*.75**e.text.length});return C.innerHTML=e.text,f.appendChild(C),f}function Rt(e,t){return t==="white"?e:[7-e[0],7-e[1]]}function Pn(e,t){return(e&&t.has(e)&&t.get(e).size>1)===!0}function I(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function F(e,t){for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.setAttribute(n,t[n]);return e}function Ur(e,t){return t?{color:e.color,opacity:Math.round(e.opacity*10)/10,lineWidth:Math.round(t.lineWidth||e.lineWidth),key:[e.key,t.lineWidth].filter(n=>n).join("")}:e}function ts(){return[3/64,4/64]}function ns(e,t){return(e.lineWidth||10)*(t?.85:1)/64}function jr(e,t){return(e.opacity||1)*(t?.9:1)}function rs(e){return(e?20:10)/64}function Ot(e,t){let n=Math.min(1,t.width/t.height),r=Math.min(1,t.height/t.width);return[(e[0]-3.5)*n,(3.5-e[1])*r]}function is(e,t){let n={from:[Math.floor(Math.min(e[0],t[0])),Math.floor(Math.min(e[1],t[1]))],to:[Math.ceil(Math.max(e[0],t[0])),Math.ceil(Math.max(e[1],t[1]))]};return F(I("rect"),{x:n.from[0],y:n.from[1],width:n.to[0]-n.from[0],height:n.to[1]-n.from[1],fill:"none",stroke:"none"})}function Mn(e,t,n=!0){let r=Math.atan2(t[1]-e[1],t[0]-e[0])+Math.PI;return n?(Math.round(r*8/Math.PI)+16)%16:r}function os(e,t){return Math.sqrt([e[0]-t[0],e[1]-t[1]].reduce((n,r)=>n+r*r,0))}function Yr(e,t,n){let r=os(e,t),i=Mn(e,t,!1);if(n&&(r-=33/64,n.size>1)){r-=10/64;let o=Mn(e,t);(n.has((o+1)%16)||n.has((o+15)%16))&&o&1&&(r-=.4)}return[e[0]-Math.cos(i)*r,e[1]-Math.sin(i)*r].map(o=>o+.5)}function Zr(e,t){e.innerHTML="",e.classList.add("cg-wrap");for(let l of or)e.classList.toggle("orientation-"+l,t.orientation===l);e.classList.toggle("manipulable",!t.viewOnly);let n=Q("cg-container");e.appendChild(n);let r=Q("cg-board");n.appendChild(r);let i,o,s;if(t.drawable.visible&&(i=F(I("svg"),{class:"cg-shapes",viewBox:"-4 -4 8 8",preserveAspectRatio:"xMidYMid slice"}),i.appendChild(Gr()),i.appendChild(I("g")),o=F(I("svg"),{class:"cg-custom-svgs",viewBox:"-3.5 -3.5 8 8",preserveAspectRatio:"xMidYMid slice"}),o.appendChild(I("g")),s=Q("cg-auto-pieces"),n.appendChild(i),n.appendChild(o),n.appendChild(s)),t.coordinates){let l=t.orientation==="black"?" black":"",c=t.ranksPosition==="left"?" left":"";if(t.coordinatesOnSquares){let p=t.orientation==="white"?f=>f+1:f=>8-f;le.forEach((f,C)=>n.appendChild(En(Ce.map(k=>f+k),"squares rank"+p(C)+l+c)))}else n.appendChild(En(Ce,"ranks"+l+c)),n.appendChild(En(le,"files"+l))}let a;return t.draggable.enabled&&t.draggable.showGhost&&(a=Q("piece","ghost"),Ve(a,!1),n.appendChild(a)),{board:r,container:n,wrap:e,ghost:a,svg:i,customSvg:o,autoPieces:s}}function En(e,t){let n=Q("coords",t),r;for(let i of e)r=Q("coord"),r.textContent=i,n.appendChild(r);return n}function Qr(e,t){if(!e.dropmode.active)return;ne(e),re(e);let n=e.dropmode.piece;if(n){e.pieces.set("a0",n);let r=ue(t),i=r&&ie(r,B(e),e.dom.bounds());i&&At(e,"a0",i)}e.dom.redraw()}function Jr(e,t){let n=e.dom.elements.board;if("ResizeObserver"in window&&new ResizeObserver(t).observe(e.dom.elements.wrap),(e.disableContextMenu||e.drawable.enabled)&&n.addEventListener("contextmenu",i=>i.preventDefault()),e.viewOnly)return;let r=as(e);n.addEventListener("touchstart",r,{passive:!1}),n.addEventListener("mousedown",r,{passive:!1})}function ei(e,t){let n=[];if("ResizeObserver"in window||n.push(Ye(document.body,"chessground.resize",t)),!e.viewOnly){let r=Xr(e,qr,Ar),i=Xr(e,Dr,_r);for(let s of["touchmove","mousemove"])n.push(Ye(document,s,r));for(let s of["touchend","mouseup"])n.push(Ye(document,s,i));let o=()=>e.dom.bounds.clear();n.push(Ye(document,"scroll",o,{capture:!0,passive:!0})),n.push(Ye(window,"resize",o,{passive:!0}))}return()=>n.forEach(r=>r())}function Ye(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}var as=e=>t=>{e.draggable.current?Ne(e):e.drawable.current?Sn(e):t.shiftKey||St(t)?e.drawable.enabled&&Mr(e,t):e.viewOnly||(e.dropmode.active?Qr(e,t):Rr(e,t))},Xr=(e,t,n)=>r=>{e.drawable.current?e.drawable.enabled&&n(e,r):e.viewOnly||t(e,r)};function ni(e){let t=B(e),n=Me(e.dom.bounds()),r=e.dom.elements.board,i=e.pieces,o=e.animation.current,s=o?o.plan.anims:new Map,a=o?o.plan.fadings:new Map,l=e.draggable.current,c=ls(e),p=new Set,f=new Set,C=new Map,k=new Map,h,d,w,b,y,E,x,P,A,_;for(d=r.firstChild;d;){if(h=d.cgKey,ii(d))if(w=i.get(h),y=s.get(h),E=a.get(h),b=d.cgPiece,d.cgDragging&&(!l||l.orig!==h)&&(d.classList.remove("dragging"),Z(d,n(N(h),t)),d.cgDragging=!1),!E&&d.cgFading&&(d.cgFading=!1,d.classList.remove("fading")),w){if(y&&d.cgAnimating&&b===Ze(w)){let v=N(h);v[0]+=y[2],v[1]+=y[3],d.classList.add("anim"),Z(d,n(v,t))}else d.cgAnimating&&(d.cgAnimating=!1,d.classList.remove("anim"),Z(d,n(N(h),t)),e.addPieceZIndex&&(d.style.zIndex=An(N(h),t)));b===Ze(w)&&(!E||!d.cgFading)?p.add(h):E&&b===Ze(E)?(d.classList.add("fading"),d.cgFading=!0):_n(C,b,d)}else _n(C,b,d);else if(oi(d)){let v=d.className;c.get(h)===v?f.add(h):_n(k,v,d)}d=d.nextSibling}for(let[v,R]of c)if(!f.has(v)){A=k.get(R),_=A&&A.pop();let O=n(N(v),t);if(_)_.cgKey=v,Z(_,O);else{let T=Q("square",R);T.cgKey=v,Z(T,O),r.insertBefore(T,r.firstChild)}}for(let[v,R]of i)if(y=s.get(v),!p.has(v))if(x=C.get(Ze(R)),P=x&&x.pop(),P){P.cgKey=v,P.cgFading&&(P.classList.remove("fading"),P.cgFading=!1);let O=N(v);e.addPieceZIndex&&(P.style.zIndex=An(O,t)),y&&(P.cgAnimating=!0,P.classList.add("anim"),O[0]+=y[2],O[1]+=y[3]),Z(P,n(O,t))}else{let O=Ze(R),T=Q("piece",O),K=N(v);T.cgPiece=O,T.cgKey=v,y&&(T.cgAnimating=!0,K[0]+=y[2],K[1]+=y[3]),Z(T,n(K,t)),e.addPieceZIndex&&(T.style.zIndex=An(K,t)),r.appendChild(T)}for(let v of C.values())ti(e,v);for(let v of k.values())ti(e,v)}function ri(e){let t=B(e),n=Me(e.dom.bounds()),r=e.dom.elements.board.firstChild;for(;r;)(ii(r)&&!r.cgAnimating||oi(r))&&Z(r,n(N(r.cgKey),t)),r=r.nextSibling}function Tn(e){var t,n;let r=e.dom.elements.wrap.getBoundingClientRect(),i=e.dom.elements.container,o=r.height/r.width,s=Math.floor(r.width*window.devicePixelRatio/8)*8/window.devicePixelRatio,a=s*o;i.style.width=s+"px",i.style.height=a+"px",e.dom.bounds.clear(),(t=e.addDimensionsCssVarsTo)===null||t===void 0||t.style.setProperty("---cg-width",s+"px"),(n=e.addDimensionsCssVarsTo)===null||n===void 0||n.style.setProperty("---cg-height",a+"px")}var ii=e=>e.tagName==="PIECE",oi=e=>e.tagName==="SQUARE";function ti(e,t){for(let n of t)e.dom.elements.board.removeChild(n)}function An(e,t){let r=e[1];return`${t?10-r:3+r}`}var Ze=e=>`${e.color} ${e.role}`;function ls(e){var t,n,r;let i=new Map;if(e.lastMove&&e.highlight.lastMove)for(let a of e.lastMove)ge(i,a,"last-move");if(e.check&&e.highlight.check&&ge(i,e.check,"check"),e.selected&&(ge(i,e.selected,"selected"),e.movable.showDests)){let a=(t=e.movable.dests)===null||t===void 0?void 0:t.get(e.selected);if(a)for(let c of a)ge(i,c,"move-dest"+(e.pieces.has(c)?" oc":""));let l=(r=(n=e.premovable.customDests)===null||n===void 0?void 0:n.get(e.selected))!==null&&r!==void 0?r:e.premovable.dests;if(l)for(let c of l)ge(i,c,"premove-dest"+(e.pieces.has(c)?" oc":""))}let o=e.premovable.current;if(o)for(let a of o)ge(i,a,"current-premove");else e.predroppable.current&&ge(i,e.predroppable.current.key,"current-premove");let s=e.exploding;if(s)for(let a of s.keys)ge(i,a,"exploding"+s.stage);return e.highlight.custom&&e.highlight.custom.forEach((a,l)=>{ge(i,l,a)}),i}function ge(e,t,n){let r=e.get(t);r?e.set(t,`${r} ${n}`):e.set(t,n)}function _n(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function si(e,t,n){let r=new Map,i=[];for(let a of e)r.set(a.hash,!1);let o=t.firstElementChild,s;for(;o;)s=o.getAttribute("cgHash"),r.has(s)?r.set(s,!0):i.push(o),o=o.nextElementSibling;for(let a of i)t.removeChild(a);for(let a of e)r.get(a.hash)||t.appendChild(n(a))}function ai(e,t){let r=e.drawable.autoShapes.filter(i=>i.piece).map(i=>({shape:i,hash:hs(i),current:!1}));si(r,t,i=>us(e,i,e.dom.bounds()))}function ci(e){var t;let n=B(e),r=Me(e.dom.bounds()),i=(t=e.dom.elements.autoPieces)===null||t===void 0?void 0:t.firstChild;for(;i;)an(i,r(N(i.cgKey),n),i.cgScale),i=i.nextSibling}function us(e,{shape:t,hash:n},r){var i,o,s;let a=t.orig,l=(i=t.piece)===null||i===void 0?void 0:i.role,c=(o=t.piece)===null||o===void 0?void 0:o.color,p=(s=t.piece)===null||s===void 0?void 0:s.scale,f=Q("piece",`${l} ${c}`);return f.setAttribute("cgHash",n),f.cgKey=a,f.cgScale=p,an(f,Me(r)(N(a),B(e)),p),f}var hs=e=>{var t,n,r;return[e.orig,(t=e.piece)===null||t===void 0?void 0:t.role,(n=e.piece)===null||n===void 0?void 0:n.color,(r=e.piece)===null||r===void 0?void 0:r.scale].join(",")};function li(e,t){let n=zr();Tt(n,t||{});function r(){let i="dom"in n?n.dom.unbind:void 0,o=Zr(e,n),s=cr(()=>o.board.getBoundingClientRect()),a=p=>{ni(c),o.autoPieces&&ai(c,o.autoPieces),!p&&o.svg&&Wr(c,o.svg,o.customSvg)},l=()=>{Tn(c),ri(c),o.autoPieces&&ci(c)},c=n;return c.dom={elements:o,bounds:s,redraw:fs(a),redrawNow:a,unbind:i},c.drawable.prevSvgHash="",Tn(c),a(!1),Jr(c,l),i||(c.dom.unbind=ei(c,l)),c.events.insert&&c.events.insert(o),c}return $r(r(),r)}function fs(e){let t=!1;return()=>{t||(t=!0,requestAnimationFrame(()=>{e(),t=!1}))}}function ps(e,t){return document.createElement(e,t)}function ms(e,t,n){return document.createElementNS(e,t,n)}function gs(){return Re(document.createDocumentFragment())}function ks(e){return document.createTextNode(e)}function bs(e){return document.createComment(e)}function ws(e,t,n){if(ke(e)){let r=e;for(;r&&ke(r);)r=Re(r).parent;e=r??e}ke(t)&&(t=Re(t,e)),n&&ke(n)&&(n=Re(n).firstChildNode),e.insertBefore(t,n)}function vs(e,t){e.removeChild(t)}function ys(e,t){ke(t)&&(t=Re(t,e)),e.appendChild(t)}function ui(e){if(ke(e)){for(;e&&ke(e);)e=Re(e).parent;return e??null}return e.parentNode}function xs(e){var t;if(ke(e)){let n=Re(e),r=ui(n);if(r&&n.lastChildNode){let i=Array.from(r.childNodes),o=i.indexOf(n.lastChildNode);return(t=i[o+1])!==null&&t!==void 0?t:null}return null}return e.nextSibling}function Ss(e){return e.tagName}function Cs(e,t){e.textContent=t}function Ps(e){return e.textContent}function Ms(e){return e.nodeType===1}function Es(e){return e.nodeType===3}function As(e){return e.nodeType===8}function ke(e){return e.nodeType===11}function Re(e,t){var n,r,i;let o=e;return(n=o.parent)!==null&&n!==void 0||(o.parent=t??null),(r=o.firstChildNode)!==null&&r!==void 0||(o.firstChildNode=e.firstChild),(i=o.lastChildNode)!==null&&i!==void 0||(o.lastChildNode=e.lastChild),o}var hi={createElement:ps,createElementNS:ms,createTextNode:ks,createDocumentFragment:gs,createComment:bs,insertBefore:ws,removeChild:vs,appendChild:ys,parentNode:ui,nextSibling:xs,tagName:Ss,setTextContent:Cs,getTextContent:Ps,isElement:Ms,isText:Es,isComment:As,isDocumentFragment:ke};function Oe(e,t,n,r,i){let o=t===void 0?void 0:t.key;return{sel:e,data:t,children:n,text:r,elm:i,key:o}}var Qe=Array.isArray;function Be(e){return typeof e=="string"||typeof e=="number"||e instanceof String||e instanceof Number}function Nn(e){return e===void 0}function Y(e){return e!==void 0}var Rn=Oe("",{},[],void 0,void 0);function Xe(e,t){var n,r;let i=e.key===t.key,o=((n=e.data)===null||n===void 0?void 0:n.is)===((r=t.data)===null||r===void 0?void 0:r.is),s=e.sel===t.sel,a=!e.sel&&e.sel===t.sel?typeof e.text==typeof t.text:!0;return s&&i&&o&&a}function _s(){throw new Error("The document fragment is not supported on this platform.")}function Ts(e,t){return e.isElement(t)}function Ns(e,t){return e.isDocumentFragment(t)}function Rs(e,t,n){var r;let i={};for(let o=t;o<=n;++o){let s=(r=e[o])===null||r===void 0?void 0:r.key;s!==void 0&&(i[s]=o)}return i}var Os=["create","update","remove","destroy","pre","post"];function On(e,t,n){let r={create:[],update:[],remove:[],destroy:[],pre:[],post:[]},i=t!==void 0?t:hi;for(let h of Os)for(let d of e){let w=d[h];w!==void 0&&r[h].push(w)}function o(h){let d=h.id?"#"+h.id:"",w=h.getAttribute("class"),b=w?"."+w.split(" ").join("."):"";return Oe(i.tagName(h).toLowerCase()+d+b,{},[],void 0,h)}function s(h){return Oe(void 0,{},[],void 0,h)}function a(h,d){return function(){if(--d===0){let b=i.parentNode(h);i.removeChild(b,h)}}}function l(h,d){var w,b,y,E;let x,P=h.data;if(P!==void 0){let v=(w=P.hook)===null||w===void 0?void 0:w.init;Y(v)&&(v(h),P=h.data)}let A=h.children,_=h.sel;if(_==="!")Nn(h.text)&&(h.text=""),h.elm=i.createComment(h.text);else if(_!==void 0){let v=_.indexOf("#"),R=_.indexOf(".",v),O=v>0?v:_.length,T=R>0?R:_.length,K=v!==-1||R!==-1?_.slice(0,Math.min(O,T)):_,X=h.elm=Y(P)&&Y(x=P.ns)?i.createElementNS(x,K,P):i.createElement(K,P);for(O<T&&X.setAttribute("id",_.slice(O+1,T)),R>0&&X.setAttribute("class",_.slice(T+1).replace(/\./g," ")),x=0;x<r.create.length;++x)r.create[x](Rn,h);if(Qe(A))for(x=0;x<A.length;++x){let $n=A[x];$n!=null&&i.appendChild(X,l($n,d))}else Be(h.text)&&i.appendChild(X,i.createTextNode(h.text));let tt=h.data.hook;Y(tt)&&((b=tt.create)===null||b===void 0||b.call(tt,Rn,h),tt.insert&&d.push(h))}else if(!((y=n?.experimental)===null||y===void 0)&&y.fragments&&h.children){for(h.elm=((E=i.createDocumentFragment)!==null&&E!==void 0?E:_s)(),x=0;x<r.create.length;++x)r.create[x](Rn,h);for(x=0;x<h.children.length;++x){let v=h.children[x];v!=null&&i.appendChild(h.elm,l(v,d))}}else h.elm=i.createTextNode(h.text);return h.elm}function c(h,d,w,b,y,E){for(;b<=y;++b){let x=w[b];x!=null&&i.insertBefore(h,l(x,E),d)}}function p(h){var d,w;let b=h.data;if(b!==void 0){(w=(d=b?.hook)===null||d===void 0?void 0:d.destroy)===null||w===void 0||w.call(d,h);for(let y=0;y<r.destroy.length;++y)r.destroy[y](h);if(h.children!==void 0)for(let y=0;y<h.children.length;++y){let E=h.children[y];E!=null&&typeof E!="string"&&p(E)}}}function f(h,d,w,b){for(var y,E;w<=b;++w){let x,P,A=d[w];if(A!=null)if(Y(A.sel)){p(A),x=r.remove.length+1,P=a(A.elm,x);for(let v=0;v<r.remove.length;++v)r.remove[v](A,P);let _=(E=(y=A?.data)===null||y===void 0?void 0:y.hook)===null||E===void 0?void 0:E.remove;Y(_)?_(A,P):P()}else A.children?(p(A),f(h,A.children,0,A.children.length-1)):i.removeChild(h,A.elm)}}function C(h,d,w,b){let y=0,E=0,x=d.length-1,P=d[0],A=d[x],_=w.length-1,v=w[0],R=w[_],O,T,K,X;for(;y<=x&&E<=_;)P==null?P=d[++y]:A==null?A=d[--x]:v==null?v=w[++E]:R==null?R=w[--_]:Xe(P,v)?(k(P,v,b),P=d[++y],v=w[++E]):Xe(A,R)?(k(A,R,b),A=d[--x],R=w[--_]):Xe(P,R)?(k(P,R,b),i.insertBefore(h,P.elm,i.nextSibling(A.elm)),P=d[++y],R=w[--_]):Xe(A,v)?(k(A,v,b),i.insertBefore(h,A.elm,P.elm),A=d[--x],v=w[++E]):(O===void 0&&(O=Rs(d,y,x)),T=O[v.key],Nn(T)?i.insertBefore(h,l(v,b),P.elm):(K=d[T],K.sel!==v.sel?i.insertBefore(h,l(v,b),P.elm):(k(K,v,b),d[T]=void 0,i.insertBefore(h,K.elm,P.elm))),v=w[++E]);E<=_&&(X=w[_+1]==null?null:w[_+1].elm,c(h,X,w,E,_,b)),y<=x&&f(h,d,y,x)}function k(h,d,w){var b,y,E,x,P,A,_,v;let R=(b=d.data)===null||b===void 0?void 0:b.hook;(y=R?.prepatch)===null||y===void 0||y.call(R,h,d);let O=d.elm=h.elm;if(h===d)return;if(d.data!==void 0||Y(d.text)&&d.text!==h.text){(E=d.data)!==null&&E!==void 0||(d.data={}),(x=h.data)!==null&&x!==void 0||(h.data={});for(let X=0;X<r.update.length;++X)r.update[X](h,d);(_=(A=(P=d.data)===null||P===void 0?void 0:P.hook)===null||A===void 0?void 0:A.update)===null||_===void 0||_.call(A,h,d)}let T=h.children,K=d.children;Nn(d.text)?Y(T)&&Y(K)?T!==K&&C(O,T,K,w):Y(K)?(Y(h.text)&&i.setTextContent(O,""),c(O,null,K,0,K.length-1,w)):Y(T)?f(O,T,0,T.length-1):Y(h.text)&&i.setTextContent(O,""):h.text!==d.text&&(Y(T)&&f(O,T,0,T.length-1),i.setTextContent(O,d.text)),(v=R?.postpatch)===null||v===void 0||v.call(R,h,d)}return function(d,w){let b,y,E,x=[];for(b=0;b<r.pre.length;++b)r.pre[b]();for(Ts(i,d)?d=o(d):Ns(i,d)&&(d=s(d)),Xe(d,w)?k(d,w,x):(y=d.elm,E=i.parentNode(y),l(w,x),E!==null&&(i.insertBefore(E,w.elm,i.nextSibling(y)),f(E,[d],0,0))),b=0;b<x.length;++b)x[b].data.hook.insert(x[b]);for(b=0;b<r.post.length;++b)r.post[b]();return w}}function fi(e,t,n){if(e.ns="http://www.w3.org/2000/svg",n!=="foreignObject"&&t!==void 0)for(let r=0;r<t.length;++r){let i=t[r];if(typeof i=="string")continue;let o=i.data;o!==void 0&&fi(o,i.children,i.sel)}}function S(e,t,n){let r={},i,o,s;if(n!==void 0?(t!==null&&(r=t),Qe(n)?i=n:Be(n)?o=n.toString():n&&n.sel&&(i=[n])):t!=null&&(Qe(t)?i=t:Be(t)?o=t.toString():t&&t.sel?i=[t]:r=t),i!==void 0)for(s=0;s<i.length;++s)Be(i[s])&&(i[s]=Oe(void 0,void 0,void 0,i[s],void 0));return e[0]==="s"&&e[1]==="v"&&e[2]==="g"&&(e.length===3||e[3]==="."||e[3]==="#")&&fi(r,i,e),Oe(e,r,i,o,void 0)}var qs="http://www.w3.org/1999/xlink",Ds="http://www.w3.org/XML/1998/namespace";function pi(e,t){let n,r=t.elm,i=e.data.attrs,o=t.data.attrs;if(!(!i&&!o)&&i!==o){i=i||{},o=o||{};for(n in o){let s=o[n];i[n]!==s&&(s===!0?r.setAttribute(n,""):s===!1?r.removeAttribute(n):n.charCodeAt(0)!==120?r.setAttribute(n,s):n.charCodeAt(3)===58?r.setAttributeNS(Ds,n,s):n.charCodeAt(5)===58?r.setAttributeNS(qs,n,s):r.setAttribute(n,s))}for(n in i)n in o||r.removeAttribute(n)}}var qn={create:pi,update:pi};function mi(e,t){let n,r,i=t.elm,o=e.data.class,s=t.data.class;if(!(!o&&!s)&&o!==s){o=o||{},s=s||{};for(r in o)o[r]&&!Object.prototype.hasOwnProperty.call(s,r)&&i.classList.remove(r);for(r in s)n=s[r],n!==o[r]&&i.classList[n?"add":"remove"](r)}}var Dn={create:mi,update:mi};var gi=e=>{let t=Ln[e];return t?S("nag",{attrs:{title:t.name}},t.symbol):void 0},Ln={1:{symbol:"!",name:"Good move"},2:{symbol:"?",name:"Mistake"},3:{symbol:"!!",name:"Brilliant move"},4:{symbol:"??",name:"Blunder"},5:{symbol:"!?",name:"Interesting move"},6:{symbol:"?!",name:"Dubious move"},7:{symbol:"\u25A1",name:"Only move"},22:{symbol:"\u2A00",name:"Zugzwang"},10:{symbol:"=",name:"Equal position"},13:{symbol:"\u221E",name:"Unclear position"},14:{symbol:"\u2A72",name:"White is slightly better"},15:{symbol:"\u2A71",name:"Black is slightly better"},16:{symbol:"\xB1",name:"White is better"},17:{symbol:"\u2213",name:"Black is better"},18:{symbol:"+\u2212",name:"White is winning"},19:{symbol:"-+",name:"Black is winning"},146:{symbol:"N",name:"Novelty"},32:{symbol:"\u2191\u2191",name:"Development"},36:{symbol:"\u2191",name:"Initiative"},40:{symbol:"\u2192",name:"Attack"},132:{symbol:"\u21C6",name:"Counterplay"},138:{symbol:"\u2295",name:"Time trouble"},44:{symbol:"=\u221E",name:"With compensation"},140:{symbol:"\u2206",name:"With the idea"}};function bi(e,t,n){for(let r of["touchstart","mousedown"])e.addEventListener(r,i=>{t(i),i.preventDefault(),n&&n()},{passive:!1})}var Bn=(e,t,n,r=!0)=>Ie(i=>i.addEventListener(e,o=>{let s=t(o);return s===!1&&o.preventDefault(),n?.(),s},{passive:r}));function Ie(e){return{insert:t=>e(t.elm)}}var Je=e=>{if(!e&&e!==0)return["-"];let t=new Date(e*1e3),n=":",r=ki(t.getUTCMinutes())+n+ki(t.getUTCSeconds());return e>=3600?[Math.floor(e/3600)+n+r]:[r]},ki=e=>(e<10?"0":"")+e,wi=(e,t,n,r)=>{let i=`${t.toUpperCase()}${n}`;if(!r)return`${i} ${e("aria.empty")}`;let o=e(`aria.piece.${r.role}`);return`${i} ${e(`aria.${r.color}`)} ${o}`},qt=(e,t,n)=>{let r=n?Ls(e,n):e;if(t&&t.length>0){let i=t.map(o=>Ln[o]?.name).filter(o=>o).join(", ");i&&(r+=`, ${i}`)}return r},Ls=(e,t)=>e.split("").map(n=>{if(n==="x")return t("san.takes");if(n==="+")return t("san.check");if(n==="#")return t("san.checkmate");if(n==="=")return t("san.promotesTo");if(n==="@")return t("san.droppedOn");let r=n.charCodeAt(0);return r>48&&r<58?n:r>96&&r<105?n.toUpperCase():n==="K"?t("aria.piece.king"):n==="Q"?t("aria.piece.queen"):n==="R"?t("aria.piece.rook"):n==="B"?t("aria.piece.bishop"):n==="N"?t("aria.piece.knight"):n==="O"?"O":n}).join(" ").replace("O - O - O",t("san.longCastling")).replace("O - O",t("san.shortCastling"));function vi(e){let t=0;return n=>{t+=n.deltaY*(n.deltaMode?40:1),Math.abs(t)>=4?(e(n,!0),t=0):e(n,!1)}}function yi(e,t){let n=()=>{e(),r=Math.max(100,r-r/15),i=setTimeout(n,r)},r=350,i=setTimeout(n,500);e();let o=t.type=="touchstart"?"touchend":"mouseup";document.addEventListener(o,()=>clearTimeout(i),{once:!0})}var Bs=e=>e.altKey||e.ctrlKey||e.shiftKey||e.metaKey||document.activeElement instanceof HTMLInputElement||document.activeElement instanceof HTMLTextAreaElement,xi=e=>t=>{Bs(t)||(t.key=="ArrowLeft"?e.goTo("prev"):t.key=="ArrowRight"?e.goTo("next"):t.key=="f"&&e.flip())};var Si=e=>S("div.lpv__menu.lpv__pane",{attrs:{role:"menu","aria-label":e.translate("menu")??"Menu"},hook:{insert:t=>{let n=t.elm;n.querySelector('[role="menuitem"]')?.focus(),Ks(e,n)}}},[S("button.lpv__menu__entry.lpv__menu__flip.lpv__fbt",{attrs:{role:"menuitem"},hook:Bn("click",e.flip)},e.translate("flipTheBoard")),e.opts.menu.analysisBoard?.enabled?S("a.lpv__menu__entry.lpv__menu__analysis.lpv__fbt",{attrs:{role:"menuitem",href:e.analysisUrl(),target:"_blank","aria-label":e.translate("aria.linkOpensInNewTab",e.translate("analysisBoard"))}},e.translate("analysisBoard")):void 0,e.opts.menu.practiceWithComputer?.enabled?S("a.lpv__menu__entry.lpv__menu__practice.lpv__fbt",{attrs:{role:"menuitem",href:e.practiceUrl(),target:"_blank","aria-label":e.translate("aria.linkOpensInNewTab",e.translate("practiceWithComputer"))}},e.translate("practiceWithComputer")):void 0,e.opts.menu.getPgn.enabled?S("button.lpv__menu__entry.lpv__menu__pgn.lpv__fbt",{attrs:{role:"menuitem"},hook:Bn("click",e.togglePgn)},e.translate("getPgn")):void 0,Is(e)]),Is=e=>{let t=e.game.metadata.externalLink,n=e.translate(e.game.metadata.isLichess?"viewOnLichess":"viewOnSite");return t&&S("a.lpv__menu__entry.lpv__fbt",{attrs:{role:"menuitem",href:t,target:"_blank","aria-label":e.translate("aria.linkOpensInNewTab",n)}},n)},Ci=e=>S("div.lpv__controls",{attrs:{role:"navigation","aria-label":e.translate("aria.navigationControls")}},[e.pane=="board"?void 0:Dt(e,"first","step-backward"),Dt(e,"prev","left-open"),S("button.lpv__fbt.lpv__controls__menu.lpv__icon",{class:{active:e.pane!="board","lpv__icon-ellipsis-vert":e.pane=="board"},hook:{insert:t=>{let n=t.elm;n.addEventListener("click",e.toggleMenu),e.menuButton=n}},attrs:{"aria-label":e.translate("menu"),"aria-expanded":String(e.pane==="menu"),"aria-haspopup":"menu"}},e.pane=="board"?void 0:"X"),Dt(e,"next","right-open"),e.pane=="board"?void 0:Dt(e,"last","step-forward")]),Dt=(e,t,n)=>{let r=e.pane=="board"&&!e.canGoTo(t);return S(`button.lpv__controls__goto.lpv__controls__goto--${t}.lpv__fbt.lpv__icon.lpv__icon-${n}`,{class:{disabled:r},hook:Ie(i=>bi(i,o=>yi(()=>e.goTo(t),o))),attrs:{"aria-label":e.translate(`aria.${t}`),"aria-disabled":String(r),disabled:r}})},Ks=(e,t)=>{let n=r=>{switch(r.key){case"Enter":case" ":r.preventDefault(),document.activeElement?.click();break;case"Escape":r.preventDefault(),e.toggleMenu();break}};t.addEventListener("keydown",n)};var et={"aria-hidden":!0},Lt={role:"presentation","aria-hidden":"true"},Pi=e=>{let t=e.curData();if(!Mt(t))return"";let n=Math.ceil(t.ply/2),r=t.ply%2===1?"white":"black",i=t.san,o=e.translate("aria.move",n.toString(),e.translate(`aria.${r}`),qt(i,t.nags,e.translate)),s=t.clocks&&t.clocks[r==="white"?"white":"black"];if(s!==void 0&&e.opts.showClocks){let l=Je(s).join("");l!=="-"&&(o+=", "+e.translate("aria.remaining",l))}let a=t.comments.join(" ").trim();return a&&(o+=`. ${a}`),o},Mi=e=>{let t=e.game,n=a=>{let l=a.name||e.translate("aria.unknownPlayer");return a.title&&(l=`${a.title} ${l}`),a.rating&&(l=`${l}, ${e.translate("aria.rated",a.rating.toString())}`),l},r=a=>!a||a==="*"?e.translate("aria.gameInProgress"):a==="1-0"?e.translate("aria.whitesWin"):a==="0-1"?e.translate("aria.blacksWin"):a==="1/2-1/2"?e.translate("aria.draw"):a,i=n(t.players.white),o=n(t.players.black),s=r(t.metadata.result);return e.translate("aria.chessGameBetween",i,o,s)};var Ai=e=>S("div.lpv__side",[S("div.lpv__moves",{attrs:{role:"complementary","aria-label":e.translate("aria.gameMoves")},hook:{insert:t=>{let n=t.elm;e.path.empty()||Ei(e,n),n.addEventListener("click",r=>{let i=r.target.getAttribute("data-path");i&&e.toPath(new te(i))},{passive:!0})},postpatch:(t,n)=>{e.autoScrollRequested&&(Ei(e,n.elm),e.autoScrollRequested=!1)}}},[...e.game.initial.comments.map(It),...Hs(e),...$s(e)])]),$s=e=>{let t=e.game.metadata.result;return t&&t!="*"?[S("comment.result",{attrs:{role:"note","aria-label":e.translate("aria.gameResult")}},e.game.metadata.result)]:[]},In=()=>S("button.move.empty",{attrs:{"aria-hidden":"true",disabled:!0}},"..."),Kn=e=>S("index",{attrs:Lt},`${e}.`),It=e=>S("comment",{attrs:{role:"note"}},e),zs=()=>S("paren.open",{attrs:et},"("),Fs=()=>S("paren.close",{attrs:et},")"),Bt=e=>Math.floor((e.ply-1)/2)+1,Hs=e=>{let t=Gs(e),n=[],r,i=e.game.moves.children.slice(1);for(e.game.initial.pos.turn=="black"&&e.game.mainline[0]&&n.push(Kn(e.game.initial.pos.fullmoves),In());r=(r||e.game.moves).children[0];){let o=r.data,s=o.ply%2==1;s&&n.push(Kn(Bt(o))),n.push(t(o));let a=s&&(i.length||o.comments.length)&&r.children.length;a&&n.push(In()),o.comments.forEach(l=>n.push(It(l))),i.forEach(l=>n.push(Vs(e.translate,t,l))),a&&n.push(Kn(Bt(o)),In()),i=r.children.slice(1)}return n},Vs=(e,t,n)=>S("variation",{attrs:{role:"group","aria-label":e("aria.variation")}},[...n.data.startingComments.map(It),..._i(t,n)]),_i=(e,t)=>{let n=[],r=[];t.data.ply%2==0&&n.push(S("index",{attrs:Lt},[Bt(t.data),"..."]));do{let i=t.data;i.ply%2==1&&n.push(S("index",{attrs:Lt},[Bt(i),"."])),n.push(e(i)),i.comments.forEach(o=>n.push(It(o))),r.forEach(o=>{n=[...n,zs(),..._i(e,o),Fs()]}),r=t.children.slice(1),t=t.children[0]}while(t);return n},Gs=e=>t=>S("button.move",{class:{current:e.path.equals(t.path),ancestor:e.path.contains(t.path),good:t.nags.includes(1),mistake:t.nags.includes(2),brilliant:t.nags.includes(3),blunder:t.nags.includes(4),interesting:t.nags.includes(5),inaccuracy:t.nags.includes(6)},attrs:{"data-path":t.path.path,role:"button","aria-label":e.translate("aria.move",Math.ceil(t.ply/2).toString(),e.translate(`aria.${t.ply%2===1?"white":"black"}`),qt(t.san,t.nags,e.translate))}},[t.san,...t.nags.map(gi)]),Ei=(e,t)=>{let n=t.querySelector(".current");if(!n){t.scrollTop=e.path.empty()?0:99999;return}t.scrollTop=n.offsetTop-t.offsetHeight/2+n.offsetHeight};function Kt(e,t){let n=t=="bottom"?e.orientation():M(e.orientation()),r=e.game.players[n],i=[r.title?S("span.lpv__player__title",r.title):void 0,S("span.lpv__player__name",r.name),r.rating?S("span.lpv__player__rating",["(",r.rating,")"]):void 0];return S(`div.lpv__player.lpv__player--${t}`,[r.isLichessUser&&r.name?S("a.lpv__player__person.ulpt.user-link",{attrs:{href:`${e.opts.lichess}/@/${r.name}`,"aria-label":e.translate("aria.viewProfileOnLichess",r.name)}},i):S("span.lpv__player__person",i),e.opts.showClocks?Ws(e,n):void 0])}var Ws=(e,t)=>{let n=e.curData(),r=n.clocks&&n.clocks[t];return typeof r==null?void 0:S("div.lpv__player__clock",{class:{active:t==n.turn},attrs:{role:"timer","aria-label":Je(r).join("")}},Je(r))};var Ti=e=>{let t=e.flipped;return S("div.lpv__sr-only",{attrs:{role:"grid","aria-label":e.translate("aria.accessibleChessboard"),"aria-hidden":"false"}},Us(e,t))},Us=(e,t)=>{let n=e.ground?.state.pieces||Le(e.curData().fen),r=t?Ce:wt,i=t?[...le].reverse():le;return r.map(o=>S("div",{attrs:{role:"row"}},i.map(s=>{let a=`${s}${o}`,l=n.get(a);return js(e.translate,s,o,l)})))},js=(e,t,n,r)=>{let i=wi(e,t,n,r);return S("span",{attrs:{role:"gridcell","aria-label":i}},i)};function $t(e){let t=e.opts,n=`lpv.lpv--moves-${t.showMoves}.lpv--controls-${t.showControls}${t.classes?"."+t.classes.replace(" ","."):""}`,r=t.showPlayers=="auto"?e.game.hasPlayerName():t.showPlayers;return S(`div.${n}`,{class:{"lpv--menu":e.pane!="board","lpv--players":r},attrs:{role:"region",tabindex:0,"aria-label":Mi(e)},hook:Ie(i=>{e.setGround(li(i.querySelector(".cg-wrap"),Qs(e,i))),t.keyboardToMove&&i.addEventListener("keydown",xi(e))})},[S("div.lpv__sr-only",{attrs:{"aria-live":"polite","aria-atomic":"true"}},Pi(e)),Ti(e),r?Kt(e,"top"):void 0,Ys(e),r?Kt(e,"bottom"):void 0,t.showControls?Ci(e):void 0,t.showMoves?Ai(e):void 0,e.pane=="menu"?Si(e):e.pane=="pgn"?Zs(e):void 0])}var Ys=e=>S("div.lpv__board",{attrs:et,hook:Ie(t=>{t.addEventListener("click",e.focus),e.opts.scrollToMove&&!("ontouchstart"in window)&&t.addEventListener("wheel",vi((n,r)=>{n.preventDefault(),n.deltaY>0&&r?e.goTo("next",!1):n.deltaY<0&&r&&e.goTo("prev",!1)}))})},S("div.cg-wrap")),Zs=e=>{let t=new Blob([e.opts.pgn],{type:"text/plain"});return S("div.lpv__pgn.lpv__pane",[S("a.lpv__pgn__download.lpv__fbt",{attrs:{href:window.URL.createObjectURL(t),download:e.opts.menu.getPgn.fileName||`${e.game.title()}.pgn`}},e.translate("download")),S("textarea.lpv__pgn__text",e.opts.pgn)])},Qs=(e,t)=>({viewOnly:!e.opts.drawArrows,addDimensionsCssVarsTo:t,drawable:{enabled:e.opts.drawArrows,visible:!0},disableContextMenu:e.opts.drawArrows,...e.opts.chessground||{},movable:{free:!1},draggable:{enabled:!1},selectable:{enabled:!1},...e.cgState()});var Xs={pgn:"*",fen:void 0,showPlayers:"auto",showClocks:!0,showMoves:"auto",showControls:!0,scrollToMove:!0,keyboardToMove:!0,orientation:void 0,initialPly:0,chessground:{},drawArrows:!0,menu:{getPgn:{enabled:!0,fileName:void 0},practiceWithComputer:{enabled:!0},analysisBoard:{enabled:!0}},lichess:"https://lichess.org",classes:void 0};function Ri(e,t){let n={...Xs};return Oi(n,t),n.fen&&(n.pgn=`[FEN "${n.fen}"]
|
|
4
|
-
${n.pgn}`),n.classes||(n.classes=e.className),n}function Oi(e,t){for(let n in t)typeof t[n]<"u"&&(
|
|
3
|
+
`);this.commentBuf=[],r.node?((t=r.node.data).comments||(t.comments=[]),r.node.data.comments.push(i)):r.root?((n=this.game).comments||(n.comments=[]),this.game.comments.push(i)):(r.startingComments||(r.startingComments=[]),r.startingComments.push(i))}emit(t){if(this.state===4&&this.handleComment(),t)return this.emitGame(this.game,t);this.found&&this.emitGame(this.game,void 0),this.resetGame()}},on=(e,t=rn)=>{let n=[];return new nn(r=>n.push(r),t,NaN).parse(e),n},uo=e=>{switch((e||"chess").toLowerCase()){case"chess":case"chess960":case"chess 960":case"standard":case"from position":case"classical":case"normal":case"fischerandom":case"fischerrandom":case"fischer random":case"wild/0":case"wild/1":case"wild/2":case"wild/3":case"wild/4":case"wild/5":case"wild/6":case"wild/7":case"wild/8":case"wild/8a":return"chess";case"crazyhouse":case"crazy house":case"house":case"zh":return"crazyhouse";case"king of the hill":case"koth":case"kingofthehill":return"kingofthehill";case"three-check":case"three check":case"threecheck":case"three check chess":case"3-check":case"3 check":case"3check":return"3check";case"antichess":case"anti chess":case"anti":return"antichess";case"atomic":case"atom":case"atomic chess":return"atomic";case"horde":case"horde chess":return"horde";case"racing kings":case"racingkings":case"racing":case"race":return"racingkings";default:return}};var rr=e=>{let t=uo(e.get("Variant"));if(!t)return m.err(new D(q.Variant));let n=e.get("FEN");return n?Zn(n).chain(r=>er(t,r)):m.ok(Jn(t))};function ho(e){switch(e){case"G":return"green";case"R":return"red";case"Y":return"yellow";case"B":return"blue";default:return}}var fo=e=>{let t=ho(e.slice(0,1)),n=he(e.slice(1,3)),r=he(e.slice(3,5));if(!(!t||!g(n))){if(e.length===3)return{color:t,from:n,to:n};if(e.length===5&&g(r))return{color:t,from:n,to:r}}};var ir=e=>{let t,n,r,i=[];return{text:e.replace(/\s?\[%(emt|clk)\s(\d{1,5}):(\d{1,2}):(\d{1,2}(?:\.\d{0,3})?)\]\s?/g,(s,a,l,c,p)=>{let f=parseInt(l,10)*3600+parseInt(c,10)*60+parseFloat(p);return a==="emt"?t=f:a==="clk"&&(n=f)," "}).replace(/\s?\[%(?:csl|cal)\s([RGYB][a-h][1-8](?:[a-h][1-8])?(?:,[RGYB][a-h][1-8](?:[a-h][1-8])?)*)\]\s?/g,(s,a)=>{for(let l of a.split(","))i.push(fo(l));return" "}).replace(/\s?\[%eval\s(?:#([+-]?\d{1,5})|([+-]?(?:\d{1,5}|\d{0,5}\.\d{1,2})))(?:,(\d{1,5}))?\]\s?/g,(s,a,l,c)=>{let p=c&&parseInt(c,10);return r=a?{mate:parseInt(a,10),depth:p}:{pawns:parseFloat(l),depth:p}," "}).trim(),shapes:i,emt:t,clock:n,evaluation:r}};var mo=e=>ko[e];function sn(e){return(t,...n)=>{let r=e&&e(t)||mo(t);return go(r??t,n)}}var go=(e,t)=>{let n=e;return t.forEach((r,i)=>{n=n.replace(`%${i+1}$s`,r),n=n.replace("%s",r)}),n},ko={flipTheBoard:"Flip the board",analysisBoard:"Analysis board",practiceWithComputer:"Practice with computer",getPgn:"Get PGN",download:"Download",viewOnLichess:"View on Lichess",viewOnSite:"View on site",menu:"Menu","aria.first":"Go to first move","aria.prev":"Go to previous move","aria.next":"Go to next move","aria.last":"Go to last move","aria.gameMoves":"Game moves","aria.gameResult":"Game result","aria.variation":"Variation","aria.navigationControls":"Game navigation controls","aria.viewProfileOnLichess":"View %s's profile on Lichess","aria.chessGameBetween":"Chess game between %1$s, whites, and %2$s, blacks. %3$s","aria.gameInProgress":"Game in progress","aria.whitesWin":"Whites win","aria.blacksWin":"Blacks win","aria.draw":"Draw","aria.unknownPlayer":"Unknown player","aria.rated":"rated %s","aria.move":"Move %1$s, %2$s, %3$s","aria.white":"white","aria.black":"black","aria.remaining":"%s remaining","aria.linkOpensInNewTab":"%s, link, opens in new tab","aria.accessibleChessboard":"Accessible chessboard","aria.piece.king":"king","aria.piece.queen":"queen","aria.piece.rook":"rook","aria.piece.bishop":"bishop","aria.piece.knight":"knight","aria.piece.pawn":"pawn","aria.empty":"empty","san.takes":"takes","san.check":"check","san.checkmate":"checkmate","san.promotesTo":"promotes to","san.droppedOn":"dropped on","san.longCastling":"long castling","san.shortCastling":"short castling"};var or=["white","black"];var le=["a","b","c","d","e","f","g","h"],Ce=["1","2","3","4","5","6","7","8"];var wt=[...Ce].reverse(),vt=Array.prototype.concat(...le.map(e=>Ce.map(t=>e+t))),H=e=>vt[8*e[0]+e[1]],T=e=>[e.charCodeAt(0)-97,e.charCodeAt(1)-49],ar=e=>{if(e)return e[1]==="@"?[e.slice(2,4)]:[e.slice(0,2),e.slice(2,4)]},yt=vt.map(T);function cr(e){let t,n=()=>(t===void 0&&(t=e()),t);return n.clear=()=>{t=void 0},n}var lr=()=>{let e;return{start(){e=performance.now()},cancel(){e=void 0},stop(){if(!e)return 0;let t=performance.now()-e;return e=void 0,t}}},xt=e=>e==="white"?"black":"white",Pe=(e,t)=>{let n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r},Fe=(e,t)=>e.role===t.role&&e.color===t.color,Me=e=>(t,n)=>[(n?t[0]:7-t[0])*e.width/8,(n?7-t[1]:t[1])*e.height/8],Z=(e,t)=>{e.style.transform=`translate(${t[0]}px,${t[1]}px)`},an=(e,t,n=1)=>{e.style.transform=`translate(${t[0]}px,${t[1]}px) scale(${n})`},He=(e,t)=>{e.style.visibility=t?"visible":"hidden"},ue=e=>{var t;if(e.clientX||e.clientX===0)return[e.clientX,e.clientY];if(!((t=e.targetTouches)===null||t===void 0)&&t[0])return[e.targetTouches[0].clientX,e.targetTouches[0].clientY]},St=e=>e.button===2,Q=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n};function Ct(e,t,n){let r=T(e);return t||(r[0]=7-r[0],r[1]=7-r[1]),[n.left+n.width*r[0]/8+n.width/16,n.top+n.height*(7-r[1])/8+n.height/16]}var te=class e{constructor(t){this.path=t;this.size=()=>this.path.length/2;this.head=()=>this.path.slice(0,2);this.tail=()=>new e(this.path.slice(2));this.init=()=>new e(this.path.slice(0,-2));this.last=()=>this.path.slice(-2);this.empty=()=>this.path=="";this.contains=t=>this.path.startsWith(t.path);this.isChildOf=t=>this.init()===t;this.append=t=>new e(this.path+t);this.equals=t=>this.path==t.path}static{this.root=new e("")}};var Pt=class{constructor(t,n,r,i){this.initial=t;this.moves=n;this.players=r;this.metadata=i;this.nodeAt=t=>ur(this.moves,t);this.dataAt=t=>{let n=this.nodeAt(t);return n?wo(n)?n.data:this.initial:void 0};this.title=()=>this.players.white.name?[this.players.white.title,this.players.white.name,"vs",this.players.black.title,this.players.black.name].filter(t=>t&&!!t.trim()).join("_").replace(" ","-"):"lichess-pgn-viewer";this.pathAtMainlinePly=t=>t==0?te.root:this.mainline[Math.max(0,Math.min(this.mainline.length-1,t=="last"?9999:t-1))]?.path||te.root;this.hasPlayerName=()=>!!(this.players.white?.name||this.players.black?.name);this.mainline=Array.from(this.moves.mainline())}},bo=(e,t)=>e.children.find(n=>n.data.path.last()==t),ur=(e,t)=>{if(t.empty())return e;let n=bo(e,t.head());return n?ur(n,t.tail()):void 0},wo=e=>"data"in e,Mt=e=>"uci"in e;var cn=class e{constructor(t,n,r){this.pos=t;this.path=n;this.clocks=r;this.clone=()=>new e(this.pos.clone(),this.path,{...this.clocks})}},ln=e=>{let t=e.map(ir),n=r=>r.reduce((i,o)=>typeof o==null?i:o,void 0);return{texts:t.map(r=>r.text).filter(r=>!!r),shapes:t.flatMap(r=>r.shapes),clock:n(t.map(r=>r.clock)),emt:n(t.map(r=>r.emt))}},hr=(e,t=!1)=>{let n=on(e)[0]||on("*")[0],r=rr(n.headers).unwrap(),i=ut(r.toSetup()),o=ln(n.comments||[]),s=new Map(Array.from(n.headers,([f,C])=>[f.toLowerCase(),C])),a=So(s,t),l={fen:i,turn:r.turn,check:r.isCheck(),pos:r.clone(),comments:o.texts,shapes:o.shapes,clocks:{white:a.timeControl?.initial||o.clock,black:a.timeControl?.initial||o.clock}},c=vo(r,n.moves,a),p=xo(s,a);return new Pt(l,c,p,a)},vo=(e,t,n)=>nr(t,new cn(e,te.root,{}),(r,i,o)=>{let s=Xn(r.pos,i.san);if(!s)return;let a=Gn(s),l=r.path.append(a),c=Qn(r.pos,s);r.path=l;let p=r.pos.toSetup(),f=ln(i.comments||[]),C=ln(i.startingComments||[]),k=[...f.shapes,...C.shapes],h=(p.fullmoves-1)*2+(r.pos.turn==="white"?0:1),d=r.clocks=yo(r.clocks,r.pos.turn,f.clock);return h<2&&n.timeControl&&(d={white:n.timeControl.initial,black:n.timeControl.initial,...d}),{path:l,ply:h,move:s,san:c,uci:zt(s),fen:ut(r.pos.toSetup()),turn:r.pos.turn,check:r.pos.isCheck(),comments:f.texts,startingComments:C.texts,nags:i.nags||[],shapes:k,clocks:d,emt:f.emt}}),yo=(e,t,n)=>t=="white"?{...e,black:n}:{...e,white:n};function xo(e,t){let n=(i,o)=>{let s=e.get(`${i}${o}`);return s=="?"||s==""?void 0:s},r=i=>{let o=n(i,"");return{name:o,title:n(i,"title"),rating:parseInt(n(i,"elo")||"")||void 0,isLichessUser:t.isLichess&&!!o?.match(/^[a-z0-9][a-z0-9_-]{0,28}[a-z0-9]$/i)}};return{white:r("white"),black:r("black")}}function So(e,t){let n=e.get("chapterurl")||e.get("gameurl")||e.get("source")||e.get("site"),r=e.get("timecontrol")?.split("+").map(s=>parseInt(s)),i=r&&r[0]?{initial:r[0],increment:r[1]||0}:void 0,o=e.get("orientation");return{externalLink:n&&n.match(/^https?:\/\//)?n:void 0,isLichess:!!(t&&n?.startsWith(t)),timeControl:i,orientation:o==="white"||o==="black"?o:void 0,result:e.get("result")}}var We=class{constructor(t,n){this.opts=t;this.redraw=n;this.flipped=!1;this.pane="board";this.autoScrollRequested=!1;this.curNode=()=>this.game.nodeAt(this.path)||this.game.moves;this.curData=()=>this.game.dataAt(this.path)||this.game.initial;this.goTo=(t,n=!0)=>{let r=t=="first"?te.root:t=="prev"?this.path.init():t=="next"?this.game.nodeAt(this.path)?.children[0]?.data.path:this.game.pathAtMainlinePly("last");this.toPath(r||this.path,n)};this.canGoTo=t=>t=="prev"||t=="first"?!this.path.empty():!!this.curNode().children[0];this.toPath=(t,n=!0)=>{this.path=t,this.pane="board",this.autoScrollRequested=!0,this.redrawGround(),this.redraw(),n&&this.focus()};this.focus=()=>this.div?.focus();this.toggleMenu=()=>{this.pane=this.pane=="board"?"menu":"board",this.redraw(),this.pane=="board"&&setTimeout(()=>this.menuButton?.focus(),0)};this.togglePgn=()=>{this.pane=this.pane=="pgn"?"board":"pgn",this.redraw()};this.orientation=()=>{let t=this.opts.orientation||"white";return this.flipped?M(t):t};this.flip=()=>{this.flipped=!this.flipped,this.pane="board",this.redrawGround(),this.redraw()};this.cgState=()=>{let t=this.curData(),n=Mt(t)?ar(t.uci):this.opts.chessground?.lastMove;return{fen:t.fen,orientation:this.orientation(),check:t.check,lastMove:n,turnColor:t.turn}};this.analysisUrl=()=>this.game.metadata.isLichess&&this.game.metadata.externalLink||`https://lichess.org/analysis/${this.curData().fen.replace(" ","_")}?color=${this.orientation()}`;this.practiceUrl=()=>`${this.analysisUrl()}#practice`;this.setGround=t=>{this.ground=t,this.redrawGround()};this.redrawGround=()=>this.withGround(t=>{t.set(this.cgState()),t.setShapes(this.curData().shapes.map(n=>({orig:j(n.from),dest:j(n.to),brush:n.color})))});this.withGround=t=>this.ground&&t(this.ground);this.game=hr(t.pgn,t.lichess),t.orientation=t.orientation||this.game.metadata.orientation,this.translate=sn(t.translate),this.path=this.game.pathAtMainlinePly(t.initialPly)}};var Ne=(e,t)=>Math.abs(e-t),Co=e=>(t,n,r,i)=>Ne(t,r)<2&&(e==="white"?i===n+1||n<=1&&i===n+2&&t===r:i===n-1||n>=6&&i===n-2&&t===r),un=(e,t,n,r)=>{let i=Ne(e,n),o=Ne(t,r);return i===1&&o===2||i===2&&o===1},dr=(e,t,n,r)=>Ne(e,n)===Ne(t,r),fr=(e,t,n,r)=>e===n||t===r,hn=(e,t,n,r)=>dr(e,t,n,r)||fr(e,t,n,r),Po=(e,t,n)=>(r,i,o,s)=>Ne(r,o)<2&&Ne(i,s)<2||n&&i===s&&i===(e==="white"?0:7)&&(r===4&&(o===2&&t.includes(0)||o===6&&t.includes(7))||t.includes(o));function Mo(e,t){let n=t==="white"?"1":"8",r=[];for(let[i,o]of e)i[1]===n&&o.color===t&&o.role==="rook"&&r.push(T(i)[0]);return r}function dn(e,t,n){let r=e.get(t);if(!r)return[];let i=T(t),o=r.role,s=o==="pawn"?Co(r.color):o==="knight"?un:o==="bishop"?dr:o==="rook"?fr:o==="queen"?hn:Po(r.color,Mo(e,r.color),n);return yt.filter(a=>(i[0]!==a[0]||i[1]!==a[1])&&s(i[0],i[1],a[0],a[1])).map(H)}function W(e,...t){e&&setTimeout(()=>e(...t),1)}function pr(e){e.orientation=xt(e.orientation),e.animation.current=e.draggable.current=e.selected=void 0}function mr(e,t){for(let[n,r]of t)r?e.pieces.set(n,r):e.pieces.delete(n)}function gr(e,t){if(e.check=void 0,t===!0&&(t=e.turnColor),t)for(let[n,r]of e.pieces)r.role==="king"&&r.color===t&&(e.check=n)}function Eo(e,t,n,r){re(e),e.premovable.current=[t,n],W(e.premovable.events.set,t,n,r)}function ne(e){e.premovable.current&&(e.premovable.current=void 0,W(e.premovable.events.unset))}function Ao(e,t,n){ne(e),e.predroppable.current={role:t,key:n},W(e.predroppable.events.set,t,n)}function re(e){let t=e.predroppable;t.current&&(t.current=void 0,W(t.events.unset))}function _o(e,t,n){if(!e.autoCastle)return!1;let r=e.pieces.get(t);if(!r||r.role!=="king")return!1;let i=T(t),o=T(n);if(i[1]!==0&&i[1]!==7||i[1]!==o[1])return!1;i[0]===4&&!e.pieces.has(n)&&(o[0]===6?n=H([7,o[1]]):o[0]===2&&(n=H([0,o[1]])));let s=e.pieces.get(n);return!s||s.color!==r.color||s.role!=="rook"?!1:(e.pieces.delete(t),e.pieces.delete(n),i[0]<o[0]?(e.pieces.set(H([6,o[1]]),r),e.pieces.set(H([5,o[1]]),s)):(e.pieces.set(H([2,o[1]]),r),e.pieces.set(H([3,o[1]]),s)),!0)}function fn(e,t,n){let r=e.pieces.get(t),i=e.pieces.get(n);if(t===n||!r)return!1;let o=i&&i.color!==r.color?i:void 0;return n===e.selected&&G(e),W(e.events.move,t,n,o),_o(e,t,n)||(e.pieces.set(n,r),e.pieces.delete(t)),e.lastMove=[t,n],e.check=void 0,W(e.events.change),o||!0}function Et(e,t,n,r){if(e.pieces.has(n))if(r)e.pieces.delete(n);else return!1;return W(e.events.dropNewPiece,t,n),e.pieces.set(n,t),e.lastMove=[n],e.check=void 0,W(e.events.change),e.movable.dests=void 0,e.turnColor=xt(e.turnColor),!0}function kr(e,t,n){let r=fn(e,t,n);return r&&(e.movable.dests=void 0,e.turnColor=xt(e.turnColor),e.animation.current=void 0),r}function pn(e,t,n){if(_t(e,t,n)){let r=kr(e,t,n);if(r){let i=e.hold.stop();G(e);let o={premove:!1,ctrlKey:e.stats.ctrlKey,holdTime:i};return r!==!0&&(o.captured=r),W(e.movable.events.after,t,n,o),!0}}else if(To(e,t,n))return Eo(e,t,n,{ctrlKey:e.stats.ctrlKey}),G(e),!0;return G(e),!1}function At(e,t,n,r){let i=e.pieces.get(t);i&&(No(e,t,n)||r)?(e.pieces.delete(t),Et(e,i,n,r),W(e.movable.events.afterNewPiece,i.role,n,{premove:!1,predrop:!1})):i&&Ro(e,t,n)?Ao(e,i.role,n):(ne(e),re(e)),e.pieces.delete(t),G(e)}function Ue(e,t,n){if(W(e.events.select,t),e.selected){if(e.selected===t&&!e.draggable.enabled){G(e),e.hold.cancel();return}else if((e.selectable.enabled||n)&&e.selected!==t&&pn(e,e.selected,t)){e.stats.dragged=!1;return}}(e.selectable.enabled||e.draggable.enabled)&&(br(e,t)||gn(e,t))&&(mn(e,t),e.hold.start())}function mn(e,t){e.selected=t,gn(e,t)?e.premovable.customDests||(e.premovable.dests=dn(e.pieces,t,e.premovable.castle)):e.premovable.dests=void 0}function G(e){e.selected=void 0,e.premovable.dests=void 0,e.hold.cancel()}function br(e,t){let n=e.pieces.get(t);return!!n&&(e.movable.color==="both"||e.movable.color===n.color&&e.turnColor===n.color)}var _t=(e,t,n)=>{var r,i;return t!==n&&br(e,t)&&(e.movable.free||!!(!((i=(r=e.movable.dests)===null||r===void 0?void 0:r.get(t))===null||i===void 0)&&i.includes(n)))};function No(e,t,n){let r=e.pieces.get(t);return!!r&&(t===n||!e.pieces.has(n))&&(e.movable.color==="both"||e.movable.color===r.color&&e.turnColor===r.color)}function gn(e,t){let n=e.pieces.get(t);return!!n&&e.premovable.enabled&&e.movable.color===n.color&&e.turnColor!==n.color}function To(e,t,n){var r,i;let o=(i=(r=e.premovable.customDests)===null||r===void 0?void 0:r.get(t))!==null&&i!==void 0?i:dn(e.pieces,t,e.premovable.castle);return t!==n&&gn(e,t)&&o.includes(n)}function Ro(e,t,n){let r=e.pieces.get(t),i=e.pieces.get(n);return!!r&&(!i||i.color!==e.movable.color)&&e.predroppable.enabled&&(r.role!=="pawn"||n[1]!=="1"&&n[1]!=="8")&&e.movable.color===r.color&&e.turnColor!==r.color}function wr(e,t){let n=e.pieces.get(t);return!!n&&e.draggable.enabled&&(e.movable.color==="both"||e.movable.color===n.color&&(e.turnColor===n.color||e.premovable.enabled))}function vr(e){let t=e.premovable.current;if(!t)return!1;let n=t[0],r=t[1],i=!1;if(_t(e,n,r)){let o=kr(e,n,r);if(o){let s={premove:!0};o!==!0&&(s.captured=o),W(e.movable.events.after,n,r,s),i=!0}}return ne(e),i}function yr(e,t){let n=e.predroppable.current,r=!1;if(!n)return!1;if(t(n)){let i={role:n.role,color:e.movable.color};Et(e,i,n.key)&&(W(e.movable.events.afterNewPiece,n.role,n.key,{premove:!1,predrop:!0}),r=!0)}return re(e),r}function je(e){ne(e),re(e),G(e)}function kn(e){e.movable.color=e.movable.dests=e.animation.current=void 0,je(e)}function ie(e,t,n){let r=Math.floor(8*(e[0]-n.left)/n.width);t||(r=7-r);let i=7-Math.floor(8*(e[1]-n.top)/n.height);return t||(i=7-i),r>=0&&r<8&&i>=0&&i<8?H([r,i]):void 0}function xr(e,t,n,r){let i=T(e),o=yt.filter(c=>hn(i[0],i[1],c[0],c[1])||un(i[0],i[1],c[0],c[1])),a=o.map(c=>Ct(H(c),n,r)).map(c=>Pe(t,c)),[,l]=a.reduce((c,p,f)=>c[0]<p?c:[p,f],[a[0],0]);return H(o[l])}var B=e=>e.orientation==="white";var wn="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",Oo={p:"pawn",r:"rook",n:"knight",b:"bishop",q:"queen",k:"king"},qo={pawn:"p",rook:"r",knight:"n",bishop:"b",queen:"q",king:"k"};function Le(e){e==="start"&&(e=wn);let t=new Map,n=7,r=0;for(let i of e)switch(i){case" ":case"[":return t;case"/":if(--n,n<0)return t;r=0;break;case"~":{let o=t.get(H([r-1,n]));o&&(o.promoted=!0);break}default:{let o=i.charCodeAt(0);if(o<57)r+=o-48;else{let s=i.toLowerCase();t.set(H([r,n]),{role:Oo[s],color:i===s?"black":"white"}),++r}}}return t}function Sr(e){return wt.map(t=>le.map(n=>{let r=e.get(n+t);if(r){let i=qo[r.role];return r.color==="white"&&(i=i.toUpperCase()),r.promoted&&(i+="~"),i}else return"1"}).join("")).join("/").replace(/1{2,}/g,t=>t.length.toString())}function vn(e,t){t.animation&&(yn(e.animation,t.animation),(e.animation.duration||0)<70&&(e.animation.enabled=!1))}function Nt(e,t){var n,r,i;if(!((n=t.movable)===null||n===void 0)&&n.dests&&(e.movable.dests=void 0),!((r=t.drawable)===null||r===void 0)&&r.autoShapes&&(e.drawable.autoShapes=[]),yn(e,t),t.fen&&(e.pieces=Le(t.fen),e.drawable.shapes=((i=t.drawable)===null||i===void 0?void 0:i.shapes)||[]),"check"in t&&gr(e,t.check||!1),"lastMove"in t&&!t.lastMove?e.lastMove=void 0:t.lastMove&&(e.lastMove=t.lastMove),e.selected&&mn(e,e.selected),vn(e,t),!e.movable.rookCastle&&e.movable.dests){let o=e.movable.color==="white"?"1":"8",s="e"+o,a=e.movable.dests.get(s),l=e.pieces.get(s);if(!a||!l||l.role!=="king")return;e.movable.dests.set(s,a.filter(c=>!(c==="a"+o&&a.includes("c"+o))&&!(c==="h"+o&&a.includes("g"+o))))}}function yn(e,t){for(let n in t)n==="__proto__"||n==="constructor"||!Object.prototype.hasOwnProperty.call(t,n)||(Object.prototype.hasOwnProperty.call(e,n)&&Cr(e[n])&&Cr(t[n])?yn(e[n],t[n]):e[n]=t[n])}function Cr(e){if(typeof e!="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var pe=(e,t)=>t.animation.enabled?Io(e,t):me(e,t);function me(e,t){let n=e(t);return t.dom.redraw(),n}var xn=(e,t)=>({key:e,pos:T(e),piece:t}),Lo=(e,t)=>t.sort((n,r)=>Pe(e.pos,n.pos)-Pe(e.pos,r.pos))[0];function Bo(e,t){let n=new Map,r=[],i=new Map,o=[],s=[],a=new Map,l,c,p;for(let[f,C]of e)a.set(f,xn(f,C));for(let f of vt)l=t.pieces.get(f),c=a.get(f),l?c?Fe(l,c.piece)||(o.push(c),s.push(xn(f,l))):s.push(xn(f,l)):c&&o.push(c);for(let f of s)c=Lo(f,o.filter(C=>Fe(f.piece,C.piece))),c&&(p=[c.pos[0]-f.pos[0],c.pos[1]-f.pos[1]],n.set(f.key,p.concat(p)),r.push(c.key));for(let f of o)r.includes(f.key)||i.set(f.key,f.piece);return{anims:n,fadings:i}}function Pr(e,t){let n=e.animation.current;if(n===void 0){e.dom.destroyed||e.dom.redrawNow();return}let r=1-(t-n.start)*n.frequency;if(r<=0)e.animation.current=void 0,e.dom.redrawNow();else{let i=Ko(r);for(let o of n.plan.anims.values())o[2]=o[0]*i,o[3]=o[1]*i;e.dom.redrawNow(!0),requestAnimationFrame((o=performance.now())=>Pr(e,o))}}function Io(e,t){let n=new Map(t.pieces),r=e(t),i=Bo(n,t);if(i.anims.size||i.fadings.size){let o=t.animation.current&&t.animation.current.start;t.animation.current={start:performance.now(),frequency:1/t.animation.duration,plan:i},o||Pr(t,performance.now())}else t.dom.redraw();return r}var Ko=e=>e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1;var $o=["green","red","blue","yellow"];function Mr(e,t){if(t.touches&&t.touches.length>1)return;t.stopPropagation(),t.preventDefault(),t.ctrlKey?G(e):je(e);let n=ue(t),r=ie(n,B(e),e.dom.bounds());r&&(e.drawable.current={orig:r,pos:n,brush:zo(t),snapToValidMove:e.drawable.defaultSnapToValidMove},Er(e))}function Er(e){requestAnimationFrame(()=>{let t=e.drawable.current;if(t){let n=ie(t.pos,B(e),e.dom.bounds());n||(t.snapToValidMove=!1);let r=t.snapToValidMove?xr(t.orig,t.pos,B(e),e.dom.bounds()):n;r!==t.mouseSq&&(t.mouseSq=r,t.dest=r!==t.orig?r:void 0,e.dom.redrawNow()),Er(e)}})}function Ar(e,t){e.drawable.current&&(e.drawable.current.pos=ue(t))}function _r(e){let t=e.drawable.current;t&&(t.mouseSq&&Vo(e.drawable,t),Sn(e))}function Sn(e){e.drawable.current&&(e.drawable.current=void 0,e.dom.redraw())}function Nr(e){e.drawable.shapes.length&&(e.drawable.shapes=[],e.dom.redraw(),Tr(e.drawable))}function zo(e){var t;let n=(e.shiftKey||e.ctrlKey)&&St(e),r=e.altKey||e.metaKey||((t=e.getModifierState)===null||t===void 0?void 0:t.call(e,"AltGraph"));return $o[(n?1:0)+(r?2:0)]}function Vo(e,t){let n=i=>i.orig===t.orig&&i.dest===t.dest,r=e.shapes.find(n);r&&(e.shapes=e.shapes.filter(i=>!n(i))),(!r||r.brush!==t.brush)&&e.shapes.push({orig:t.orig,dest:t.dest,brush:t.brush}),Tr(e)}function Tr(e){e.onChange&&e.onChange(e.shapes)}function Rr(e,t){if(!(e.trustAllEvents||t.isTrusted)||t.buttons!==void 0&&t.buttons>1||t.touches&&t.touches.length>1)return;let n=e.dom.bounds(),r=ue(t),i=ie(r,B(e),n);if(!i)return;let o=e.pieces.get(i),s=e.selected;if(!s&&e.drawable.enabled&&(e.drawable.eraseOnClick||!o||o.color!==e.turnColor)&&Nr(e),t.cancelable!==!1&&(!t.touches||e.blockTouchScroll||o||s||Ho(e,r)))t.preventDefault();else if(t.touches)return;let a=!!e.premovable.current,l=!!e.predroppable.current;e.stats.ctrlKey=t.ctrlKey,e.selected&&_t(e,e.selected,i)?pe(f=>Ue(f,i),e):Ue(e,i);let c=e.selected===i,p=Br(e,i);if(o&&p&&c&&wr(e,i)){e.draggable.current={orig:i,piece:o,origPos:r,pos:r,started:e.draggable.autoDistance&&e.stats.dragged,element:p,previouslySelected:s,originTarget:t.target,keyHasChanged:!1},p.cgDragging=!0,p.classList.add("dragging");let f=e.dom.elements.ghost;f&&(f.className=`ghost ${o.color} ${o.role}`,Z(f,Me(n)(T(i),B(e))),He(f,!0)),Cn(e)}else a&&ne(e),l&&re(e);e.dom.redraw()}function Ho(e,t){let n=B(e),r=e.dom.bounds(),i=Math.pow(r.width/8,2);for(let o of e.pieces.keys()){let s=Ct(o,n,r);if(Pe(s,t)<=i)return!0}return!1}function Or(e,t,n,r){e.pieces.set("a0",t),e.dom.redraw();let o=ue(n);e.draggable.current={orig:"a0",piece:t,origPos:o,pos:o,started:!0,element:()=>Br(e,"a0"),originTarget:n.target,newPiece:!0,force:!!r,keyHasChanged:!1},Cn(e)}function Cn(e){requestAnimationFrame(()=>{var t;let n=e.draggable.current;if(!n)return;!((t=e.animation.current)===null||t===void 0)&&t.plan.anims.has(n.orig)&&(e.animation.current=void 0);let r=e.pieces.get(n.orig);if(!r||!Fe(r,n.piece))Te(e);else if(!n.started&&Pe(n.pos,n.origPos)>=Math.pow(e.draggable.distance,2)&&(n.started=!0),n.started){if(typeof n.element=="function"){let o=n.element();if(!o)return;o.cgDragging=!0,o.classList.add("dragging"),n.element=o}let i=e.dom.bounds();Z(n.element,[n.pos[0]-i.left-i.width/16,n.pos[1]-i.top-i.height/16]),n.keyHasChanged||(n.keyHasChanged=n.orig!==ie(n.pos,B(e),i))}Cn(e)})}function qr(e,t){e.draggable.current&&(!t.touches||t.touches.length<2)&&(e.draggable.current.pos=ue(t))}function Dr(e,t){let n=e.draggable.current;if(!n)return;if(t.type==="touchend"&&t.cancelable!==!1&&t.preventDefault(),t.type==="touchend"&&n.originTarget!==t.target&&!n.newPiece){e.draggable.current=void 0;return}ne(e),re(e);let r=ue(t)||n.pos,i=ie(r,B(e),e.dom.bounds());i&&n.started&&n.orig!==i?n.newPiece?At(e,n.orig,i,n.force):(e.stats.ctrlKey=t.ctrlKey,pn(e,n.orig,i)&&(e.stats.dragged=!0)):n.newPiece?e.pieces.delete(n.orig):e.draggable.deleteOnDropOff&&!i&&(e.pieces.delete(n.orig),W(e.events.change)),(n.orig===n.previouslySelected||n.keyHasChanged)&&(n.orig===i||!i)?G(e):e.selectable.enabled||G(e),Lr(e),e.draggable.current=void 0,e.dom.redraw()}function Te(e){let t=e.draggable.current;t&&(t.newPiece&&e.pieces.delete(t.orig),e.draggable.current=void 0,G(e),Lr(e),e.dom.redraw())}function Lr(e){let t=e.dom.elements;t.ghost&&He(t.ghost,!1)}function Br(e,t){let n=e.dom.elements.board.firstChild;for(;n;){if(n.cgKey===t&&n.tagName==="PIECE")return n;n=n.nextSibling}}function Kr(e,t){e.exploding={stage:1,keys:t},e.dom.redraw(),setTimeout(()=>{Ir(e,2),setTimeout(()=>Ir(e,void 0),120)},120)}function Ir(e,t){e.exploding&&(t?e.exploding.stage=t:e.exploding=void 0,e.dom.redraw())}function $r(e,t){function n(){pr(e),t()}return{set(r){r.orientation&&r.orientation!==e.orientation&&n(),vn(e,r),(r.fen?pe:me)(i=>Nt(i,r),e)},state:e,getFen:()=>Sr(e.pieces),toggleOrientation:n,setPieces(r){pe(i=>mr(i,r),e)},selectSquare(r,i){r?pe(o=>Ue(o,r,i),e):e.selected&&(G(e),e.dom.redraw())},move(r,i){pe(o=>fn(o,r,i),e)},newPiece(r,i){pe(o=>Et(o,r,i),e)},playPremove(){if(e.premovable.current){if(pe(vr,e))return!0;e.dom.redraw()}return!1},playPredrop(r){if(e.predroppable.current){let i=yr(e,r);return e.dom.redraw(),i}return!1},cancelPremove(){me(ne,e)},cancelPredrop(){me(re,e)},cancelMove(){me(r=>{je(r),Te(r)},e)},stop(){me(r=>{kn(r),Te(r)},e)},explode(r){Kr(e,r)},setAutoShapes(r){me(i=>i.drawable.autoShapes=r,e)},setShapes(r){me(i=>i.drawable.shapes=r,e)},getKeyAtDomPos(r){return ie(r,B(e),e.dom.bounds())},redrawAll:t,dragNewPiece(r,i,o){Or(e,r,i,o)},destroy(){kn(e),e.dom.unbind&&e.dom.unbind(),e.dom.destroyed=!0}}}function zr(){return{pieces:Le(wn),orientation:"white",turnColor:"white",coordinates:!0,coordinatesOnSquares:!1,ranksPosition:"right",autoCastle:!0,viewOnly:!1,disableContextMenu:!1,addPieceZIndex:!1,blockTouchScroll:!1,pieceKey:!1,trustAllEvents:!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},purple:{key:"purple",color:"#68217a",opacity:.65,lineWidth:10},pink:{key:"pink",color:"#ee2080",opacity:.5,lineWidth:10},white:{key:"white",color:"white",opacity:1,lineWidth:10}},prevSvgHash:""},hold:lr()}}var Vr={hilitePrimary:{key:"hilitePrimary",color:"#3291ff",opacity:1,lineWidth:1},hiliteWhite:{key:"hiliteWhite",color:"#ffffff",opacity:1,lineWidth:1}};function Gr(){let e=I("defs"),t=V(I("filter"),{id:"cg-filter-blur"});return t.appendChild(V(I("feGaussianBlur"),{stdDeviation:"0.019"})),e.appendChild(t),e}function Wr(e,t,n){var r;let i=e.drawable,o=i.current,s=o&&o.mouseSq?o:void 0,a=new Map,l=e.dom.bounds(),c=i.autoShapes.filter(k=>!k.piece);for(let k of i.shapes.concat(c).concat(s?[s]:[])){if(!k.dest)continue;let h=(r=a.get(k.dest))!==null&&r!==void 0?r:new Set,d=Ot(Rt(T(k.orig),e.orientation),l),w=Ot(Rt(T(k.dest),e.orientation),l);h.add(Mn(d,w)),a.set(k.dest,h)}let p=i.shapes.concat(c).map(k=>({shape:k,current:!1,hash:Fr(k,Pn(k.dest,a),!1,l)}));s&&p.push({shape:s,current:!0,hash:Fr(s,Pn(s.dest,a),!0,l)});let f=p.map(k=>k.hash).join(";");if(f===e.drawable.prevSvgHash)return;e.drawable.prevSvgHash=f;let C=t.querySelector("defs");Wo(i,p,C),Uo(p,t.querySelector("g"),n.querySelector("g"),k=>Zo(e,k,i.brushes,a,l))}function Wo(e,t,n){var r;let i=new Map,o;for(let l of t.filter(c=>c.shape.dest&&c.shape.brush))o=Ur(e.brushes[l.shape.brush],l.shape.modifiers),!((r=l.shape.modifiers)===null||r===void 0)&&r.hilite&&i.set(Tt(o).key,Tt(o)),i.set(o.key,o);let s=new Set,a=n.firstElementChild;for(;a;)s.add(a.getAttribute("cgKey")),a=a.nextElementSibling;for(let[l,c]of i.entries())s.has(l)||n.appendChild(Jo(c))}function Uo(e,t,n,r){let i=new Map;for(let o of e)i.set(o.hash,!1);for(let o of[t,n]){let s=[],a=o.firstElementChild,l;for(;a;)l=a.getAttribute("cgHash"),i.has(l)?i.set(l,!0):s.push(a),a=a.nextElementSibling;for(let c of s)o.removeChild(c)}for(let o of e.filter(s=>!i.get(s.hash)))for(let s of r(o))s.isCustom?n.appendChild(s.el):t.appendChild(s.el)}function Fr({orig:e,dest:t,brush:n,piece:r,modifiers:i,customSvg:o,label:s},a,l,c){var p,f;return[c.width,c.height,l,e,t,n,a&&"-",r&&jo(r),i&&Yo(i),o&&`custom-${Hr(o.html)},${(f=(p=o.center)===null||p===void 0?void 0:p[0])!==null&&f!==void 0?f:"o"}`,s&&`label-${Hr(s.text)}`].filter(C=>C).join(",")}function jo(e){return[e.color,e.role,e.scale].filter(t=>t).join(",")}function Yo(e){return[e.lineWidth,e.hilite&&"*"].filter(t=>t).join(",")}function Hr(e){let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n)>>>0;return t.toString()}function Zo(e,{shape:t,current:n,hash:r},i,o,s){var a,l;let c=Ot(Rt(T(t.orig),e.orientation),s),p=t.dest?Ot(Rt(T(t.dest),e.orientation),s):c,f=t.brush&&Ur(i[t.brush],t.modifiers),C=o.get(t.dest),k=[];if(f){let h=V(I("g"),{cgHash:r});k.push({el:h}),c[0]!==p[0]||c[1]!==p[1]?h.appendChild(Xo(t,f,c,p,n,Pn(t.dest,o))):h.appendChild(Qo(i[t.brush],c,n,s))}if(t.label){let h=t.label;(a=h.fill)!==null&&a!==void 0||(h.fill=t.brush&&i[t.brush].color);let d=t.brush?void 0:"tr";k.push({el:es(h,r,c,p,C,d),isCustom:!0})}if(t.customSvg){let h=(l=t.customSvg.center)!==null&&l!==void 0?l:"orig",[d,w]=h==="label"?Yr(c,p,C).map(y=>y-.5):h==="dest"?p:c,b=V(I("g"),{transform:`translate(${d},${w})`,cgHash:r});b.innerHTML=`<svg width="1" height="1" viewBox="0 0 100 100">${t.customSvg.html}</svg>`,k.push({el:b,isCustom:!0})}return k}function Qo(e,t,n,r){let i=ts(),o=(r.width+r.height)/(4*Math.max(r.width,r.height));return V(I("circle"),{stroke:e.color,"stroke-width":i[n?0:1],fill:"none",opacity:jr(e,n),cx:t[0],cy:t[1],r:o-i[1]/2})}function Tt(e){return["#ffffff","#fff","white"].includes(e.color)?Vr.hilitePrimary:Vr.hiliteWhite}function Xo(e,t,n,r,i,o){var s;function a(p){var f;let C=rs(o&&!i),k=r[0]-n[0],h=r[1]-n[1],d=Math.atan2(h,k),w=Math.cos(d)*C,b=Math.sin(d)*C;return V(I("line"),{stroke:p?Tt(t).color:t.color,"stroke-width":ns(t,i)+(p?.04:0),"stroke-linecap":"round","marker-end":`url(#arrowhead-${p?Tt(t).key:t.key})`,opacity:!((f=e.modifiers)===null||f===void 0)&&f.hilite?1:jr(t,i),x1:n[0],y1:n[1],x2:r[0]-w,y2:r[1]-b})}if(!(!((s=e.modifiers)===null||s===void 0)&&s.hilite))return a(!1);let l=I("g"),c=V(I("g"),{filter:"url(#cg-filter-blur)"});return c.appendChild(is(n,r)),c.appendChild(a(!0)),l.appendChild(c),l.appendChild(a(!1)),l}function Jo(e){let t=V(I("marker"),{id:"arrowhead-"+e.key,orient:"auto",overflow:"visible",markerWidth:4,markerHeight:4,refX:e.key.startsWith("hilite")?1.86:2.05,refY:2});return t.appendChild(V(I("path"),{d:"M0,0 V4 L3,2 Z",fill:e.color})),t.setAttribute("cgKey",e.key),t}function es(e,t,n,r,i,o){var s;let l=.4*.75**e.text.length,c=Yr(n,r,i),p=o==="tr"?.4:0,f=V(I("g"),{transform:`translate(${c[0]+p},${c[1]-p})`,cgHash:t});f.appendChild(V(I("circle"),{r:.4/2,"fill-opacity":o?1:.8,"stroke-opacity":o?1:.7,"stroke-width":.03,fill:(s=e.fill)!==null&&s!==void 0?s:"#666",stroke:"white"}));let C=V(I("text"),{"font-size":l,"font-family":"Noto Sans","text-anchor":"middle",fill:"white",y:.13*.75**e.text.length});return C.innerHTML=e.text,f.appendChild(C),f}function Rt(e,t){return t==="white"?e:[7-e[0],7-e[1]]}function Pn(e,t){return(e&&t.has(e)&&t.get(e).size>1)===!0}function I(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function V(e,t){for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.setAttribute(n,t[n]);return e}function Ur(e,t){return t?{color:e.color,opacity:Math.round(e.opacity*10)/10,lineWidth:Math.round(t.lineWidth||e.lineWidth),key:[e.key,t.lineWidth].filter(n=>n).join("")}:e}function ts(){return[3/64,4/64]}function ns(e,t){return(e.lineWidth||10)*(t?.85:1)/64}function jr(e,t){return(e.opacity||1)*(t?.9:1)}function rs(e){return(e?20:10)/64}function Ot(e,t){let n=Math.min(1,t.width/t.height),r=Math.min(1,t.height/t.width);return[(e[0]-3.5)*n,(3.5-e[1])*r]}function is(e,t){let n={from:[Math.floor(Math.min(e[0],t[0])),Math.floor(Math.min(e[1],t[1]))],to:[Math.ceil(Math.max(e[0],t[0])),Math.ceil(Math.max(e[1],t[1]))]};return V(I("rect"),{x:n.from[0],y:n.from[1],width:n.to[0]-n.from[0],height:n.to[1]-n.from[1],fill:"none",stroke:"none"})}function Mn(e,t,n=!0){let r=Math.atan2(t[1]-e[1],t[0]-e[0])+Math.PI;return n?(Math.round(r*8/Math.PI)+16)%16:r}function os(e,t){return Math.sqrt([e[0]-t[0],e[1]-t[1]].reduce((n,r)=>n+r*r,0))}function Yr(e,t,n){let r=os(e,t),i=Mn(e,t,!1);if(n&&(r-=33/64,n.size>1)){r-=10/64;let o=Mn(e,t);(n.has((o+1)%16)||n.has((o+15)%16))&&o&1&&(r-=.4)}return[e[0]-Math.cos(i)*r,e[1]-Math.sin(i)*r].map(o=>o+.5)}function Zr(e,t){e.innerHTML="",e.classList.add("cg-wrap");for(let l of or)e.classList.toggle("orientation-"+l,t.orientation===l);e.classList.toggle("manipulable",!t.viewOnly);let n=Q("cg-container");e.appendChild(n);let r=Q("cg-board");n.appendChild(r);let i,o,s;if(t.drawable.visible&&(i=V(I("svg"),{class:"cg-shapes",viewBox:"-4 -4 8 8",preserveAspectRatio:"xMidYMid slice"}),i.appendChild(Gr()),i.appendChild(I("g")),o=V(I("svg"),{class:"cg-custom-svgs",viewBox:"-3.5 -3.5 8 8",preserveAspectRatio:"xMidYMid slice"}),o.appendChild(I("g")),s=Q("cg-auto-pieces"),n.appendChild(i),n.appendChild(o),n.appendChild(s)),t.coordinates){let l=t.orientation==="black"?" black":"",c=t.ranksPosition==="left"?" left":"";if(t.coordinatesOnSquares){let p=t.orientation==="white"?f=>f+1:f=>8-f;le.forEach((f,C)=>n.appendChild(En(Ce.map(k=>f+k),"squares rank"+p(C)+l+c)))}else n.appendChild(En(Ce,"ranks"+l+c)),n.appendChild(En(le,"files"+l))}let a;return t.draggable.enabled&&t.draggable.showGhost&&(a=Q("piece","ghost"),He(a,!1),n.appendChild(a)),{board:r,container:n,wrap:e,ghost:a,svg:i,customSvg:o,autoPieces:s}}function En(e,t){let n=Q("coords",t),r;for(let i of e)r=Q("coord"),r.textContent=i,n.appendChild(r);return n}function Qr(e,t){if(!e.dropmode.active)return;ne(e),re(e);let n=e.dropmode.piece;if(n){e.pieces.set("a0",n);let r=ue(t),i=r&&ie(r,B(e),e.dom.bounds());i&&At(e,"a0",i)}e.dom.redraw()}function Jr(e,t){let n=e.dom.elements.board;if("ResizeObserver"in window&&new ResizeObserver(t).observe(e.dom.elements.wrap),(e.disableContextMenu||e.drawable.enabled)&&n.addEventListener("contextmenu",i=>i.preventDefault()),e.viewOnly)return;let r=as(e);n.addEventListener("touchstart",r,{passive:!1}),n.addEventListener("mousedown",r,{passive:!1})}function ei(e,t){let n=[];if("ResizeObserver"in window||n.push(Ye(document.body,"chessground.resize",t)),!e.viewOnly){let r=Xr(e,qr,Ar),i=Xr(e,Dr,_r);for(let s of["touchmove","mousemove"])n.push(Ye(document,s,r));for(let s of["touchend","mouseup"])n.push(Ye(document,s,i));let o=()=>e.dom.bounds.clear();n.push(Ye(document,"scroll",o,{capture:!0,passive:!0})),n.push(Ye(window,"resize",o,{passive:!0}))}return()=>n.forEach(r=>r())}function Ye(e,t,n,r){return e.addEventListener(t,n,r),()=>e.removeEventListener(t,n,r)}var as=e=>t=>{e.draggable.current?Te(e):e.drawable.current?Sn(e):t.shiftKey||St(t)?e.drawable.enabled&&Mr(e,t):e.viewOnly||(e.dropmode.active?Qr(e,t):Rr(e,t))},Xr=(e,t,n)=>r=>{e.drawable.current?e.drawable.enabled&&n(e,r):e.viewOnly||t(e,r)};function ni(e){let t=B(e),n=Me(e.dom.bounds()),r=e.dom.elements.board,i=e.pieces,o=e.animation.current,s=o?o.plan.anims:new Map,a=o?o.plan.fadings:new Map,l=e.draggable.current,c=ls(e),p=new Set,f=new Set,C=new Map,k=new Map,h,d,w,b,y,E,x,P,A,_;for(d=r.firstChild;d;){if(h=d.cgKey,ii(d))if(w=i.get(h),y=s.get(h),E=a.get(h),b=d.cgPiece,d.cgDragging&&(!l||l.orig!==h)&&(d.classList.remove("dragging"),Z(d,n(T(h),t)),d.cgDragging=!1),!E&&d.cgFading&&(d.cgFading=!1,d.classList.remove("fading")),w){if(y&&d.cgAnimating&&b===Ze(w)){let v=T(h);v[0]+=y[2],v[1]+=y[3],d.classList.add("anim"),Z(d,n(v,t))}else d.cgAnimating&&(d.cgAnimating=!1,d.classList.remove("anim"),Z(d,n(T(h),t)),e.addPieceZIndex&&(d.style.zIndex=An(T(h),t)));b===Ze(w)&&(!E||!d.cgFading)?p.add(h):E&&b===Ze(E)?(d.classList.add("fading"),d.cgFading=!0):_n(C,b,d)}else _n(C,b,d);else if(oi(d)){let v=d.className;c.get(h)===v?f.add(h):_n(k,v,d)}d=d.nextSibling}for(let[v,R]of c)if(!f.has(v)){A=k.get(R),_=A&&A.pop();let O=n(T(v),t);if(_)_.cgKey=v,Z(_,O);else{let N=Q("square",R);N.cgKey=v,Z(N,O),r.insertBefore(N,r.firstChild)}}for(let[v,R]of i)if(y=s.get(v),!p.has(v))if(x=C.get(Ze(R)),P=x&&x.pop(),P){P.cgKey=v,P.cgFading&&(P.classList.remove("fading"),P.cgFading=!1);let O=T(v);e.addPieceZIndex&&(P.style.zIndex=An(O,t)),y&&(P.cgAnimating=!0,P.classList.add("anim"),O[0]+=y[2],O[1]+=y[3]),Z(P,n(O,t))}else{let O=Ze(R),N=Q("piece",O),K=T(v);N.cgPiece=O,N.cgKey=v,y&&(N.cgAnimating=!0,K[0]+=y[2],K[1]+=y[3]),Z(N,n(K,t)),e.addPieceZIndex&&(N.style.zIndex=An(K,t)),r.appendChild(N)}for(let v of C.values())ti(e,v);for(let v of k.values())ti(e,v)}function ri(e){let t=B(e),n=Me(e.dom.bounds()),r=e.dom.elements.board.firstChild;for(;r;)(ii(r)&&!r.cgAnimating||oi(r))&&Z(r,n(T(r.cgKey),t)),r=r.nextSibling}function Nn(e){var t,n;let r=e.dom.elements.wrap.getBoundingClientRect(),i=e.dom.elements.container,o=r.height/r.width,s=Math.floor(r.width*window.devicePixelRatio/8)*8/window.devicePixelRatio,a=s*o;i.style.width=s+"px",i.style.height=a+"px",e.dom.bounds.clear(),(t=e.addDimensionsCssVarsTo)===null||t===void 0||t.style.setProperty("---cg-width",s+"px"),(n=e.addDimensionsCssVarsTo)===null||n===void 0||n.style.setProperty("---cg-height",a+"px")}var ii=e=>e.tagName==="PIECE",oi=e=>e.tagName==="SQUARE";function ti(e,t){for(let n of t)e.dom.elements.board.removeChild(n)}function An(e,t){let r=e[1];return`${t?10-r:3+r}`}var Ze=e=>`${e.color} ${e.role}`;function ls(e){var t,n,r;let i=new Map;if(e.lastMove&&e.highlight.lastMove)for(let a of e.lastMove)ge(i,a,"last-move");if(e.check&&e.highlight.check&&ge(i,e.check,"check"),e.selected&&(ge(i,e.selected,"selected"),e.movable.showDests)){let a=(t=e.movable.dests)===null||t===void 0?void 0:t.get(e.selected);if(a)for(let c of a)ge(i,c,"move-dest"+(e.pieces.has(c)?" oc":""));let l=(r=(n=e.premovable.customDests)===null||n===void 0?void 0:n.get(e.selected))!==null&&r!==void 0?r:e.premovable.dests;if(l)for(let c of l)ge(i,c,"premove-dest"+(e.pieces.has(c)?" oc":""))}let o=e.premovable.current;if(o)for(let a of o)ge(i,a,"current-premove");else e.predroppable.current&&ge(i,e.predroppable.current.key,"current-premove");let s=e.exploding;if(s)for(let a of s.keys)ge(i,a,"exploding"+s.stage);return e.highlight.custom&&e.highlight.custom.forEach((a,l)=>{ge(i,l,a)}),i}function ge(e,t,n){let r=e.get(t);r?e.set(t,`${r} ${n}`):e.set(t,n)}function _n(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function si(e,t,n){let r=new Map,i=[];for(let a of e)r.set(a.hash,!1);let o=t.firstElementChild,s;for(;o;)s=o.getAttribute("cgHash"),r.has(s)?r.set(s,!0):i.push(o),o=o.nextElementSibling;for(let a of i)t.removeChild(a);for(let a of e)r.get(a.hash)||t.appendChild(n(a))}function ai(e,t){let r=e.drawable.autoShapes.filter(i=>i.piece).map(i=>({shape:i,hash:hs(i),current:!1}));si(r,t,i=>us(e,i,e.dom.bounds()))}function ci(e){var t;let n=B(e),r=Me(e.dom.bounds()),i=(t=e.dom.elements.autoPieces)===null||t===void 0?void 0:t.firstChild;for(;i;)an(i,r(T(i.cgKey),n),i.cgScale),i=i.nextSibling}function us(e,{shape:t,hash:n},r){var i,o,s;let a=t.orig,l=(i=t.piece)===null||i===void 0?void 0:i.role,c=(o=t.piece)===null||o===void 0?void 0:o.color,p=(s=t.piece)===null||s===void 0?void 0:s.scale,f=Q("piece",`${l} ${c}`);return f.setAttribute("cgHash",n),f.cgKey=a,f.cgScale=p,an(f,Me(r)(T(a),B(e)),p),f}var hs=e=>{var t,n,r;return[e.orig,(t=e.piece)===null||t===void 0?void 0:t.role,(n=e.piece)===null||n===void 0?void 0:n.color,(r=e.piece)===null||r===void 0?void 0:r.scale].join(",")};function li(e,t){let n=zr();Nt(n,t||{});function r(){let i="dom"in n?n.dom.unbind:void 0,o=Zr(e,n),s=cr(()=>o.board.getBoundingClientRect()),a=p=>{ni(c),o.autoPieces&&ai(c,o.autoPieces),!p&&o.svg&&Wr(c,o.svg,o.customSvg)},l=()=>{Nn(c),ri(c),o.autoPieces&&ci(c)},c=n;return c.dom={elements:o,bounds:s,redraw:fs(a),redrawNow:a,unbind:i},c.drawable.prevSvgHash="",Nn(c),a(!1),Jr(c,l),i||(c.dom.unbind=ei(c,l)),c.events.insert&&c.events.insert(o),c}return $r(r(),r)}function fs(e){let t=!1;return()=>{t||(t=!0,requestAnimationFrame(()=>{e(),t=!1}))}}function ps(e,t){return document.createElement(e,t)}function ms(e,t,n){return document.createElementNS(e,t,n)}function gs(){return Re(document.createDocumentFragment())}function ks(e){return document.createTextNode(e)}function bs(e){return document.createComment(e)}function ws(e,t,n){if(ke(e)){let r=e;for(;r&&ke(r);)r=Re(r).parent;e=r??e}ke(t)&&(t=Re(t,e)),n&&ke(n)&&(n=Re(n).firstChildNode),e.insertBefore(t,n)}function vs(e,t){e.removeChild(t)}function ys(e,t){ke(t)&&(t=Re(t,e)),e.appendChild(t)}function ui(e){if(ke(e)){for(;e&&ke(e);)e=Re(e).parent;return e??null}return e.parentNode}function xs(e){var t;if(ke(e)){let n=Re(e),r=ui(n);if(r&&n.lastChildNode){let i=Array.from(r.childNodes),o=i.indexOf(n.lastChildNode);return(t=i[o+1])!==null&&t!==void 0?t:null}return null}return e.nextSibling}function Ss(e){return e.tagName}function Cs(e,t){e.textContent=t}function Ps(e){return e.textContent}function Ms(e){return e.nodeType===1}function Es(e){return e.nodeType===3}function As(e){return e.nodeType===8}function ke(e){return e.nodeType===11}function Re(e,t){var n,r,i;let o=e;return(n=o.parent)!==null&&n!==void 0||(o.parent=t??null),(r=o.firstChildNode)!==null&&r!==void 0||(o.firstChildNode=e.firstChild),(i=o.lastChildNode)!==null&&i!==void 0||(o.lastChildNode=e.lastChild),o}var hi={createElement:ps,createElementNS:ms,createTextNode:ks,createDocumentFragment:gs,createComment:bs,insertBefore:ws,removeChild:vs,appendChild:ys,parentNode:ui,nextSibling:xs,tagName:Ss,setTextContent:Cs,getTextContent:Ps,isElement:Ms,isText:Es,isComment:As,isDocumentFragment:ke};function Oe(e,t,n,r,i){let o=t===void 0?void 0:t.key;return{sel:e,data:t,children:n,text:r,elm:i,key:o}}var Qe=Array.isArray;function Be(e){return typeof e=="string"||typeof e=="number"||e instanceof String||e instanceof Number}function Tn(e){return e===void 0}function Y(e){return e!==void 0}var Rn=Oe("",{},[],void 0,void 0);function Xe(e,t){var n,r;let i=e.key===t.key,o=((n=e.data)===null||n===void 0?void 0:n.is)===((r=t.data)===null||r===void 0?void 0:r.is),s=e.sel===t.sel,a=!e.sel&&e.sel===t.sel?typeof e.text==typeof t.text:!0;return s&&i&&o&&a}function _s(){throw new Error("The document fragment is not supported on this platform.")}function Ns(e,t){return e.isElement(t)}function Ts(e,t){return e.isDocumentFragment(t)}function Rs(e,t,n){var r;let i={};for(let o=t;o<=n;++o){let s=(r=e[o])===null||r===void 0?void 0:r.key;s!==void 0&&(i[s]=o)}return i}var Os=["create","update","remove","destroy","pre","post"];function On(e,t,n){let r={create:[],update:[],remove:[],destroy:[],pre:[],post:[]},i=t!==void 0?t:hi;for(let h of Os)for(let d of e){let w=d[h];w!==void 0&&r[h].push(w)}function o(h){let d=h.id?"#"+h.id:"",w=h.getAttribute("class"),b=w?"."+w.split(" ").join("."):"";return Oe(i.tagName(h).toLowerCase()+d+b,{},[],void 0,h)}function s(h){return Oe(void 0,{},[],void 0,h)}function a(h,d){return function(){if(--d===0){let b=i.parentNode(h);i.removeChild(b,h)}}}function l(h,d){var w,b,y,E;let x,P=h.data;if(P!==void 0){let v=(w=P.hook)===null||w===void 0?void 0:w.init;Y(v)&&(v(h),P=h.data)}let A=h.children,_=h.sel;if(_==="!")Tn(h.text)&&(h.text=""),h.elm=i.createComment(h.text);else if(_!==void 0){let v=_.indexOf("#"),R=_.indexOf(".",v),O=v>0?v:_.length,N=R>0?R:_.length,K=v!==-1||R!==-1?_.slice(0,Math.min(O,N)):_,X=h.elm=Y(P)&&Y(x=P.ns)?i.createElementNS(x,K,P):i.createElement(K,P);for(O<N&&X.setAttribute("id",_.slice(O+1,N)),R>0&&X.setAttribute("class",_.slice(N+1).replace(/\./g," ")),x=0;x<r.create.length;++x)r.create[x](Rn,h);if(Qe(A))for(x=0;x<A.length;++x){let $n=A[x];$n!=null&&i.appendChild(X,l($n,d))}else Be(h.text)&&i.appendChild(X,i.createTextNode(h.text));let tt=h.data.hook;Y(tt)&&((b=tt.create)===null||b===void 0||b.call(tt,Rn,h),tt.insert&&d.push(h))}else if(!((y=n?.experimental)===null||y===void 0)&&y.fragments&&h.children){for(h.elm=((E=i.createDocumentFragment)!==null&&E!==void 0?E:_s)(),x=0;x<r.create.length;++x)r.create[x](Rn,h);for(x=0;x<h.children.length;++x){let v=h.children[x];v!=null&&i.appendChild(h.elm,l(v,d))}}else h.elm=i.createTextNode(h.text);return h.elm}function c(h,d,w,b,y,E){for(;b<=y;++b){let x=w[b];x!=null&&i.insertBefore(h,l(x,E),d)}}function p(h){var d,w;let b=h.data;if(b!==void 0){(w=(d=b?.hook)===null||d===void 0?void 0:d.destroy)===null||w===void 0||w.call(d,h);for(let y=0;y<r.destroy.length;++y)r.destroy[y](h);if(h.children!==void 0)for(let y=0;y<h.children.length;++y){let E=h.children[y];E!=null&&typeof E!="string"&&p(E)}}}function f(h,d,w,b){for(var y,E;w<=b;++w){let x,P,A=d[w];if(A!=null)if(Y(A.sel)){p(A),x=r.remove.length+1,P=a(A.elm,x);for(let v=0;v<r.remove.length;++v)r.remove[v](A,P);let _=(E=(y=A?.data)===null||y===void 0?void 0:y.hook)===null||E===void 0?void 0:E.remove;Y(_)?_(A,P):P()}else A.children?(p(A),f(h,A.children,0,A.children.length-1)):i.removeChild(h,A.elm)}}function C(h,d,w,b){let y=0,E=0,x=d.length-1,P=d[0],A=d[x],_=w.length-1,v=w[0],R=w[_],O,N,K,X;for(;y<=x&&E<=_;)P==null?P=d[++y]:A==null?A=d[--x]:v==null?v=w[++E]:R==null?R=w[--_]:Xe(P,v)?(k(P,v,b),P=d[++y],v=w[++E]):Xe(A,R)?(k(A,R,b),A=d[--x],R=w[--_]):Xe(P,R)?(k(P,R,b),i.insertBefore(h,P.elm,i.nextSibling(A.elm)),P=d[++y],R=w[--_]):Xe(A,v)?(k(A,v,b),i.insertBefore(h,A.elm,P.elm),A=d[--x],v=w[++E]):(O===void 0&&(O=Rs(d,y,x)),N=O[v.key],Tn(N)?i.insertBefore(h,l(v,b),P.elm):(K=d[N],K.sel!==v.sel?i.insertBefore(h,l(v,b),P.elm):(k(K,v,b),d[N]=void 0,i.insertBefore(h,K.elm,P.elm))),v=w[++E]);E<=_&&(X=w[_+1]==null?null:w[_+1].elm,c(h,X,w,E,_,b)),y<=x&&f(h,d,y,x)}function k(h,d,w){var b,y,E,x,P,A,_,v;let R=(b=d.data)===null||b===void 0?void 0:b.hook;(y=R?.prepatch)===null||y===void 0||y.call(R,h,d);let O=d.elm=h.elm;if(h===d)return;if(d.data!==void 0||Y(d.text)&&d.text!==h.text){(E=d.data)!==null&&E!==void 0||(d.data={}),(x=h.data)!==null&&x!==void 0||(h.data={});for(let X=0;X<r.update.length;++X)r.update[X](h,d);(_=(A=(P=d.data)===null||P===void 0?void 0:P.hook)===null||A===void 0?void 0:A.update)===null||_===void 0||_.call(A,h,d)}let N=h.children,K=d.children;Tn(d.text)?Y(N)&&Y(K)?N!==K&&C(O,N,K,w):Y(K)?(Y(h.text)&&i.setTextContent(O,""),c(O,null,K,0,K.length-1,w)):Y(N)?f(O,N,0,N.length-1):Y(h.text)&&i.setTextContent(O,""):h.text!==d.text&&(Y(N)&&f(O,N,0,N.length-1),i.setTextContent(O,d.text)),(v=R?.postpatch)===null||v===void 0||v.call(R,h,d)}return function(d,w){let b,y,E,x=[];for(b=0;b<r.pre.length;++b)r.pre[b]();for(Ns(i,d)?d=o(d):Ts(i,d)&&(d=s(d)),Xe(d,w)?k(d,w,x):(y=d.elm,E=i.parentNode(y),l(w,x),E!==null&&(i.insertBefore(E,w.elm,i.nextSibling(y)),f(E,[d],0,0))),b=0;b<x.length;++b)x[b].data.hook.insert(x[b]);for(b=0;b<r.post.length;++b)r.post[b]();return w}}function fi(e,t,n){if(e.ns="http://www.w3.org/2000/svg",n!=="foreignObject"&&t!==void 0)for(let r=0;r<t.length;++r){let i=t[r];if(typeof i=="string")continue;let o=i.data;o!==void 0&&fi(o,i.children,i.sel)}}function S(e,t,n){let r={},i,o,s;if(n!==void 0?(t!==null&&(r=t),Qe(n)?i=n:Be(n)?o=n.toString():n&&n.sel&&(i=[n])):t!=null&&(Qe(t)?i=t:Be(t)?o=t.toString():t&&t.sel?i=[t]:r=t),i!==void 0)for(s=0;s<i.length;++s)Be(i[s])&&(i[s]=Oe(void 0,void 0,void 0,i[s],void 0));return e[0]==="s"&&e[1]==="v"&&e[2]==="g"&&(e.length===3||e[3]==="."||e[3]==="#")&&fi(r,i,e),Oe(e,r,i,o,void 0)}var qs="http://www.w3.org/1999/xlink",Ds="http://www.w3.org/XML/1998/namespace";function pi(e,t){let n,r=t.elm,i=e.data.attrs,o=t.data.attrs;if(!(!i&&!o)&&i!==o){i=i||{},o=o||{};for(n in o){let s=o[n];i[n]!==s&&(s===!0?r.setAttribute(n,""):s===!1?r.removeAttribute(n):n.charCodeAt(0)!==120?r.setAttribute(n,s):n.charCodeAt(3)===58?r.setAttributeNS(Ds,n,s):n.charCodeAt(5)===58?r.setAttributeNS(qs,n,s):r.setAttribute(n,s))}for(n in i)n in o||r.removeAttribute(n)}}var qn={create:pi,update:pi};function mi(e,t){let n,r,i=t.elm,o=e.data.class,s=t.data.class;if(!(!o&&!s)&&o!==s){o=o||{},s=s||{};for(r in o)o[r]&&!Object.prototype.hasOwnProperty.call(s,r)&&i.classList.remove(r);for(r in s)n=s[r],n!==o[r]&&i.classList[n?"add":"remove"](r)}}var Dn={create:mi,update:mi};var gi=e=>{let t=Ln[e];return t?S("nag",{attrs:{title:t.name}},t.symbol):void 0},Ln={1:{symbol:"!",name:"Good move"},2:{symbol:"?",name:"Mistake"},3:{symbol:"!!",name:"Brilliant move"},4:{symbol:"??",name:"Blunder"},5:{symbol:"!?",name:"Interesting move"},6:{symbol:"?!",name:"Dubious move"},7:{symbol:"\u25A1",name:"Only move"},22:{symbol:"\u2A00",name:"Zugzwang"},10:{symbol:"=",name:"Equal position"},13:{symbol:"\u221E",name:"Unclear position"},14:{symbol:"\u2A72",name:"White is slightly better"},15:{symbol:"\u2A71",name:"Black is slightly better"},16:{symbol:"\xB1",name:"White is better"},17:{symbol:"\u2213",name:"Black is better"},18:{symbol:"+\u2212",name:"White is winning"},19:{symbol:"-+",name:"Black is winning"},146:{symbol:"N",name:"Novelty"},32:{symbol:"\u2191\u2191",name:"Development"},36:{symbol:"\u2191",name:"Initiative"},40:{symbol:"\u2192",name:"Attack"},132:{symbol:"\u21C6",name:"Counterplay"},138:{symbol:"\u2295",name:"Time trouble"},44:{symbol:"=\u221E",name:"With compensation"},140:{symbol:"\u2206",name:"With the idea"}};function bi(e,t,n){for(let r of["touchstart","mousedown"])e.addEventListener(r,i=>{t(i),i.preventDefault(),n&&n()},{passive:!1})}var Bn=(e,t,n,r=!0)=>Ie(i=>i.addEventListener(e,o=>{let s=t(o);return s===!1&&o.preventDefault(),n?.(),s},{passive:r}));function Ie(e){return{insert:t=>e(t.elm)}}var Je=e=>{if(!e&&e!==0)return["-"];let t=new Date(e*1e3),n=":",r=ki(t.getUTCMinutes())+n+ki(t.getUTCSeconds());return e>=3600?[Math.floor(e/3600)+n+r]:[r]},ki=e=>(e<10?"0":"")+e,wi=(e,t,n,r)=>{let i=`${t.toUpperCase()}${n}`;if(!r)return`${i} ${e("aria.empty")}`;let o=e(`aria.piece.${r.role}`);return`${i} ${e(`aria.${r.color}`)} ${o}`},qt=(e,t,n)=>{let r=n?Ls(e,n):e;if(t&&t.length>0){let i=t.map(o=>Ln[o]?.name).filter(o=>o).join(", ");i&&(r+=`, ${i}`)}return r},Ls=(e,t)=>e.split("").map(n=>{if(n==="x")return t("san.takes");if(n==="+")return t("san.check");if(n==="#")return t("san.checkmate");if(n==="=")return t("san.promotesTo");if(n==="@")return t("san.droppedOn");let r=n.charCodeAt(0);return r>48&&r<58?n:r>96&&r<105?n.toUpperCase():n==="K"?t("aria.piece.king"):n==="Q"?t("aria.piece.queen"):n==="R"?t("aria.piece.rook"):n==="B"?t("aria.piece.bishop"):n==="N"?t("aria.piece.knight"):n==="O"?"O":n}).join(" ").replace("O - O - O",t("san.longCastling")).replace("O - O",t("san.shortCastling"));function vi(e){let t=0;return n=>{t+=n.deltaY*(n.deltaMode?40:1),Math.abs(t)>=4?(e(n,!0),t=0):e(n,!1)}}function yi(e,t){let n=()=>{e(),r=Math.max(100,r-r/15),i=setTimeout(n,r)},r=350,i=setTimeout(n,500);e();let o=t.type=="touchstart"?"touchend":"mouseup";document.addEventListener(o,()=>clearTimeout(i),{once:!0})}var Bs=e=>e.altKey||e.ctrlKey||e.shiftKey||e.metaKey||document.activeElement instanceof HTMLInputElement||document.activeElement instanceof HTMLTextAreaElement,xi=e=>t=>{Bs(t)||(t.key=="ArrowLeft"?e.goTo("prev"):t.key=="ArrowRight"?e.goTo("next"):t.key=="f"&&e.flip())};var Si=e=>S("div.lpv__menu.lpv__pane",{attrs:{role:"menu","aria-label":e.translate("menu")??"Menu"},hook:{insert:t=>{let n=t.elm;n.querySelector('[role="menuitem"]')?.focus(),Ks(e,n)}}},[S("button.lpv__menu__entry.lpv__menu__flip.lpv__fbt",{attrs:{role:"menuitem"},hook:Bn("click",e.flip)},e.translate("flipTheBoard")),e.opts.menu.analysisBoard?.enabled?S("a.lpv__menu__entry.lpv__menu__analysis.lpv__fbt",{attrs:{role:"menuitem",href:e.analysisUrl(),target:"_blank","aria-label":e.translate("aria.linkOpensInNewTab",e.translate("analysisBoard"))}},e.translate("analysisBoard")):void 0,e.opts.menu.practiceWithComputer?.enabled?S("a.lpv__menu__entry.lpv__menu__practice.lpv__fbt",{attrs:{role:"menuitem",href:e.practiceUrl(),target:"_blank","aria-label":e.translate("aria.linkOpensInNewTab",e.translate("practiceWithComputer"))}},e.translate("practiceWithComputer")):void 0,e.opts.menu.getPgn.enabled?S("button.lpv__menu__entry.lpv__menu__pgn.lpv__fbt",{attrs:{role:"menuitem"},hook:Bn("click",e.togglePgn)},e.translate("getPgn")):void 0,Is(e)]),Is=e=>{let t=e.game.metadata.externalLink,n=e.translate(e.game.metadata.isLichess?"viewOnLichess":"viewOnSite");return t&&S("a.lpv__menu__entry.lpv__fbt",{attrs:{role:"menuitem",href:t,target:"_blank","aria-label":e.translate("aria.linkOpensInNewTab",n)}},n)},Ci=e=>S("div.lpv__controls",{attrs:{role:"navigation","aria-label":e.translate("aria.navigationControls")}},[e.pane=="board"?void 0:Dt(e,"first","step-backward"),Dt(e,"prev","left-open"),S("button.lpv__fbt.lpv__controls__menu.lpv__icon",{class:{active:e.pane!="board","lpv__icon-ellipsis-vert":e.pane=="board"},hook:{insert:t=>{let n=t.elm;n.addEventListener("click",e.toggleMenu),e.menuButton=n}},attrs:{"aria-label":e.translate("menu"),"aria-expanded":String(e.pane==="menu"),"aria-haspopup":"menu"}},e.pane=="board"?void 0:"X"),Dt(e,"next","right-open"),e.pane=="board"?void 0:Dt(e,"last","step-forward")]),Dt=(e,t,n)=>{let r=e.pane=="board"&&!e.canGoTo(t);return S(`button.lpv__controls__goto.lpv__controls__goto--${t}.lpv__fbt.lpv__icon.lpv__icon-${n}`,{class:{disabled:r},hook:Ie(i=>bi(i,o=>yi(()=>e.goTo(t),o))),attrs:{"aria-label":e.translate(`aria.${t}`),"aria-disabled":String(r),disabled:r}})},Ks=(e,t)=>{let n=r=>{switch(r.key){case"Enter":case" ":r.preventDefault(),document.activeElement?.click();break;case"Escape":r.preventDefault(),e.toggleMenu();break}};t.addEventListener("keydown",n)};var et={"aria-hidden":!0},Lt={role:"presentation","aria-hidden":"true"},Pi=e=>{let t=e.curData();if(!Mt(t))return"";let n=Math.ceil(t.ply/2),r=t.ply%2===1?"white":"black",i=t.san,o=e.translate("aria.move",n.toString(),e.translate(`aria.${r}`),qt(i,t.nags,e.translate)),s=t.clocks&&t.clocks[r==="white"?"white":"black"];if(s!==void 0&&e.opts.showClocks){let l=Je(s).join("");l!=="-"&&(o+=", "+e.translate("aria.remaining",l))}let a=t.comments.join(" ").trim();return a&&(o+=`. ${a}`),o},Mi=e=>{let t=e.game,n=a=>{let l=a.name||e.translate("aria.unknownPlayer");return a.title&&(l=`${a.title} ${l}`),a.rating&&(l=`${l}, ${e.translate("aria.rated",a.rating.toString())}`),l},r=a=>!a||a==="*"?e.translate("aria.gameInProgress"):a==="1-0"?e.translate("aria.whitesWin"):a==="0-1"?e.translate("aria.blacksWin"):a==="1/2-1/2"?e.translate("aria.draw"):a,i=n(t.players.white),o=n(t.players.black),s=r(t.metadata.result);return e.translate("aria.chessGameBetween",i,o,s)};var Ai=e=>S("div.lpv__side",[S("div.lpv__moves",{attrs:{role:"complementary","aria-label":e.translate("aria.gameMoves")},hook:{insert:t=>{let n=t.elm;e.path.empty()||Ei(e,n),n.addEventListener("click",r=>{let i=r.target.getAttribute("data-path");i&&e.toPath(new te(i))},{passive:!0})},postpatch:(t,n)=>{e.autoScrollRequested&&(Ei(e,n.elm),e.autoScrollRequested=!1)}}},[...e.game.initial.comments.map(It),...Fs(e),...$s(e)])]),$s=e=>{let t=e.game.metadata.result;return t&&t!="*"?[S("comment.result",{attrs:{role:"note","aria-label":e.translate("aria.gameResult")}},e.game.metadata.result)]:[]},In=()=>S("button.move.empty",{attrs:{"aria-hidden":"true",disabled:!0}},"..."),Kn=e=>S("index",{attrs:Lt},`${e}.`),It=e=>S("comment",{attrs:{role:"note"}},e),zs=()=>S("paren.open",{attrs:et},"("),Vs=()=>S("paren.close",{attrs:et},")"),Bt=e=>Math.floor((e.ply-1)/2)+1,Fs=e=>{let t=Gs(e),n=[],r,i=e.game.moves.children.slice(1);for(e.game.initial.pos.turn=="black"&&e.game.mainline[0]&&n.push(Kn(e.game.initial.pos.fullmoves),In());r=(r||e.game.moves).children[0];){let o=r.data,s=o.ply%2==1;s&&n.push(Kn(Bt(o))),n.push(t(o));let a=s&&(i.length||o.comments.length)&&r.children.length;a&&n.push(In()),o.comments.forEach(l=>n.push(It(l))),i.forEach(l=>n.push(Hs(e.translate,t,l))),a&&n.push(Kn(Bt(o)),In()),i=r.children.slice(1)}return n},Hs=(e,t,n)=>S("variation",{attrs:{role:"group","aria-label":e("aria.variation")}},[...n.data.startingComments.map(It),..._i(t,n)]),_i=(e,t)=>{let n=[],r=[];t.data.ply%2==0&&n.push(S("index",{attrs:Lt},[Bt(t.data),"..."]));do{let i=t.data;i.ply%2==1&&n.push(S("index",{attrs:Lt},[Bt(i),"."])),n.push(e(i)),i.comments.forEach(o=>n.push(It(o))),r.forEach(o=>{n=[...n,zs(),..._i(e,o),Vs()]}),r=t.children.slice(1),t=t.children[0]}while(t);return n},Gs=e=>t=>S("button.move",{class:{current:e.path.equals(t.path),ancestor:e.path.contains(t.path),good:t.nags.includes(1),mistake:t.nags.includes(2),brilliant:t.nags.includes(3),blunder:t.nags.includes(4),interesting:t.nags.includes(5),inaccuracy:t.nags.includes(6)},attrs:{"data-path":t.path.path,role:"button","aria-label":e.translate("aria.move",Math.ceil(t.ply/2).toString(),e.translate(`aria.${t.ply%2===1?"white":"black"}`),qt(t.san,t.nags,e.translate))}},[t.san,...t.nags.map(gi)]),Ei=(e,t)=>{let n=t.querySelector(".current");if(!n){t.scrollTop=e.path.empty()?0:99999;return}t.scrollTop=n.offsetTop-t.offsetHeight/2+n.offsetHeight};function Kt(e,t){let n=t=="bottom"?e.orientation():M(e.orientation()),r=e.game.players[n],i=[r.title?S("span.lpv__player__title",r.title):void 0,S("span.lpv__player__name",r.name),r.rating?S("span.lpv__player__rating",["(",r.rating,")"]):void 0];return S(`div.lpv__player.lpv__player--${t}`,[r.isLichessUser&&r.name?S("a.lpv__player__person.ulpt.user-link",{attrs:{href:`${e.opts.lichess}/@/${r.name}`,"aria-label":e.translate("aria.viewProfileOnLichess",r.name)}},i):S("span.lpv__player__person",i),e.opts.showClocks?Ws(e,n):void 0])}var Ws=(e,t)=>{let n=e.curData(),r=n.clocks&&n.clocks[t];return typeof r==null?void 0:S("div.lpv__player__clock",{class:{active:t==n.turn},attrs:{role:"timer","aria-label":Je(r).join("")}},Je(r))};var Ni=e=>{let t=e.flipped;return S("div.lpv__sr-only",{attrs:{role:"grid","aria-label":e.translate("aria.accessibleChessboard"),"aria-hidden":"false"}},Us(e,t))},Us=(e,t)=>{let n=e.ground?.state.pieces||Le(e.curData().fen),r=t?Ce:wt,i=t?[...le].reverse():le;return r.map(o=>S("div",{attrs:{role:"row"}},i.map(s=>{let a=`${s}${o}`,l=n.get(a);return js(e.translate,s,o,l)})))},js=(e,t,n,r)=>{let i=wi(e,t,n,r);return S("span",{attrs:{role:"gridcell","aria-label":i}},i)};function $t(e){let t=e.opts,n=`lpv.lpv--moves-${t.showMoves}.lpv--controls-${t.showControls}${t.classes?"."+t.classes.replace(" ","."):""}`,r=t.showPlayers=="auto"?e.game.hasPlayerName():t.showPlayers;return S(`div.${n}`,{class:{"lpv--menu":e.pane!="board","lpv--players":r},attrs:{role:"region",tabindex:0,"aria-label":Mi(e)},hook:Ie(i=>{e.setGround(li(i.querySelector(".cg-wrap"),Qs(e,i))),t.keyboardToMove&&i.addEventListener("keydown",xi(e))})},[S("div.lpv__sr-only",{attrs:{"aria-live":"polite","aria-atomic":"true"}},Pi(e)),Ni(e),r?Kt(e,"top"):void 0,Ys(e),r?Kt(e,"bottom"):void 0,t.showControls?Ci(e):void 0,t.showMoves?Ai(e):void 0,e.pane=="menu"?Si(e):e.pane=="pgn"?Zs(e):void 0])}var Ys=e=>S("div.lpv__board",{attrs:et,hook:Ie(t=>{t.addEventListener("click",e.focus),e.opts.scrollToMove&&!("ontouchstart"in window)&&t.addEventListener("wheel",vi((n,r)=>{n.preventDefault(),n.deltaY>0&&r?e.goTo("next",!1):n.deltaY<0&&r&&e.goTo("prev",!1)}))})},S("div.cg-wrap")),Zs=e=>{let t=new Blob([e.opts.pgn],{type:"text/plain"});return S("div.lpv__pgn.lpv__pane",[S("a.lpv__pgn__download.lpv__fbt",{attrs:{href:window.URL.createObjectURL(t),download:e.opts.menu.getPgn.fileName||`${e.game.title()}.pgn`}},e.translate("download")),S("textarea.lpv__pgn__text",e.opts.pgn)])},Qs=(e,t)=>({viewOnly:!e.opts.drawArrows,addDimensionsCssVarsTo:t,drawable:{enabled:e.opts.drawArrows,visible:!0},disableContextMenu:e.opts.drawArrows,...e.opts.chessground||{},movable:{free:!1},draggable:{enabled:!1},selectable:{enabled:!1},...e.cgState()});var Xs={pgn:"*",fen:void 0,showPlayers:"auto",showClocks:!0,showMoves:"auto",showControls:!0,scrollToMove:!0,keyboardToMove:!0,orientation:void 0,initialPly:0,chessground:{},drawArrows:!0,menu:{getPgn:{enabled:!0,fileName:void 0},practiceWithComputer:{enabled:!0},analysisBoard:{enabled:!0}},lichess:"https://lichess.org",classes:void 0};function Ri(e,t){let n={...Xs};return Oi(n,t),n.fen&&(n.pgn=`[FEN "${n.fen}"]
|
|
4
|
+
${n.pgn}`),n.classes||(n.classes=e.className),n}function Oi(e,t){for(let n in t)typeof t[n]<"u"&&(Ti(e[n])&&Ti(t[n])?Oi(e[n],t[n]):e[n]=t[n])}function Ti(e){if(typeof e!="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Js(e,t){let n=On([Dn,qn]),r=Ri(e,t),i=new We(r,a),o=$t(i);e.innerHTML="";let s=n(e,o);i.div=s.elm;function a(){s=n(s,$t(i))}return i}export{Js as default};
|
package/dist/translation.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { Translator } from './interfaces';
|
|
2
|
-
export default function translate(
|
|
2
|
+
export default function translate(custom?: Translator): (key: string, ...args: string[]) => string;
|
package/dist/translation.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const defaultTranslator = (key) => defaultTranslations[key];
|
|
2
|
-
export default function translate(
|
|
3
|
-
return (key, ...args) => {
|
|
2
|
+
export default function translate(custom) {
|
|
3
|
+
return (key, ...args) => {
|
|
4
|
+
const translated = (custom && custom(key)) || defaultTranslator(key);
|
|
5
|
+
return interpolate(translated !== null && translated !== void 0 ? translated : key, args);
|
|
6
|
+
};
|
|
4
7
|
}
|
|
5
8
|
const interpolate = (str, args) => {
|
|
6
9
|
let result = str;
|
package/dist/translation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translation.js","sourceRoot":"","sources":["../src/translation.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAe,CAAC,GAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAEhF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"translation.js","sourceRoot":"","sources":["../src/translation.ts"],"names":[],"mappings":"AAEA,MAAM,iBAAiB,GAAe,CAAC,GAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAEhF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,MAAmB;IACnD,OAAO,CAAC,GAAW,EAAE,GAAG,IAAc,EAAE,EAAE;QACxC,MAAM,UAAU,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACrE,OAAO,WAAW,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,IAAc,EAAU,EAAE;IAC1D,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC1B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAA8B;IACrD,YAAY,EAAE,gBAAgB;IAC9B,aAAa,EAAE,gBAAgB;IAC/B,oBAAoB,EAAE,wBAAwB;IAC9C,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,cAAc;IAC1B,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,gBAAgB,EAAE,YAAY;IAC9B,iBAAiB,EAAE,aAAa;IAChC,gBAAgB,EAAE,WAAW;IAC7B,yBAAyB,EAAE,0BAA0B;IACrD,2BAA2B,EAAE,8BAA8B;IAC3D,uBAAuB,EAAE,yDAAyD;IAClF,qBAAqB,EAAE,kBAAkB;IACzC,gBAAgB,EAAE,YAAY;IAC9B,gBAAgB,EAAE,YAAY;IAC9B,WAAW,EAAE,MAAM;IACnB,oBAAoB,EAAE,gBAAgB;IACtC,YAAY,EAAE,UAAU;IACxB,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,OAAO;IACrB,gBAAgB,EAAE,cAAc;IAChC,wBAAwB,EAAE,4BAA4B;IACtD,2BAA2B,EAAE,uBAAuB;IACpD,iBAAiB,EAAE,MAAM;IACzB,kBAAkB,EAAE,OAAO;IAC3B,iBAAiB,EAAE,MAAM;IACzB,mBAAmB,EAAE,QAAQ;IAC7B,mBAAmB,EAAE,QAAQ;IAC7B,iBAAiB,EAAE,MAAM;IACzB,YAAY,EAAE,OAAO;IACrB,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,OAAO;IACpB,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,aAAa;IAC/B,eAAe,EAAE,YAAY;IAC7B,kBAAkB,EAAE,eAAe;IACnC,mBAAmB,EAAE,gBAAgB;CACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/types.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/util.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/squareSet.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/attacks.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/board.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/setup.d.ts","../node_modules/.pnpm/@badrap+result@0.3.1/node_modules/@badrap/result/dist/mjs/index.d.mts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/chess.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/compat.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/debug.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/fen.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/san.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/transform.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/variant.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/pgn.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/index.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/types.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/anim.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/drag.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/draw.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/state.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/config.d.ts","../src/path.ts","../src/interfaces.ts","../src/config.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/api.d.ts","../src/translation.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/util.d.ts","../src/game.ts","../src/pgn.ts","../src/pgnViewer.ts","../src/events.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/chessground.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/htmldomapi.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/helpers/attachto.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/style.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/eventlisteners.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/attributes.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/class.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/props.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/dataset.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/vnode.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/hooks.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/module.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/init.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/thunk.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/is.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/tovnode.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/h.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/jsx.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/index.d.ts","../src/view/glyph.ts","../src/view/util.ts","../src/view/menu.ts","../src/view/aria.ts","../src/view/side.ts","../src/view/player.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/fen.d.ts","../src/view/accessibleBoard.ts","../src/view/main.ts","../src/main.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/globals.typedarray.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/buffer.buffer.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/globals.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/events.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/utility.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/header.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/readable.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/fetch.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/formdata.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/connector.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/client-stats.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/client.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/errors.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/dispatcher.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/global-dispatcher.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/global-origin.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/pool-stats.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/pool.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/handlers.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/balanced-pool.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/h2c-client.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-interceptor.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-call-history.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-client.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-pool.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-errors.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/proxy-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/retry-handler.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/retry-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/api.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/cache-interceptor.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/interceptors.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/util.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/cookies.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/patch.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/websocket.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/eventsource.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/content-type.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/cache.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/index.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/storage.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/assert.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/assert/strict.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/async_hooks.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/buffer.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/child_process.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/cluster.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/console.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/constants.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/crypto.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/dgram.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/dns.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/dns/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/domain.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/events.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/fs.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/fs/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/http.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/http2.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/https.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/inspector.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/module.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/net.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/os.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/path.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/perf_hooks.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/process.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/punycode.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/querystring.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/readline.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/readline/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/repl.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/sea.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/sqlite.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream/consumers.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream/web.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/string_decoder.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/test.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/timers.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/timers/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/tls.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/trace_events.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/tty.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/url.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/util.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/v8.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/vm.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/wasi.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/worker_threads.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/zlib.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/index.d.ts"],"fileIdsList":[[112,163],[112,160,163],[112,162,163],[163],[112,163,168,197],[112,163,164,169,174,182,194,205],[112,163,164,165,174,182],[112,163,166,206],[112,163,167,168,175,183],[112,163,168,194,202],[112,163,169,171,174,182],[112,162,163,170],[112,163,171,172],[112,163,173,174],[112,162,163,174],[112,163,174,175,176,194,205],[112,163,174,175,176,189,194,197],[112,156,163,171,174,177,182,194,205],[112,163,174,175,177,178,182,194,202,205],[112,163,177,179,194,202,205],[110,111,112,113,114,115,116,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],[112,163,174,180],[112,163,181,205],[112,163,171,174,182,194],[112,163,183],[112,163,184],[112,162,163,185],[112,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],[112,163,187],[112,163,188],[112,163,174,189,190],[112,163,189,191,206,208],[112,163,174,194,195,197],[112,163,196,197],[112,163,194,195],[112,163,197],[112,163,198],[112,160,163,194,199],[112,163,174,200,201],[112,163,200,201],[112,163,168,182,194,202],[112,163,203],[112,163,182,204],[112,163,177,188,205],[112,163,168,206],[112,163,194,207],[112,163,181,208],[112,163,209],[112,156,163],[112,163,174,176,185,194,197,205,207,208,210],[112,163,194,211],[65,69,112,163],[65,68,69,70,112,163],[70,74,112,163],[65,68,69,112,163],[65,112,163],[65,66,67,68,112,163],[49,51,112,163],[49,51,53,54,55,112,163],[49,56,112,163],[49,51,53,56,112,163],[49,50,51,52,53,54,56,57,58,59,60,61,62,63,112,163],[49,55,56,59,112,163],[49,51,53,112,163],[49,112,163],[51,53,54,112,163],[49,51,54,55,56,112,163],[90,112,163],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,112,163],[82,90,92,112,163],[90,97,112,163],[92,112,163],[90,92,112,163],[91,112,163],[82,90,112,163],[83,84,85,86,87,88,89,91,112,163],[112,123,126,129,130,163,205],[112,126,163,194,205],[112,126,130,163,205],[112,163,194],[112,120,163],[112,124,163],[112,122,123,126,163,205],[112,163,182,202],[112,163,212],[112,120,163,212],[112,122,126,163,182,205],[112,117,118,119,121,125,163,174,194,205],[112,126,134,163],[112,118,124,163],[112,126,150,151,163],[112,118,121,126,163,197,205,212],[112,126,163],[112,122,126,163,205],[112,117,163],[112,120,121,122,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,163],[112,126,143,146,163,171],[112,126,134,135,136,163],[112,124,126,135,137,163],[112,125,163],[112,118,120,126,163],[112,126,130,135,137,163],[112,130,163],[112,124,126,129,163,205],[112,118,122,126,134,163],[112,126,143,163],[112,120,126,150,163,197,210,212],[72,112,163],[79,112,163],[63,71,72,112,163],[63,64,65,70,71,112,163],[72,73,79,99,108,112,163],[57,59,60,63,64,71,72,77,112,163],[64,70,71,72,74,75,76,77,78,112,163],[65,72,76,79,99,101,106,112,163],[72,77,79,101,112,163],[99,112,163],[70,79,80,81,99,101,102,103,104,105,107,112,163],[72,79,80,99,101,112,163],[64,79,99,101,112,163],[71,72,77,79,99,100,101,103,112,163],[65,72,99,100,112,163]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"121ed5b84a4c25bf16bef637f62b92947e96e9a5f0fd3a584c3966ea8effd67d","impliedFormat":99},{"version":"f54493905a6b6664e86f1ee94a9b9292b91aa99d65fc4638fd1d20953394b066","impliedFormat":99},{"version":"9f1a606af4c42d72f626765f0cd71fe9b0aa0841ea3e837e7dc0f3248204b288","impliedFormat":99},{"version":"1ba6b78f7d38a841e0fdc106af31a144672583131b024e31378a27f881de9c34","impliedFormat":99},{"version":"115387be50fd2e5526c200361fc85aac5d140f5ae4735ba8040ff955a10274ad","impliedFormat":99},{"version":"83ef3841bae34e649fd7c1c6be499444d28eb962f57c50a55b8ada885f9ab089","impliedFormat":99},{"version":"d4feb92f592533eb93af021c53a852cdd74ea086f882361e7e2bb25d3715d733","impliedFormat":99},{"version":"4f480c4465d9977a759a8141deec88953d4a2d8aa3504edce7910b2db95a0d5d","impliedFormat":99},{"version":"8c323d171f1cd143cafdfceb8bef95f1f195211beac8e8e5f796a1b595e8d1cf","impliedFormat":99},{"version":"114aeac4618b952272947d290fc8aeba415d3ad560934df4c2809c58a02b55a3","impliedFormat":99},{"version":"1cde5056744518c5dfbdfc8d550330bbfe388fb3f105876bdca9676f7a237b29","impliedFormat":99},{"version":"4adc1c36904421747e3c6d5b70dbe9e1ed06c49f6ea2868b2ec6a334f85c35e5","impliedFormat":99},{"version":"53dc5dcff95f7a72e08124e57fe5c8e72e64f51e25eb77b3b375db24a7b9c86f","impliedFormat":99},{"version":"eec39d6c3bead7fa60bad28f01334484ee4587f371cf9e67ebb3d4c258a65ea4","impliedFormat":99},{"version":"9e3a64c568d637dfd6a99dc8f9921e2db8b65f4b730acb3fa80a8799164675c8","impliedFormat":99},{"version":"200ca2f2f64d5fdb78bceb9c0ca93571e83b1a3b168116da7b6644a4e2fcfe2f","impliedFormat":99},{"version":"9a9e2a57052135eff04d8d3643e5f44e79bd99d0b98b76e6f557685f0175b123","impliedFormat":99},{"version":"4d2a9be5f03a0b85adff5cfa50a46e6bdc84cfb5186966ee83b5c4aa2d843bce","impliedFormat":99},{"version":"14fbc0091eb1d2d336d59a3c0771a9591e997fad2a1e2ad544ab53722249447e","impliedFormat":99},{"version":"c28fb943fc575035531e497c300bb85ad20c9ee34af6bc5f133a2480e9963325","impliedFormat":99},{"version":"1ba851490289552776917488106a39df84b29349eb2eb084ca193aa0c733e2b7","impliedFormat":99},{"version":"fc912b8633d525208feaa42263aa4dac1b4a67163ae22b17f234067d9eaf65f6","impliedFormat":99},{"version":"b2eb3e2e585446d4a521f21b20904581654925c3826bec560ad457fc39512a16","signature":"ab8d2ec9b55e4404c0214a28fb884c1490af913964b22c23d6a224d5ebda139a"},{"version":"5ef2e25d245b0feb1d2ea569a7e1ad3331920989b6278898e35ecf0d989b3971","signature":"da9dd024ecf92fac09dfcb0de5212741c8e20e17b60bb260cc1e4cff24fb53e9"},{"version":"baae1124e718c52a55a37cae7c86dcca7919951644a73a2817a1cbda83741290","signature":"e2b7709634bb6f4698ef0e277ec41208ea9d80ca39a734fea59b219c74ef392f"},{"version":"bac3a4cd114dfcb542cc56834ed4813744daf1289d519afa90740f5b5746c750","impliedFormat":99},{"version":"e9ff5039d7ff14e07f6c31b0af818f92c06dbd36b805a0756d4cdbe515f0b2c0","signature":"856c980618a973e45157474719051ad20b9a810d667eda791703679bd74f9819"},{"version":"3d2d1705a0e535639a1c7e45f9decfc259de4a789d5ad721b1a4dc895cbeaf2b","impliedFormat":99},{"version":"12b12dc3ee9d168cece989eee68e903071c69db808914cf2bb05b65ba9d5c76a","signature":"3aa388df5a873d69898c90fcc0f26d3d520dee117c17c4ce49cc132ed68db198"},{"version":"bc50e721604d26e21eb219ef26ffdd3a303bc4d51188cf95227510387169ac23","signature":"536d062cb2ebdec1d307aecdb77c2d6f89b4fce481f8f66d181886b2b5bf8fef"},{"version":"2494e863941e69fddf53a567601bb12f75f5ac7b1381c44d2d7ba8bb72415d0d","signature":"563198523f84ed2ef68229568d3fee2916721ff85fec3f7329d721529fe923a8"},{"version":"be076041c123ed99f70f62fc8b4a9238ba31216b5bc7ab990669443eb8c2806f","signature":"4a0559a3703462a9186acc1cb843281d733bccca72f0e76888c1a113c59b2e5e"},{"version":"42de8107b60eedc59972b085a42b80a115e15a3427de7019881c336c80a08a97","impliedFormat":99},{"version":"095a402135de9fbfda29ba7c984bf54b9e65757396b4165706d898e9baa83ed5","impliedFormat":1},{"version":"dbd5601bf95b6cda2d3ce749f1618d3a26249adfa59d6a38776d9b41688d066b","impliedFormat":1},{"version":"86461653a4843ef47052082a3a5fbf7c013dfef98b394497fdaf7d3e3f50acfb","impliedFormat":1},{"version":"13a50fee16e28ffe07be8cdc77850944850f733364c687268ed1c15fab2fc934","impliedFormat":1},{"version":"7cf2ff1f0bb971089219c17c6b70ae76fd55af04ed5c71939bdea4e79c87b770","impliedFormat":1},{"version":"d631456e653d62a7041e73ce75377903d7397d05a9e2bc33ce2d5d71be427916","impliedFormat":1},{"version":"50761b8a64afb4c8b727cc47b42ec88ad0a552bf9f9ff991d1a69decdb864ba6","impliedFormat":1},{"version":"4c48b6c8d023119098489c41d73930ae130a77b562856e716ad2b4dbd6e28f87","impliedFormat":1},{"version":"67ca5abe08a5f7b50db326c7653b15887e5e9ed2fc56ac4845019de6b58f7ba8","impliedFormat":1},{"version":"b09163da65a31726be29812f27a10f141ddae782bfbf9358611a78966aeb2968","impliedFormat":1},{"version":"84e5250e7b199be001fac9ca57836f9053d5bcc1f360b8b38717e8b4d0771da0","impliedFormat":1},{"version":"ab1c05d701b3357b48b42d66d991d7fb4474529d1804090bf26c4c2bb9e18558","impliedFormat":1},{"version":"2957b0f8e46e3ca5f394af395db80b702d1ae862795c27f6bc4637509383a356","impliedFormat":1},{"version":"e50f096cb424b63343ad5814622623f15cf3830f41710376bebb3c7f71554713","impliedFormat":1},{"version":"7c3511a2098fd92e99e9b37b85a431527c4cb86c29814545afcaf80fe550f6ac","impliedFormat":1},{"version":"e6a92923694f59fe3aba1ae103e89869d3c41e0d837998395e9fc5b888751363","impliedFormat":1},{"version":"5dafb1427f8a44f47c33cd20b5bc5944ba194049782de9f9bd023cea4b8b8c44","impliedFormat":1},{"version":"e19228db0a5451f604f6702359a93919a1735809cbc0cd8a0744f29777c438c2","impliedFormat":1},{"version":"34cfb8ebe9b2e2af7e6db11ad574b135e37842f9a326c2256236b4d7410a86ed","signature":"e8221a9018aed8482d20e4ffd502bf1806a250fa0bfaa24ae0af76020f9e63d2"},{"version":"6d3b6677c8e11a6fc94e9a1c174a78f94fc156a01440d4f9937b78599ea6bd67","signature":"d22fb48f2967622e85398ee2cd3523f7b95b98c811aa732a829b1a50dc5c38a0"},{"version":"d7fb529f9994d04274da05c3aaf0991ae354c5e1c73182ea85d896245226aea5","signature":"43410a98910901277e05b8515873f4e3cbb811cbacf78acfa440c28930b602a1"},{"version":"42a697365fee7bf60a64047f3a7a7b0710df06c30d2ad1db2ba0d027516dd22c","signature":"5f5bf705c57c7ceb51986f972ed177939e53075bc7a55cd2b7c9eb76573e9cc5"},{"version":"de5f61da92a271dd4ca3726f3260951fb50d00d0cda069b43ea0bae50b4e7958","signature":"5ca7728f8bd9bced5829f9886e7f6601f1e4e66f7c3c84c20c6709f828c06e38"},{"version":"6aefe1e869ecc43fef7e9f5ce8a89ae1365ea87c0926c6a8f834fd10b991480b","signature":"6889eba0ca8fa41d1579787805dbb88d492650acda574a483df86744967cf4c8"},{"version":"56c5474bd53a07f71bab22964b738b7e21568a5a3382ce69080ecf920542b844","impliedFormat":99},{"version":"a54bc55fd8c2c0ab1ff030e2df508d871ccc1f139b477c785256a1ab01be0bc2","signature":"beccd63b477d439034cc1e9bbb2d2ce0baf3a73ffcbef37390c866480ea96e0b"},{"version":"29e07528742e5569635738b5e8cbd7e6156f5bb6bc2f7956ed6dc8b92655d6c2","signature":"d63d0ccfe820e42892ab82d16397ae187a6d59d8549063405c7a26ce8f24e36b"},{"version":"760c57c05b5bba917a8290605e2aa8c67435015bd67590b97670eeadd9c16b00","signature":"81e7079e2896d84161cf5a16480bc746e9c513a8e21214348df92a0a946b6a5c"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa83e100f0c74a06c9d24f40a096c9e9cc3c02704250d01541e22c0ae9264eda","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"456fa0c0ab68731564917642b977c71c3b7682240685b118652fb9253c9a6429","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"bbcfd9cd76d92c3ee70475270156755346c9086391e1b9cb643d072e0cf576b8","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"003ec918ec442c3a4db2c36dc0c9c766977ea1c8bcc1ca7c2085868727c3d3f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6310806c6aa3154773976dd083a15659d294700d9ad8f6b8a2e10c3dc461ff1","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"db39d9a16e4ddcd8a8f2b7b3292b362cc5392f92ad7ccd76f00bccf6838ac7de","affectsGlobalScope":true,"impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"5078cd62dbdf91ae8b1dc90b1384dec71a9c0932d62bdafb1a811d2a8e26bef2","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"62f572306e0b173cc5dfc4c583471151f16ef3779cf27ab96922c92ec82a3bc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"622b67a408a881e15ab38043547563b9d29ca4b46f5b7a7e4a4fc3123d25d19f","impliedFormat":1},{"version":"2617f1d06b32c7b4dfd0a5c8bc7b5de69368ec56788c90f3d7f3e3d2f39f0253","impliedFormat":1},{"version":"bd8b644c5861b94926687618ec2c9e60ad054d334d6b7eb4517f23f53cb11f91","impliedFormat":1},{"version":"bcbabfaca3f6b8a76cb2739e57710daf70ab5c9479ab70f5351c9b4932abf6bd","impliedFormat":1},{"version":"77fced47f495f4ff29bb49c52c605c5e73cd9b47d50080133783032769a9d8a6","impliedFormat":1},{"version":"966dd0793b220e22344c944e0f15afafdc9b0c9201b6444ea0197cd176b96893","impliedFormat":1},{"version":"c54f0b30a787b3df16280f4675bd3d9d17bf983ae3cd40087409476bc50b922d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f5cda0282e1d18198e2887387eb2f026372ebc4e11c4e4516fef8a19ee4d514","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"5e9f8c1e042b0f598a9be018fc8c3cb670fe579e9f2e18e3388b63327544fe16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"e07c573ac1971ea89e2c56ff5fd096f6f7bba2e6dbcd5681d39257c8d954d4a8","impliedFormat":1},{"version":"363eedb495912790e867da6ff96e81bf792c8cfe386321e8163b71823a35719a","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"07199a85560f473f37363d8f1300fac361cda2e954caf8a40221f83a6bfa7ade","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"982efeb2573605d4e6d5df4dc7e40846bda8b9e678e058fc99522ab6165c479e","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"c9231cf03fd7e8cfd78307eecbd24ff3f0fa55d0f6d1108c4003c124d168adc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d5d50cd0667d9710d4d2f6e077cc4e0f9dc75e106cccaea59999b36873c5a0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"42180b657831d1b8fead051698618b31da623fb71ff37f002cb9d932cfa775f1","impliedFormat":1},{"version":"4f98d6fb4fe7cbeaa04635c6eaa119d966285d4d39f0eb55b2654187b0b27446","impliedFormat":1},{"version":"f8529fe0645fd9af7441191a4961497cc7638f75a777a56248eac6a079bb275d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4445f6ce6289c5b2220398138da23752fd84152c5c95bb8b58dedefc1758c036","impliedFormat":1},{"version":"c39866300d394f45f82d3352ecfc1649aa1d5a47decdc5c76708cde15251c43d","impliedFormat":1}],"root":[[71,73],75,[77,80],[100,105],[107,109]],"options":{"declaration":true,"esModuleInterop":true,"module":99,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"./","sourceMap":true,"strict":true,"target":6},"referencedMap":[[55,1],[160,2],[161,2],[162,3],[112,4],[163,5],[164,6],[165,7],[110,1],[166,8],[167,9],[168,10],[169,11],[170,12],[171,13],[172,13],[173,14],[174,15],[175,16],[176,17],[113,1],[111,1],[177,18],[178,19],[179,20],[212,21],[180,22],[181,23],[182,24],[183,25],[184,26],[185,27],[186,28],[187,29],[188,30],[189,31],[190,31],[191,32],[192,1],[193,1],[194,33],[196,34],[195,35],[197,36],[198,37],[199,38],[200,39],[201,40],[202,41],[203,42],[204,43],[205,44],[206,45],[207,46],[208,47],[209,48],[114,1],[115,1],[116,1],[157,49],[158,1],[159,1],[210,50],[211,51],[66,52],[74,53],[81,54],[70,55],[67,52],[68,52],[106,56],[69,57],[65,1],[76,56],[52,58],[53,58],[56,59],[57,60],[58,61],[59,59],[64,62],[63,63],[60,60],[54,64],[51,65],[61,66],[49,1],[50,65],[62,67],[97,68],[83,68],[91,68],[82,1],[99,69],[93,70],[95,1],[98,71],[86,72],[87,72],[89,72],[85,73],[92,74],[88,72],[84,72],[94,68],[96,75],[90,76],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[134,77],[145,78],[132,79],[146,80],[155,81],[123,82],[124,83],[122,84],[154,85],[149,86],[153,87],[126,88],[142,89],[125,90],[152,91],[120,92],[121,86],[127,93],[128,1],[133,94],[131,93],[118,95],[156,96],[147,97],[137,98],[136,93],[138,99],[140,100],[135,101],[139,102],[150,85],[129,103],[130,104],[141,105],[119,80],[144,106],[143,93],[148,1],[117,1],[151,107],[73,108],[80,109],[77,110],[72,111],[109,112],[71,108],[78,113],[79,114],[75,108],[107,115],[103,116],[100,117],[108,118],[102,119],[105,120],[104,121],[101,122]],"version":"5.9.2"}
|
|
1
|
+
{"fileNames":["../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/types.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/util.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/squareSet.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/attacks.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/board.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/setup.d.ts","../node_modules/.pnpm/@badrap+result@0.3.1/node_modules/@badrap/result/dist/mjs/index.d.mts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/chess.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/compat.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/debug.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/fen.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/san.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/transform.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/variant.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/pgn.d.ts","../node_modules/.pnpm/chessops@0.15.0/node_modules/chessops/dist/types/index.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/types.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/anim.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/drag.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/draw.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/state.d.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/config.d.ts","../src/path.ts","../src/interfaces.ts","../src/config.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/api.d.ts","../src/translation.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/util.d.ts","../src/game.ts","../src/pgn.ts","../src/pgnViewer.ts","../src/events.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/chessground.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/htmldomapi.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/helpers/attachto.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/style.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/eventlisteners.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/attributes.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/class.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/props.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/dataset.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/vnode.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/hooks.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/module.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/init.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/thunk.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/is.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/tovnode.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/h.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/jsx.d.ts","../node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/index.d.ts","../src/view/glyph.ts","../src/view/util.ts","../src/view/menu.ts","../src/view/aria.ts","../src/view/side.ts","../src/view/player.ts","../node_modules/.pnpm/chessground@9.2.1/node_modules/chessground/dist/fen.d.ts","../src/view/accessibleBoard.ts","../src/view/main.ts","../src/main.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/globals.typedarray.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/buffer.buffer.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/globals.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/events.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/utility.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/header.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/readable.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/fetch.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/formdata.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/connector.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/client-stats.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/client.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/errors.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/dispatcher.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/global-dispatcher.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/global-origin.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/pool-stats.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/pool.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/handlers.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/balanced-pool.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/h2c-client.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-interceptor.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-call-history.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-client.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-pool.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/mock-errors.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/proxy-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/retry-handler.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/retry-agent.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/api.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/cache-interceptor.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/interceptors.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/util.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/cookies.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/patch.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/websocket.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/eventsource.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/content-type.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/cache.d.ts","../node_modules/.pnpm/undici-types@7.10.0/node_modules/undici-types/index.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/web-globals/storage.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/assert.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/assert/strict.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/async_hooks.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/buffer.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/child_process.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/cluster.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/console.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/constants.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/crypto.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/dgram.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/dns.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/dns/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/domain.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/events.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/fs.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/fs/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/http.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/http2.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/https.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/inspector.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/module.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/net.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/os.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/path.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/perf_hooks.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/process.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/punycode.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/querystring.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/readline.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/readline/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/repl.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/sea.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/sqlite.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream/consumers.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/stream/web.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/string_decoder.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/test.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/timers.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/timers/promises.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/tls.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/trace_events.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/tty.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/url.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/util.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/v8.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/vm.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/wasi.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/worker_threads.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/zlib.d.ts","../node_modules/.pnpm/@types+node@24.3.1/node_modules/@types/node/index.d.ts"],"fileIdsList":[[112,163],[112,160,163],[112,162,163],[163],[112,163,168,197],[112,163,164,169,174,182,194,205],[112,163,164,165,174,182],[112,163,166,206],[112,163,167,168,175,183],[112,163,168,194,202],[112,163,169,171,174,182],[112,162,163,170],[112,163,171,172],[112,163,173,174],[112,162,163,174],[112,163,174,175,176,194,205],[112,163,174,175,176,189,194,197],[112,156,163,171,174,177,182,194,205],[112,163,174,175,177,178,182,194,202,205],[112,163,177,179,194,202,205],[110,111,112,113,114,115,116,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],[112,163,174,180],[112,163,181,205],[112,163,171,174,182,194],[112,163,183],[112,163,184],[112,162,163,185],[112,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211],[112,163,187],[112,163,188],[112,163,174,189,190],[112,163,189,191,206,208],[112,163,174,194,195,197],[112,163,196,197],[112,163,194,195],[112,163,197],[112,163,198],[112,160,163,194,199],[112,163,174,200,201],[112,163,200,201],[112,163,168,182,194,202],[112,163,203],[112,163,182,204],[112,163,177,188,205],[112,163,168,206],[112,163,194,207],[112,163,181,208],[112,163,209],[112,156,163],[112,163,174,176,185,194,197,205,207,208,210],[112,163,194,211],[65,69,112,163],[65,68,69,70,112,163],[70,74,112,163],[65,68,69,112,163],[65,112,163],[65,66,67,68,112,163],[49,51,112,163],[49,51,53,54,55,112,163],[49,56,112,163],[49,51,53,56,112,163],[49,50,51,52,53,54,56,57,58,59,60,61,62,63,112,163],[49,55,56,59,112,163],[49,51,53,112,163],[49,112,163],[51,53,54,112,163],[49,51,54,55,56,112,163],[90,112,163],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,112,163],[82,90,92,112,163],[90,97,112,163],[92,112,163],[90,92,112,163],[91,112,163],[82,90,112,163],[83,84,85,86,87,88,89,91,112,163],[112,123,126,129,130,163,205],[112,126,163,194,205],[112,126,130,163,205],[112,163,194],[112,120,163],[112,124,163],[112,122,123,126,163,205],[112,163,182,202],[112,163,212],[112,120,163,212],[112,122,126,163,182,205],[112,117,118,119,121,125,163,174,194,205],[112,126,134,163],[112,118,124,163],[112,126,150,151,163],[112,118,121,126,163,197,205,212],[112,126,163],[112,122,126,163,205],[112,117,163],[112,120,121,122,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,151,152,153,154,155,163],[112,126,143,146,163,171],[112,126,134,135,136,163],[112,124,126,135,137,163],[112,125,163],[112,118,120,126,163],[112,126,130,135,137,163],[112,130,163],[112,124,126,129,163,205],[112,118,122,126,134,163],[112,126,143,163],[112,120,126,150,163,197,210,212],[72,112,163],[79,112,163],[63,71,72,112,163],[63,64,65,70,71,112,163],[72,73,79,99,108,112,163],[57,59,60,63,64,71,72,77,112,163],[64,70,71,72,74,75,76,77,78,112,163],[65,72,76,79,99,101,106,112,163],[72,77,79,101,112,163],[99,112,163],[70,79,80,81,99,101,102,103,104,105,107,112,163],[72,79,80,99,101,112,163],[64,79,99,101,112,163],[71,72,77,79,99,100,101,103,112,163],[65,72,99,100,112,163]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"4245fee526a7d1754529d19227ecbf3be066ff79ebb6a380d78e41648f2f224d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"121ed5b84a4c25bf16bef637f62b92947e96e9a5f0fd3a584c3966ea8effd67d","impliedFormat":99},{"version":"f54493905a6b6664e86f1ee94a9b9292b91aa99d65fc4638fd1d20953394b066","impliedFormat":99},{"version":"9f1a606af4c42d72f626765f0cd71fe9b0aa0841ea3e837e7dc0f3248204b288","impliedFormat":99},{"version":"1ba6b78f7d38a841e0fdc106af31a144672583131b024e31378a27f881de9c34","impliedFormat":99},{"version":"115387be50fd2e5526c200361fc85aac5d140f5ae4735ba8040ff955a10274ad","impliedFormat":99},{"version":"83ef3841bae34e649fd7c1c6be499444d28eb962f57c50a55b8ada885f9ab089","impliedFormat":99},{"version":"d4feb92f592533eb93af021c53a852cdd74ea086f882361e7e2bb25d3715d733","impliedFormat":99},{"version":"4f480c4465d9977a759a8141deec88953d4a2d8aa3504edce7910b2db95a0d5d","impliedFormat":99},{"version":"8c323d171f1cd143cafdfceb8bef95f1f195211beac8e8e5f796a1b595e8d1cf","impliedFormat":99},{"version":"114aeac4618b952272947d290fc8aeba415d3ad560934df4c2809c58a02b55a3","impliedFormat":99},{"version":"1cde5056744518c5dfbdfc8d550330bbfe388fb3f105876bdca9676f7a237b29","impliedFormat":99},{"version":"4adc1c36904421747e3c6d5b70dbe9e1ed06c49f6ea2868b2ec6a334f85c35e5","impliedFormat":99},{"version":"53dc5dcff95f7a72e08124e57fe5c8e72e64f51e25eb77b3b375db24a7b9c86f","impliedFormat":99},{"version":"eec39d6c3bead7fa60bad28f01334484ee4587f371cf9e67ebb3d4c258a65ea4","impliedFormat":99},{"version":"9e3a64c568d637dfd6a99dc8f9921e2db8b65f4b730acb3fa80a8799164675c8","impliedFormat":99},{"version":"200ca2f2f64d5fdb78bceb9c0ca93571e83b1a3b168116da7b6644a4e2fcfe2f","impliedFormat":99},{"version":"9a9e2a57052135eff04d8d3643e5f44e79bd99d0b98b76e6f557685f0175b123","impliedFormat":99},{"version":"4d2a9be5f03a0b85adff5cfa50a46e6bdc84cfb5186966ee83b5c4aa2d843bce","impliedFormat":99},{"version":"14fbc0091eb1d2d336d59a3c0771a9591e997fad2a1e2ad544ab53722249447e","impliedFormat":99},{"version":"c28fb943fc575035531e497c300bb85ad20c9ee34af6bc5f133a2480e9963325","impliedFormat":99},{"version":"1ba851490289552776917488106a39df84b29349eb2eb084ca193aa0c733e2b7","impliedFormat":99},{"version":"fc912b8633d525208feaa42263aa4dac1b4a67163ae22b17f234067d9eaf65f6","impliedFormat":99},{"version":"b2eb3e2e585446d4a521f21b20904581654925c3826bec560ad457fc39512a16","signature":"ab8d2ec9b55e4404c0214a28fb884c1490af913964b22c23d6a224d5ebda139a"},{"version":"5ef2e25d245b0feb1d2ea569a7e1ad3331920989b6278898e35ecf0d989b3971","signature":"da9dd024ecf92fac09dfcb0de5212741c8e20e17b60bb260cc1e4cff24fb53e9"},{"version":"baae1124e718c52a55a37cae7c86dcca7919951644a73a2817a1cbda83741290","signature":"e2b7709634bb6f4698ef0e277ec41208ea9d80ca39a734fea59b219c74ef392f"},{"version":"bac3a4cd114dfcb542cc56834ed4813744daf1289d519afa90740f5b5746c750","impliedFormat":99},{"version":"2ad575b51a77d7bd4eaad209ec4eec33e85bbe9f7abc74bb74026a7b59c4ba24","signature":"9c45488c512752b3c2287d5cf808c5b339011261255d7e6724187ba94e0246e0"},{"version":"3d2d1705a0e535639a1c7e45f9decfc259de4a789d5ad721b1a4dc895cbeaf2b","impliedFormat":99},{"version":"12b12dc3ee9d168cece989eee68e903071c69db808914cf2bb05b65ba9d5c76a","signature":"3aa388df5a873d69898c90fcc0f26d3d520dee117c17c4ce49cc132ed68db198"},{"version":"bc50e721604d26e21eb219ef26ffdd3a303bc4d51188cf95227510387169ac23","signature":"536d062cb2ebdec1d307aecdb77c2d6f89b4fce481f8f66d181886b2b5bf8fef"},{"version":"2494e863941e69fddf53a567601bb12f75f5ac7b1381c44d2d7ba8bb72415d0d","signature":"563198523f84ed2ef68229568d3fee2916721ff85fec3f7329d721529fe923a8"},{"version":"be076041c123ed99f70f62fc8b4a9238ba31216b5bc7ab990669443eb8c2806f","signature":"4a0559a3703462a9186acc1cb843281d733bccca72f0e76888c1a113c59b2e5e"},{"version":"42de8107b60eedc59972b085a42b80a115e15a3427de7019881c336c80a08a97","impliedFormat":99},{"version":"095a402135de9fbfda29ba7c984bf54b9e65757396b4165706d898e9baa83ed5","impliedFormat":1},{"version":"dbd5601bf95b6cda2d3ce749f1618d3a26249adfa59d6a38776d9b41688d066b","impliedFormat":1},{"version":"86461653a4843ef47052082a3a5fbf7c013dfef98b394497fdaf7d3e3f50acfb","impliedFormat":1},{"version":"13a50fee16e28ffe07be8cdc77850944850f733364c687268ed1c15fab2fc934","impliedFormat":1},{"version":"7cf2ff1f0bb971089219c17c6b70ae76fd55af04ed5c71939bdea4e79c87b770","impliedFormat":1},{"version":"d631456e653d62a7041e73ce75377903d7397d05a9e2bc33ce2d5d71be427916","impliedFormat":1},{"version":"50761b8a64afb4c8b727cc47b42ec88ad0a552bf9f9ff991d1a69decdb864ba6","impliedFormat":1},{"version":"4c48b6c8d023119098489c41d73930ae130a77b562856e716ad2b4dbd6e28f87","impliedFormat":1},{"version":"67ca5abe08a5f7b50db326c7653b15887e5e9ed2fc56ac4845019de6b58f7ba8","impliedFormat":1},{"version":"b09163da65a31726be29812f27a10f141ddae782bfbf9358611a78966aeb2968","impliedFormat":1},{"version":"84e5250e7b199be001fac9ca57836f9053d5bcc1f360b8b38717e8b4d0771da0","impliedFormat":1},{"version":"ab1c05d701b3357b48b42d66d991d7fb4474529d1804090bf26c4c2bb9e18558","impliedFormat":1},{"version":"2957b0f8e46e3ca5f394af395db80b702d1ae862795c27f6bc4637509383a356","impliedFormat":1},{"version":"e50f096cb424b63343ad5814622623f15cf3830f41710376bebb3c7f71554713","impliedFormat":1},{"version":"7c3511a2098fd92e99e9b37b85a431527c4cb86c29814545afcaf80fe550f6ac","impliedFormat":1},{"version":"e6a92923694f59fe3aba1ae103e89869d3c41e0d837998395e9fc5b888751363","impliedFormat":1},{"version":"5dafb1427f8a44f47c33cd20b5bc5944ba194049782de9f9bd023cea4b8b8c44","impliedFormat":1},{"version":"e19228db0a5451f604f6702359a93919a1735809cbc0cd8a0744f29777c438c2","impliedFormat":1},{"version":"34cfb8ebe9b2e2af7e6db11ad574b135e37842f9a326c2256236b4d7410a86ed","signature":"e8221a9018aed8482d20e4ffd502bf1806a250fa0bfaa24ae0af76020f9e63d2"},{"version":"6d3b6677c8e11a6fc94e9a1c174a78f94fc156a01440d4f9937b78599ea6bd67","signature":"d22fb48f2967622e85398ee2cd3523f7b95b98c811aa732a829b1a50dc5c38a0"},{"version":"2c8b63d03768a19679ee9e147696ab7a643132c66e2460e51cb1fafc279d988a","signature":"eeb0edc394398fdf0cd19a30baec23a027a528b48388fd7fec540b3092a985f4"},{"version":"42a697365fee7bf60a64047f3a7a7b0710df06c30d2ad1db2ba0d027516dd22c","signature":"5f5bf705c57c7ceb51986f972ed177939e53075bc7a55cd2b7c9eb76573e9cc5"},{"version":"de5f61da92a271dd4ca3726f3260951fb50d00d0cda069b43ea0bae50b4e7958","signature":"5ca7728f8bd9bced5829f9886e7f6601f1e4e66f7c3c84c20c6709f828c06e38"},{"version":"6aefe1e869ecc43fef7e9f5ce8a89ae1365ea87c0926c6a8f834fd10b991480b","signature":"6889eba0ca8fa41d1579787805dbb88d492650acda574a483df86744967cf4c8"},{"version":"56c5474bd53a07f71bab22964b738b7e21568a5a3382ce69080ecf920542b844","impliedFormat":99},{"version":"a54bc55fd8c2c0ab1ff030e2df508d871ccc1f139b477c785256a1ab01be0bc2","signature":"beccd63b477d439034cc1e9bbb2d2ce0baf3a73ffcbef37390c866480ea96e0b"},{"version":"29e07528742e5569635738b5e8cbd7e6156f5bb6bc2f7956ed6dc8b92655d6c2","signature":"d63d0ccfe820e42892ab82d16397ae187a6d59d8549063405c7a26ce8f24e36b"},{"version":"760c57c05b5bba917a8290605e2aa8c67435015bd67590b97670eeadd9c16b00","signature":"81e7079e2896d84161cf5a16480bc746e9c513a8e21214348df92a0a946b6a5c"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0671b50bb99cc7ad46e9c68fa0e7f15ba4bc898b59c31a17ea4611fab5095da","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa83e100f0c74a06c9d24f40a096c9e9cc3c02704250d01541e22c0ae9264eda","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"456fa0c0ab68731564917642b977c71c3b7682240685b118652fb9253c9a6429","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"e525f9e67f5ddba7b5548430211cae2479070b70ef1fd93550c96c10529457bd","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4bc0794175abedf989547e628949888c1085b1efcd93fc482bccd77ee27f8b7c","impliedFormat":1},{"version":"3c8e93af4d6ce21eb4c8d005ad6dc02e7b5e6781f429d52a35290210f495a674","impliedFormat":1},{"version":"2c9875466123715464539bfd69bcaccb8ff6f3e217809428e0d7bd6323416d01","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"6c8e442ba33b07892169a14f7757321e49ab0f1032d676d321a1fdab8a67d40c","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"1cd673d367293fc5cb31cd7bf03d598eb368e4f31f39cf2b908abbaf120ab85a","impliedFormat":1},{"version":"af13e99445f37022c730bfcafcdc1761e9382ce1ea02afb678e3130b01ce5676","impliedFormat":1},{"version":"3825bf209f1662dfd039010a27747b73d0ef379f79970b1d05601ec8e8a4249f","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"da52342062e70c77213e45107921100ba9f9b3a30dd019444cf349e5fb3470c4","impliedFormat":1},{"version":"e9ace91946385d29192766bf783b8460c7dbcbfc63284aa3c9cae6de5155c8bc","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"1e30c045732e7db8f7a82cf90b516ebe693d2f499ce2250a977ec0d12e44a529","impliedFormat":1},{"version":"84b736594d8760f43400202859cda55607663090a43445a078963031d47e25e7","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"78b29846349d4dfdd88bd6650cc5d2baaa67f2e89dc8a80c8e26ef7995386583","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"e38d4fdf79e1eadd92ed7844c331dbaa40f29f21541cfee4e1acff4db09cda33","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"7c10a32ae6f3962672e6869ee2c794e8055d8225ef35c91c0228e354b4e5d2d3","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"99f569b42ea7e7c5fe404b2848c0893f3e1a56e0547c1cd0f74d5dbb9a9de27e","impliedFormat":1},{"version":"830171b27c5fdf9bcbe4cf7d428fcf3ae2c67780fb7fbdccdf70d1623d938bc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"bbcfd9cd76d92c3ee70475270156755346c9086391e1b9cb643d072e0cf576b8","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"003ec918ec442c3a4db2c36dc0c9c766977ea1c8bcc1ca7c2085868727c3d3f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6310806c6aa3154773976dd083a15659d294700d9ad8f6b8a2e10c3dc461ff1","impliedFormat":1},{"version":"c4e8e8031808b158cfb5ac5c4b38d4a26659aec4b57b6a7e2ba0a141439c208c","impliedFormat":1},{"version":"2c91d8366ff2506296191c26fd97cc1990bab3ee22576275d28b654a21261a44","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"db39d9a16e4ddcd8a8f2b7b3292b362cc5392f92ad7ccd76f00bccf6838ac7de","affectsGlobalScope":true,"impliedFormat":1},{"version":"289e9894a4668c61b5ffed09e196c1f0c2f87ca81efcaebdf6357cfb198dac14","impliedFormat":1},{"version":"25a1105595236f09f5bce42398be9f9ededc8d538c258579ab662d509aa3b98e","impliedFormat":1},{"version":"5078cd62dbdf91ae8b1dc90b1384dec71a9c0932d62bdafb1a811d2a8e26bef2","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"62f572306e0b173cc5dfc4c583471151f16ef3779cf27ab96922c92ec82a3bc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"622b67a408a881e15ab38043547563b9d29ca4b46f5b7a7e4a4fc3123d25d19f","impliedFormat":1},{"version":"2617f1d06b32c7b4dfd0a5c8bc7b5de69368ec56788c90f3d7f3e3d2f39f0253","impliedFormat":1},{"version":"bd8b644c5861b94926687618ec2c9e60ad054d334d6b7eb4517f23f53cb11f91","impliedFormat":1},{"version":"bcbabfaca3f6b8a76cb2739e57710daf70ab5c9479ab70f5351c9b4932abf6bd","impliedFormat":1},{"version":"77fced47f495f4ff29bb49c52c605c5e73cd9b47d50080133783032769a9d8a6","impliedFormat":1},{"version":"966dd0793b220e22344c944e0f15afafdc9b0c9201b6444ea0197cd176b96893","impliedFormat":1},{"version":"c54f0b30a787b3df16280f4675bd3d9d17bf983ae3cd40087409476bc50b922d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f5cda0282e1d18198e2887387eb2f026372ebc4e11c4e4516fef8a19ee4d514","impliedFormat":1},{"version":"e99b0e71f07128fc32583e88ccd509a1aaa9524c290efb2f48c22f9bf8ba83b1","impliedFormat":1},{"version":"76957a6d92b94b9e2852cf527fea32ad2dc0ef50f67fe2b14bd027c9ceef2d86","impliedFormat":1},{"version":"5e9f8c1e042b0f598a9be018fc8c3cb670fe579e9f2e18e3388b63327544fe16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a8a99a5e6ed33c4a951b67cc1fd5b64fd6ad719f5747845c165ca12f6c21ba16","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"70b57b5529051497e9f6482b76d91c0dcbb103d9ead8a0549f5bab8f65e5d031","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"1013eb2e2547ad8c100aca52ef9df8c3f209edee32bb387121bb3227f7c00088","impliedFormat":1},{"version":"e07c573ac1971ea89e2c56ff5fd096f6f7bba2e6dbcd5681d39257c8d954d4a8","impliedFormat":1},{"version":"363eedb495912790e867da6ff96e81bf792c8cfe386321e8163b71823a35719a","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"dba28a419aec76ed864ef43e5f577a5c99a010c32e5949fe4e17a4d57c58dd11","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea713aa14a670b1ea0fbaaca4fd204e645f71ca7653a834a8ec07ee889c45de6","impliedFormat":1},{"version":"07199a85560f473f37363d8f1300fac361cda2e954caf8a40221f83a6bfa7ade","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"982efeb2573605d4e6d5df4dc7e40846bda8b9e678e058fc99522ab6165c479e","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"c9231cf03fd7e8cfd78307eecbd24ff3f0fa55d0f6d1108c4003c124d168adc4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d5d50cd0667d9710d4d2f6e077cc4e0f9dc75e106cccaea59999b36873c5a0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"784490137935e1e38c49b9289110e74a1622baf8a8907888dcbe9e476d7c5e44","impliedFormat":1},{"version":"42180b657831d1b8fead051698618b31da623fb71ff37f002cb9d932cfa775f1","impliedFormat":1},{"version":"4f98d6fb4fe7cbeaa04635c6eaa119d966285d4d39f0eb55b2654187b0b27446","impliedFormat":1},{"version":"f8529fe0645fd9af7441191a4961497cc7638f75a777a56248eac6a079bb275d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4445f6ce6289c5b2220398138da23752fd84152c5c95bb8b58dedefc1758c036","impliedFormat":1},{"version":"c39866300d394f45f82d3352ecfc1649aa1d5a47decdc5c76708cde15251c43d","impliedFormat":1}],"root":[[71,73],75,[77,80],[100,105],[107,109]],"options":{"declaration":true,"esModuleInterop":true,"module":99,"noImplicitAny":true,"noImplicitReturns":true,"noImplicitThis":true,"outDir":"./","sourceMap":true,"strict":true,"target":6},"referencedMap":[[55,1],[160,2],[161,2],[162,3],[112,4],[163,5],[164,6],[165,7],[110,1],[166,8],[167,9],[168,10],[169,11],[170,12],[171,13],[172,13],[173,14],[174,15],[175,16],[176,17],[113,1],[111,1],[177,18],[178,19],[179,20],[212,21],[180,22],[181,23],[182,24],[183,25],[184,26],[185,27],[186,28],[187,29],[188,30],[189,31],[190,31],[191,32],[192,1],[193,1],[194,33],[196,34],[195,35],[197,36],[198,37],[199,38],[200,39],[201,40],[202,41],[203,42],[204,43],[205,44],[206,45],[207,46],[208,47],[209,48],[114,1],[115,1],[116,1],[157,49],[158,1],[159,1],[210,50],[211,51],[66,52],[74,53],[81,54],[70,55],[67,52],[68,52],[106,56],[69,57],[65,1],[76,56],[52,58],[53,58],[56,59],[57,60],[58,61],[59,59],[64,62],[63,63],[60,60],[54,64],[51,65],[61,66],[49,1],[50,65],[62,67],[97,68],[83,68],[91,68],[82,1],[99,69],[93,70],[95,1],[98,71],[86,72],[87,72],[89,72],[85,73],[92,74],[88,72],[84,72],[94,68],[96,75],[90,76],[47,1],[48,1],[8,1],[10,1],[9,1],[2,1],[11,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[3,1],[19,1],[20,1],[4,1],[21,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[36,1],[33,1],[34,1],[35,1],[37,1],[7,1],[38,1],[43,1],[44,1],[39,1],[40,1],[41,1],[42,1],[1,1],[45,1],[46,1],[134,77],[145,78],[132,79],[146,80],[155,81],[123,82],[124,83],[122,84],[154,85],[149,86],[153,87],[126,88],[142,89],[125,90],[152,91],[120,92],[121,86],[127,93],[128,1],[133,94],[131,93],[118,95],[156,96],[147,97],[137,98],[136,93],[138,99],[140,100],[135,101],[139,102],[150,85],[129,103],[130,104],[141,105],[119,80],[144,106],[143,93],[148,1],[117,1],[151,107],[73,108],[80,109],[77,110],[72,111],[109,112],[71,108],[78,113],[79,114],[75,108],[107,115],[103,116],[100,117],[108,118],[102,119],[105,120],[104,121],[101,122]],"version":"5.9.2"}
|
package/dist/view/menu.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { VNode } from 'snabbdom';
|
|
1
2
|
import PgnViewer from '../pgnViewer';
|
|
2
|
-
export declare const renderMenu: (ctrl: PgnViewer) =>
|
|
3
|
-
export declare const renderControls: (ctrl: PgnViewer) =>
|
|
3
|
+
export declare const renderMenu: (ctrl: PgnViewer) => VNode;
|
|
4
|
+
export declare const renderControls: (ctrl: PgnViewer) => VNode;
|
package/dist/view/menu.js
CHANGED
|
@@ -9,7 +9,7 @@ export const renderMenu = (ctrl) => {
|
|
|
9
9
|
'aria-label': (_a = ctrl.translate('menu')) !== null && _a !== void 0 ? _a : 'Menu',
|
|
10
10
|
},
|
|
11
11
|
hook: {
|
|
12
|
-
insert: vnode => {
|
|
12
|
+
insert: (vnode) => {
|
|
13
13
|
const menuEl = vnode.elm;
|
|
14
14
|
// Focus first menu item when menu opens
|
|
15
15
|
const firstItem = menuEl.querySelector('[role="menuitem"]');
|
|
@@ -78,7 +78,7 @@ export const renderControls = (ctrl) => h('div.lpv__controls', {
|
|
|
78
78
|
'lpv__icon-ellipsis-vert': ctrl.pane == 'board',
|
|
79
79
|
},
|
|
80
80
|
hook: {
|
|
81
|
-
insert: vnode => {
|
|
81
|
+
insert: (vnode) => {
|
|
82
82
|
const el = vnode.elm;
|
|
83
83
|
el.addEventListener('click', ctrl.toggleMenu);
|
|
84
84
|
// Store reference for focus management
|
package/dist/view/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/view/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/view/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,EAAE;;IAC5C,OAAA,CAAC,CACC,yBAAyB,EACzB;QACE,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,MAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAI,MAAM;SAC/C;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE;gBACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAkB,CAAC;gBACxC,wCAAwC;gBACxC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAc,mBAAmB,CAAC,CAAC;gBACzE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,EAAE,CAAC;gBAEnB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAClC,CAAC;SACF;KACF,EACD;QACE,CAAC,CACC,kDAAkD,EAClD;YACE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;SAC/B,EACD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAC/B;QACD,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,0CAAE,OAAO;YACnC,CAAC,CAAC,CAAC,CACC,iDAAiD,EACjD;gBACE,KAAK,EAAE;oBACL,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;oBACxB,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;iBACxF;aACF,EACD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAChC;YACH,CAAC,CAAC,SAAS;QACb,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,0CAAE,OAAO;YAC1C,CAAC,CAAC,CAAC,CACC,iDAAiD,EACjD;gBACE,KAAK,EAAE;oBACL,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;oBACxB,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE,IAAI,CAAC,SAAS,CAC1B,wBAAwB,EACxB,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CACvC;iBACF;aACF,EACD,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CACvC;YACH,CAAC,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAC3B,CAAC,CAAC,CAAC,CACC,iDAAiD,EACjD;gBACE,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;aACpC,EACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB;YACH,CAAC,CAAC,SAAS;QACb,kBAAkB,CAAC,IAAI,CAAC;KACzB,CACF,CAAA;CAAA,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,IAAe,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/F,OAAO,CACL,IAAI;QACJ,CAAC,CACC,6BAA6B,EAC7B;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,QAAQ,CAAC;aACjE;SACF,EACD,QAAQ,CACT,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,EAAE,CAChD,CAAC,CACC,mBAAmB,EACnB;IACE,KAAK,EAAE;QACL,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;KACxD;CACF,EACD;IACE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;IAC5E,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC;IACpC,CAAC,CACC,+CAA+C,EAC/C;QACE,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO;YAC5B,yBAAyB,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO;SAChD;QACD,IAAI,EAAE;YACJ,MAAM,EAAE,CAAC,KAAY,EAAE,EAAE;gBACvB,MAAM,EAAE,GAAG,KAAK,CAAC,GAAkB,CAAC;gBACpC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9C,uCAAuC;gBACvC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACvB,CAAC;SACF;QACD,KAAK,EAAE;YACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACpC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;YAC7C,eAAe,EAAE,MAAM;SACxB;KACF,EACD,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CACvC;IACD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC;CAC3E,CACF,CAAC;AAEJ,MAAM,SAAS,GAAG,CAAC,IAAe,EAAE,EAAQ,EAAE,IAAY,EAAE,EAAE;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,CAAC,mDAAmD,EAAE,iCAAiC,IAAI,EAAE,EAAE;QACrG,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC/B,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzF,KAAK,EAAE;YACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC1C,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC;YACnC,QAAQ,EAAE,UAAU;SACrB;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,IAAe,EAAE,MAAmB,EAAE,EAAE;IACjE,MAAM,iBAAiB,GAAG,CAAC,CAAgB,EAAE,EAAE;;QAC7C,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,GAAG;gBACN,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAC,QAAQ,CAAC,aAA6B,0CAAE,KAAK,EAAE,CAAC;gBACjD,MAAM;YAER,KAAK,QAAQ;gBACX,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACxD,CAAC,CAAC"}
|
package/package.json
CHANGED
package/src/translation.ts
CHANGED
|
@@ -2,8 +2,11 @@ import { Translator } from './interfaces';
|
|
|
2
2
|
|
|
3
3
|
const defaultTranslator: Translator = (key: string) => defaultTranslations[key];
|
|
4
4
|
|
|
5
|
-
export default function translate(
|
|
6
|
-
return (key: string, ...args: string[]) =>
|
|
5
|
+
export default function translate(custom?: Translator) {
|
|
6
|
+
return (key: string, ...args: string[]) => {
|
|
7
|
+
const translated = (custom && custom(key)) || defaultTranslator(key);
|
|
8
|
+
return interpolate(translated ?? key, args);
|
|
9
|
+
};
|
|
7
10
|
}
|
|
8
11
|
|
|
9
12
|
const interpolate = (str: string, args: string[]): string => {
|
package/src/view/menu.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { h } from 'snabbdom';
|
|
1
|
+
import { h, VNode } from 'snabbdom';
|
|
2
2
|
import PgnViewer from '../pgnViewer';
|
|
3
3
|
import { GoTo } from '../interfaces';
|
|
4
4
|
import { bind, bindMobileMousedown, onInsert } from './util';
|
|
@@ -13,7 +13,7 @@ export const renderMenu = (ctrl: PgnViewer) =>
|
|
|
13
13
|
'aria-label': ctrl.translate('menu') ?? 'Menu',
|
|
14
14
|
},
|
|
15
15
|
hook: {
|
|
16
|
-
insert: vnode => {
|
|
16
|
+
insert: (vnode: VNode) => {
|
|
17
17
|
const menuEl = vnode.elm as HTMLElement;
|
|
18
18
|
// Focus first menu item when menu opens
|
|
19
19
|
const firstItem = menuEl.querySelector<HTMLElement>('[role="menuitem"]');
|
|
@@ -117,7 +117,7 @@ export const renderControls = (ctrl: PgnViewer) =>
|
|
|
117
117
|
'lpv__icon-ellipsis-vert': ctrl.pane == 'board',
|
|
118
118
|
},
|
|
119
119
|
hook: {
|
|
120
|
-
insert: vnode => {
|
|
120
|
+
insert: (vnode: VNode) => {
|
|
121
121
|
const el = vnode.elm as HTMLElement;
|
|
122
122
|
el.addEventListener('click', ctrl.toggleMenu);
|
|
123
123
|
// Store reference for focus management
|