packages feed

chessIO 0.6.1.1 → 0.7.0.0

raw patch · 18 files changed

+13231/−521 lines, 18 filesdep +deepseqdep +hashabledep +lensdep −microlensdep −microlens-thPVP ok

version bump matches the API change (PVP)

Dependencies added: deepseq, hashable, lens, mono-traversable, template-haskell, th-lift-instances, vector-binary-instances, vector-instances

Dependencies removed: microlens, microlens-th

API changes (from Hackage documentation)

- Game.Chess: A1 :: Sq
- Game.Chess: A2 :: Sq
- Game.Chess: A3 :: Sq
- Game.Chess: A4 :: Sq
- Game.Chess: A5 :: Sq
- Game.Chess: A6 :: Sq
- Game.Chess: A7 :: Sq
- Game.Chess: A8 :: Sq
- Game.Chess: B1 :: Sq
- Game.Chess: B2 :: Sq
- Game.Chess: B3 :: Sq
- Game.Chess: B4 :: Sq
- Game.Chess: B5 :: Sq
- Game.Chess: B6 :: Sq
- Game.Chess: B7 :: Sq
- Game.Chess: B8 :: Sq
- Game.Chess: C1 :: Sq
- Game.Chess: C2 :: Sq
- Game.Chess: C3 :: Sq
- Game.Chess: C4 :: Sq
- Game.Chess: C5 :: Sq
- Game.Chess: C6 :: Sq
- Game.Chess: C7 :: Sq
- Game.Chess: C8 :: Sq
- Game.Chess: D1 :: Sq
- Game.Chess: D2 :: Sq
- Game.Chess: D3 :: Sq
- Game.Chess: D4 :: Sq
- Game.Chess: D5 :: Sq
- Game.Chess: D6 :: Sq
- Game.Chess: D7 :: Sq
- Game.Chess: D8 :: Sq
- Game.Chess: E1 :: Sq
- Game.Chess: E2 :: Sq
- Game.Chess: E3 :: Sq
- Game.Chess: E4 :: Sq
- Game.Chess: E5 :: Sq
- Game.Chess: E6 :: Sq
- Game.Chess: E7 :: Sq
- Game.Chess: E8 :: Sq
- Game.Chess: F1 :: Sq
- Game.Chess: F2 :: Sq
- Game.Chess: F3 :: Sq
- Game.Chess: F4 :: Sq
- Game.Chess: F5 :: Sq
- Game.Chess: F6 :: Sq
- Game.Chess: F7 :: Sq
- Game.Chess: F8 :: Sq
- Game.Chess: G1 :: Sq
- Game.Chess: G2 :: Sq
- Game.Chess: G3 :: Sq
- Game.Chess: G4 :: Sq
- Game.Chess: G5 :: Sq
- Game.Chess: G6 :: Sq
- Game.Chess: G7 :: Sq
- Game.Chess: G8 :: Sq
- Game.Chess: H1 :: Sq
- Game.Chess: H2 :: Sq
- Game.Chess: H3 :: Sq
- Game.Chess: H4 :: Sq
- Game.Chess: H5 :: Sq
- Game.Chess: H6 :: Sq
- Game.Chess: H7 :: Sq
- Game.Chess: H8 :: Sq
- Game.Chess: Ply :: Word16 -> Ply
- Game.Chess: class IsSquare sq
- Game.Chess: data Sq
- Game.Chess: newtype Ply
- Game.Chess: toIndex :: IsSquare sq => sq -> Int
- Game.Chess: toRF :: IsSquare sq => sq -> (Int, Int)
- Game.Chess.Tree: pathTree :: Tree a -> Tree (NonEmpty a)
+ Game.Chess: data File
+ Game.Chess: data Ply
+ Game.Chess: data Rank
+ Game.Chess: data Square
+ Game.Chess: file :: Square -> File
+ Game.Chess: fileChar :: Square -> Char
+ Game.Chess: pattern A1 :: Square
+ Game.Chess: pattern A2 :: Square
+ Game.Chess: pattern A3 :: Square
+ Game.Chess: pattern A4 :: Square
+ Game.Chess: pattern A5 :: Square
+ Game.Chess: pattern A6 :: Square
+ Game.Chess: pattern A7 :: Square
+ Game.Chess: pattern A8 :: Square
+ Game.Chess: pattern B1 :: Square
+ Game.Chess: pattern B2 :: Square
+ Game.Chess: pattern B3 :: Square
+ Game.Chess: pattern B4 :: Square
+ Game.Chess: pattern B5 :: Square
+ Game.Chess: pattern B6 :: Square
+ Game.Chess: pattern B7 :: Square
+ Game.Chess: pattern B8 :: Square
+ Game.Chess: pattern C1 :: Square
+ Game.Chess: pattern C2 :: Square
+ Game.Chess: pattern C3 :: Square
+ Game.Chess: pattern C4 :: Square
+ Game.Chess: pattern C5 :: Square
+ Game.Chess: pattern C6 :: Square
+ Game.Chess: pattern C7 :: Square
+ Game.Chess: pattern C8 :: Square
+ Game.Chess: pattern D1 :: Square
+ Game.Chess: pattern D2 :: Square
+ Game.Chess: pattern D3 :: Square
+ Game.Chess: pattern D4 :: Square
+ Game.Chess: pattern D5 :: Square
+ Game.Chess: pattern D6 :: Square
+ Game.Chess: pattern D7 :: Square
+ Game.Chess: pattern D8 :: Square
+ Game.Chess: pattern E1 :: Square
+ Game.Chess: pattern E2 :: Square
+ Game.Chess: pattern E3 :: Square
+ Game.Chess: pattern E4 :: Square
+ Game.Chess: pattern E5 :: Square
+ Game.Chess: pattern E6 :: Square
+ Game.Chess: pattern E7 :: Square
+ Game.Chess: pattern E8 :: Square
+ Game.Chess: pattern F1 :: Square
+ Game.Chess: pattern F2 :: Square
+ Game.Chess: pattern F3 :: Square
+ Game.Chess: pattern F4 :: Square
+ Game.Chess: pattern F5 :: Square
+ Game.Chess: pattern F6 :: Square
+ Game.Chess: pattern F7 :: Square
+ Game.Chess: pattern F8 :: Square
+ Game.Chess: pattern FileA :: File
+ Game.Chess: pattern FileB :: File
+ Game.Chess: pattern FileC :: File
+ Game.Chess: pattern FileD :: File
+ Game.Chess: pattern FileE :: File
+ Game.Chess: pattern FileF :: File
+ Game.Chess: pattern FileG :: File
+ Game.Chess: pattern FileH :: File
+ Game.Chess: pattern G1 :: Square
+ Game.Chess: pattern G2 :: Square
+ Game.Chess: pattern G3 :: Square
+ Game.Chess: pattern G4 :: Square
+ Game.Chess: pattern G5 :: Square
+ Game.Chess: pattern G6 :: Square
+ Game.Chess: pattern G7 :: Square
+ Game.Chess: pattern G8 :: Square
+ Game.Chess: pattern H1 :: Square
+ Game.Chess: pattern H2 :: Square
+ Game.Chess: pattern H3 :: Square
+ Game.Chess: pattern H4 :: Square
+ Game.Chess: pattern H5 :: Square
+ Game.Chess: pattern H6 :: Square
+ Game.Chess: pattern H7 :: Square
+ Game.Chess: pattern H8 :: Square
+ Game.Chess: pattern Rank1 :: Rank
+ Game.Chess: pattern Rank2 :: Rank
+ Game.Chess: pattern Rank3 :: Rank
+ Game.Chess: pattern Rank4 :: Rank
+ Game.Chess: pattern Rank5 :: Rank
+ Game.Chess: pattern Rank6 :: Rank
+ Game.Chess: pattern Rank7 :: Rank
+ Game.Chess: pattern Rank8 :: Rank
+ Game.Chess: rank :: Square -> Rank
+ Game.Chess: rankChar :: Square -> Char
+ Game.Chess: rankFile :: Iso' Square (Rank, File)
+ Game.Chess: toCoord :: IsString s => Square -> s
+ Game.Chess.ECO: CO :: !Text -> !Text -> !Maybe Text -> !Vector Ply -> Opening
+ Game.Chess.ECO: [coCode] :: Opening -> !Text
+ Game.Chess.ECO: [coName] :: Opening -> !Text
+ Game.Chess.ECO: [coPlies] :: Opening -> !Vector Ply
+ Game.Chess.ECO: [coVariation] :: Opening -> !Maybe Text
+ Game.Chess.ECO: data ECO
+ Game.Chess.ECO: data Opening
+ Game.Chess.ECO: defaultECO :: ECO
+ Game.Chess.ECO: ecoPgn :: FileReader
+ Game.Chess.ECO: embedECO :: FileReader -> FilePath -> Q (TExp ECO)
+ Game.Chess.ECO: fromList :: [Opening] -> ECO
+ Game.Chess.ECO: fromPGN :: PGN -> ECO
+ Game.Chess.ECO: lookup :: Position -> ECO -> Maybe Opening
+ Game.Chess.ECO: readECOPGNFile :: MonadIO m => FilePath -> m (Either String ECO)
+ Game.Chess.ECO: readSCIDECOFile :: MonadIO m => FilePath -> m (Either String ECO)
+ Game.Chess.ECO: scid :: Parser ECO
+ Game.Chess.ECO: scidEco :: FileReader
+ Game.Chess.ECO: toList :: ECO -> [Opening]
+ Game.Chess.PGN: PlyData :: ![Int] -> !Ply -> ![Int] -> PlyData
+ Game.Chess.PGN: [pgnPly] :: PlyData -> !Ply
+ Game.Chess.PGN: [prefixNAG] :: PlyData -> ![Int]
+ Game.Chess.PGN: [suffixNAG] :: PlyData -> ![Int]
+ Game.Chess.PGN: data PlyData
+ Game.Chess.PGN: pgn :: Parser PGN
- Game.Chess: doPly :: Position -> Ply -> Position
+ Game.Chess: doPly :: HasCallStack => Position -> Ply -> Position
- Game.Chess: enPassantSquare :: Position -> Maybe Sq
+ Game.Chess: enPassantSquare :: Position -> Maybe Square
- Game.Chess: isDark :: IsSquare sq => sq -> Bool
+ Game.Chess: isDark :: Square -> Bool
- Game.Chess: isLight :: IsSquare sq => sq -> Bool
+ Game.Chess: isLight :: Square -> Bool
- Game.Chess: pieceAt :: IsSquare sq => Position -> sq -> Maybe (Color, PieceType)
+ Game.Chess: pieceAt :: Position -> Square -> Maybe (Color, PieceType)
- Game.Chess: plySource :: Ply -> Int
+ Game.Chess: plySource :: Ply -> Square
- Game.Chess: plyTarget :: Ply -> Int
+ Game.Chess: plyTarget :: Ply -> Square
- Game.Chess.PGN: readPGNFile :: FilePath -> IO (Either String PGN)
+ Game.Chess.PGN: readPGNFile :: MonadIO m => FilePath -> m (Either String PGN)
- Game.Chess.SAN: toSAN :: IsString s => Position -> Ply -> s
+ Game.Chess.SAN: toSAN :: (HasCallStack, IsString s) => Position -> Ply -> s
- Game.Chess.SAN: varToSAN :: IsString s => Position -> [Ply] -> s
+ Game.Chess.SAN: varToSAN :: (MonoFoldable variation, Element variation ~ Ply, IsString string) => Position -> variation -> string
- Game.Chess.UCI: CurrMove :: Ply -> Info
+ Game.Chess.UCI: CurrMove :: !Ply -> Info
- Game.Chess.UCI: CurrMoveNumber :: Int -> Info
+ Game.Chess.UCI: CurrMoveNumber :: !Int -> Info
- Game.Chess.UCI: Depth :: Int -> Info
+ Game.Chess.UCI: Depth :: !Int -> Info
- Game.Chess.UCI: Elapsed :: Time Millisecond -> Info
+ Game.Chess.UCI: Elapsed :: !Time Millisecond -> Info
- Game.Chess.UCI: HashFull :: Int -> Info
+ Game.Chess.UCI: HashFull :: !Int -> Info
- Game.Chess.UCI: MultiPV :: Int -> Info
+ Game.Chess.UCI: MultiPV :: !Int -> Info
- Game.Chess.UCI: NPS :: Int -> Info
+ Game.Chess.UCI: NPS :: !Int -> Info
- Game.Chess.UCI: Nodes :: Int -> Info
+ Game.Chess.UCI: Nodes :: !Int -> Info
- Game.Chess.UCI: PV :: [Ply] -> Info
+ Game.Chess.UCI: PV :: !Vector Ply -> Info
- Game.Chess.UCI: Score :: Score -> Maybe Bounds -> Info
+ Game.Chess.UCI: Score :: !Score -> Maybe Bounds -> Info
- Game.Chess.UCI: SelDepth :: Int -> Info
+ Game.Chess.UCI: SelDepth :: !Int -> Info
- Game.Chess.UCI: String :: ByteString -> Info
+ Game.Chess.UCI: String :: !ByteString -> Info
- Game.Chess.UCI: TBHits :: Int -> Info
+ Game.Chess.UCI: TBHits :: !Int -> Info

Files

CHANGELOG.md view
@@ -1,5 +1,18 @@ # Releases +## chessIO 0.7.0.0++- Remove IsSquare class and add three newtye'd Ints: Square, Rank, File (inspired by [issue 5](https://github.com/mlang/chessIO/issues/5))+- Add HasCallStack to partial doPly and toSAN (thanks Oleg Grenrus)+- instance IsString Position based on fromFEN+- instance Binary Position+- instance Hashable Position+- instance Binary Ply+- instance Unbox Ply+- New functions: rank, file, rankChar, fileChar, toCoord+- New module: Game.Chess.ECO+- Chess.Game.UCI: PV is now an unboxed vector+ ## chessIO 0.6.1.1  - Fix [half-move counter not being reset on pawn push or capture](https://github.com/mlang/chessIO/issues/2) (Thanks to Oleg Grenrus)
app/cboard.hs view
@@ -17,7 +17,7 @@     ( fromFEN, fromUCI, isDark, legalPlies, pieceAt, startpos,       Color(Black, White),       PieceType(King, Pawn, Knight, Bishop, Rook, Queen),-      Ply, Position, Sq(H8, A1) )+      Ply, Position, Square(H8, A1) ) import Game.Chess.Polyglot     ( PolyglotBook, defaultBook, readPolyglotFile, bookPlies, bookPly ) import Game.Chess.SAN ( fromSAN, toSAN, unsafeToSAN, varToSAN )
app/cbookview.hs view
@@ -1,53 +1,55 @@ {-# LANGUAGE TemplateHaskell #-}-import Prelude hiding (last)-import Control.Monad ( void )-import Data.Foldable ( foldl', toList )-import Data.Ix-import Data.List ( elemIndex, intersperse )-import Data.List.Extra ( chunksOf )-import Data.List.NonEmpty (NonEmpty)-import qualified Data.List.NonEmpty as NonEmpty-import Data.Maybe ( fromJust, fromMaybe )-import Data.Tree ( Tree(..), Forest )-import Data.Tree.Zipper ( TreePos, Full-                        , label, forest, fromForest, nextTree, prevTree-                        )-import qualified Data.Tree.Zipper as TreePos-import qualified Data.Vector as Vec-import Game.Chess ( Color(..), PieceType(..), Sq(..), toIndex, isDark-                  , Position, color, startpos, pieceAt, toFEN-                  , Ply, plyTarget, doPly-                  )-import Game.Chess.Polyglot ( defaultBook, bookForest, readPolyglotFile )-import Game.Chess.PGN ( readPGNFile, pgnForest )-import Game.Chess.SAN ( toSAN, varToSAN )-import Game.Chess.Tree ( plyForest, pathTree )-import Lens.Micro ( over, (&), (^.), (.~) )-import Lens.Micro.TH ( makeLenses )-import qualified Graphics.Vty as V+import           Control.Lens         (makeLenses, over, (&), (.~), (^.))+import           Control.Monad        (void)+import           Data.Foldable        (foldl', toList)+import           Data.Ix+import           Data.List            (elemIndex, intersperse)+import           Data.List.Extra      (chunksOf)+import           Data.List.NonEmpty   (NonEmpty, cons)+import qualified Data.List.NonEmpty   as NonEmpty+import           Data.Maybe           (fromJust, fromMaybe)+import           Data.Tree            (Forest, Tree (..), foldTree)+import           Data.Tree.Zipper     (Full, TreePos, forest, fromForest, label,+                                       nextTree, prevTree)+import qualified Data.Tree.Zipper     as TreePos+import qualified Data.Vector          as Vec+import           Game.Chess           (Color (..), PieceType (..), Ply,+                                       Position, Square (A1, H8), color, doPly,+                                       isDark, pieceAt, plyTarget, startpos,+                                       toFEN)+import           Game.Chess.ECO       (Opening (..), defaultECO)+import qualified Game.Chess.ECO       as ECO+import           Game.Chess.PGN       (pgnForest, readPGNFile)+import           Game.Chess.Polyglot  (bookForest, defaultBook,+                                       readPolyglotFile)+import           Game.Chess.SAN       (toSAN, varToSAN)+import           Game.Chess.Tree      (plyForest)+import qualified Graphics.Vty         as V+import           Prelude              hiding (last) -import Brick.Main ( App(..), defaultMain, continue, halt )-import qualified Brick.Focus as F-import qualified Brick.Widgets.List as L-import Brick.AttrMap (AttrName, attrMap)-import Brick.Util (on)-import Brick.Types ( EventM, Next, Widget, Location(Location), BrickEvent( VtyEvent ) )-import Brick.Widgets.Core ( showCursor, withAttr, hLimit, vLimit, hBox, vBox, str, strWrap-                          , (<+>), (<=>)-                          )-import Brick.Widgets.Center ( hCenter )-import Brick.Widgets.Border ( border )-import System.FilePath-import System.Environment ( getArgs )+import           Brick.AttrMap        (AttrName, attrMap)+import qualified Brick.Focus          as F+import           Brick.Main           (App (..), continue, defaultMain, halt)+import           Brick.Types          (BrickEvent (VtyEvent), EventM,+                                       Location (Location), Next, Widget)+import           Brick.Util           (on)+import           Brick.Widgets.Border (border, borderWithLabel)+import           Brick.Widgets.Center (hCenter)+import           Brick.Widgets.Core   (hBox, hLimit, showCursor, str, strWrap,+                                       txt, txtWrap, vBox, vLimit, withAttr,+                                       (<+>), (<=>))+import qualified Brick.Widgets.List   as L+import           System.Environment   (getArgs)+import           System.FilePath  data Name = List | Board | BoardStyle deriving (Show, Ord, Eq) -type Style a = Position -> Sq -> Widget a+type Style a = Position -> Square -> Widget a  data St = St { _initialPosition :: Position-             , _treePos :: TreePos Full (NonEmpty Ply)-             , _boardStyle :: L.List Name (String, Style Name)-             , _focusRing :: F.FocusRing Name+             , _treePos         :: TreePos Full (NonEmpty Ply)+             , _boardStyle      :: L.List Name (String, Style Name)+             , _focusRing       :: F.FocusRing Name              }  makeLenses ''St@@ -56,7 +58,7 @@ position st = foldl' doPly (st^.initialPosition) (st^.treePos & label) previousPosition st = foldl' doPly (st^.initialPosition) (st^.treePos & label & NonEmpty.init) -targetSquare :: St -> Int+targetSquare :: St -> Square targetSquare = plyTarget . NonEmpty.last . label . (^. treePos)  elemList :: Eq a => n -> a -> [a] -> L.List n a@@ -71,7 +73,7 @@ selectedAttr :: AttrName selectedAttr = "selected" -renderPosition :: Position -> Color -> Maybe Int -> Style Name -> Widget Name+renderPosition :: Position -> Color -> Maybe Square -> Style Name -> Widget Name renderPosition pos persp tgt sty = ranks <+> border board <=> files where   rev :: [a] -> [a]   rev = if persp == Black then reverse else id@@ -79,8 +81,8 @@   files = str $ rev "   a b c d e f g h   "   board = hLimit 17 . vLimit 8 . vBox $ map (hBox . spacer . map pc) squares   squares = reverse $ chunksOf 8 $ rev [A1 .. H8]-  c sq | Just t <- tgt, t == toIndex sq = showCursor Board $ Location (0,0)-       | otherwise                      = id+  c sq | Just t <- tgt, t == sq = showCursor Board $ Location (0,0)+       | otherwise              = id   pc sq = c sq $ sty pos sq   spacer = (str " " :) . (<> [str " "]) . intersperse (str " ") @@ -113,8 +115,8 @@ putCursorIf False _ _  = id  withAttrIf :: Bool -> AttrName -> Widget n -> Widget n-withAttrIf True attr   = withAttr attr-withAttrIf False _     = id+withAttrIf True attr = withAttr attr+withAttrIf False _   = id  type Command = St -> EventM Name (Next St) @@ -171,9 +173,10 @@   appStartEvent = pure   appDraw st = [ui] where     ui = hBox [ hLimit 9 list-              , hLimit 23 $ hCenter board+              , hLimit 23 $ hCenter board <=> str " " <=> eco               , hCenter . hLimit 40 $ str " " <=> var               ]+      <=> str " "       <=> (str "FEN: " <+> fen)       <=> str " "       <=> hBox [str "Board style (+/- to change): ", style]@@ -181,6 +184,11 @@                , hCenter $ str " "                , str "ESC (q) = Quit"                ]+    eco = maybe (str " ") drawECO (ECO.lookup (position st) defaultECO)+    drawECO co = borderWithLabel (str "ECO " <+> txt (coCode co)) $+      case coVariation co of+        Nothing        -> txtWrap (coName co)+        Just variation -> txtWrap (coName co) <=> txtWrap variation     style = vLimit 1 $ L.renderList drawStyle True (st^.boardStyle)     drawStyle foc (n, _) = putCursorIf foc BoardStyle (0,0) $ str n     selectedStyle = maybe english (snd . snd) $@@ -188,7 +196,7 @@     list = L.renderList (drawPly (previousPosition st)) True (plyList st)     drawPly p foc = putCursorIf foc List (0,0)                   . withAttrIf foc selectedAttr-                  . str . toSAN p +                  . str . toSAN p     board = renderPosition (position st) (color (previousPosition st)) (Just . targetSquare $ st) selectedStyle     var = strWrap . varToSAN (st^.initialPosition) $ st^.treePos & label & toList     fen = str . toFEN $ position st@@ -212,6 +220,9 @@   pos = startpos   fr = F.focusRing [List, Board, BoardStyle]   sl = L.list BoardStyle (Vec.fromList styles) 1++pathTree :: Tree a -> Tree (NonEmpty a)+pathTree = foldTree $ \a -> Node (pure a) . (fmap . fmap) (cons a)  main :: IO () main = do
+ book/eco.pgn view
@@ -0,0 +1,12143 @@+{+A PGN file of ECO classifications distributed with the PGN extraction+program, pgn-extract. I believe that the original file from which I+generated this was put together by Ewart Shaw, Franz Hemmer and others,+to whom appropriate thanks and acknowledgement is due.  Permission has+been granted for its inclusion with the pgn-extract program, which is+available from:+https://www.cs.kent.ac.uk/~djb/pgn-extract/++David J. Barnes (d.j.barnes@kent.ac.uk)+}++[ECO "A00"]+[Opening "Polish (Sokolsky) opening"]++1. b4 *++[ECO "A00"]+[Opening "Polish"]+[Variation "Tuebingen variation"]++1. b4 Nh6 *++[ECO "A00"]+[Opening "Polish"]+[Variation "Outflank variation"]++1. b4 c6 *++[ECO "A00"]+[Opening "Benko's opening"]++1. g3 *++[ECO "A00"]+[Opening "Lasker simul special"]++1. g3 h5 *++[ECO "A00"]+[Opening "Benko's opening"]+[Variation "reversed Alekhine"]++1. g3 e5 2. Nf3 *++[ECO "A00"]+[Opening "Grob's attack"]++1. g4 *++[ECO "A00"]+[Opening "Grob"]+[Variation "spike attack"]++1. g4 d5 2. Bg2 c6 3. g5 *++[ECO "A00"]+[Opening "Grob"]+[Variation "Fritz gambit"]++1. g4 d5 2. Bg2 Bxg4 3. c4 *++[ECO "A00"]+[Opening "Grob"]+[Variation "Romford counter-gambit"]++1. g4 d5 2. Bg2 Bxg4 3. c4 d4 *++[ECO "A00"]+[Opening "Clemenz (Mead's, Basman's or de Klerk's) opening"]++1. h3 *++[ECO "A00"]+[Opening "Global opening"]++1. h3 e5 2. a3 *++[ECO "A00"]+[Opening "Amar (Paris) opening"]++1. Nh3 *++[ECO "A00"]+[Opening "Amar gambit"]++1. Nh3 d5 2. g3 e5 3. f4 Bxh3 4. Bxh3 exf4 *++[ECO "A00"]+[Opening "Dunst (Sleipner, Heinrichsen) opening"]++1. Nc3 *++[ECO "A00"]+[Opening "Dunst (Sleipner, Heinrichsen) opening"]++1. Nc3 e5 *++[ECO "A00"]+[Opening "Battambang opening"]++1. Nc3 e5 2. a3 *++[ECO "A00"]+[Opening "Novosibirsk opening"]++1. Nc3 c5 2. d4 cxd4 3. Qxd4 Nc6 4. Qh4 *++[ECO "A00"]+[Opening "Anderssen's opening"]++1. a3 *++[ECO "A00"]+[Opening "Ware (Meadow Hay) opening"]++1. a4 *++[ECO "A00"]+[Opening "Crab opening"]++1. a4 e5 2. h4 *++[ECO "A00"]+[Opening "Saragossa opening"]++1. c3 *++[ECO "A00"]+[Opening "Mieses opening"]++1. d3 *++[ECO "A00"]+[Opening "Mieses opening"]++1. d3 e5 *++[ECO "A00"]+[Opening "Valencia opening"]++1. d3 e5 2. Nd2 *++[ECO "A00"]+[Opening "Venezolana opening"]++1. d3 c5 2. Nc3 Nc6 3. g3 *++[ECO "A00"]+[Opening "Van't Kruijs opening"]++1. e3 *++[ECO "A00"]+[Opening "Amsterdam attack"]++1. e3 e5 2. c4 d6 3. Nc3 Nc6 4. b3 Nf6 *++[ECO "A00"]+[Opening "Gedult's opening"]++1. f3 *++[ECO "A00"]+[Opening "Hammerschlag (Fried fox/Pork chop opening)"]++1. f3 e5 2. Kf2 *++[ECO "A00"]+[Opening "Anti-Borg (Desprez) opening"]++1. h4 *++[ECO "A00"]+[Opening "Durkin's attack"]++1. Na3 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]++1. b3 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "modern variation"]++1. b3 e5 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "Indian variation"]++1. b3 Nf6 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "classical variation"]++1. b3 d5 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "English variation"]++1. b3 c5 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "Dutch variation"]++1. b3 f5 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "Polish variation"]++1. b3 b5 *++[ECO "A01"]+[Opening "Nimzovich-Larsen attack"]+[Variation "symmetrical variation"]++1. b3 b6 *++[ECO "A02"]+[Opening "Bird's opening"]++1. f4 *++[ECO "A02"]+[Opening "Bird"]+[Variation "From gambit"]++1. f4 e5 *++[ECO "A02"]+[Opening "Bird"]+[Variation "From gambit, Lasker variation"]++1. f4 e5 2. fxe5 d6 3. exd6 Bxd6 4. Nf3 g5 *++[ECO "A02"]+[Opening "Bird"]+[Variation "From gambit, Lipke variation"]++1. f4 e5 2. fxe5 d6 3. exd6 Bxd6 4. Nf3 Nh6 5. d4 *++[ECO "A02"]+[Opening "Bird's opening, Swiss gambit"]++1. f4 f5 2. e4 fxe4 3. Nc3 Nf6 4. g4 *++[ECO "A02"]+[Opening "Bird"]+[Variation "Hobbs gambit"]++1. f4 g5 *++[ECO "A03"]+[Opening "Bird's opening"]++1. f4 d5 *++[ECO "A03"]+[Opening "Mujannah opening"]++1. f4 d5 2. c4 *++[ECO "A03"]+[Opening "Bird's opening"]+[Variation "Williams gambit"]++1. f4 d5 2. e4 *++[ECO "A03"]+[Opening "Bird's opening"]+[Variation "Lasker variation"]++1. f4 d5 2. Nf3 Nf6 3. e3 c5 *++[ECO "A04"]+[Opening "Reti opening"]++1. Nf3 *++[ECO "A04"]+[Opening "Reti v Dutch"]++1. Nf3 f5 *++[ECO "A04"]+[Opening "Reti"]+[Variation "Pirc-Lisitsin gambit"]++1. Nf3 f5 2. e4 *++[ECO "A04"]+[Opening "Reti"]+[Variation "Lisitsin gambit deferred"]++1. Nf3 f5 2. d3 Nf6 3. e4 *++[ECO "A04"]+[Opening "Reti opening"]++1. Nf3 d6 *++[ECO "A04"]+[Opening "Reti"]+[Variation "Wade defence"]++1. Nf3 d6 2. e4 Bg4 *++[ECO "A04"]+[Opening "Reti"]+[Variation "Herrstroem gambit"]++1. Nf3 g5 *++[ECO "A05"]+[Opening "Reti opening"]++1. Nf3 Nf6 *++[ECO "A05"]+[Opening "Reti"]+[Variation "King's Indian attack, Spassky's variation"]++1. Nf3 Nf6 2. g3 b5 *++[ECO "A05"]+[Opening "Reti"]+[Variation "King's Indian attack"]++1. Nf3 Nf6 2. g3 g6 *++[ECO "A05"]+[Opening "Reti"]+[Variation "King's Indian attack, Reti-Smyslov variation"]++1. Nf3 Nf6 2. g3 g6 3. b4 *++[ECO "A06"]+[Opening "Reti opening"]++1. Nf3 d5 *++[ECO "A06"]+[Opening "Reti"]+[Variation "old Indian attack"]++1. Nf3 d5 2. d3 *++[ECO "A06"]+[Opening "Santasiere's folly"]++1. Nf3 d5 2. b4 *++[ECO "A06"]+[Opening "Tennison (Lemberg, Zukertort) gambit"]++1. Nf3 d5 2. e4 *++[ECO "A06"]+[Opening "Reti"]+[Variation "Nimzovich-Larsen attack"]++1. Nf3 d5 2. b3 *++[ECO "A07"]+[Opening "Reti"]+[Variation "King's Indian attack (Barcza system)"]++1. Nf3 d5 2. g3 *++[ECO "A07"]+[Opening "Reti"]+[Variation "King's Indian attack, Yugoslav variation"]++1. Nf3 d5 2. g3 Nf6 3. Bg2 c6 4. O-O Bg4 *++[ECO "A07"]+[Opening "Reti"]+[Variation "King's Indian attack, Keres variation"]++1. Nf3 d5 2. g3 Bg4 3. Bg2 Nd7 *++[ECO "A07"]+[Opening "Reti"]+[Variation "King's Indian attack"]++1. Nf3 d5 2. g3 g6 *++[ECO "A07"]+[Opening "Reti"]+[Variation "King's Indian attack, Pachman system"]++1. Nf3 d5 2. g3 g6 3. Bg2 Bg7 4. O-O e5 5. d3 Ne7 *++[ECO "A07"]+[Opening "Reti"]+[Variation "King's Indian attack (with ...c5)"]++1. Nf3 d5 2. g3 c5 *++[ECO "A08"]+[Opening "Reti"]+[Variation "King's Indian attack"]++1. Nf3 d5 2. g3 c5 3. Bg2 *++[ECO "A08"]+[Opening "Reti"]+[Variation "King's Indian attack, French variation"]++1. Nf3 d5 2. g3 c5 3. Bg2 Nc6 4. O-O e6 5. d3 Nf6 6. Nbd2 Be7 7. e4 O-O 8.+Re1 *++[ECO "A09"]+[Opening "Reti opening"]++1. Nf3 d5 2. c4 *++[ECO "A09"]+[Opening "Reti"]+[Variation "advance variation"]++1. Nf3 d5 2. c4 d4 *++[ECO "A09"]+[Opening "Reti accepted"]++1. Nf3 d5 2. c4 dxc4 *++[ECO "A09"]+[Opening "Reti accepted"]+[Variation "Keres variation"]++1. Nf3 d5 2. c4 dxc4 3. e3 Be6 *++[ECO "A10"]+[Opening "English opening"]++1. c4 *++[ECO "A10"]+[Opening "English opening"]++1. c4 g6 *++[ECO "A10"]+[Opening "English"]+[Variation "Adorjan defence"]++1. c4 g6 2. e4 e5 *++[ECO "A10"]+[Opening "English"]+[Variation "Jaenisch gambit"]++1. c4 b5 *++[ECO "A10"]+[Opening "English"]+[Variation "Anglo-Dutch defense"]++1. c4 f5 *++[ECO "A11"]+[Opening "English"]+[Variation "Caro-Kann defensive system"]++1. c4 c6 *++[ECO "A12"]+[Opening "English"]+[Variation "Caro-Kann defensive system"]++1. c4 c6 2. Nf3 d5 3. b3 *++[ECO "A12"]+[Opening "English"]+[Variation "Torre defensive system"]++1. c4 c6 2. Nf3 d5 3. b3 Nf6 4. g3 Bg4 *++[ECO "A12"]+[Opening "English"]+[Variation "London defensive system"]++1. c4 c6 2. Nf3 d5 3. b3 Nf6 4. g3 Bf5 *++[ECO "A12"]+[Opening "English"]+[Variation "Caro-Kann defensive system"]++1. c4 c6 2. Nf3 d5 3. b3 Nf6 4. Bb2 *++[ECO "A12"]+[Opening "English"]+[Variation "Bled variation"]++1. c4 c6 2. Nf3 d5 3. b3 Nf6 4. Bb2 g6 *++[ECO "A12"]+[Opening "English"]+[Variation "New York (London) defensive system"]++1. c4 c6 2. Nf3 d5 3. b3 Nf6 4. Bb2 Bf5 *++[ECO "A12"]+[Opening "English"]+[Variation "Capablanca's variation"]++1. c4 c6 2. Nf3 d5 3. b3 Nf6 4. Bb2 Bg4 *++[ECO "A12"]+[Opening "English"]+[Variation "Caro-Kann defensive system, Bogolyubov variation"]++1. c4 c6 2. Nf3 d5 3. b3 Bg4 *++[ECO "A13"]+[Opening "English opening"]++1. c4 e6 *++[ECO "A13"]+[Opening "English"]+[Variation "Romanishin gambit"]++1. c4 e6 2. Nf3 Nf6 3. g3 a6 4. Bg2 b5 *++[ECO "A13"]+[Opening "English opening"]+[Variation "Agincourt variation"]++1. c4 e6 2. Nf3 d5 *++[ECO "A13"]+[Opening "English"]+[Variation "Wimpey system"]++1. c4 e6 2. Nf3 d5 3. b3 Nf6 4. Bb2 c5 5. e3 *++[ECO "A13"]+[Opening "English opening"]+[Variation "Agincourt variation"]++1. c4 e6 2. Nf3 d5 3. g3 *++[ECO "A13"]+[Opening "English"]+[Variation "Kurajica defence"]++1. c4 e6 2. Nf3 d5 3. g3 c6 *++[ECO "A13"]+[Opening "English"]+[Variation "Neo-Catalan"]++1. c4 e6 2. Nf3 d5 3. g3 Nf6 *++[ECO "A13"]+[Opening "English"]+[Variation "Neo-Catalan accepted"]++1. c4 e6 2. Nf3 d5 3. g3 Nf6 4. Bg2 dxc4 *++[ECO "A14"]+[Opening "English"]+[Variation "Neo-Catalan declined"]++1. c4 e6 2. Nf3 d5 3. g3 Nf6 4. Bg2 Be7 5. O-O *++[ECO "A14"]+[Opening "English"]+[Variation "Symmetrical, Keres defence"]++1. c4 e6 2. Nf3 d5 3. g3 Nf6 4. Bg2 Be7 5. O-O c5 6. cxd5 Nxd5 7. Nc3 Nc6 *++[ECO "A15"]+[Opening "English, 1...Nf6 (Anglo-Indian defense)"]++1. c4 Nf6 *++[ECO "A15"]+[Opening "English orang-utan"]++1. c4 Nf6 2. b4 *++[ECO "A15"]+[Opening "English opening"]++1. c4 Nf6 2. Nf3 *++[ECO "A16"]+[Opening "English opening"]++1. c4 Nf6 2. Nc3 *++[ECO "A16"]+[Opening "English"]+[Variation "Anglo-Gruenfeld defense"]++1. c4 Nf6 2. Nc3 d5 *++[ECO "A16"]+[Opening "English"]+[Variation "Anglo-Gruenfeld, Smyslov defense"]++1. c4 Nf6 2. Nc3 d5 3. cxd5 Nxd5 4. g3 g6 5. Bg2 Nxc3 *++[ECO "A16"]+[Opening "English"]+[Variation "Anglo-Gruenfeld, Czech defense"]++1. c4 Nf6 2. Nc3 d5 3. cxd5 Nxd5 4. g3 g6 5. Bg2 Nb6 *++[ECO "A16"]+[Opening "English"]+[Variation "Anglo-Gruenfeld defense"]++1. c4 Nf6 2. Nc3 d5 3. cxd5 Nxd5 4. Nf3 *++[ECO "A16"]+[Opening "English"]+[Variation "Anglo-Gruenfeld defense, Korchnoi variation"]++1. c4 Nf6 2. Nc3 d5 3. cxd5 Nxd5 4. Nf3 g6 5. g3 Bg7 6. Bg2 e5 *++[ECO "A17"]+[Opening "English opening"]++1. c4 Nf6 2. Nc3 e6 *++[ECO "A17"]+[Opening "English"]+[Variation "Queens Indian formation"]++1. c4 Nf6 2. Nc3 e6 3. Nf3 b6 *++[ECO "A17"]+[Opening "English"]+[Variation "Queens Indian, Romanishin variation"]++1. c4 Nf6 2. Nc3 e6 3. Nf3 b6 4. e4 Bb7 5. Bd3 *++[ECO "A17"]+[Opening "English"]+[Variation "Nimzo-English opening"]++1. c4 Nf6 2. Nc3 e6 3. Nf3 Bb4 *++[ECO "A18"]+[Opening "English"]+[Variation "Mikenas-Carls variation"]++1. c4 Nf6 2. Nc3 e6 3. e4 *++[ECO "A18"]+[Opening "English"]+[Variation "Mikenas-Carls, Flohr variation"]++1. c4 Nf6 2. Nc3 e6 3. e4 d5 4. e5 *++[ECO "A18"]+[Opening "English"]+[Variation "Mikenas-Carls, Kevitz variation"]++1. c4 Nf6 2. Nc3 e6 3. e4 Nc6 *++[ECO "A19"]+[Opening "English"]+[Variation "Mikenas-Carls, Sicilian variation"]++1. c4 Nf6 2. Nc3 e6 3. e4 c5 *++[ECO "A20"]+[Opening "English opening"]++1. c4 e5 *++[ECO "A20"]+[Opening "English, Nimzovich variation"]++1. c4 e5 2. Nf3 *++[ECO "A20"]+[Opening "English, Nimzovich, Flohr variation"]++1. c4 e5 2. Nf3 e4 *++[ECO "A21"]+[Opening "English opening"]++1. c4 e5 2. Nc3 *++[ECO "A21"]+[Opening "English, Troeger defence"]++1. c4 e5 2. Nc3 d6 3. g3 Be6 4. Bg2 Nc6 *++[ECO "A21"]+[Opening "English, Keres variation"]++1. c4 e5 2. Nc3 d6 3. g3 c6 *++[ECO "A21"]+[Opening "English opening"]++1. c4 e5 2. Nc3 d6 3. Nf3 *++[ECO "A21"]+[Opening "English, Smyslov defence"]++1. c4 e5 2. Nc3 d6 3. Nf3 Bg4 *++[ECO "A21"]+[Opening "English, Kramnik-Shirov counterattack"]++1. c4 e5 2. Nc3 Bb4 *++[ECO "A22"]+[Opening "English opening"]++1. c4 e5 2. Nc3 Nf6 *++[ECO "A22"]+[Opening "English"]+[Variation "Bellon gambit"]++1. c4 e5 2. Nc3 Nf6 3. Nf3 e4 4. Ng5 b5 *++[ECO "A22"]+[Opening "English"]+[Variation "Carls' Bremen system"]++1. c4 e5 2. Nc3 Nf6 3. g3 *++[ECO "A22"]+[Opening "English"]+[Variation "Bremen, reverse dragon"]++1. c4 e5 2. Nc3 Nf6 3. g3 d5 *++[ECO "A22"]+[Opening "English"]+[Variation "Bremen, Smyslov system"]++1. c4 e5 2. Nc3 Nf6 3. g3 Bb4 *++[ECO "A23"]+[Opening "English"]+[Variation "Bremen system, Keres variation"]++1. c4 e5 2. Nc3 Nf6 3. g3 c6 *++[ECO "A24"]+[Opening "English"]+[Variation "Bremen system with ...g6"]++1. c4 e5 2. Nc3 Nf6 3. g3 g6 *++[ECO "A25"]+[Opening "English"]+[Variation "Sicilian reversed"]++1. c4 e5 2. Nc3 Nc6 *++[ECO "A25"]+[Opening "English"]+[Variation "closed system"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 *++[ECO "A25"]+[Opening "English"]+[Variation "closed, Taimanov variation"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. e3 d6 6. Nge2 Nh6 *++[ECO "A25"]+[Opening "English"]+[Variation "closed, Hort variation"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. e3 d6 6. Nge2 Be6 *++[ECO "A25"]+[Opening "English"]+[Variation "closed, 5.Rb1"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Rb1 *++[ECO "A25"]+[Opening "English"]+[Variation "closed, 5.Rb1 Taimanov variation"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Rb1 Nh6 *++[ECO "A25"]+[Opening "English"]+[Variation "closed system (without ...d6)"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 *++[ECO "A26"]+[Opening "English"]+[Variation "closed system"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 *++[ECO "A26"]+[Opening "English"]+[Variation "Botvinnik system"]++1. c4 e5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 6. e4 *++[ECO "A27"]+[Opening "English"]+[Variation "three knights system"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights system"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 *++[ECO "A28"]+[Opening "English"]+[Variation "Nenarokov variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. d4 exd4 5. Nxd4 Bb4 6. Bg5 h6 7. Bh4 +Bxc3+ 8. bxc3 Ne5 *++[ECO "A28"]+[Opening "English"]+[Variation "Bradley Beach variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. d4 e4 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights, Nimzovich variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. e4 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights, Marini variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. a3 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights, Capablanca variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. d3 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights, 4.e3"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. e3 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights, Stean variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. e3 Bb4 5. Qc2 O-O 6. Nd5 Re8 7. Qf5 *++[ECO "A28"]+[Opening "English"]+[Variation "four knights, Romanishin variation"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. e3 Bb4 5. Qc2 Bxc3 *++[ECO "A29"]+[Opening "English"]+[Variation "four knights, kingside fianchetto"]++1. c4 e5 2. Nc3 Nc6 3. Nf3 Nf6 4. g3 *++[ECO "A30"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 *++[ECO "A30"]+[Opening "English"]+[Variation "symmetrical, hedgehog system"]++1. c4 c5 2. Nf3 Nf6 3. g3 b6 4. Bg2 Bb7 5. O-O e6 6. Nc3 Be7 *++[ECO "A30"]+[Opening "English"]+[Variation "symmetrical, hedgehog, flexible formation"]++1. c4 c5 2. Nf3 Nf6 3. g3 b6 4. Bg2 Bb7 5. O-O e6 6. Nc3 Be7 7. d4 cxd4 8.+Qxd4 d6 9. Rd1 a6 10. b3 Nbd7 *++[ECO "A31"]+[Opening "English"]+[Variation "symmetrical, Benoni formation"]++1. c4 c5 2. Nf3 Nf6 3. d4 *++[ECO "A32"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nf3 Nf6 3. d4 cxd4 4. Nxd4 e6 *++[ECO "A33"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nf3 Nf6 3. d4 cxd4 4. Nxd4 e6 5. Nc3 Nc6 *++[ECO "A33"]+[Opening "English"]+[Variation "symmetrical, Geller variation"]++1. c4 c5 2. Nf3 Nf6 3. d4 cxd4 4. Nxd4 e6 5. Nc3 Nc6 6. g3 Qb6 *++[ECO "A34"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nc3 *++[ECO "A34"]+[Opening "English"]+[Variation "symmetrical, three knights system"]++1. c4 c5 2. Nc3 Nf6 3. Nf3 d5 4. cxd5 Nxd5 *++[ECO "A34"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nc3 Nf6 3. g3 *++[ECO "A34"]+[Opening "English"]+[Variation "symmetrical, Rubinstein system"]++1. c4 c5 2. Nc3 Nf6 3. g3 d5 4. cxd5 Nxd5 5. Bg2 Nc7 *++[ECO "A35"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nc3 Nc6 *++[ECO "A35"]+[Opening "English"]+[Variation "symmetrical, four knights system"]++1. c4 c5 2. Nc3 Nc6 3. Nf3 Nf6 *++[ECO "A36"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nc3 Nc6 3. g3 *++[ECO "A36"]+[Opening "English"]+[Variation "ultra-symmetrical variation"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 *++[ECO "A36"]+[Opening "English"]+[Variation "symmetrical, Botvinnik system reversed"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. e3 e5 *++[ECO "A36"]+[Opening "English"]+[Variation "symmetrical, Botvinnik system"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. e4 *++[ECO "A37"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Nf3 *++[ECO "A37"]+[Opening "English"]+[Variation "symmetrical, Botvinnik system reversed"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Nf3 e5 *++[ECO "A38"]+[Opening "English"]+[Variation "symmetrical variation"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Nf3 Nf6 *++[ECO "A38"]+[Opening "English"]+[Variation "symmetrical, main line with d3"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Nf3 Nf6 6. O-O O-O 7. d3 *++[ECO "A38"]+[Opening "English"]+[Variation "symmetrical, main line with b3"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Nf3 Nf6 6. O-O O-O 7. b3 *++[ECO "A39"]+[Opening "English"]+[Variation "symmetrical, main line with d4"]++1. c4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. Nf3 Nf6 6. O-O O-O 7. d4 *++[ECO "A40"]+[Opening "Queen's pawn"]++1. d4 *++[ECO "A40"]+[Opening "Queen's pawn"]+[Variation "Lundin (Kevitz-Mikenas) defence"]++1. d4 Nc6 *++[ECO "A40"]+[Opening "Queen's pawn"]+[Variation "Charlick (Englund) gambit"]++1. d4 e5 *++[ECO "A40"]+[Opening "Queen's pawn"]+[Variation "Englund gambit"]++1. d4 e5 2. dxe5 Nc6 3. Nf3 Qe7 4. Qd5 f6 5. exf6 Nxf6 *++[ECO "A40"]+[Opening "Queen's pawn"]+[Variation "English defence"]++1. d4 b6 *++[ECO "A40"]+[Opening "Polish defence"]++1. d4 b5 *++[ECO "A40"]+[Opening "Queen's pawn"]++1. d4 e6 *++[ECO "A40"]+[Opening "Queen's pawn"]+[Variation "Keres defence"]++1. d4 e6 2. c4 b6 *++[ECO "A40"]+[Opening "Queen's pawn"]+[Variation "Franco-Indian (Keres) defence"]++1. d4 e6 2. c4 Bb4+ *++[ECO "A40"]+[Opening "Modern defence"]++1. d4 g6 *++[ECO "A40"]+[Opening "Beefeater defence"]++1. d4 g6 2. c4 Bg7 3. Nc3 c5 4. d5 Bxc3+ 5. bxc3 f5 *++[ECO "A41"]+[Opening "Queen's Pawn"]++1. d4 d6 *++[ECO "A41"]+[Opening "Old Indian"]+[Variation "Tartakower (Wade) variation"]++1. d4 d6 2. Nf3 Bg4 *++[ECO "A41"]+[Opening "Old Indian defence"]++1. d4 d6 2. c4 *++[ECO "A41"]+[Opening "Modern defence"]++1. d4 d6 2. c4 g6 3. Nc3 Bg7 *++[ECO "A41"]+[Opening "Robatsch defence"]+[Variation "Rossolimo variation"]++1. e4 g6 2. d4 Bg7 3. Nf3 d6 4. c4 Bg4 *++[ECO "A42"]+[Opening "Modern defence"]+[Variation "Averbakh system"]++1. d4 d6 2. c4 g6 3. Nc3 Bg7 4. e4 *++[ECO "A42"]+[Opening "Pterodactyl defence"]++1. d4 d6 2. c4 g6 3. Nc3 Bg7 4. e4 c5 5. Nf3 Qa5 *++[ECO "A42"]+[Opening "Modern defence"]+[Variation "Averbakh system, Randspringer variation"]++1. d4 d6 2. c4 g6 3. Nc3 Bg7 4. e4 f5 *++[ECO "A42"]+[Opening "Modern defence"]+[Variation "Averbakh system, Kotov variation"]++1. d4 d6 2. c4 g6 3. Nc3 Bg7 4. e4 Nc6 *++[ECO "A43"]+[Opening "Old Benoni defence"]++1. d4 c5 *++[ECO "A43"]+[Opening "Old Benoni"]+[Variation "Franco-Benoni defence"]++1. d4 c5 2. d5 e6 3. e4 *++[ECO "A43"]+[Opening "Old Benoni"]+[Variation "Mujannah formation"]++1. d4 c5 2. d5 f5 *++[ECO "A43"]+[Opening "Old Benoni defence"]++1. d4 c5 2. d5 Nf6 *++[ECO "A43"]+[Opening "Woozle defence"]++1. d4 c5 2. d5 Nf6 3. Nc3 Qa5 *++[ECO "A43"]+[Opening "Old Benoni defence"]++1. d4 c5 2. d5 Nf6 3. Nf3 *++[ECO "A43"]+[Opening "Hawk (Habichd) defence"]++1. d4 c5 2. d5 Nf6 3. Nf3 c4 *++[ECO "A43"]+[Opening "Old Benoni defence"]++1. d4 c5 2. d5 d6 *++[ECO "A43"]+[Opening "Old Benoni"]+[Variation "Schmid's system"]++1. d4 c5 2. d5 d6 3. Nc3 g6 *++[ECO "A44"]+[Opening "Old Benoni defence"]++1. d4 c5 2. d5 e5 *++[ECO "A44"]+[Opening "Semi-Benoni (`blockade variation')"]++1. d4 c5 2. d5 e5 3. e4 d6 *++[ECO "A45"]+[Opening "Queen's pawn game"]++1. d4 Nf6 *++[ECO "A45"]+[Opening "Queen's pawn"]+[Variation "Bronstein gambit"]++1. d4 Nf6 2. g4 *++[ECO "A45"]+[Opening "Canard opening"]++1. d4 Nf6 2. f4 *++[ECO "A45"]+[Opening "Paleface attack"]++1. d4 Nf6 2. f3 *++[ECO "A45"]+[Opening "Blackmar-Diemer gambit"]++1. d4 Nf6 2. f3 d5 3. e4 *++[ECO "A45"]+[Opening "Gedult attack"]++1. d4 Nf6 2. f3 d5 3. g4 *++[ECO "A45"]+[Opening "Trompovsky attack (Ruth, Opovcensky opening)"]++1. d4 Nf6 2. Bg5 *++[ECO "A46"]+[Opening "Queen's pawn game"]++1. d4 Nf6 2. Nf3 *++[ECO "A46"]+[Opening "Queen's pawn"]+[Variation "Torre attack"]++1. d4 Nf6 2. Nf3 e6 3. Bg5 *++[ECO "A46"]+[Opening "Queen's pawn"]+[Variation "Torre attack, Wagner gambit"]++1. d4 Nf6 2. Nf3 e6 3. Bg5 c5 4. e4 *++[ECO "A46"]+[Opening "Queen's pawn"]+[Variation "Yusupov-Rubinstein system"]++1. d4 Nf6 2. Nf3 e6 3. e3 *++[ECO "A46"]+[Opening "Doery defence"]++1. d4 Nf6 2. Nf3 Ne4 *++[ECO "A47"]+[Opening "Queen's Indian defence"]++1. d4 Nf6 2. Nf3 b6 *++[ECO "A47"]+[Opening "Queen's Indian"]+[Variation "Marienbad system"]++1. d4 Nf6 2. Nf3 b6 3. g3 Bb7 4. Bg2 c5 *++[ECO "A47"]+[Opening "Queen's Indian"]+[Variation "Marienbad system, Berg variation"]++1. d4 Nf6 2. Nf3 b6 3. g3 Bb7 4. Bg2 c5 5. c4 cxd4 6. Qxd4 *++[ECO "A48"]+[Opening "King's Indian"]+[Variation "East Indian defence"]++1. d4 Nf6 2. Nf3 g6 *++[ECO "A48"]+[Opening "King's Indian"]+[Variation "Torre attack"]++1. d4 Nf6 2. Nf3 g6 3. Bg5 *++[ECO "A48"]+[Opening "King's Indian"]+[Variation "London system"]++1. d4 Nf6 2. Nf3 g6 3. Bf4 *++[ECO "A49"]+[Opening "King's Indian"]+[Variation "fianchetto without c4"]++1. d4 Nf6 2. Nf3 g6 3. g3 *++[ECO "A50"]+[Opening "Queen's pawn game"]++1. d4 Nf6 2. c4 *++[ECO "A50"]+[Opening "Kevitz-Trajkovich defence"]++1. d4 Nf6 2. c4 Nc6 *++[ECO "A50"]+[Opening "Queen's Indian accelerated"]++1. d4 Nf6 2. c4 b6 *++[ECO "A51"]+[Opening "Budapest defence declined"]++1. d4 Nf6 2. c4 e5 *++[ECO "A51"]+[Opening "Budapest"]+[Variation "Fajarowicz variation"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ne4 *++[ECO "A51"]+[Opening "Budapest"]+[Variation "Fajarowicz, Steiner variation"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ne4 4. Qc2 *++[ECO "A52"]+[Opening "Budapest defence"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ng4 *++[ECO "A52"]+[Opening "Budapest"]+[Variation "Adler variation"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ng4 4. Nf3 *++[ECO "A52"]+[Opening "Budapest"]+[Variation "Rubinstein variation"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ng4 4. Bf4 *++[ECO "A52"]+[Opening "Budapest"]+[Variation "Alekhine variation"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ng4 4. e4 *++[ECO "A52"]+[Opening "Budapest"]+[Variation "Alekhine, Abonyi variation"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ng4 4. e4 Nxe5 5. f4 Nec6 *++[ECO "A52"]+[Opening "Budapest"]+[Variation "Alekhine variation, Balogh gambit"]++1. d4 Nf6 2. c4 e5 3. dxe5 Ng4 4. e4 d6 *++[ECO "A53"]+[Opening "Old Indian defence"]++1. d4 Nf6 2. c4 d6 *++[ECO "A53"]+[Opening "Old Indian"]+[Variation "Janowski variation"]++1. d4 Nf6 2. c4 d6 3. Nc3 Bf5 *++[ECO "A54"]+[Opening "Old Indian"]+[Variation "Ukrainian variation"]++1. d4 Nf6 2. c4 d6 3. Nc3 e5 *++[ECO "A54"]+[Opening "Old Indian"]+[Variation "Dus-Khotimirsky variation"]++1. d4 Nf6 2. c4 d6 3. Nc3 e5 4. e3 Nbd7 5. Bd3 *++[ECO "A54"]+[Opening "Old Indian"]+[Variation "Ukrainian variation, 4.Nf3"]++1. d4 Nf6 2. c4 d6 3. Nc3 e5 4. Nf3 *++[ECO "A55"]+[Opening "Old Indian"]+[Variation "main line"]++1. d4 Nf6 2. c4 d6 3. Nc3 e5 4. Nf3 Nbd7 5. e4 *++[ECO "A56"]+[Opening "Benoni defence"]++1. d4 Nf6 2. c4 c5 *++[ECO "A56"]+[Opening "Benoni defence, Hromodka system"]++1. d4 Nf6 2. c4 c5 3. d5 d6 *++[ECO "A56"]+[Opening "Vulture defence"]++1. d4 Nf6 2. c4 c5 3. d5 Ne4 *++[ECO "A56"]+[Opening "Czech Benoni defence"]++1. d4 Nf6 2. c4 c5 3. d5 e5 *++[ECO "A56"]+[Opening "Czech Benoni"]+[Variation "King's Indian system"]++1. d4 Nf6 2. c4 c5 3. d5 e5 4. Nc3 d6 5. e4 g6 *++[ECO "A57"]+[Opening "Benko gambit"]++1. d4 Nf6 2. c4 c5 3. d5 b5 *++[ECO "A57"]+[Opening "Benko gambit half accepted"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 *++[ECO "A57"]+[Opening "Benko gambit"]+[Variation "Zaitsev system"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. Nc3 *++[ECO "A57"]+[Opening "Benko gambit"]+[Variation "Nescafe Frappe attack"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. Nc3 axb5 6. e4 b4 7. Nb5 d6 8. +Bc4 *++[ECO "A58"]+[Opening "Benko gambit accepted"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 *++[ECO "A58"]+[Opening "Benko gambit"]+[Variation "Nd2 variation"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 Bxa6 6. Nc3 d6 7. Nf3 g6 8.+Nd2 *++[ECO "A58"]+[Opening "Benko gambit"]+[Variation "fianchetto variation"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 Bxa6 6. Nc3 d6 7. Nf3 g6 8.+g3 *++[ECO "A59"]+[Opening "Benko gambit"]+[Variation "7.e4"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 Bxa6 6. Nc3 d6 7. e4 *++[ECO "A59"]+[Opening "Benko gambit"]+[Variation "Ne2 variation"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 Bxa6 6. Nc3 d6 7. e4 Bxf1 8.+Kxf1 g6 9. Nge2 *++[ECO "A59"]+[Opening "Benko gambit"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 Bxa6 6. Nc3 d6 7. e4 Bxf1 8.+Kxf1 g6 9. g3 *++[ECO "A59"]+[Opening "Benko gambit"]+[Variation "main line"]++1. d4 Nf6 2. c4 c5 3. d5 b5 4. cxb5 a6 5. bxa6 Bxa6 6. Nc3 d6 7. e4 Bxf1 8.+Kxf1 g6 9. g3 Bg7 10. Kg2 O-O 11. Nf3 *++[ECO "A60"]+[Opening "Benoni defence"]++1. d4 Nf6 2. c4 c5 3. d5 e6 *++[ECO "A61"]+[Opening "Benoni defence"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 *++[ECO "A61"]+[Opening "Benoni"]+[Variation "Uhlmann variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 7. Bg5 *++[ECO "A61"]+[Opening "Benoni"]+[Variation "Nimzovich (knight's tour) variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 7. Nd2 *++[ECO "A61"]+[Opening "Benoni"]+[Variation "fianchetto variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 7. g3 *++[ECO "A62"]+[Opening "Benoni"]+[Variation "fianchetto variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 7. g3 Bg7 8. +Bg2 O-O *++[ECO "A63"]+[Opening "Benoni"]+[Variation "fianchetto, 9...Nbd7"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 7. g3 Bg7 8. +Bg2 O-O 9. O-O Nbd7 *++[ECO "A64"]+[Opening "Benoni"]+[Variation "fianchetto, 11...Re8"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. Nf3 g6 7. g3 Bg7 8. +Bg2 O-O 9. O-O Nbd7 10. Nd2 a6 11. a4 Re8 *++[ECO "A65"]+[Opening "Benoni"]+[Variation "6.e4"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 *++[ECO "A66"]+[Opening "Benoni"]+[Variation "pawn storm variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. f4 *++[ECO "A66"]+[Opening "Benoni"]+[Variation "Mikenas variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. f4 Bg7 8. e5+*++[ECO "A67"]+[Opening "Benoni"]+[Variation "Taimanov variation"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. f4 Bg7 8. +Bb5+ *++[ECO "A68"]+[Opening "Benoni"]+[Variation "four pawns attack"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. f4 Bg7 8. +Nf3 O-O *++[ECO "A69"]+[Opening "Benoni"]+[Variation "four pawns attack, main line"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. f4 Bg7 8. +Nf3 O-O 9. Be2 Re8 *++[ECO "A70"]+[Opening "Benoni"]+[Variation "classical with e4 and Nf3"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 *++[ECO "A70"]+[Opening "Benoni"]+[Variation "classical without 9.O-O"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 *++[ECO "A71"]+[Opening "Benoni"]+[Variation "classical, 8.Bg5"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Bg5 *++[ECO "A72"]+[Opening "Benoni"]+[Variation "classical without 9.O-O"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O *++[ECO "A73"]+[Opening "Benoni"]+[Variation "classical, 9.O-O"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O *++[ECO "A74"]+[Opening "Benoni"]+[Variation "classical, 9...a6, 10.a4"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O a6 10. a4 *++[ECO "A75"]+[Opening "Benoni"]+[Variation "classical with ...a6 and 10...Bg4"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O a6 10. a4 Bg4 *++[ECO "A76"]+[Opening "Benoni"]+[Variation "classical, 9...Re8"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O Re8 *++[ECO "A77"]+[Opening "Benoni"]+[Variation "classical, 9...Re8, 10.Nd2"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O Re8 10. Nd2 *++[ECO "A78"]+[Opening "Benoni"]+[Variation "classical with ...Re8 and ...Na6"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O Re8 10. Nd2 Na6 *++[ECO "A79"]+[Opening "Benoni"]+[Variation "classical, 11.f3"]++1. d4 Nf6 2. c4 c5 3. d5 e6 4. Nc3 exd5 5. cxd5 d6 6. e4 g6 7. Nf3 Bg7 8. +Be2 O-O 9. O-O Re8 10. Nd2 Na6 11. f3 *++[ECO "A80"]+[Opening "Dutch"]++1. d4 f5 *++[ECO "A80"]+[Opening "Dutch, Spielmann gambit"]++1. d4 f5 2. Nc3 Nf6 3. g4 *++[ECO "A80"]+[Opening "Dutch, Manhattan (Alapin, Ulvestad) variation"]++1. d4 f5 2. Qd3 *++[ECO "A80"]+[Opening "Dutch, Von Pretzel gambit"]++1. d4 f5 2. Qd3 e6 3. g4 *++[ECO "A80"]+[Opening "Dutch, Korchnoi attack"]++1. d4 f5 2. h3 *++[ECO "A80"]+[Opening "Dutch, Krejcik gambit"]++1. d4 f5 2. g4 *++[ECO "A80"]+[Opening "Dutch, 2.Bg5 variation"]++1. d4 f5 2. Bg5 *++[ECO "A81"]+[Opening "Dutch defence"]++1. d4 f5 2. g3 *++[ECO "A81"]+[Opening "Dutch defence, Blackburne variation"]++1. d4 f5 2. g3 Nf6 3. Bg2 e6 4. Nh3 *++[ECO "A81"]+[Opening "Dutch defence"]++1. d4 f5 2. g3 Nf6 3. Bg2 g6 *++[ECO "A81"]+[Opening "Dutch"]+[Variation "Leningrad, Basman system"]++1. d4 f5 2. g3 g6 3. Bg2 Bg7 4. Nf3 c6 5. O-O Nh6 *++[ECO "A81"]+[Opening "Dutch"]+[Variation "Leningrad, Karlsbad variation"]++1. d4 f5 2. g3 g6 3. Bg2 Bg7 4. Nh3 *++[ECO "A82"]+[Opening "Dutch"]+[Variation "Staunton gambit"]++1. d4 f5 2. e4 *++[ECO "A82"]+[Opening "Dutch"]+[Variation "Balogh defence"]++1. d4 f5 2. e4 d6 *++[ECO "A82"]+[Opening "Dutch"]+[Variation "Staunton gambit"]++1. d4 f5 2. e4 fxe4 *++[ECO "A82"]+[Opening "Dutch"]+[Variation "Staunton gambit, Tartakower variation"]++1. d4 f5 2. e4 fxe4 3. Nc3 Nf6 4. g4 *++[ECO "A83"]+[Opening "Dutch"]+[Variation "Staunton gambit, Staunton's line"]++1. d4 f5 2. e4 fxe4 3. Nc3 Nf6 4. Bg5 *++[ECO "A83"]+[Opening "Dutch"]+[Variation "Staunton gambit, Alekhine variation"]++1. d4 f5 2. e4 fxe4 3. Nc3 Nf6 4. Bg5 g6 5. h4 *++[ECO "A83"]+[Opening "Dutch"]+[Variation "Staunton gambit, Lasker variation"]++1. d4 f5 2. e4 fxe4 3. Nc3 Nf6 4. Bg5 g6 5. f3 *++[ECO "A83"]+[Opening "Dutch"]+[Variation "Staunton gambit, Chigorin variation"]++1. d4 f5 2. e4 fxe4 3. Nc3 Nf6 4. Bg5 c6 *++[ECO "A83"]+[Opening "Dutch"]+[Variation "Staunton gambit, Nimzovich variation"]++1. d4 f5 2. e4 fxe4 3. Nc3 Nf6 4. Bg5 b6 *++[ECO "A84"]+[Opening "Dutch defence"]++1. d4 f5 2. c4 *++[ECO "A84"]+[Opening "Dutch defence"]+[Variation "Bladel variation"]++1. d4 f5 2. c4 g6 3. Nc3 Nh6 *++[ECO "A84"]+[Opening "Dutch defence"]++1. d4 f5 2. c4 e6 *++[ECO "A84"]+[Opening "Dutch defence, Rubinstein variation"]++1. d4 f5 2. c4 e6 3. Nc3 *++[ECO "A84"]+[Opening "Dutch"]+[Variation "Staunton gambit deferred"]++1. d4 f5 2. c4 e6 3. e4 *++[ECO "A84"]+[Opening "Dutch defence"]++1. d4 f5 2. c4 Nf6 *++[ECO "A85"]+[Opening "Dutch with c4 & Nc3"]++1. d4 f5 2. c4 Nf6 3. Nc3 *++[ECO "A86"]+[Opening "Dutch with c4 & g3"]++1. d4 f5 2. c4 Nf6 3. g3 *++[ECO "A86"]+[Opening "Dutch"]+[Variation "Hort-Antoshin system"]++1. d4 f5 2. c4 Nf6 3. g3 d6 4. Bg2 c6 5. Nc3 Qc7 *++[ECO "A86"]+[Opening "Dutch"]+[Variation "Leningrad variation"]++1. d4 f5 2. c4 Nf6 3. g3 g6 *++[ECO "A87"]+[Opening "Dutch"]+[Variation "Leningrad, main variation"]++1. d4 f5 2. c4 Nf6 3. g3 g6 4. Bg2 Bg7 5. Nf3 *++[ECO "A88"]+[Opening "Dutch"]+[Variation "Leningrad, main variation with c6"]++1. d4 f5 2. c4 Nf6 3. g3 g6 4. Bg2 Bg7 5. Nf3 O-O 6. O-O d6 7. Nc3 c6 *++[ECO "A89"]+[Opening "Dutch"]+[Variation "Leningrad, main variation with Nc6"]++1. d4 f5 2. c4 Nf6 3. g3 g6 4. Bg2 Bg7 5. Nf3 O-O 6. O-O d6 7. Nc3 Nc6 *++[ECO "A90"]+[Opening "Dutch defence"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 *++[ECO "A90"]+[Opening "Dutch defence"]+[Variation "Dutch-Indian (Nimzo-Dutch) variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Bb4+ *++[ECO "A90"]+[Opening "Dutch-Indian, Alekhine variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Bb4+ 5. Bd2 Be7 *++[ECO "A91"]+[Opening "Dutch defence"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 *++[ECO "A92"]+[Opening "Dutch defence"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O *++[ECO "A92"]+[Opening "Dutch defence, Alekhine variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O Ne4 *++[ECO "A92"]+[Opening "Dutch"]+[Variation "stonewall variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d5 *++[ECO "A92"]+[Opening "Dutch"]+[Variation "stonewall with Nc3"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d5 7. Nc3 *++[ECO "A93"]+[Opening "Dutch"]+[Variation "stonewall, Botwinnik variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d5 7. b3 *++[ECO "A94"]+[Opening "Dutch"]+[Variation "stonewall with Ba3"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d5 7. b3 c6 8. Ba3+*++[ECO "A95"]+[Opening "Dutch"]+[Variation "stonewall with Nc3"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d5 7. Nc3 c6 *++[ECO "A95"]+[Opening "Dutch"]+[Variation "stonewall: Chekhover variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d5 7. Nc3 c6 8. +Qc2 Qe8 9. Bg5 *++[ECO "A96"]+[Opening "Dutch"]+[Variation "classical variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d6 *++[ECO "A97"]+[Opening "Dutch"]+[Variation "Ilyin-Genevsky variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d6 7. Nc3 Qe8 *++[ECO "A97"]+[Opening "Dutch"]+[Variation "Ilyin-Genevsky, Winter variation"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d6 7. Nc3 Qe8 8. +Re1 *++[ECO "A98"]+[Opening "Dutch"]+[Variation "Ilyin-Genevsky variation with Qc2"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d6 7. Nc3 Qe8 8. +Qc2 *++[ECO "A99"]+[Opening "Dutch"]+[Variation "Ilyin-Genevsky variation with b3"]++1. d4 f5 2. c4 Nf6 3. g3 e6 4. Bg2 Be7 5. Nf3 O-O 6. O-O d6 7. Nc3 Qe8 8. +b3 *++[ECO "B00"]+[Opening "King's pawn opening"]++1. e4 *++[ECO "B00"]+[Opening "Hippopotamus defence"]++1. e4 Nh6 2. d4 g6 3. c4 f6 *++[ECO "B00"]+[Opening "Corn stalk defence"]++1. e4 a5 *++[ECO "B00"]+[Opening "Lemming defence"]++1. e4 Na6 *++[ECO "B00"]+[Opening "Fred"]++1. e4 f5 *++[ECO "B00"]+[Opening "Barnes defence"]++1. e4 f6 *++[ECO "B00"]+[Opening "Fried fox defence"]++1. e4 f6 2. d4 Kf7 *++[ECO "B00"]+[Opening "Carr's defence"]++1. e4 h6 *++[ECO "B00"]+[Opening "Reversed Grob (Borg/Basman defence/macho Grob)"]++1. e4 g5 *++[ECO "B00"]+[Opening "St. George (Baker) defence"]++1. e4 a6 *++[ECO "B00"]+[Opening "Owen defence"]++1. e4 b6 *++[ECO "B00"]+[Opening "Guatemala defence"]++1. e4 b6 2. d4 Ba6 *++[ECO "B00"]+[Opening "KP"]+[Variation "Nimzovich defence"]++1. e4 Nc6 *++[ECO "B00"]+[Opening "KP"]+[Variation "Nimzovich defence, Wheeler gambit"]++1. e4 Nc6 2. b4 Nxb4 3. c3 Nc6 4. d4 *++[ECO "B00"]+[Opening "KP"]+[Variation "Nimzovich defence"]++1. e4 Nc6 2. Nf3 *++[ECO "B00"]+[Opening "KP"]+[Variation "Colorado counter"]++1. e4 Nc6 2. Nf3 f5 *++[ECO "B00"]+[Opening "KP"]+[Variation "Nimzovich defence"]++1. e4 Nc6 2. d4 *++[ECO "B00"]+[Opening "KP"]+[Variation "Nimzovich defence, Marshall gambit"]++1. e4 Nc6 2. d4 d5 3. exd5 Qxd5 4. Nc3 *++[ECO "B00"]+[Opening "KP"]+[Variation "Nimzovich defence, Bogolyubov variation"]++1. e4 Nc6 2. d4 d5 3. Nc3 *++[ECO "B00"]+[Opening "KP"]+[Variation "Neo-Mongoloid defence"]++1. e4 Nc6 2. d4 f6 *++[ECO "B01"]+[Opening "Scandinavian (centre counter) defence"]++1. e4 d5 *++[ECO "B01"]+[Opening "Scandinavian defence, Lasker variation"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 Nf6 5. Nf3 Bg4 6. h3 *++[ECO "B01"]+[Opening "Scandinavian defence"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 Nf6 5. Nf3 Bf5 *++[ECO "B01"]+[Opening "Scandinavian defence, Gruenfeld variation"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 Nf6 5. Nf3 Bf5 6. Ne5 c6 7. g4 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Anderssen counter-attack"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 e5 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Anderssen counter-attack orthodox attack"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 e5 5. dxe5 Bb4 6. Bd2 Nc6 7. Nf3 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Anderssen counter-attack, Goteborg system"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 e5 5. Nf3 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Anderssen counter-attack, Collijn variation"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. d4 e5 5. Nf3 Bg4 *++[ECO "B01"]+[Opening "Scandinavian, Mieses-Kotrvc gambit"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qa5 4. b4 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Pytel-Wade variation"]++1. e4 d5 2. exd5 Qxd5 3. Nc3 Qd6 *++[ECO "B01"]+[Opening "Scandinavian defence"]++1. e4 d5 2. exd5 Nf6 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Icelandic gambit"]++1. e4 d5 2. exd5 Nf6 3. c4 e6 *++[ECO "B01"]+[Opening "Scandinavian gambit"]++1. e4 d5 2. exd5 Nf6 3. c4 c6 *++[ECO "B01"]+[Opening "Scandinavian defence"]++1. e4 d5 2. exd5 Nf6 3. d4 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Marshall variation"]++1. e4 d5 2. exd5 Nf6 3. d4 Nxd5 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Kiel variation"]++1. e4 d5 2. exd5 Nf6 3. d4 Nxd5 4. c4 Nb4 *++[ECO "B01"]+[Opening "Scandinavian"]+[Variation "Richter variation"]++1. e4 d5 2. exd5 Nf6 3. d4 g6 *++[ECO "B02"]+[Opening "Alekhine's defence"]++1. e4 Nf6 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Scandinavian variation"]++1. e4 Nf6 2. Nc3 d5 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Spielmann variation"]++1. e4 Nf6 2. Nc3 d5 3. e5 Nfd7 4. e6 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Maroczy variation"]++1. e4 Nf6 2. d3 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Krejcik variation"]++1. e4 Nf6 2. Bc4 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Mokele Mbembe (Buecker) variation"]++1. e4 Nf6 2. e5 Ne4 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Brooklyn defence"]++1. e4 Nf6 2. e5 Ng8 *++[ECO "B02"]+[Opening "Alekhine's defence"]++1. e4 Nf6 2. e5 Nd5 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Kmoch variation"]++1. e4 Nf6 2. e5 Nd5 3. Bc4 Nb6 4. Bb3 c5 5. d3 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Saemisch attack"]++1. e4 Nf6 2. e5 Nd5 3. Nc3 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Welling variation"]++1. e4 Nf6 2. e5 Nd5 3. b3 *++[ECO "B02"]+[Opening "Alekhine's defence"]++1. e4 Nf6 2. e5 Nd5 3. c4 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "Steiner variation"]++1. e4 Nf6 2. e5 Nd5 3. c4 Nb6 4. b3 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "two pawns' (Lasker's) attack"]++1. e4 Nf6 2. e5 Nd5 3. c4 Nb6 4. c5 *++[ECO "B02"]+[Opening "Alekhine's defence"]+[Variation "two pawns' attack, Mikenas variation"]++1. e4 Nf6 2. e5 Nd5 3. c4 Nb6 4. c5 Nd5 5. Bc4 e6 6. Nc3 d6 *++[ECO "B03"]+[Opening "Alekhine's defence"]++1. e4 Nf6 2. e5 Nd5 3. d4 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "O'Sullivan gambit"]++1. e4 Nf6 2. e5 Nd5 3. d4 b5 *++[ECO "B03"]+[Opening "Alekhine's defence"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "Balogh variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Bc4 *++[ECO "B03"]+[Opening "Alekhine's defence"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "exchange variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. exd6 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "exchange, Karpov variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. exd6 cxd6 6. Nf3 g6 7. Be2 Bg7 8.+O-O O-O 9. h3 Nc6 10. Nc3 Bf5 11. Bf4 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, Korchnoi variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 dxe5 6. fxe5 Bf5 7. Nc3 e6 8.+Nf3 Be7 9. Be2 O-O 10. O-O f6 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, 6...Nc6"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 dxe5 6. fxe5 Nc6 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, Ilyin-Genevsky var."]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 dxe5 6. fxe5 Nc6 7. Nf3 Bg4 8.+e6 fxe6 9. c5 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, 7.Be3"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 dxe5 6. fxe5 Nc6 7. Be3 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, Tartakower variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 dxe5 6. fxe5 Nc6 7. Be3 Bf5 8.+Nc3 e6 9. Nf3 Qd7 10. Be2 O-O-O 11. O-O Be7 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, Planinc variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 g5 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, fianchetto variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 g6 *++[ECO "B03"]+[Opening "Alekhine's defence"]+[Variation "four pawns attack, Trifunovic variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. c4 Nb6 5. f4 Bf5 *++[ECO "B04"]+[Opening "Alekhine's defence"]+[Variation "modern variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 *++[ECO "B04"]+[Opening "Alekhine's defence"]+[Variation "modern, Larsen variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 dxe5 *++[ECO "B04"]+[Opening "Alekhine's defence"]+[Variation "modern, Schmid variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Nb6 *++[ECO "B04"]+[Opening "Alekhine's defence"]+[Variation "modern, fianchetto variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 g6 *++[ECO "B04"]+[Opening "Alekhine's defence"]+[Variation "modern, Keres variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 g6 5. Bc4 Nb6 6. Bb3 Bg7 7. a4 *++[ECO "B05"]+[Opening "Alekhine's defence"]+[Variation "modern variation, 4...Bg4"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Bg4 *++[ECO "B05"]+[Opening "Alekhine's defence"]+[Variation "modern, Flohr variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Bg4 5. Be2 c6 *++[ECO "B05"]+[Opening "Alekhine's defence"]+[Variation "modern, Panov variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Bg4 5. h3 *++[ECO "B05"]+[Opening "Alekhine's defence"]+[Variation "modern, Alekhine variation"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Bg4 5. c4 *++[ECO "B05"]+[Opening "Alekhine's defence"]+[Variation "modern, Vitolins attack"]++1. e4 Nf6 2. e5 Nd5 3. d4 d6 4. Nf3 Bg4 5. c4 Nb6 6. d5 *++[ECO "B06"]+[Opening "Robatsch (modern) defence"]++1. e4 g6 *++[ECO "B06"]+[Opening "Norwegian defence"]++1. e4 g6 2. d4 Nf6 3. e5 Nh5 4. g4 Ng7 *++[ECO "B06"]+[Opening "Robatsch (modern) defence"]++1. e4 g6 2. d4 Bg7 *++[ECO "B06"]+[Opening "Robatsch defence"]+[Variation "three pawns attack"]++1. e4 g6 2. d4 Bg7 3. f4 *++[ECO "B06"]+[Opening "Robatsch defence"]++1. e4 g6 2. d4 Bg7 3. Nc3 *++[ECO "B06"]+[Opening "Robatsch defence"]+[Variation "Gurgenidze variation"]++1. e4 g6 2. d4 Bg7 3. Nc3 c6 4. f4 d5 5. e5 h5 *++[ECO "B06"]+[Opening "Robatsch (modern) defence"]++1. e4 g6 2. d4 Bg7 3. Nc3 d6 *++[ECO "B06"]+[Opening "Robatsch defence"]+[Variation "two knights variation"]++1. e4 g6 2. d4 Bg7 3. Nc3 d6 4. Nf3 *++[ECO "B06"]+[Opening "Robatsch defence"]+[Variation "two knights, Suttles variation"]++1. e4 g6 2. d4 Bg7 3. Nc3 d6 4. Nf3 c6 *++[ECO "B06"]+[Opening "Robatsch defence"]+[Variation "Pseudo-Austrian attack"]++1. e4 g6 2. d4 Bg7 3. Nc3 d6 4. f4 *++[ECO "B07"]+[Opening "Pirc defence"]++1. e4 d6 2. d4 Nf6 3. Nc3 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "Ufimtsev-Pytel variation"]++1. e4 d6 2. d4 Nf6 3. Nc3 c6 *++[ECO "B07"]+[Opening "Pirc defence"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "150 attack"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Be3 c6 5. Qd2 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "Sveshnikov system"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. g3 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "Holmov system"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Bc4 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "Byrne variation"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Bg5 *++[ECO "B07"]+[Opening "Pirc defence"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Be2 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "Chinese variation"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Be2 Bg7 5. g4 *++[ECO "B07"]+[Opening "Pirc"]+[Variation "bayonet (Mariotti) attack"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Be2 Bg7 5. h4 *++[ECO "B07"]+[Opening "Robatsch defence"]+[Variation "Geller's system"]++1. e4 g6 2. d4 Bg7 3. Nf3 d6 4. c3 *++[ECO "B08"]+[Opening "Pirc"]+[Variation "classical (two knights) system"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Nf3 *++[ECO "B08"]+[Opening "Pirc"]+[Variation "classical (two knights) system"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Nf3 Bg7 *++[ECO "B08"]+[Opening "Pirc"]+[Variation "classical, h3 system"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Nf3 Bg7 5. h3 *++[ECO "B08"]+[Opening "Pirc"]+[Variation "classical system, 5.Be2"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. Nf3 Bg7 5. Be2 *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 Bg7 5. Nf3 O-O *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack, 6.e5"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 Bg7 5. Nf3 O-O 6. e5 *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack, 6.Be3"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 Bg7 5. Nf3 O-O 6. Be3 *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack, 6.Bd3"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 Bg7 5. Nf3 O-O 6. Bd3 *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack, dragon formation"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 Bg7 5. Nf3 c5 *++[ECO "B09"]+[Opening "Pirc"]+[Variation "Austrian attack, Ljubojevic variation"]++1. e4 d6 2. d4 Nf6 3. Nc3 g6 4. f4 Bg7 5. Bc4 *++[ECO "B10"]+[Opening "Caro-Kann defence"]++1. e4 c6 *++[ECO "B10"]+[Opening "Caro-Kann"]+[Variation "Hillbilly attack"]++1. e4 c6 2. Bc4 *++[ECO "B10"]+[Opening "Caro-Kann"]+[Variation "anti-Caro-Kann defence"]++1. e4 c6 2. c4 *++[ECO "B10"]+[Opening "Caro-Kann"]+[Variation "anti-anti-Caro-Kann defence"]++1. e4 c6 2. c4 d5 *++[ECO "B10"]+[Opening "Caro-Kann"]+[Variation "closed (Breyer) variation"]++1. e4 c6 2. d3 *++[ECO "B10"]+[Opening "Caro-Kann defence"]++1. e4 c6 2. Nc3 *++[ECO "B10"]+[Opening "Caro-Kann"]+[Variation "Goldman (Spielmann) variation"]++1. e4 c6 2. Nc3 d5 3. Qf3 *++[ECO "B10"]+[Opening "Caro-Kann"]+[Variation "two knights variation"]++1. e4 c6 2. Nc3 d5 3. Nf3 *++[ECO "B11"]+[Opening "Caro-Kann"]+[Variation "two knights, 3...Bg4"]++1. e4 c6 2. Nc3 d5 3. Nf3 Bg4 *++[ECO "B12"]+[Opening "Caro-Kann defence"]++1. e4 c6 2. d4 *++[ECO "B12"]+[Opening "de Bruycker defence"]++1. e4 c6 2. d4 Na6 3. Nc3 Nc7 *++[ECO "B12"]+[Opening "Caro-Masi defence"]++1. e4 c6 2. d4 Nf6 *++[ECO "B12"]+[Opening "Caro-Kann defence"]++1. e4 c6 2. d4 d5 *++[ECO "B12"]+[Opening "Caro-Kann"]+[Variation "Tartakower (fantasy) variation"]++1. e4 c6 2. d4 d5 3. f3 *++[ECO "B12"]+[Opening "Caro-Kann"]+[Variation "3.Nd2"]++1. e4 c6 2. d4 d5 3. Nd2 *++[ECO "B12"]+[Opening "Caro-Kann"]+[Variation "Edinburgh variation"]++1. e4 c6 2. d4 d5 3. Nd2 Qb6 *++[ECO "B12"]+[Opening "Caro-Kann"]+[Variation "advance variation"]++1. e4 c6 2. d4 d5 3. e5 *++[ECO "B12"]+[Opening "Caro-Kann"]+[Variation "advance, Short variation"]++1. e4 c6 2. d4 d5 3. e5 Bf5 4. c3 e6 5. Be2 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "exchange variation"]++1. e4 c6 2. d4 d5 3. exd5 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "exchange, Rubinstein variation"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. Bd3 Nc6 5. c3 Nf6 6. Bf4 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik attack"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik, Gunderam attack"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. c5 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik attack"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik, Herzog defence"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 Nc6 6. Bg5 dxc4 7. d5 Na5 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik, normal variation"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 Nc6 6. Bg5 e6 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik, Czerniak variation"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 Nc6 6. Bg5 Qa5 *++[ECO "B13"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik, Reifir (Spielmann) variation"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 Nc6 6. Bg5 Qb6 *++[ECO "B14"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik attack, 5...e6"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 e6 *++[ECO "B14"]+[Opening "Caro-Kann"]+[Variation "Panov-Botvinnik attack, 5...g6"]++1. e4 c6 2. d4 d5 3. exd5 cxd5 4. c4 Nf6 5. Nc3 g6 *++[ECO "B15"]+[Opening "Caro-Kann defence"]++1. e4 c6 2. d4 d5 3. Nc3 *++[ECO "B15"]+[Opening "Caro-Kann"]+[Variation "Gurgenidze counter-attack"]++1. e4 c6 2. d4 d5 3. Nc3 b5 *++[ECO "B15"]+[Opening "Caro-Kann"]+[Variation "Gurgenidze system"]++1. e4 c6 2. d4 d5 3. Nc3 g6 *++[ECO "B15"]+[Opening "Caro-Kann"]+[Variation "Rasa-Studier gambit"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. f3 *++[ECO "B15"]+[Opening "Caro-Kann defence"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 *++[ECO "B15"]+[Opening "Caro-Kann"]+[Variation "Alekhine gambit"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nf6 5. Bd3 *++[ECO "B15"]+[Opening "Caro-Kann"]+[Variation "Tartakower (Nimzovich) variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nf6 5. Nxf6+ exf6 *++[ECO "B15"]+[Opening "Caro-Kann"]+[Variation "Forgacs variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nf6 5. Nxf6+ exf6 6. Bc4 *++[ECO "B16"]+[Opening "Caro-Kann"]+[Variation "Bronstein-Larsen variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nf6 5. Nxf6+ gxf6 *++[ECO "B17"]+[Opening "Caro-Kann"]+[Variation "Steinitz variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nd7 *++[ECO "B18"]+[Opening "Caro-Kann"]+[Variation "classical variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 *++[ECO "B18"]+[Opening "Caro-Kann"]+[Variation "classical, Flohr variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 Bg6 6. Nh3 *++[ECO "B18"]+[Opening "Caro-Kann"]+[Variation "classical, Maroczy attack"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 Bg6 6. f4 *++[ECO "B18"]+[Opening "Caro-Kann"]+[Variation "classical, 6.h4"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 Bg6 6. h4 *++[ECO "B19"]+[Opening "Caro-Kann"]+[Variation "classical, 7...Nd7"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 Bg6 6. h4 h6 7. Nf3 Nd7 *++[ECO "B19"]+[Opening "Caro-Kann"]+[Variation "classical, Spassky variation"]++1. e4 c6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bf5 5. Ng3 Bg6 6. h4 h6 7. Nf3 Nd7 8.+h5 *++[ECO "B20"]+[Opening "Sicilian defence"]++1. e4 c5 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "Gloria variation"]++1. e4 c5 2. c4 d6 3. Nc3 Nc6 4. g3 h5 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "Steinitz variation"]++1. e4 c5 2. g3 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "wing gambit"]++1. e4 c5 2. b4 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "wing gambit, Santasiere variation"]++1. e4 c5 2. b4 cxb4 3. c4 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "wing gambit, Marshall variation"]++1. e4 c5 2. b4 cxb4 3. a3 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "wing gambit, Marienbad variation"]++1. e4 c5 2. b4 cxb4 3. a3 d5 4. exd5 Qxd5 5. Bb2 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "wing gambit, Carlsbad variation"]++1. e4 c5 2. b4 cxb4 3. a3 bxa3 *++[ECO "B20"]+[Opening "Sicilian"]+[Variation "Keres variation (2.Ne2)"]++1. e4 c5 2. Ne2 *++[ECO "B21"]+[Opening "Sicilian"]+[Variation "Grand Prix attack"]++1. e4 c5 2. f4 *++[ECO "B21"]+[Opening "Sicilian"]+[Variation "Smith-Morra gambit"]++1. e4 c5 2. d4 *++[ECO "B21"]+[Opening "Sicilian"]+[Variation "Andreaschek gambit"]++1. e4 c5 2. d4 cxd4 3. Nf3 e5 4. c3 *++[ECO "B21"]+[Opening "Sicilian"]+[Variation "Smith-Morra gambit"]++1. e4 c5 2. d4 cxd4 3. c3 *++[ECO "B21"]+[Opening "Sicilian"]+[Variation "Smith-Morra gambit, Chicago defence"]++1. e4 c5 2. d4 cxd4 3. c3 dxc3 4. Nxc3 Nc6 5. Nf3 d6 6. Bc4 e6 7. O-O a6 8.+Qe2 b5 9. Bb3 Ra7 *++[ECO "B22"]+[Opening "Sicilian"]+[Variation "Alapin's variation (2.c3)"]++1. e4 c5 2. c3 *++[ECO "B22"]+[Opening "Sicilian"]+[Variation "2.c3, Heidenfeld variation"]++1. e4 c5 2. c3 Nf6 3. e5 Nd5 4. Nf3 Nc6 5. Na3 *++[ECO "B23"]+[Opening "Sicilian"]+[Variation "closed"]++1. e4 c5 2. Nc3 *++[ECO "B23"]+[Opening "Sicilian"]+[Variation "closed, Korchnoi variation"]++1. e4 c5 2. Nc3 e6 3. g3 d5 *++[ECO "B23"]+[Opening "Sicilian"]+[Variation "closed, 2...Nc6"]++1. e4 c5 2. Nc3 Nc6 *++[ECO "B23"]+[Opening "Sicilian"]+[Variation "chameleon variation"]++1. e4 c5 2. Nc3 Nc6 3. Nge2 *++[ECO "B23"]+[Opening "Sicilian"]+[Variation "Grand Prix attack"]++1. e4 c5 2. Nc3 Nc6 3. f4 *++[ECO "B23"]+[Opening "Sicilian"]+[Variation "Grand Prix attack, Schofman variation"]++1. e4 c5 2. Nc3 Nc6 3. f4 g6 4. Nf3 Bg7 5. Bc4 e6 6. f5 *++[ECO "B24"]+[Opening "Sicilian"]+[Variation "closed"]++1. e4 c5 2. Nc3 Nc6 3. g3 *++[ECO "B24"]+[Opening "Sicilian"]+[Variation "closed, Smyslov variation"]++1. e4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 e6 6. Be3 Nd4 7. Nce2 *++[ECO "B25"]+[Opening "Sicilian"]+[Variation "closed"]++1. e4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 *++[ECO "B25"]+[Opening "Sicilian"]+[Variation "closed, 6.Ne2 e5 (Botvinnik)"]++1. e4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 6. Nge2 e5 *++[ECO "B25"]+[Opening "Sicilian"]+[Variation "closed, 6.f4"]++1. e4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 6. f4 *++[ECO "B25"]+[Opening "Sicilian"]+[Variation "closed, 6.f4 e5 (Botvinnik)"]++1. e4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 6. f4 e5 *++[ECO "B26"]+[Opening "Sicilian"]+[Variation "closed, 6.Be3"]++1. e4 c5 2. Nc3 Nc6 3. g3 g6 4. Bg2 Bg7 5. d3 d6 6. Be3 *++[ECO "B27"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 *++[ECO "B27"]+[Opening "Sicilian"]+[Variation "Stiletto (Althouse) variation"]++1. e4 c5 2. Nf3 Qa5 *++[ECO "B27"]+[Opening "Sicilian"]+[Variation "Quinteros variation"]++1. e4 c5 2. Nf3 Qc7 *++[ECO "B27"]+[Opening "Sicilian"]+[Variation "Katalimov variation"]++1. e4 c5 2. Nf3 b6 *++[ECO "B27"]+[Opening "Sicilian"]+[Variation "Hungarian variation"]++1. e4 c5 2. Nf3 g6 *++[ECO "B27"]+[Opening "Sicilian"]+[Variation "Acton extension"]++1. e4 c5 2. Nf3 g6 3. c4 Bh6 *++[ECO "B28"]+[Opening "Sicilian"]+[Variation "O'Kelly variation"]++1. e4 c5 2. Nf3 a6 *++[ECO "B29"]+[Opening "Sicilian"]+[Variation "Nimzovich-Rubinstein variation"]++1. e4 c5 2. Nf3 Nf6 *++[ECO "B29"]+[Opening "Sicilian"]+[Variation "Nimzovich-Rubinstein; Rubinstein counter-gambit"]++1. e4 c5 2. Nf3 Nf6 3. e5 Nd5 4. Nc3 e6 5. Nxd5 exd5 6. d4 Nc6 *++[ECO "B30"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 Nc6 *++[ECO "B30"]+[Opening "Sicilian"]+[Variation "Nimzovich-Rossolimo attack (without ...d6)"]++1. e4 c5 2. Nf3 Nc6 3. Bb5 *++[ECO "B31"]+[Opening "Sicilian"]+[Variation "Nimzovich-Rossolimo attack (with ...g6, without ...d6)"]++1. e4 c5 2. Nf3 Nc6 3. Bb5 g6 *++[ECO "B31"]+[Opening "Sicilian"]+[Variation "Nimzovich-Rossolimo attack, Gurgenidze variation"]++1. e4 c5 2. Nf3 Nc6 3. Bb5 g6 4. O-O Bg7 5. Re1 e5 6. b4 *++[ECO "B32"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 Nc6 3. d4 *++[ECO "B32"]+[Opening "Sicilian"]+[Variation "Flohr variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Qc7 *++[ECO "B32"]+[Opening "Sicilian"]+[Variation "Nimzovich variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 d5 *++[ECO "B32"]+[Opening "Sicilian"]+[Variation "Labourdonnais-Loewenthal variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 e5 *++[ECO "B32"]+[Opening "Sicilian"]+[Variation "Labourdonnais-Loewenthal (Kalashnikov) variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 e5 5. Nb5 d6 *++[ECO "B33"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 *++[ECO "B33"]+[Opening "Sicilian"]+[Variation "Pelikan (Lasker/Sveshnikov) variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e5 *++[ECO "B33"]+[Opening "Sicilian"]+[Variation "Pelikan, Bird variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e5 6. Ndb5 d6 7. Bg5 a6 +8. Na3 Be6 *++[ECO "B33"]+[Opening "Sicilian"]+[Variation "Pelikan, Chelyabinsk variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e5 6. Ndb5 d6 7. Bg5 a6 +8. Na3 b5 *++[ECO "B33"]+[Opening "Sicilian"]+[Variation "Sveshnikov variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e5 6. Ndb5 d6 7. Bg5 a6 +8. Na3 b5 9. Bxf6 gxf6 10. Nd5 f5 *++[ECO "B34"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, exchange variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. Nxc6 *++[ECO "B34"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, modern variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. Nc3 *++[ECO "B35"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, modern variation with Bc4"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. Nc3 Bg7 6. Be3 Nf6 7. Bc4 *++[ECO "B36"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, Maroczy bind"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. c4 *++[ECO "B36"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, Gurgenidze variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. c4 Nf6 6. Nc3 Nxd4 7. Qxd4 d6+*++[ECO "B37"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, Maroczy bind, 5...Bg7"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. c4 Bg7 *++[ECO "B37"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, Simagin variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. c4 Bg7 6. Nc2 d6 7. Be2 Nh6 *++[ECO "B38"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, Maroczy bind, 6.Be3"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. c4 Bg7 6. Be3 *++[ECO "B39"]+[Opening "Sicilian"]+[Variation "accelerated fianchetto, Breyer variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 g6 5. c4 Bg7 6. Be3 Nf6 7. Nc3 Ng4 *++[ECO "B40"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 e6 *++[ECO "B40"]+[Opening "Sicilian"]+[Variation "Marshall variation"]++1. e4 c5 2. Nf3 e6 3. d4 d5 *++[ECO "B40"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 *++[ECO "B40"]+[Opening "Sicilian"]+[Variation "Anderssen variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nf6 *++[ECO "B40"]+[Opening "Sicilian"]+[Variation "Pin variation (Sicilian counter-attack)"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Bb4 *++[ECO "B40"]+[Opening "Sicilian"]+[Variation "Pin, Jaffe variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Bb4 6. Bd3 e5 *++[ECO "B40"]+[Opening "Sicilian"]+[Variation "Pin, Koch variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Bb4 6. e5 *++[ECO "B41"]+[Opening "Sicilian"]+[Variation "Kan variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 *++[ECO "B41"]+[Opening "Sicilian"]+[Variation "Kan, Maroczy bind (Reti variation)"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. c4 *++[ECO "B41"]+[Opening "Sicilian"]+[Variation "Kan, Maroczy bind - Bronstein variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. c4 Nf6 6. Nc3 Bb4 7. Bd3 Nc6 8.+Bc2 *++[ECO "B42"]+[Opening "Sicilian"]+[Variation "Kan, 5.Bd3"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Bd3 *++[ECO "B42"]+[Opening "Sicilian"]+[Variation "Kan, Gipslis variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Bd3 Nf6 6. O-O d6 7. c4 g6 *++[ECO "B42"]+[Opening "Sicilian"]+[Variation "Kan, Polugaievsky variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Bd3 Bc5 *++[ECO "B42"]+[Opening "Sicilian"]+[Variation "Kan, Swiss cheese variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Bd3 g6 *++[ECO "B43"]+[Opening "Sicilian"]+[Variation "Kan, 5.Nc3"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 a6 5. Nc3 *++[ECO "B44"]+[Opening "Sicilian defence"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 *++[ECO "B44"]+[Opening "Sicilian, Szen (`anti-Taimanov') variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nb5 *++[ECO "B44"]+[Opening "Sicilian, Szen, hedgehog variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nb5 d6 6. c4 Nf6 7. N1c3 a6 8.+Na3 Be7 9. Be2 O-O 10. O-O b6 *++[ECO "B44"]+[Opening "Sicilian, Szen variation, Dely-Kasparov gambit"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nb5 d6 6. c4 Nf6 7. N1c3 a6 8.+Na3 d5 *++[ECO "B45"]+[Opening "Sicilian"]+[Variation "Taimanov variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 *++[ECO "B45"]+[Opening "Sicilian"]+[Variation "Taimanov, American attack"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 Nf6 6. Ndb5 Bb4 7. Nd6+ *++[ECO "B46"]+[Opening "Sicilian"]+[Variation "Taimanov variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 a6 *++[ECO "B47"]+[Opening "Sicilian"]+[Variation "Taimanov (Bastrikov) variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 Qc7 *++[ECO "B48"]+[Opening "Sicilian"]+[Variation "Taimanov variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 Qc7 6. Be3 *++[ECO "B49"]+[Opening "Sicilian"]+[Variation "Taimanov variation"]++1. e4 c5 2. Nf3 e6 3. d4 cxd4 4. Nxd4 Nc6 5. Nc3 Qc7 6. Be3 a6 7. Be2 *++[ECO "B50"]+[Opening "Sicilian"]++1. e4 c5 2. Nf3 d6 *++[ECO "B50"]+[Opening "Sicilian"]+[Variation "wing gambit deferred"]++1. e4 c5 2. Nf3 d6 3. b4 *++[ECO "B51"]+[Opening "Sicilian"]+[Variation "Canal-Sokolsky (Nimzovich-Rossolimo, Moscow) attack"]++1. e4 c5 2. Nf3 d6 3. Bb5+ *++[ECO "B52"]+[Opening "Sicilian"]+[Variation "Canal-Sokolsky attack, 3...Bd7"]++1. e4 c5 2. Nf3 d6 3. Bb5+ Bd7 *++[ECO "B52"]+[Opening "Sicilian"]+[Variation "Canal-Sokolsky attack, Bronstein gambit"]++1. e4 c5 2. Nf3 d6 3. Bb5+ Bd7 4. Bxd7+ Qxd7 5. O-O Nc6 6. c3 Nf6 7. d4 *++[ECO "B52"]+[Opening "Sicilian"]+[Variation "Canal-Sokolsky attack, Sokolsky variation"]++1. e4 c5 2. Nf3 d6 3. Bb5+ Bd7 4. Bxd7+ Qxd7 5. c4 *++[ECO "B53"]+[Opening "Sicilian, Chekhover variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Qxd4 *++[ECO "B53"]+[Opening "Sicilian"]+[Variation "Chekhover, Zaitsev variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Qxd4 Nc6 5. Bb5 Qd7 *++[ECO "B54"]+[Opening "Sicilian"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 *++[ECO "B54"]+[Opening "Sicilian"]+[Variation "Prins (Moscow) variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. f3 *++[ECO "B55"]+[Opening "Sicilian"]+[Variation "Prins variation, Venice attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. f3 e5 6. Bb5+ *++[ECO "B56"]+[Opening "Sicilian"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 *++[ECO "B56"]+[Opening "Sicilian"]+[Variation "Venice attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e5 6. Bb5+ *++[ECO "B56"]+[Opening "Sicilian"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 *++[ECO "B57"]+[Opening "Sicilian"]+[Variation "Sozin, not Scheveningen"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bc4 *++[ECO "B57"]+[Opening "Sicilian"]+[Variation "Magnus Smith trap"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bc4 g6 7. Nxc6 bxc6+8. e5 *++[ECO "B57"]+[Opening "Sicilian"]+[Variation "Sozin, Benko variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bc4 Qb6 *++[ECO "B58"]+[Opening "Sicilian"]+[Variation "classical"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Be2 *++[ECO "B58"]+[Opening "Sicilian"]+[Variation "Boleslavsky variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Be2 e5 *++[ECO "B58"]+[Opening "Sicilian"]+[Variation "Boleslavsky, Louma variation"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Be2 e5 7. Nxc6 *++[ECO "B59"]+[Opening "Sicilian"]+[Variation "Boleslavsky variation, 7.Nb3"]++1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 d6 6. Be2 e5 7. Nb3 *++[ECO "B60"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 *++[ECO "B60"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Bondarevsky variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 g6 *++[ECO "B60"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Larsen variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 Bd7 *++[ECO "B61"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Larsen variation, 7.Qd2"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 Bd7 7. Qd2 *++[ECO "B62"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, 6...e6"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 *++[ECO "B62"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Podvebrady variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Nb3 *++[ECO "B62"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Margate (Alekhine) variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Bb5 *++[ECO "B62"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Richter attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Nxc6 *++[ECO "B62"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Keres variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd3 *++[ECO "B63"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 *++[ECO "B63"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...Be7"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7 *++[ECO "B64"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...Be7 defence, 9.f4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7 +8. O-O-O O-O 9. f4 *++[ECO "B64"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, Geller variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7 +8. O-O-O O-O 9. f4 e5 *++[ECO "B65"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...Be7 defence, 9...Nxd4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7 +8. O-O-O O-O 9. f4 Nxd4 *++[ECO "B65"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...Be7 defence, 9...Nxd4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 Be7 +8. O-O-O O-O 9. f4 Nxd4 10. Qxd4 *++[ECO "B66"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...a6"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 a6 *++[ECO "B67"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...a6 defence, 8...Bd7"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 a6 8.+O-O-O Bd7 *++[ECO "B68"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...a6 defence, 9...Be7"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 a6 8.+O-O-O Bd7 9. f4 Be7 *++[ECO "B69"]+[Opening "Sicilian"]+[Variation "Richter-Rauzer, Rauzer attack, 7...a6 defence, 11.Bxf6"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 Nc6 6. Bg5 e6 7. Qd2 a6 8.+O-O-O Bd7 9. f4 Be7 10. Nf3 b5 11. Bxf6 *++[ECO "B70"]+[Opening "Sicilian"]+[Variation "dragon variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 *++[ECO "B71"]+[Opening "Sicilian"]+[Variation "dragon, Levenfish variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. f4 *++[ECO "B71"]+[Opening "Sicilian"]+[Variation "dragon, Levenfish; Flohr variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. f4 Nbd7 *++[ECO "B72"]+[Opening "Sicilian"]+[Variation "dragon, 6.Be3"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 *++[ECO "B72"]+[Opening "Sicilian"]+[Variation "dragon, classical attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 *++[ECO "B72"]+[Opening "Sicilian"]+[Variation "dragon, classical, Amsterdam variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. Qd2 *++[ECO "B72"]+[Opening "Sicilian"]+[Variation "dragon, classical, Grigoriev variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. Qd2 O-O 9. O-O-O *++[ECO "B72"]+[Opening "Sicilian"]+[Variation "dragon, classical, Nottingham variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. Nb3 *++[ECO "B73"]+[Opening "Sicilian"]+[Variation "dragon, classical, 8.O-O"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O *++[ECO "B73"]+[Opening "Sicilian"]+[Variation "dragon, classical, Zollner gambit"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. f4 Qb6 10. e5 *++[ECO "B73"]+[Opening "Sicilian"]+[Variation "dragon, classical, Richter variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Qd2 *++[ECO "B74"]+[Opening "Sicilian"]+[Variation "dragon, classical, 9.Nb3"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Nb3 *++[ECO "B74"]+[Opening "Sicilian"]+[Variation "dragon, classical, Stockholm attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Nb3 Be6 10. f4 Na5 11. f5 Bc4 12. Nxa5 Bxe2 13. Qxe2 Qxa5 14.+g4 *++[ECO "B74"]+[Opening "Sicilian"]+[Variation "dragon, classical, Spielmann variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Nb3 Be6 10. f4 Na5 11. f5 Bc4 12. Bd3 *++[ECO "B74"]+[Opening "Sicilian"]+[Variation "dragon, classical, Bernard defence"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Nb3 Be6 10. f4 Na5 11. f5 Bc4 12. Bd3 Bxd3 13. cxd3 d5 *++[ECO "B74"]+[Opening "Sicilian"]+[Variation "dragon, classical, Reti-Tartakower variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Nb3 Be6 10. f4 Qc8 *++[ECO "B74"]+[Opening "Sicilian"]+[Variation "dragon, classical, Alekhine variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. Be2 Nc6 +8. O-O O-O 9. Nb3 a5 *++[ECO "B75"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 *++[ECO "B76"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, 7...O-O"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O *++[ECO "B76"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, Rauser variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8.+Qd2 Nc6 9. O-O-O *++[ECO "B77"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, 9.Bc4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8.+Qd2 Nc6 9. Bc4 *++[ECO "B77"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, Byrne variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8.+Qd2 Nc6 9. Bc4 a5 *++[ECO "B77"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, 9...Bd7"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8.+Qd2 Nc6 9. Bc4 Bd7 *++[ECO "B78"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, 10.O-O-O"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8.+Qd2 Nc6 9. Bc4 Bd7 10. O-O-O *++[ECO "B79"]+[Opening "Sicilian"]+[Variation "dragon, Yugoslav attack, 12.h4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 g6 6. Be3 Bg7 7. f3 O-O 8.+Qd2 Nc6 9. Bc4 Bd7 10. O-O-O Qa5 11. Bb3 Rfc8 12. h4 *++[ECO "B80"]+[Opening "Sicilian"]+[Variation "Scheveningen variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 *++[ECO "B80"]+[Opening "Sicilian"]+[Variation "Scheveningen, English variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be3 a6 7. Qd2 *++[ECO "B80"]+[Opening "Sicilian"]+[Variation "Scheveningen, Vitolins variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bb5+ *++[ECO "B80"]+[Opening "Sicilian"]+[Variation "Scheveningen, fianchetto variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. g3 *++[ECO "B81"]+[Opening "Sicilian"]+[Variation "Scheveningen, Keres attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. g4 *++[ECO "B82"]+[Opening "Sicilian"]+[Variation "Scheveningen, 6.f4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. f4 *++[ECO "B82"]+[Opening "Sicilian"]+[Variation "Scheveningen, Tal variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. f4 Nc6 7. Be3 Be7 8.+Qf3 *++[ECO "B83"]+[Opening "Sicilian"]+[Variation "Scheveningen, 6.Be2"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 *++[ECO "B83"]+[Opening "Sicilian"]+[Variation "modern Scheveningen"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 Nc6 *++[ECO "B83"]+[Opening "Sicilian"]+[Variation "modern Scheveningen, main line"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 Nc6 7. O-O Be7 +8. Be3 O-O 9. f4 *++[ECO "B83"]+[Opening "Sicilian"]+[Variation "modern Scheveningen, main line with Nb3"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 Nc6 7. O-O Be7 +8. Be3 O-O 9. f4 Bd7 10. Nb3 *++[ECO "B84"]+[Opening "Sicilian"]+[Variation "Scheveningen (Paulsen), classical variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 *++[ECO "B84"]+[Opening "Sicilian"]+[Variation "Scheveningen, classical, Nd7 system"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 7. O-O Nbd7 *++[ECO "B84"]+[Opening "Sicilian"]+[Variation "Scheveningen (Paulsen), classical variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 7. O-O Qc7 *++[ECO "B85"]+[Opening "Sicilian"]+[Variation "Scheveningen, classical variation with ...Qc7 and ...Nc6"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 7. O-O Qc7 8.+f4 Nc6 *++[ECO "B85"]+[Opening "Sicilian"]+[Variation "Scheveningen, classical, Maroczy system"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 7. O-O Qc7 8.+f4 Nc6 9. Kh1 Be7 10. a4 *++[ECO "B85"]+[Opening "Sicilian"]+[Variation "Scheveningen, classical"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 7. O-O Qc7 8.+f4 Nc6 9. Be3 *++[ECO "B85"]+[Opening "Sicilian"]+[Variation "Scheveningen, classical main line"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Be2 a6 7. O-O Qc7 8.+f4 Nc6 9. Be3 Be7 10. Qe1 O-O *++[ECO "B86"]+[Opening "Sicilian"]+[Variation "Sozin attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bc4 *++[ECO "B87"]+[Opening "Sicilian"]+[Variation "Sozin with ...a6 and ...b5"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bc4 a6 7. Bb3 b5 *++[ECO "B88"]+[Opening "Sicilian"]+[Variation "Sozin, Leonhardt variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bc4 Nc6 *++[ECO "B88"]+[Opening "Sicilian"]+[Variation "Sozin, Fischer variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bc4 Nc6 7. Bb3 Be7 +8. Be3 O-O 9. f4 *++[ECO "B89"]+[Opening "Sicilian"]+[Variation "Sozin, 7.Be3"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bc4 Nc6 7. Be3 *++[ECO "B89"]+[Opening "Sicilian"]+[Variation "Velimirovic attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 e6 6. Bc4 Nc6 7. Be3 Be7 +8. Qe2 *++[ECO "B90"]+[Opening "Sicilian"]+[Variation "Najdorf"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 *++[ECO "B90"]+[Opening "Sicilian"]+[Variation "Najdorf, Adams attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. h3 *++[ECO "B90"]+[Opening "Sicilian"]+[Variation "Najdorf, Lipnitzky attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bc4 *++[ECO "B90"]+[Opening "Sicilian"]+[Variation "Najdorf, Byrne (English) attack"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be3 *++[ECO "B91"]+[Opening "Sicilian"]+[Variation "Najdorf, Zagreb (fianchetto) variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. g3 *++[ECO "B92"]+[Opening "Sicilian"]+[Variation "Najdorf, Opovcensky variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Be2 *++[ECO "B93"]+[Opening "Sicilian"]+[Variation "Najdorf, 6.f4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. f4 *++[ECO "B94"]+[Opening "Sicilian"]+[Variation "Najdorf, 6.Bg5"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 *++[ECO "B94"]+[Opening "Sicilian"]+[Variation "Najdorf, Ivkov variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 Nbd7 7. Bc4 Qa5+8. Qd2 e6 9. O-O-O b5 10. Bb3 Bb7 11. Rhe1 Nc5 12. e5 *++[ECO "B95"]+[Opening "Sicilian"]+[Variation "Najdorf, 6...e6"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 *++[ECO "B96"]+[Opening "Sicilian"]+[Variation "Najdorf, 7.f4"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 *++[ECO "B96"]+[Opening "Sicilian"]+[Variation "Najdorf, Polugayevsky variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 b5 *++[ECO "B96"]+[Opening "Sicilian"]+[Variation "Najdorf, Polugayevsky, Simagin variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 b5 8. +e5 dxe5 9. fxe5 Qc7 10. Qe2 *++[ECO "B97"]+[Opening "Sicilian"]+[Variation "Najdorf, 7...Qb6"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 *++[ECO "B97"]+[Opening "Sicilian"]+[Variation "Najdorf, Poisoned pawn variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Qb6 8.+Qd2 Qxb2 9. Rb1 Qa3 *++[ECO "B98"]+[Opening "Sicilian"]+[Variation "Najdorf, 7...Be7"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 *++[ECO "B98"]+[Opening "Sicilian"]+[Variation "Najdorf, Browne variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8.+Qf3 h6 9. Bh4 Qc7 *++[ECO "B98"]+[Opening "Sicilian"]+[Variation "Najdorf, Goteborg (Argentine) variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8.+Qf3 h6 9. Bh4 g5 *++[ECO "B98"]+[Opening "Sicilian"]+[Variation "Najdorf variation"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8.+Qf3 Qc7 *++[ECO "B99"]+[Opening "Sicilian"]+[Variation "Najdorf, 7...Be7 main line"]++1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bg5 e6 7. f4 Be7 8.+Qf3 Qc7 9. O-O-O Nbd7 *++[ECO "C00"]+[Opening "French defence"]++1. e4 e6 *++[ECO "C00"]+[Opening "French defence, Steiner variation"]++1. e4 e6 2. c4 *++[ECO "C00"]+[Opening "French"]+[Variation "Reti (Spielmann) variation"]++1. e4 e6 2. b3 *++[ECO "C00"]+[Opening "French"]+[Variation "Steinitz attack"]++1. e4 e6 2. e5 *++[ECO "C00"]+[Opening "French"]+[Variation "Labourdonnais variation"]++1. e4 e6 2. f4 *++[ECO "C00"]+[Opening "French defence"]++1. e4 e6 2. Nf3 *++[ECO "C00"]+[Opening "French"]+[Variation "Wing gambit"]++1. e4 e6 2. Nf3 d5 3. e5 c5 4. b4 *++[ECO "C00"]+[Opening "French defence"]++1. e4 e6 2. Nc3 *++[ECO "C00"]+[Opening "French"]+[Variation "Pelikan variation"]++1. e4 e6 2. Nc3 d5 3. f4 *++[ECO "C00"]+[Opening "French"]+[Variation "Two knights variation"]++1. e4 e6 2. Nc3 d5 3. Nf3 *++[ECO "C00"]+[Opening "French"]+[Variation "Chigorin variation"]++1. e4 e6 2. Qe2 *++[ECO "C00"]+[Opening "French"]+[Variation "King's Indian attack"]++1. e4 e6 2. d3 *++[ECO "C00"]+[Opening "French"]+[Variation "Reversed Philidor formation"]++1. e4 e6 2. d3 d5 3. Nd2 Nf6 4. Ngf3 Nc6 5. Be2 *++[ECO "C00"]+[Opening "French defence"]++1. e4 e6 2. d4 *++[ECO "C00"]+[Opening "Lengfellner system"]++1. e4 e6 2. d4 d6 *++[ECO "C00"]+[Opening "St. George defence"]++1. e4 e6 2. d4 a6 *++[ECO "C00"]+[Opening "French defence"]++1. e4 e6 2. d4 d5 *++[ECO "C00"]+[Opening "French"]+[Variation "Schlechter variation"]++1. e4 e6 2. d4 d5 3. Bd3 *++[ECO "C00"]+[Opening "French"]+[Variation "Alapin variation"]++1. e4 e6 2. d4 d5 3. Be3 *++[ECO "C01"]+[Opening "French"]+[Variation "exchange variation"]++1. e4 e6 2. d4 d5 3. exd5 *++[ECO "C01"]+[Opening "French"]+[Variation "exchange, Svenonius variation"]++1. e4 e6 2. d4 d5 3. exd5 exd5 4. Nc3 Nf6 5. Bg5 *++[ECO "C01"]+[Opening "French"]+[Variation "exchange, Bogolyubov variation"]++1. e4 e6 2. d4 d5 3. exd5 exd5 4. Nc3 Nf6 5. Bg5 Nc6 *++[ECO "C02"]+[Opening "French"]+[Variation "advance variation"]++1. e4 e6 2. d4 d5 3. e5 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Steinitz variation"]++1. e4 e6 2. d4 d5 3. e5 c5 4. dxc5 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Nimzovich variation"]++1. e4 e6 2. d4 d5 3. e5 c5 4. Qg4 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Nimzovich system"]++1. e4 e6 2. d4 d5 3. e5 c5 4. Nf3 *++[ECO "C02"]+[Opening "French"]+[Variation "advance variation"]++1. e4 e6 2. d4 d5 3. e5 c5 4. c3 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Wade variation"]++1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Qb6 5. Nf3 Bd7 *++[ECO "C02"]+[Opening "French"]+[Variation "advance variation"]++1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Paulsen attack"]++1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Milner-Barry gambit"]++1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 Qb6 6. Bd3 *++[ECO "C02"]+[Opening "French"]+[Variation "advance, Euwe variation"]++1. e4 e6 2. d4 d5 3. e5 c5 4. c3 Nc6 5. Nf3 Bd7 *++[ECO "C03"]+[Opening "French"]+[Variation "Tarrasch"]++1. e4 e6 2. d4 d5 3. Nd2 *++[ECO "C03"]+[Opening "French"]+[Variation "Tarrasch, Haberditz variation"]++1. e4 e6 2. d4 d5 3. Nd2 f5 *++[ECO "C03"]+[Opening "French"]+[Variation "Tarrasch, Guimard variation"]++1. e4 e6 2. d4 d5 3. Nd2 Nc6 *++[ECO "C04"]+[Opening "French"]+[Variation "Tarrasch, Guimard main line"]++1. e4 e6 2. d4 d5 3. Nd2 Nc6 4. Ngf3 Nf6 *++[ECO "C05"]+[Opening "French"]+[Variation "Tarrasch, closed variation"]++1. e4 e6 2. d4 d5 3. Nd2 Nf6 *++[ECO "C05"]+[Opening "French"]+[Variation "Tarrasch, Botvinnik variation"]++1. e4 e6 2. d4 d5 3. Nd2 Nf6 4. e5 Nfd7 5. Bd3 c5 6. c3 b6 *++[ECO "C05"]+[Opening "French"]+[Variation "Tarrasch, closed variation"]++1. e4 e6 2. d4 d5 3. Nd2 Nf6 4. e5 Nfd7 5. Bd3 c5 6. c3 Nc6 *++[ECO "C06"]+[Opening "French"]+[Variation "Tarrasch, closed variation, main line"]++1. e4 e6 2. d4 d5 3. Nd2 Nf6 4. e5 Nfd7 5. Bd3 c5 6. c3 Nc6 7. Ne2 cxd4 8.+cxd4 *++[ECO "C06"]+[Opening "French"]+[Variation "Tarrasch, Leningrad variation"]++1. e4 e6 2. d4 d5 3. Nd2 Nf6 4. e5 Nfd7 5. Bd3 c5 6. c3 Nc6 7. Ne2 cxd4 8.+cxd4 Nb6 *++[ECO "C07"]+[Opening "French"]+[Variation "Tarrasch, open variation"]++1. e4 e6 2. d4 d5 3. Nd2 c5 *++[ECO "C07"]+[Opening "French"]+[Variation "Tarrasch, Eliskases variation"]++1. e4 e6 2. d4 d5 3. Nd2 c5 4. exd5 Qxd5 5. Ngf3 cxd4 6. Bc4 Qd8 *++[ECO "C08"]+[Opening "French"]+[Variation "Tarrasch, open, 4.ed ed"]++1. e4 e6 2. d4 d5 3. Nd2 c5 4. exd5 exd5 *++[ECO "C09"]+[Opening "French"]+[Variation "Tarrasch, open variation, main line"]++1. e4 e6 2. d4 d5 3. Nd2 c5 4. exd5 exd5 5. Ngf3 Nc6 *++[ECO "C10"]+[Opening "French"]+[Variation "Paulsen variation"]++1. e4 e6 2. d4 d5 3. Nc3 *++[ECO "C10"]+[Opening "French"]+[Variation "Marshall variation"]++1. e4 e6 2. d4 d5 3. Nc3 c5 *++[ECO "C10"]+[Opening "French"]+[Variation "Rubinstein variation"]++1. e4 e6 2. d4 d5 3. Nc3 dxe4 *++[ECO "C10"]+[Opening "French"]+[Variation "Fort Knox variation"]++1. e4 e6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Bd7 5. Nf3 Bc6 *++[ECO "C10"]+[Opening "French"]+[Variation "Rubinstein variation"]++1. e4 e6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nd7 *++[ECO "C10"]+[Opening "French"]+[Variation "Rubinstein, Capablanca line"]++1. e4 e6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Nd7 5. Nf3 Ngf6 6. Nxf6+ Nxf6 7. Ne5+*++[ECO "C10"]+[Opening "French"]+[Variation "Frere (Becker) variation"]++1. e4 e6 2. d4 d5 3. Nc3 dxe4 4. Nxe4 Qd5 *++[ECO "C11"]+[Opening "French defence"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 *++[ECO "C11"]+[Opening "French"]+[Variation "Swiss variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bd3 *++[ECO "C11"]+[Opening "French"]+[Variation "Henneberger variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Be3 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz, Bradford attack"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. dxc5 Bxc5 7. Qg4 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. dxc5 Nc6 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz, Brodsky-Jones variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. dxc5 Nc6 7. a3 Bxc5 8.+Qg4 O-O 9. Nf3 f6 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. Nf3 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz, Boleslavsky variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. f4 c5 6. Nf3 Nc6 7. Be3 *++[ECO "C11"]+[Opening "French"]+[Variation "Steinitz, Gledhill attack"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. e5 Nfd7 5. Qg4 *++[ECO "C11"]+[Opening "French"]+[Variation "Burn variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 dxe4 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Bogolyubov variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. exd5 Qxd5 6. Bxf6 gxf6 7. Qd2 +Qa5 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, advance variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Chigorin variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. exf6 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Grigoriev variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. exf6 hxg5 7. fxg7 Rg8 +8. h4 gxh4 9. Qg4 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Bernstein variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bh4 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Janowski variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Be3 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Dr. Olland (Dutch) variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bc1 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Tartakower variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bd2 Nfd7 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Lasker variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bd2 Bxc3 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Duras variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bd2 Bxc3 7. bxc3 Ne4 8.+Qg4 Kf8 9. Bc1 *++[ECO "C12"]+[Opening "French"]+[Variation "MacCutcheon, Lasker variation, 8...g6"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Bb4 5. e5 h6 6. Bd2 Bxc3 7. bxc3 Ne4 8.+Qg4 g6 *++[ECO "C13"]+[Opening "French"]+[Variation "classical"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 *++[ECO "C13"]+[Opening "French"]+[Variation "classical, Anderssen variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. Bxf6 *++[ECO "C13"]+[Opening "French"]+[Variation "classical, Anderssen-Richter variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. Bxf6 Bxf6 6. e5 Be7 7. Qg4 *++[ECO "C13"]+[Opening "French"]+[Variation "classical, Vistaneckis (Nimzovich) variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Ng8 *++[ECO "C13"]+[Opening "French"]+[Variation "classical, Frankfurt variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Ng8 6. Be3 b6 *++[ECO "C13"]+[Opening "French"]+[Variation "classical, Tartakower variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Ne4 *++[ECO "C13"]+[Opening "French"]+[Variation "Albin-Alekhine-Chatard attack"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. h4 *++[ECO "C13"]+[Opening "French"]+[Variation "Albin-Alekhine-Chatard attack, Maroczy variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. h4 a6 *++[ECO "C13"]+[Opening "French"]+[Variation "Albin-Alekhine-Chatard attack, Breyer variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. h4 c5 *++[ECO "C13"]+[Opening "French"]+[Variation "Albin-Alekhine-Chatard attack, Teichmann variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. h4 f6 *++[ECO "C13"]+[Opening "French"]+[Variation "Albin-Alekhine-Chatard attack, Spielmann variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. h4 O-O *++[ECO "C14"]+[Opening "French"]+[Variation "classical variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 *++[ECO "C14"]+[Opening "French"]+[Variation "classical, Tarrasch variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 7. Bd3 *++[ECO "C14"]+[Opening "French"]+[Variation "classical, Rubinstein variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 7. Qd2 *++[ECO "C14"]+[Opening "French"]+[Variation "classical, Alapin variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 7. Nb5 *++[ECO "C14"]+[Opening "French"]+[Variation "classical, Pollock variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 7. Qg4 *++[ECO "C14"]+[Opening "French"]+[Variation "classical, Steinitz variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 7. f4 *++[ECO "C14"]+[Opening "French"]+[Variation "classical, Stahlberg variation"]++1. e4 e6 2. d4 d5 3. Nc3 Nf6 4. Bg5 Be7 5. e5 Nfd7 6. Bxe7 Qxe7 7. f4 O-O +8. Nf3 c5 9. Qd2 Nc6 10. O-O-O c4 *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer (Nimzovich) variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer, Kondratiyev variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. Bd3 c5 5. exd5 Qxd5 6. Bd2 *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer, fingerslip variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. Bd2 *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer, Alekhine (Maroczy) gambit"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. Ne2 *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer, Alekhine gambit, Alatortsev variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. Ne2 dxe4 5. a3 Be7 6. Nxe4 Nf6 7. N2g3 O-O+8. Be2 Nc6 *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer, Alekhine gambit"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. Ne2 dxe4 5. a3 Bxc3+ *++[ECO "C15"]+[Opening "French"]+[Variation "Winawer, Alekhine gambit, Kan variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. Ne2 dxe4 5. a3 Bxc3+ 6. Nxc3 Nc6 *++[ECO "C16"]+[Opening "French"]+[Variation "Winawer, advance variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 *++[ECO "C16"]+[Opening "French"]+[Variation "Winawer, Petrosian variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 Qd7 *++[ECO "C17"]+[Opening "French"]+[Variation "Winawer, advance variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 *++[ECO "C17"]+[Opening "French"]+[Variation "Winawer, advance, Bogolyubov variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. Bd2 *++[ECO "C17"]+[Opening "French"]+[Variation "Winawer, advance, Russian variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. Qg4 *++[ECO "C17"]+[Opening "French"]+[Variation "Winawer, advance, 5.a3"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 *++[ECO "C17"]+[Opening "French"]+[Variation "Winawer, advance, Rauzer variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 cxd4 6. axb4 dxc3 7. Nf3 *++[ECO "C18"]+[Opening "French"]+[Variation "Winawer, advance variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 *++[ECO "C18"]+[Opening "French"]+[Variation "Winawer, classical variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Qc7 *++[ECO "C19"]+[Opening "French"]+[Variation "Winawer, advance, 6...Ne7"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 *++[ECO "C19"]+[Opening "French"]+[Variation "Winawer, advance, Smyslov variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 7. a4 *++[ECO "C19"]+[Opening "French"]+[Variation "Winawer, advance, positional main line"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 7. Nf3 *++[ECO "C19"]+[Opening "French"]+[Variation "Winawer, advance, poisoned pawn variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 7. Qg4 *++[ECO "C19"]+[Opening "French"]+[Variation "Winawer, advance, poisoned pawn, Euwe-Gligoric variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 7. Qg4 Qc7 8.+Qxg7 Rg8 9. Qxh7 cxd4 10. Kd1 *++[ECO "C19"]+[Opening "French"]+[Variation "Winawer, advance, poisoned pawn, Konstantinopolsky variation"]++1. e4 e6 2. d4 d5 3. Nc3 Bb4 4. e5 c5 5. a3 Bxc3+ 6. bxc3 Ne7 7. Qg4 Qc7 8.+Qxg7 Rg8 9. Qxh7 cxd4 10. Ne2 *++[ECO "C20"]+[Opening "King's pawn game"]++1. e4 e5 *++[ECO "C20"]+[Opening "KP"]+[Variation "Indian opening"]++1. e4 e5 2. d3 *++[ECO "C20"]+[Opening "KP"]+[Variation "Mengarini's opening"]++1. e4 e5 2. a3 *++[ECO "C20"]+[Opening "KP"]+[Variation "King's head opening"]++1. e4 e5 2. f3 *++[ECO "C20"]+[Opening "KP"]+[Variation "Patzer opening"]++1. e4 e5 2. Qh5 *++[ECO "C20"]+[Opening "KP"]+[Variation "Napoleon's opening"]++1. e4 e5 2. Qf3 *++[ECO "C20"]+[Opening "KP"]+[Variation "Lopez opening"]++1. e4 e5 2. c3 *++[ECO "C20"]+[Opening "Alapin's opening"]++1. e4 e5 2. Ne2 *++[ECO "C21"]+[Opening "Centre game"]++1. e4 e5 2. d4 exd4 *++[ECO "C21"]+[Opening "Centre game, Kieseritsky variation"]++1. e4 e5 2. d4 exd4 3. Nf3 c5 4. Bc4 b5 *++[ECO "C21"]+[Opening "Halasz gambit"]++1. e4 e5 2. d4 exd4 3. f4 *++[ECO "C21"]+[Opening "Danish gambit"]++1. e4 e5 2. d4 exd4 3. c3 *++[ECO "C21"]+[Opening "Danish gambit"]+[Variation "Collijn defence"]++1. e4 e5 2. d4 exd4 3. c3 dxc3 4. Bc4 cxb2 5. Bxb2 Qe7 *++[ECO "C21"]+[Opening "Danish gambit"]+[Variation "Schlechter defence"]++1. e4 e5 2. d4 exd4 3. c3 dxc3 4. Bc4 cxb2 5. Bxb2 d5 *++[ECO "C21"]+[Opening "Danish gambit"]+[Variation "Soerensen defence"]++1. e4 e5 2. d4 exd4 3. c3 d5 *++[ECO "C21"]+[Opening "Centre game"]++1. e4 e5 2. d4 exd4 3. Qxd4 *++[ECO "C22"]+[Opening "Centre game"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 *++[ECO "C22"]+[Opening "Centre game"]+[Variation "Paulsen attack"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe3 *++[ECO "C22"]+[Opening "Centre game"]+[Variation "Charousek variation"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe3 Bb4+ 5. c3 Be7 *++[ECO "C22"]+[Opening "Centre game"]+[Variation "l'Hermet variation"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe3 f5 *++[ECO "C22"]+[Opening "Centre game"]+[Variation "Berger variation"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe3 Nf6 *++[ECO "C22"]+[Opening "Centre game"]+[Variation "Kupreichik variation"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qe3 Nf6 5. Nc3 Bb4 6. Bd2 O-O 7. O-O-O +Re8 8. Bc4 d6 9. Nh3 *++[ECO "C22"]+[Opening "Centre game"]+[Variation "Hall variation"]++1. e4 e5 2. d4 exd4 3. Qxd4 Nc6 4. Qc4 *++[ECO "C23"]+[Opening "Bishop's opening"]++1. e4 e5 2. Bc4 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Philidor counter-attack"]++1. e4 e5 2. Bc4 c6 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Lisitsyn variation"]++1. e4 e5 2. Bc4 c6 3. d4 d5 4. exd5 cxd5 5. Bb5+ Bd7 6. Bxd7+ Nxd7 7. dxe5+Nxe5 8. Ne2 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Calabrese counter-gambit"]++1. e4 e5 2. Bc4 f5 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Calabrese counter-gambit, Jaenisch variation"]++1. e4 e5 2. Bc4 f5 3. d3 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Classical variation"]++1. e4 e5 2. Bc4 Bc5 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Lopez gambit"]++1. e4 e5 2. Bc4 Bc5 3. Qe2 Nc6 4. c3 Nf6 5. f4 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Philidor variation"]++1. e4 e5 2. Bc4 Bc5 3. c3 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Pratt variation"]++1. e4 e5 2. Bc4 Bc5 3. c3 Nf6 4. d4 exd4 5. e5 d5 6. exf6 dxc4 7. Qh5 O-O *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Lewis counter-gambit"]++1. e4 e5 2. Bc4 Bc5 3. c3 d5 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "del Rio variation"]++1. e4 e5 2. Bc4 Bc5 3. c3 Qg5 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Lewis gambit"]++1. e4 e5 2. Bc4 Bc5 3. d4 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Wing gambit"]++1. e4 e5 2. Bc4 Bc5 3. b4 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "MacDonnell double gambit"]++1. e4 e5 2. Bc4 Bc5 3. b4 Bxb4 4. f4 *++[ECO "C23"]+[Opening "Bishop's opening"]+[Variation "Four pawns' gambit"]++1. e4 e5 2. Bc4 Bc5 3. b4 Bxb4 4. f4 exf4 5. Nf3 Be7 6. d4 Bh4+ 7. g3 fxg3+8. O-O gxh2+ 9. Kh1 *++[ECO "C24"]+[Opening "Bishop's opening"]+[Variation "Berlin defence"]++1. e4 e5 2. Bc4 Nf6 *++[ECO "C24"]+[Opening "Bishop's opening"]+[Variation "Greco gambit"]++1. e4 e5 2. Bc4 Nf6 3. f4 *++[ECO "C24"]+[Opening "Bishop's opening"]+[Variation "Ponziani gambit"]++1. e4 e5 2. Bc4 Nf6 3. d4 *++[ECO "C24"]+[Opening "Bishop's opening"]+[Variation "Urusov gambit"]++1. e4 e5 2. Bc4 Nf6 3. d4 exd4 4. Nf3 *++[ECO "C24"]+[Opening "Bishop's opening"]+[Variation "Urusov gambit, Panov variation"]++1. e4 e5 2. Bc4 Nf6 3. d4 exd4 4. Nf3 d5 5. exd5 Bb4+ 6. c3 Qe7+ *++[ECO "C25"]+[Opening "Vienna game"]++1. e4 e5 2. Nc3 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Zhuravlev countergambit"]++1. e4 e5 2. Nc3 Bb4 3. Qg4 Nf6 *++[ECO "C25"]+[Opening "Vienna game, Max Lange defence"]++1. e4 e5 2. Nc3 Nc6 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Paulsen variation"]++1. e4 e5 2. Nc3 Nc6 3. g3 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Fyfe gambit"]++1. e4 e5 2. Nc3 Nc6 3. d4 *++[ECO "C25"]+[Opening "Vienna gambit"]++1. e4 e5 2. Nc3 Nc6 3. f4 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Steinitz gambit"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. d4 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Steinitz gambit, Zukertort defence"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. d4 Qh4+ 5. Ke2 d5 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Steinitz gambit, Fraser-Minckwitz variation"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. d4 Qh4+ 5. Ke2 b6 *++[ECO "C25"]+[Opening "Vienna gambit"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Hamppe-Allgaier gambit"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 g5 5. h4 g4 6. Ng5 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Hamppe-Allgaier gambit, Alapin variation"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 g5 5. h4 g4 6. Ng5 d6 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Hamppe-Muzio gambit"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 g5 5. Bc4 g4 6. O-O *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Hamppe-Muzio, Dubois variation"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 g5 5. Bc4 g4 6. O-O gxf3 7. Qxf3 Ne5+8. Qxf4 Qf6 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Pierce gambit"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 g5 5. d4 *++[ECO "C25"]+[Opening "Vienna"]+[Variation "Pierce gambit, Rushmere attack"]++1. e4 e5 2. Nc3 Nc6 3. f4 exf4 4. Nf3 g5 5. d4 g4 6. Bc4 gxf3 7. O-O d5 8.+exd5 Bg4 9. dxc6 *++[ECO "C26"]+[Opening "Vienna"]+[Variation "Falkbeer variation"]++1. e4 e5 2. Nc3 Nf6 *++[ECO "C26"]+[Opening "Vienna"]+[Variation "Mengarini variation"]++1. e4 e5 2. Nc3 Nf6 3. a3 *++[ECO "C26"]+[Opening "Vienna"]+[Variation "Paulsen-Mieses variation"]++1. e4 e5 2. Nc3 Nf6 3. g3 *++[ECO "C26"]+[Opening "Vienna game"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 *++[ECO "C27"]+[Opening "Vienna game"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 *++[ECO "C27"]+[Opening "Vienna"]+[Variation "`Frankenstein-Dracula' variation"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 4. Qh5 Nd6 5. Bb3 Nc6 6. Nb5 g6 7. Qf3 f5 +8. Qd5 Qe7 9. Nxc7+ Kd8 10. Nxa8 b6 *++[ECO "C27"]+[Opening "Vienna"]+[Variation "Adams' gambit"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 4. Qh5 Nd6 5. Bb3 Nc6 6. d4 *++[ECO "C27"]+[Opening "Vienna game"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 4. Qh5 Nd6 5. Bb3 Be7 *++[ECO "C27"]+[Opening "Vienna"]+[Variation "Alekhine variation"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 4. Qh5 Nd6 5. Bb3 Be7 6. Nf3 Nc6 7. Nxe5 *++[ECO "C27"]+[Opening "Boden-Kieseritsky gambit"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 4. Nf3 *++[ECO "C27"]+[Opening "Boden-Kieseritsky gambit"]+[Variation "Lichtenhein defence"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nxe4 4. Nf3 d5 *++[ECO "C28"]+[Opening "Vienna game"]++1. e4 e5 2. Nc3 Nf6 3. Bc4 Nc6 *++[ECO "C29"]+[Opening "Vienna gambit"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 *++[ECO "C29"]+[Opening "Vienna gambit"]+[Variation "Kaufmann variation"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Nf3 Bg4 6. Qe2 *++[ECO "C29"]+[Opening "Vienna gambit"]+[Variation "Breyer variation"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Nf3 Be7 *++[ECO "C29"]+[Opening "Vienna gambit"]+[Variation "Paulsen attack"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 *++[ECO "C29"]+[Opening "Vienna gambit"]+[Variation "Bardeleben variation"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 f5 *++[ECO "C29"]+[Opening "Vienna gambit"]+[Variation "Heyde variation"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. Qf3 f5 6. d4 *++[ECO "C29"]+[Opening "Vienna gambit"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. d3 *++[ECO "C29"]+[Opening "Vienna gambit, Wurzburger trap"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. fxe5 Nxe4 5. d3 Qh4+ 6. g3 Nxg3 7. Nf3 Qh5+8. Nxd5 *++[ECO "C29"]+[Opening "Vienna gambit, Steinitz variation"]++1. e4 e5 2. Nc3 Nf6 3. f4 d5 4. d3 *++[ECO "C30"]+[Opening "King's gambit"]++1. e4 e5 2. f4 *++[ECO "C30"]+[Opening "KGD"]+[Variation "Keene's defence"]++1. e4 e5 2. f4 Qh4+ 3. g3 Qe7 *++[ECO "C30"]+[Opening "KGD"]+[Variation "Mafia defence"]++1. e4 e5 2. f4 c5 *++[ECO "C30"]+[Opening "KGD"]+[Variation "Norwalde variation"]++1. e4 e5 2. f4 Qf6 *++[ECO "C30"]+[Opening "KGD"]+[Variation "Norwalde variation, Buecker gambit"]++1. e4 e5 2. f4 Qf6 3. Nf3 Qxf4 4. Nc3 Bb4 5. Bc4 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical variation"]++1. e4 e5 2. f4 Bc5 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, Svenonius variation"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. Nc3 Nf6 5. Bc4 Nc6 6. d3 Bg4 7. h3 Bxf3 8.+Qxf3 exf4 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, Hanham variation"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. Nc3 Nd7 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, 4.c3"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. c3 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, Marshall attack"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. c3 Bg4 5. fxe5 dxe5 6. Qa4+ *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical counter-gambit"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. c3 f5 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, Reti variation"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. c3 f5 5. fxe5 dxe5 6. d4 exd4 7. Bc4 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, Soldatenkov variation"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. fxe5 *++[ECO "C30"]+[Opening "KGD"]+[Variation "classical, Heath variation"]++1. e4 e5 2. f4 Bc5 3. Nf3 d6 4. b4 *++[ECO "C30"]+[Opening "KGD"]+[Variation "2...Nf6"]++1. e4 e5 2. f4 Nf6 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer counter-gambit"]++1. e4 e5 2. f4 d5 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, Tartakower variation"]++1. e4 e5 2. f4 d5 3. Nf3 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, Milner-Barry variation"]++1. e4 e5 2. f4 d5 3. Nc3 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer counter-gambit"]++1. e4 e5 2. f4 d5 3. exd5 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Nimzovich counter-gambit"]++1. e4 e5 2. f4 d5 3. exd5 c6 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, 3...e4"]++1. e4 e5 2. f4 d5 3. exd5 e4 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, Rubinstein variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. Nc3 Nf6 5. Qe2 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, Nimzovich variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. Bb5+ *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, 4.d3"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 *++[ECO "C31"]+[Opening "KGD"]+[Variation "Falkbeer, Morphy gambit"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. Nc3 Bb4 6. Bd2 e3 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, 5.de"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. dxe4 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, Alapin variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. dxe4 Nxe4 6. Nf3 Bc5 7. Qe2 Bf2++8. Kd1 Qxd5+ 9. Nfd2 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, main line, 7...Bf5"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. dxe4 Nxe4 6. Nf3 Bc5 7. Qe2 Bf5 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, Tarrasch variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. dxe4 Nxe4 6. Nf3 Bc5 7. Qe2 Bf5 +8. g4 O-O *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, Charousek gambit"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. dxe4 Nxe4 6. Qe2 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, Charousek variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. dxe4 Nxe4 6. Qe2 Qxd5 7. Nd2 f5 +8. g4 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, Keres variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. Nd2 *++[ECO "C32"]+[Opening "KGD"]+[Variation "Falkbeer, Reti variation"]++1. e4 e5 2. f4 d5 3. exd5 e4 4. d3 Nf6 5. Qe2 *++[ECO "C33"]+[Opening "King's gambit accepted"]++1. e4 e5 2. f4 exf4 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Tumbleweed gambit"]++1. e4 e5 2. f4 exf4 3. Kf2 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Orsini gambit"]++1. e4 e5 2. f4 exf4 3. b3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Pawn's gambit (Stamma gambit)"]++1. e4 e5 2. f4 exf4 3. h4 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Schurig gambit"]++1. e4 e5 2. f4 exf4 3. Bd3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Carrera (Basman) gambit"]++1. e4 e5 2. f4 exf4 3. Qe2 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Villemson (Steinitz) gambit"]++1. e4 e5 2. f4 exf4 3. d4 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Keres (Mason-Steinitz) gambit"]++1. e4 e5 2. f4 exf4 3. Nc3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Breyer gambit"]++1. e4 e5 2. f4 exf4 3. Qf3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Lesser bishop's (Petroff-Jaenisch-Tartakower) gambit"]++1. e4 e5 2. f4 exf4 3. Be2 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit"]++1. e4 e5 2. f4 exf4 3. Bc4 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Chigorin's attack"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 d5 5. Bxd5 g5 6. g3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Greco variation"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 Bc5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, classical defence"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Grimm attack"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 5. Nc3 Bg7 6. d4 d6 7. e5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, classical defence"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 5. Nc3 Bg7 6. d4 Ne7 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, McDonnell attack"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 5. Nc3 Bg7 6. d4 Ne7 7. g3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, McDonnell attack"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 5. Nc3 Bg7 6. g3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Fraser variation"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 5. Nc3 Bg7 6. g3 fxg3 7. Qf3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, classical defence, Cozio attack"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 g5 5. Qf3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Boden defence"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 Nc6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Bryan counter-gambit"]++1. e4 e5 2. f4 exf4 3. Bc4 Qh4+ 4. Kf1 b5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Bryan counter-gambit"]++1. e4 e5 2. f4 exf4 3. Bc4 b5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Steinitz defence"]++1. e4 e5 2. f4 exf4 3. Bc4 Ne7 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Maurian defence"]++1. e4 e5 2. f4 exf4 3. Bc4 Nc6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Ruy Lopez defence"]++1. e4 e5 2. f4 exf4 3. Bc4 c6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Lopez-Gianutio counter-gambit"]++1. e4 e5 2. f4 exf4 3. Bc4 f5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "Lopez-Gianutio counter-gambit, Hein variation"]++1. e4 e5 2. f4 exf4 3. Bc4 f5 4. Qe2 Qh4+ 5. Kd1 fxe4 6. Nc3 Kd8 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Bledow variation"]++1. e4 e5 2. f4 exf4 3. Bc4 d5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Gifford variation"]++1. e4 e5 2. f4 exf4 3. Bc4 d5 4. Bxd5 Qh4+ 5. Kf1 g5 6. g3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Boren-Svenonius variation"]++1. e4 e5 2. f4 exf4 3. Bc4 d5 4. Bxd5 Qh4+ 5. Kf1 Bd6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Anderssen variation"]++1. e4 e5 2. f4 exf4 3. Bc4 d5 4. Bxd5 c6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Morphy variation"]++1. e4 e5 2. f4 exf4 3. Bc4 d5 4. Bxd5 Nf6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Cozio (Morphy) defence"]++1. e4 e5 2. f4 exf4 3. Bc4 Nf6 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Bogolyubov variation"]++1. e4 e5 2. f4 exf4 3. Bc4 Nf6 4. Nc3 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Paulsen attack"]++1. e4 e5 2. f4 exf4 3. Bc4 Nf6 4. Nc3 Bb4 5. e5 *++[ECO "C33"]+[Opening "KGA"]+[Variation "bishop's gambit, Jaenisch variation"]++1. e4 e5 2. f4 exf4 3. Bc4 Nf6 4. Nc3 c6 *++[ECO "C34"]+[Opening "King's knight's gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 *++[ECO "C34"]+[Opening "KGA"]+[Variation "Bonsch-Osmolovsky variation"]++1. e4 e5 2. f4 exf4 3. Nf3 Ne7 *++[ECO "C34"]+[Opening "KGA"]+[Variation "Gianutio counter-gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 f5 *++[ECO "C34"]+[Opening "KGA"]+[Variation "Fischer defence"]++1. e4 e5 2. f4 exf4 3. Nf3 d6 *++[ECO "C34"]+[Opening "KGA"]+[Variation "Becker defence"]++1. e4 e5 2. f4 exf4 3. Nf3 h6 *++[ECO "C34"]+[Opening "KGA"]+[Variation "Schallop defence"]++1. e4 e5 2. f4 exf4 3. Nf3 Nf6 *++[ECO "C35"]+[Opening "KGA"]+[Variation "Cunningham defence"]++1. e4 e5 2. f4 exf4 3. Nf3 Be7 *++[ECO "C35"]+[Opening "KGA"]+[Variation "Cunningham, Bertin gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 Be7 4. Bc4 Bh4+ 5. g3 *++[ECO "C35"]+[Opening "KGA"]+[Variation "Cunningham, three pawns gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 Be7 4. Bc4 Bh4+ 5. g3 fxg3 6. O-O gxh2+ 7. Kh1 *++[ECO "C35"]+[Opening "KGA"]+[Variation "Cunningham, Euwe defence"]++1. e4 e5 2. f4 exf4 3. Nf3 Be7 4. Bc4 Nf6 *++[ECO "C36"]+[Opening "KGA"]+[Variation "Abbazia defence (classical defence, modern defence[!])"]++1. e4 e5 2. f4 exf4 3. Nf3 d5 *++[ECO "C36"]+[Opening "KGA"]+[Variation "Abbazia defence, modern variation"]++1. e4 e5 2. f4 exf4 3. Nf3 d5 4. exd5 Nf6 *++[ECO "C36"]+[Opening "KGA"]+[Variation "Abbazia defence, Botvinnik variation"]++1. e4 e5 2. f4 exf4 3. Nf3 d5 4. exd5 Nf6 5. Bb5+ c6 6. dxc6 bxc6 7. Bc4 +Nd5 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Quaade gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Nc3 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Rosentreter gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. d4 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Soerensen gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. d4 g4 5. Ne5 *++[ECO "C37"]+[Opening "KGA"]+[Variation "King's knight's gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Blachly gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 Nc6 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Lolli gambit (wild Muzio gambit)"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Bxf7+ *++[ECO "C37"]+[Opening "KGA"]+[Variation "Lolli gambit, Young variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Bxf7+ Kxf7 6. O-O gxf3 7. Qxf3 +Qf6 8. d4 Qxd4+ 9. Be3 Qf6 10. Nc3 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Ghulam Kassim gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. d4 *++[ECO "C37"]+[Opening "KGA"]+[Variation "MacDonnell gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Nc3 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Salvio gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Ne5 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Silberschmidt gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Ne5 Qh4+ 6. Kf1 Nh6 7. d4 f3 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Salvio gambit, Anderssen counter-attack"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Ne5 Qh4+ 6. Kf1 Nh6 7. d4 d6 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Cochrane gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Ne5 Qh4+ 6. Kf1 f3 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Herzfeld gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. Ne5 Qh4+ 6. Kf1 Nc6 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Muzio gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O *++[ECO "C37"]+[Opening "KGA"]+[Variation "Muzio gambit, Paulsen variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O gxf3 6. Qxf3 Qf6 7. e5 Qxe5+8. d3 Bh6 9. Nc3 Ne7 10. Bd2 Nbc6 11. Rae1 *++[ECO "C37"]+[Opening "KGA"]+[Variation "double Muzio gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O gxf3 6. Qxf3 Qf6 7. e5 Qxe5+8. Bxf7+ *++[ECO "C37"]+[Opening "KGA"]+[Variation "Muzio gambit, From defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O gxf3 6. Qxf3 Qe7 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Muzio gambit, Holloway defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O gxf3 6. Qxf3 Nc6 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Muzio gambit, Kling and Horwitz counter-attack"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O Qe7 *++[ECO "C37"]+[Opening "KGA"]+[Variation "Muzio gambit, Brentano defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 g4 5. O-O d5 *++[ECO "C38"]+[Opening "King's knight's gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 Bg7 *++[ECO "C38"]+[Opening "KGA"]+[Variation "Hanstein gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 Bg7 5. O-O *++[ECO "C38"]+[Opening "KGA"]+[Variation "Philidor gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 Bg7 5. h4 *++[ECO "C38"]+[Opening "KGA"]+[Variation "Greco gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 Bg7 5. h4 h6 6. d4 d6 7. Nc3 c6 8. +hxg5 hxg5 9. Rxh8 Bxh8 10. Ne5 *++[ECO "C38"]+[Opening "KGA"]+[Variation "Philidor gambit, Schultz variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. Bc4 Bg7 5. h4 h6 6. d4 d6 7. Qd3 *++[ECO "C39"]+[Opening "King's knight's gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Horny defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 h6 6. Nxf7 Kxf7 7. Qxg4 Nf6 +8. Qxf4 Bd6 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Thorold variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 h6 6. Nxf7 Kxf7 7. d4 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Cook variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 h6 6. Nxf7 Kxf7 7. d4 d5 8. +Bxf4 dxe4 9. Bc4+ Kg7 10. Be5+ *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Blackburne gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 h6 6. Nxf7 Kxf7 7. Nc3 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Walker attack"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 h6 6. Nxf7 Kxf7 7. Bc4+ *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Urusov attack"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 h6 6. Nxf7 Kxf7 7. Bc4+ d5 8.+Bxd5+ Kg7 9. d4 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Allgaier, Schlechter defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ng5 Nf6 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Paulsen defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Bg7 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, long whip (Stockwhip, classical) defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 h5 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, long whip defence, Jaenisch variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 h5 6. Bc4 Rh7 7. d4 Bh6 8. +Nc3 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Brentano (Campbell) defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 d5 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Brentano defence, Kaplanek variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 d5 6. d4 Nf6 7. exd5 Qxd5 8.+Nc3 Bb4 9. Kf2 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Brentano defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 d5 6. d4 Nf6 7. Bxf4 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Brentano defence, Caro variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 d5 6. d4 Nf6 7. Bxf4 Nxe4 8.+Nd2 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Salvio (Rosenthal) defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Qe7 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Salvio defence, Cozio variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Qe7 6. d4 f5 7. Bc4 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Polerio defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Be7 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Neumann defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Nc6 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Kolisch defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 d6 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Berlin defence"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Nf6 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Berlin defence, Riviere variation"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Nf6 6. Nxg4 d5 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Berlin defence, 6.Bc4"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Nf6 6. Bc4 *++[ECO "C39"]+[Opening "KGA"]+[Variation "Kieseritsky, Rice gambit"]++1. e4 e5 2. f4 exf4 3. Nf3 g5 4. h4 g4 5. Ne5 Nf6 6. Bc4 d5 7. exd5 Bd6 8.+O-O *++[ECO "C40"]+[Opening "King's knight opening"]++1. e4 e5 2. Nf3 *++[ECO "C40"]+[Opening "Gunderam defence"]++1. e4 e5 2. Nf3 Qe7 *++[ECO "C40"]+[Opening "Greco defence"]++1. e4 e5 2. Nf3 Qf6 *++[ECO "C40"]+[Opening "Damiano's defence"]++1. e4 e5 2. Nf3 f6 *++[ECO "C40"]+[Opening "QP counter-gambit (elephant gambit)"]++1. e4 e5 2. Nf3 d5 *++[ECO "C40"]+[Opening "QP counter-gambit"]+[Variation "Maroczy gambit"]++1. e4 e5 2. Nf3 d5 3. exd5 Bd6 *++[ECO "C40"]+[Opening "Latvian counter-gambit"]++1. e4 e5 2. Nf3 f5 *++[ECO "C40"]+[Opening "Latvian"]+[Variation "Nimzovich variation"]++1. e4 e5 2. Nf3 f5 3. Nxe5 Qf6 4. d4 d6 5. Nc4 fxe4 6. Ne3 *++[ECO "C40"]+[Opening "Latvian"]+[Variation "Fraser defence"]++1. e4 e5 2. Nf3 f5 3. Nxe5 Nc6 *++[ECO "C40"]+[Opening "Latvian gambit, 3.Bc4"]++1. e4 e5 2. Nf3 f5 3. Bc4 *++[ECO "C40"]+[Opening "Latvian"]+[Variation "Behting variation"]++1. e4 e5 2. Nf3 f5 3. Bc4 fxe4 4. Nxe5 Qg5 5. Nf7 Qxg2 6. Rf1 d5 7. Nxh8 +Nf6 *++[ECO "C40"]+[Opening "Latvian"]+[Variation "Polerio variation"]++1. e4 e5 2. Nf3 f5 3. Bc4 fxe4 4. Nxe5 d5 *++[ECO "C40"]+[Opening "Latvian"]+[Variation "corkscrew counter-gambit"]++1. e4 e5 2. Nf3 f5 3. Bc4 fxe4 4. Nxe5 Nf6 *++[ECO "C41"]+[Opening "Philidor's defence"]++1. e4 e5 2. Nf3 d6 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 d6 3. Bc4 Be7 4. c3 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Lopez counter-gambit"]++1. e4 e5 2. Nf3 d6 3. Bc4 f5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Lopez counter-gambit, Jaenisch variation"]++1. e4 e5 2. Nf3 d6 3. Bc4 f5 4. d4 exd4 5. Ng5 Nh6 6. Nxh7 *++[ECO "C41"]+[Opening "Philidor's defence"]++1. e4 e5 2. Nf3 d6 3. d4 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Philidor counter-gambit"]++1. e4 e5 2. Nf3 d6 3. d4 f5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Philidor counter-gambit, del Rio attack"]++1. e4 e5 2. Nf3 d6 3. d4 f5 4. dxe5 fxe4 5. Ng5 d5 6. e6 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Philidor counter-gambit, Berger variation"]++1. e4 e5 2. Nf3 d6 3. d4 f5 4. dxe5 fxe4 5. Ng5 d5 6. e6 Bc5 7. Nc3 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Philidor counter-gambit, Zukertort variation"]++1. e4 e5 2. Nf3 d6 3. d4 f5 4. Nc3 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "exchange variation"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Boden variation"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 4. Qxd4 Bd7 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "exchange variation"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 4. Nxd4 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Paulsen attack"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 4. Nxd4 d5 5. exd5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "exchange variation"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 4. Nxd4 Nf6 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Berger variation"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 4. Nxd4 Nf6 5. Nc3 Be7 6. Be2 O-O 7. O-O c5 +8. Nf3 Nc6 9. Bg5 Be6 10. Re1 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Larsen variation"]++1. e4 e5 2. Nf3 d6 3. d4 exd4 4. Nxd4 g6 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich (Jaenisch) variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Improved Hanham variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. Nc3 Nbd7 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich, Sozin variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. Nc3 Nbd7 5. Bc4 Be7 6. O-O O-O 7. Qe2 c6 8.+a4 exd4 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich, Larobok variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. Nc3 Nbd7 5. Bc4 Be7 6. Ng5 O-O 7. Bxf7+ *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. dxe5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich, Sokolsky variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. dxe5 Nxe4 5. Nbd2 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich, Rellstab variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. dxe5 Nxe4 5. Qd5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich, Locock variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. Ng5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Nimzovich, Klein variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nf6 4. Bc4 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham, Krause variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 4. Bc4 c6 5. O-O *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham, Steiner variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 4. Bc4 c6 5. O-O Be7 6. dxe5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham, Kmoch variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 4. Bc4 c6 5. Ng5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham, Berger variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 4. Bc4 c6 5. Ng5 Nh6 6. f4 Be7 7. O-O O-O 8. +c3 d5 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham, Schlechter variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 4. Bc4 c6 5. Nc3 *++[ECO "C41"]+[Opening "Philidor"]+[Variation "Hanham, Delmar variation"]++1. e4 e5 2. Nf3 d6 3. d4 Nd7 4. Bc4 c6 5. c3 *++[ECO "C42"]+[Opening "Petrov's defence"]++1. e4 e5 2. Nf3 Nf6 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "French attack"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d3 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Kaufmann attack"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. c4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Nimzovich attack"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. Nc3 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Cozio (Lasker) attack"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. Qe2 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Chigorin variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Be7 7. O-O Nc6 +8. Re1 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Berger variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Be7 7. O-O Nc6 +8. Re1 Bg4 9. c3 f5 10. Nbd2 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Krause variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Be7 7. O-O Nc6 +8. Re1 Bg4 9. c3 f5 10. c4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Maroczy variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Be7 7. O-O Nc6 +8. Re1 Bg4 9. c3 f5 10. c4 Bh4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Jaenisch variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Be7 7. O-O Nc6 +8. c4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Mason variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Be7 7. O-O O-O *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Marshall variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Bd6 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Tarrasch variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Bd6 7. O-O O-O +8. c4 Bg4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, Marshall trap"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 d5 6. Bd3 Bd6 7. O-O O-O +8. c4 Bg4 9. cxd5 f5 10. Re1 Bxh2+ *++[ECO "C42"]+[Opening "Petrov"]+[Variation "classical attack, close variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nf3 Nxe4 5. d4 Nf6 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Cochrane gambit"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nxf7 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Paulsen attack"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 d6 4. Nc4 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Damiano variation"]++1. e4 e5 2. Nf3 Nf6 3. Nxe5 Nxe4 *++[ECO "C42"]+[Opening "Petrov three knights game"]++1. e4 e5 2. Nf3 Nf6 3. Nc3 *++[ECO "C42"]+[Opening "Petrov"]+[Variation "Italian variation"]++1. e4 e5 2. Nf3 Nf6 3. Bc4 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "modern (Steinitz) attack"]++1. e4 e5 2. Nf3 Nf6 3. d4 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "modern attack, main line"]++1. e4 e5 2. Nf3 Nf6 3. d4 exd4 4. e5 Ne4 5. Qxd4 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "modern attack, Steinitz variation"]++1. e4 e5 2. Nf3 Nf6 3. d4 exd4 4. e5 Ne4 5. Qe2 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "modern attack, Bardeleben variation"]++1. e4 e5 2. Nf3 Nf6 3. d4 exd4 4. e5 Ne4 5. Qe2 Nc5 6. Nxd4 Nc6 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "Urusov gambit"]++1. e4 e5 2. Nf3 Nf6 3. d4 exd4 4. Bc4 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "modern attack, Symmetrical variation"]++1. e4 e5 2. Nf3 Nf6 3. d4 Nxe4 *++[ECO "C43"]+[Opening "Petrov"]+[Variation "modern attack, Trifunovic variation"]++1. e4 e5 2. Nf3 Nf6 3. d4 Nxe4 4. Bd3 d5 5. Nxe5 Bd6 6. O-O O-O 7. c4 Bxe5+*++[ECO "C44"]+[Opening "King's pawn game"]++1. e4 e5 2. Nf3 Nc6 *++[ECO "C44"]+[Opening "Irish (Chicago) gambit"]++1. e4 e5 2. Nf3 Nc6 3. Nxe5 Nxe5 4. d4 *++[ECO "C44"]+[Opening "Konstantinopolsky opening"]++1. e4 e5 2. Nf3 Nc6 3. g3 *++[ECO "C44"]+[Opening "Dresden opening"]++1. e4 e5 2. Nf3 Nc6 3. c4 *++[ECO "C44"]+[Opening "Inverted Hungarian"]++1. e4 e5 2. Nf3 Nc6 3. Be2 *++[ECO "C44"]+[Opening "Inverted Hanham"]++1. e4 e5 2. Nf3 Nc6 3. Be2 Nf6 4. d3 d5 5. Nbd2 *++[ECO "C44"]+[Opening "Tayler opening"]++1. e4 e5 2. Nf3 Nc6 3. Be2 Nf6 4. d4 *++[ECO "C44"]+[Opening "Ponziani opening"]++1. e4 e5 2. Nf3 Nc6 3. c3 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Caro variation"]++1. e4 e5 2. Nf3 Nc6 3. c3 d5 4. Qa4 Bd7 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Leonhardt variation"]++1. e4 e5 2. Nf3 Nc6 3. c3 d5 4. Qa4 Nf6 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. c3 d5 4. Qa4 f6 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Jaenisch counter-attack"]++1. e4 e5 2. Nf3 Nc6 3. c3 Nf6 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Fraser defence"]++1. e4 e5 2. Nf3 Nc6 3. c3 Nf6 4. d4 Nxe4 5. d5 Bc5 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Reti variation"]++1. e4 e5 2. Nf3 Nc6 3. c3 Nge7 *++[ECO "C44"]+[Opening "Ponziani"]+[Variation "Romanishin variation"]++1. e4 e5 2. Nf3 Nc6 3. c3 Be7 *++[ECO "C44"]+[Opening "Ponziani counter-gambit"]++1. e4 e5 2. Nf3 Nc6 3. c3 f5 *++[ECO "C44"]+[Opening "Ponziani counter-gambit, Schmidt attack"]++1. e4 e5 2. Nf3 Nc6 3. c3 f5 4. d4 d6 5. d5 *++[ECO "C44"]+[Opening "Ponziani counter-gambit, Cordel variation"]++1. e4 e5 2. Nf3 Nc6 3. c3 f5 4. d4 d6 5. d5 fxe4 6. Ng5 Nb8 7. Nxe4 Nf6 8.+Bd3 Be7 *++[ECO "C44"]+[Opening "Scotch opening"]++1. e4 e5 2. Nf3 Nc6 3. d4 *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Lolli variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 Nxd4 *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Cochrane variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 Nxd4 4. Nxe5 Ne6 5. Bc4 c6 6. O-O Nf6 7. Nxf7 *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Relfsson gambit ('MacLopez')"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bb5 *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Goering gambit"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. c3 *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Sea-cadet mate"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. c3 dxc3 5. Nxc3 d6 6. Bc4 Bg4 7. O-O Ne5+8. Nxe5 Bxd1 9. Bxf7+ Ke7 10. Nd5# *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Goering gambit"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. c3 dxc3 5. Nxc3 Bb4 *++[ECO "C44"]+[Opening "Scotch"]+[Variation "Goering gambit, Bardeleben variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. c3 dxc3 5. Nxc3 Bb4 6. Bc4 Nf6 *++[ECO "C44"]+[Opening "Scotch gambit"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Anderssen (Paulsen, Suhle) counter-attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bc5 5. O-O d6 6. c3 Bg4 *++[ECO "C44"]+[Opening "Scotch gambit"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bc5 5. Ng5 *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Cochrane-Shumov defence"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bc5 5. Ng5 Nh6 6. Nxf7 Nxf7 7. Bxf7++Kxf7 8. Qh5+ g6 9. Qxc5 d5 *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Vitzhum attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bc5 5. Ng5 Nh6 6. Qh5 *++[ECO "C44"]+[Opening "Scotch gambit"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bb4+ *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Hanneken variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bb4+ 5. c3 dxc3 6. O-O cxb2 7. Bxb2 +Nf6 8. Ng5 O-O 9. e5 Nxe5 *++[ECO "C44"]+[Opening "Scotch gambit"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bb4+ 5. c3 dxc3 6. bxc3 *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Cochrane variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Bb4+ 5. c3 dxc3 6. bxc3 Ba5 7. e5 *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Benima defence"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Be7 *++[ECO "C44"]+[Opening "Scotch gambit"]+[Variation "Dubois-Reti defence"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Bc4 Nf6 *++[ECO "C45"]+[Opening "Scotch game"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Ghulam Kassim variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Nxd4 5. Qxd4 d6 6. Bd3 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Pulling counter-attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Horwitz attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 5. Nb5 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Berger variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 5. Nb5 Bb4+ 6. Nd2 Qxe4+ 7. Be2+Qxg2 8. Bf3 Qh3 9. Nxc7+ Kd8 10. Nxa8 Nf6 11. a3 *++[ECO "C45"]+[Opening "Scotch game"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 5. Nb5 Bb4+ 6. Bd2 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Rosenthal variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 5. Nb5 Bb4+ 6. Bd2 Qxe4+ 7. Be2+Kd8 8. O-O Bxd2 9. Nxd2 Qg6 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Fraser attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 5. Nf3 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Qh4 5. Nc3 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Schmidt variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Nf6 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Mieses variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Nf6 5. Nxc6 bxc6 6. e5 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Tartakower variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Nf6 5. Nxc6 bxc6 6. Nd2 *++[ECO "C45"]+[Opening "Scotch game"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Blackburne attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Be3 Qf6 6. c3 Nge7 7. Qd2 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Gottschall variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Be3 Qf6 6. c3 Nge7 7. Qd2 d5+8. Nb5 Bxe3 9. Qxe3 O-O 10. Nxc7 Rb8 11. Nxd5 Nxd5 12. exd5 Nb4 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Paulsen attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Be3 Qf6 6. c3 Nge7 7. Bb5 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Paulsen, Gunsberg defence"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Be3 Qf6 6. c3 Nge7 7. Bb5 Nd8+*++[ECO "C45"]+[Opening "Scotch"]+[Variation "Meitner variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Be3 Qf6 6. c3 Nge7 7. Nc2 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Blumenfeld attack"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Be3 Qf6 6. Nb5 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Potter variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Nb3 *++[ECO "C45"]+[Opening "Scotch"]+[Variation "Romanishin variation"]++1. e4 e5 2. Nf3 Nc6 3. d4 exd4 4. Nxd4 Bc5 5. Nb3 Bb4+ *++[ECO "C46"]+[Opening "Three knights game"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 *++[ECO "C46"]+[Opening "Three knights"]+[Variation "Schlechter variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Bb4 4. Nd5 Nf6 *++[ECO "C46"]+[Opening "Three knights"]+[Variation "Winawer defence (Gothic defence)"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 f5 *++[ECO "C46"]+[Opening "Three knights"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 g6 *++[ECO "C46"]+[Opening "Three knights"]+[Variation "Steinitz, Rosenthal variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 g6 4. d4 exd4 5. Nd5 *++[ECO "C46"]+[Opening "Four knights game"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 *++[ECO "C46"]+[Opening "Four knights"]+[Variation "Schultze-Mueller gambit"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Nxe5 *++[ECO "C46"]+[Opening "Four knights"]+[Variation "Italian variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bc4 *++[ECO "C46"]+[Opening "Four knights"]+[Variation "Gunsberg variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. a3 *++[ECO "C47"]+[Opening "Four knights"]+[Variation "Scotch variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. d4 *++[ECO "C47"]+[Opening "Four knights"]+[Variation "Scotch, Krause variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. d4 Bb4 5. Nxe5 *++[ECO "C47"]+[Opening "Four knights"]+[Variation "Scotch, 4...exd4"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. d4 exd4 *++[ECO "C47"]+[Opening "Four knights"]+[Variation "Belgrade gambit"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. d4 exd4 5. Nd5 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Spanish variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Ranken variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 a6 5. Bxc6 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Spielmann variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 a6 5. Bxc6 dxc6 6. Nxe5 Nxe4 7. Nxe4+Qd4 8. O-O Qxe5 9. Re1 Be6 10. d4 Qd5 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Spanish, classical defence"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Bardeleben variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Nxe5 7. d4 Bd6+8. f4 Nc6 9. e5 Bb4 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Marshall variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bc5 5. O-O O-O 6. Nxe5 Nd4 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Rubinstein counter-gambit"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Rubinstein counter-gambit, Bogolyubov variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. Nxe5 Qe7 6. f4 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Rubinstein counter-gambit, 5.Be2"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. Be2 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Rubinstein counter-gambit Maroczy variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. Be2 Nxf3+ 6. Bxf3 Bc5 7. O-O +O-O 8. d3 d6 9. Na4 Bb6 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Rubinstein counter-gambit, exchange variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. Nxd4 *++[ECO "C48"]+[Opening "Four knights"]+[Variation "Rubinstein counter-gambit, Henneberger variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. O-O *++[ECO "C49"]+[Opening "Four knights"]+[Variation "double Ruy Lopez"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "Gunsberg counter-attack"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. Nd5 Nxd5 7. exd5 e4+*++[ECO "C49"]+[Opening "Four knights"]+[Variation "double Ruy Lopez"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "Alatortsev variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 Qe7 7. Ne2 d5 *++[ECO "C49"]+[Opening "Four knights"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 Bxc3 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "Janowski variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 Bxc3 7. bxc3 d6+8. Re1 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "Svenonius variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 Bxc3 7. bxc3 d5+*++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical, Metger unpin"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Bg5 Bxc3 +8. bxc3 Qe7 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical, Capablanca variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Bg5 Bxc3 +8. bxc3 Qe7 9. Re1 Nd8 10. d4 Bg4 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical, Pillsbury variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Bg5 Ne7 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical, Blake variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Bg5 Ne7 8.+Nh4 c6 9. Bc4 d5 10. Bb3 Qd6 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical, Tarrasch variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Bg5 Be6 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "symmetrical, Maroczy system"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. d3 d6 7. Ne2 *++[ECO "C49"]+[Opening "Four knights"]+[Variation "Nimzovich (Paulsen) variation"]++1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Bb4 5. O-O O-O 6. Bxc6 *++[ECO "C50"]+[Opening "King's pawn game"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 *++[ECO "C50"]+[Opening "Blackburne shilling gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nd4 4. Nxe5 Qg5 5. Nxf7 Qxg2 6. Rf1 Qxe4+ 7. Be2+Nf3# *++[ECO "C50"]+[Opening "Rousseau gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 f5 *++[ECO "C50"]+[Opening "Hungarian defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Be7 *++[ECO "C50"]+[Opening "Hungarian defence"]+[Variation "Tartakower variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Be7 4. d4 exd4 5. c3 Nf6 6. e5 Ne4 *++[ECO "C50"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 *++[ECO "C50"]+[Opening "Giuoco Piano"]+[Variation "four knights variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. Nc3 Nf6 *++[ECO "C50"]+[Opening "Giuoco Piano"]+[Variation "Jerome gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. Bxf7+ *++[ECO "C50"]+[Opening "Giuoco Pianissimo"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. d3 *++[ECO "C50"]+[Opening "Giuoco Pianissimo"]+[Variation "Dubois variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. d3 f5 5. Ng5 f4 *++[ECO "C50"]+[Opening "Giuoco Pianissimo"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. d3 Nf6 *++[ECO "C50"]+[Opening "Giuoco Pianissimo"]+[Variation "Italian four knights variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. d3 Nf6 5. Nc3 *++[ECO "C50"]+[Opening "Giuoco Pianissimo"]+[Variation "Canal variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. d3 Nf6 5. Nc3 d6 6. Bg5 *++[ECO "C51"]+[Opening "Evans gambit declined"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 *++[ECO "C51"]+[Opening "Evans gambit declined, Lange variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. b5 Na5 6. Nxe5 Nh6 *++[ECO "C51"]+[Opening "Evans gambit declined, Pavlov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. b5 Na5 6. Nxe5 Nh6 7. d4 d6 8.+Bxh6 dxe5 9. Bxg7 Rg8 10. Bxf7+ Kxf7 11. Bxe5 Qg5 12. Nd2 *++[ECO "C51"]+[Opening "Evans gambit declined, Hirschbach variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. b5 Na5 6. Nxe5 Qg5 *++[ECO "C51"]+[Opening "Evans gambit declined, Vasquez variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. b5 Na5 6. Nxe5 Qg5 7. Bxf7+ Ke7+8. Qh5 *++[ECO "C51"]+[Opening "Evans gambit declined, Hicken variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. b5 Na5 6. Nxe5 Qg5 7. Qf3 Qxe5+8. Qxf7+ Kd8 9. Bb2 *++[ECO "C51"]+[Opening "Evans gambit declined, 5.a4"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. a4 *++[ECO "C51"]+[Opening "Evans gambit declined, Showalter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. a4 a6 6. Nc3 *++[ECO "C51"]+[Opening "Evans gambit declined, Cordel variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bb6 5. Bb2 *++[ECO "C51"]+[Opening "Evans counter-gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 d5 *++[ECO "C51"]+[Opening "Evans gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "normal variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Ulvestad variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. d5 Na5 10. Bb2 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Paulsen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. d5 Na5 10. Bb2 Ne7 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Morphy attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. Nc3 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Goering attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. Nc3 Na5 10. Bg5 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. Nc3 Na5 10. Bg5 f6 11. Be3 *++[ECO "C51"]+[Opening "Evans gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. Nc3 Bg4 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Fraser attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. Nc3 Bg4 10. Qa4 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Fraser-Mortimer attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bc5 6. d4 exd4 7. O-O d6 8.+cxd4 Bb6 9. Nc3 Bg4 10. Qa4 Bd7 11. Qb3 Na5 12. Bxf7+ Kf8 13. Qc2 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Stone-Ware variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bd6 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Mayet defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Bf8 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "5...Be7"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Be7 *++[ECO "C51"]+[Opening "Evans gambit"]+[Variation "Cordel variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Be7 6. d4 Na5 *++[ECO "C52"]+[Opening "Evans gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "compromised defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 exd4 7. O-O dxc3+*++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "compromised defence, Paulsen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 exd4 7. O-O dxc3+8. Qb3 Qf6 9. e5 Qg6 10. Nxc3 Nge7 11. Ba3 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "compromised defence, Potter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 exd4 7. O-O dxc3+8. Qb3 Qf6 9. e5 Qg6 10. Nxc3 Nge7 11. Rd1 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Leonhardt variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 b5 *++[ECO "C52"]+[Opening "Evans gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 d6 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Tartakower attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 d6 7. Qb3 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Levenfish variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 d6 7. Qb3 Qd7 8.+dxe5 dxe5 9. O-O Bb6 10. Ba3 Na5 11. Nxe5 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Sokolsky variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. d4 d6 7. Bg5 *++[ECO "C52"]+[Opening "Evans gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Richardson attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O Nf6 7. d4 O-O 8.+Nxe5 *++[ECO "C52"]+[Opening "Evans gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O d6 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Waller attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O d6 7. d4 exd4 8.+Qb3 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Lasker defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O d6 7. d4 Bb6 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Sanders-Alapin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O d6 7. d4 Bd7 *++[ECO "C52"]+[Opening "Evans gambit"]+[Variation "Alapin-Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. b4 Bxb4 5. c3 Ba5 6. O-O d6 7. d4 Bg4 *++[ECO "C53"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "LaBourdonnais variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 d6 5. d4 exd4 6. cxd4 Bb6 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "close variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Qe7 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "centre-holding variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Qe7 5. d4 Bb6 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "Tarrasch variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Qe7 5. d4 Bb6 6. O-O Nf6 7. a4 a6 8. +Re1 d6 9. h3 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "Mestel variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Qe7 5. d4 Bb6 6. Bg5 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "Eisinger variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Qe7 5. d4 Bb6 6. d5 Nb8 7. d6 *++[ECO "C53"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "Bird's attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. b4 *++[ECO "C53"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "Ghulam Kassim variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. e5 Ne4 7. Bd5 Nxf2 +8. Kxf2 dxc3+ 9. Kg3 *++[ECO "C53"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. e5 d5 *++[ECO "C53"]+[Opening "Giuoco Piano"]+[Variation "Anderssen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. e5 d5 7. Bb5 Ne4 8.+cxd4 Bb4+ *++[ECO "C54"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Krause variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Bd2 +Nxe4 8. Bxb4 Nxb4 9. Bxf7+ Kxf7 10. Qb3+ d5 11. Ne5+ Kf6 12. f3 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Cracow variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Kf1 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Greco's attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Greco variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Nxc3 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Bernstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Nxc3 9. bxc3 Bxc3 10. Qb3 d5 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Aitken variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Nxc3 9. bxc3 Bxc3 10. Ba3 *++[ECO "C54"]+[Opening "Giuoco Piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Bxc3 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Bxc3 9. bxc3 d5 10. Ba3 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Moeller (Therkatz) attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Bxc3 9. d5 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Therkatz-Herzog variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Bxc3 9. d5 Bf6 10. Re1 Ne7 11. Rxe4 d6 12. Bg5 Bxg5 13. Nxg5 +O-O 14. Nxh7 *++[ECO "C54"]+[Opening "Giuoco Piano"]+[Variation "Moeller, bayonet attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Bc5 4. c3 Nf6 5. d4 exd4 6. cxd4 Bb4+ 7. Nc3 +Nxe4 8. O-O Bxc3 9. d5 Bf6 10. Re1 Ne7 11. Rxe4 d6 12. g4 *++[ECO "C55"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 *++[ECO "C55"]+[Opening "Giuoco piano"]+[Variation "Rosentreter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. O-O Bc5 5. d4 Bxd4 6. Nxd4 Nxd4 7. Bg5 h6+8. Bh4 g5 9. f4 *++[ECO "C55"]+[Opening "Giuoco piano"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. O-O Bc5 5. d4 Bxd4 6. Nxd4 Nxd4 7. Bg5 d6+*++[ECO "C55"]+[Opening "Giuoco piano"]+[Variation "Holzhausen attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. O-O Bc5 5. d4 Bxd4 6. Nxd4 Nxd4 7. Bg5 d6+8. f4 Qe7 9. fxe5 dxe5 10. Nc3 *++[ECO "C55"]+[Opening "Two knights defence (Modern bishop's opening)"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d3 *++[ECO "C55"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 *++[ECO "C55"]+[Opening "Two knights defence, Keidanz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. e5 d5 6. Bb5 Ne4 7. Nxd4 Bc5 +8. Nxc6 Bxf2+ 9. Kf1 Qh4 *++[ECO "C55"]+[Opening "Two knights defence, Perreux variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. Ng5 *++[ECO "C55"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Berger variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 d5 7. exf6 dxc4+8. Re1+ Be6 9. Ng5 Qd5 10. Nc3 Qf5 11. g4 Qg6 12. Nce4 Bb6 13. f4 O-O-O *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Marshall variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 d5 7. exf6 dxc4+8. Re1+ Be6 9. Ng5 Qd5 10. Nc3 Qf5 11. Nce4 *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Rubinstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 d5 7. exf6 dxc4+8. Re1+ Be6 9. Ng5 Qd5 10. Nc3 Qf5 11. Nce4 Bf8 *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Loman defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 d5 7. exf6 dxc4+8. Re1+ Be6 9. Ng5 g6 *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Schlechter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 d5 7. exf6 dxc4+8. Re1+ Be6 9. fxg7 *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 Ng4 *++[ECO "C55"]+[Opening "two knights"]+[Variation "Max Lange attack, Krause variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Bc5 6. e5 Ng4 7. c3 *++[ECO "C56"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Nxe4 *++[ECO "C56"]+[Opening "two knights defence"]+[Variation "Yurdansky attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Nxe4 6. Re1 d5 7. Bxd5 +Qxd5 8. Nc3 Qa5 9. Nxe4 Be6 10. Bg5 h6 11. Bh4 g5 12. Nf6+ Ke7 13. b4 *++[ECO "C56"]+[Opening "two knights defence"]+[Variation "Canal variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. d4 exd4 5. O-O Nxe4 6. Re1 d5 7. Nc3 *++[ECO "C57"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Wilkes Barre (Traxler) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 Bc5 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Ulvestad variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 b5 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Fritz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nd4 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Fritz, Gruber variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nd4 6. c3 b5 7. Bf1 Nxd5 +8. Ne4 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Lolli attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. d4 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Pincus variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. d4 Bb4+ *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Fegatello attack"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. Nxf7 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Fegatello attack, Leonhardt variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. Nxf7 Kxf7 7. Qf3++Ke6 8. Nc3 Nb4 9. Qe4 c6 10. a3 Na6 11. d4 Nc7 *++[ECO "C57"]+[Opening "two knights defence"]+[Variation "Fegatello attack, Polerio defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. Nxf7 Kxf7 7. Qf3++Ke6 8. Nc3 Ne7 *++[ECO "C58"]+[Opening "two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Kieseritsky variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. d3 *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Yankovich variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. d3 h6 7. Nf3 e4 8.+Qe2 Nxc4 9. dxc4 Bc5 10. Nfd2 *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Maroczy variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. d3 h6 7. Nf3 e4 8.+Qe2 Nxc4 9. dxc4 Be7 *++[ECO "C58"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Bogolyubov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Qf3 *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Paoli variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Qf3 Qc7 9. Bd3 *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Colman variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Qf3 Rb8 *++[ECO "C58"]+[Opening "two knights defence"]+[Variation "Blackburne variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Qf3 cxb5 *++[ECO "C58"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Be2 *++[ECO "C59"]+[Opening "Two knights defence"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Be2 h6 *++[ECO "C59"]+[Opening "two knights defence"]+[Variation "Knorre variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Be2 h6 9. Nf3 e4 10. Ne5 Bd6 11. d4 Qc7 12. Bd2 *++[ECO "C59"]+[Opening "two knights defence"]+[Variation "Goering variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Be2 h6 9. Nf3 e4 10. Ne5 Qc7 *++[ECO "C59"]+[Opening "two knights defence"]+[Variation "Steinitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Na5 6. Bb5+ c6 7. dxc6 +bxc6 8. Be2 h6 9. Nh3 *++[ECO "C60"]+[Opening "Ruy Lopez (Spanish opening)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Nuernberg variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 f6 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Pollock defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Na5 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Lucena defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Be7 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Vinogradov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Qe7 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Brentano defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 g5 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "fianchetto (Smyslov/Barnes) defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 g6 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Cozio defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nge7 *++[ECO "C60"]+[Opening "Ruy Lopez"]+[Variation "Cozio defence, Paulsen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nge7 4. Nc3 g6 *++[ECO "C61"]+[Opening "Ruy Lopez"]+[Variation "Bird's defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nd4 *++[ECO "C61"]+[Opening "Ruy Lopez"]+[Variation "Bird's defence, Paulsen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nd4 4. Nxd4 exd4 5. O-O Ne7 *++[ECO "C62"]+[Opening "Ruy Lopez"]+[Variation "old Steinitz defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 d6 *++[ECO "C62"]+[Opening "Ruy Lopez"]+[Variation "old Steinitz defence, Nimzovich attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 d6 4. d4 Bd7 5. Nc3 Nf6 6. Bxc6 *++[ECO "C62"]+[Opening "Ruy Lopez"]+[Variation "old Steinitz defence, semi-Duras variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 d6 4. d4 Bd7 5. c4 *++[ECO "C63"]+[Opening "Ruy Lopez"]+[Variation "Schliemann defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 f5 *++[ECO "C63"]+[Opening "Ruy Lopez"]+[Variation "Schliemann defence, Berger variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 f5 4. Nc3 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "classical (Cordel) defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "classical defence, Zaitsev variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. O-O Nd4 5. b4 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "classical defence, 4.c3"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. c3 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "classical defence, Benelux variation  "]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. c3 Nf6 5. O-O O-O 6. d4 Bb6 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "classical defence, Charousek variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. c3 Bb6 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "classical defence, Boden variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. c3 Qe7 *++[ECO "C64"]+[Opening "Ruy Lopez"]+[Variation "Cordel gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Bc5 4. c3 f5 *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Nyholm attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d4 exd4 5. O-O *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Mortimer variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Ne7 *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Mortimer trap"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Ne7 5. Nxe5 c6 *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Anderssen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 d6 5. Bxc6+ *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Duras variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 d6 5. c4 *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Kaufmann variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. Be3 *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, 4.O-O"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O *++[ECO "C65"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Beverwijk variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Bc5 *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, 4.O-O, d6"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, hedgehog variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 5. d4 Bd7 6. Nc3 Be7 *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Tarrasch trap"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 5. d4 Bd7 6. Nc3 Be7 7. Re1 O-O *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "closed Berlin defence, Bernstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 5. d4 Bd7 6. Nc3 Be7 7. Bg5 *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "closed Berlin defence, Showalter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 5. d4 Bd7 6. Nc3 Be7 7. Bxc6 *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "closed Berlin defence, Wolf variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 5. d4 Bd7 6. Nc3 exd4 *++[ECO "C66"]+[Opening "Ruy Lopez"]+[Variation "closed Berlin defence, Chigorin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O d6 5. d4 Nd7 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, open variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "open Berlin defence, l'Hermet variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Nd6 6. dxe5 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "open Berlin defence, Showalter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Nd6 6. Ba4 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "open Berlin defence, 5...Be7"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Rio de Janeiro variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. Qe2 Nd6 7. Bxc6 +bxc6 8. dxe5 Nb7 9. Nc3 O-O 10. Re1 Nc5 11. Nd4 Ne6 12. Be3 Nxd4 13. Bxd4 +c5 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Zukertort variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. Qe2 Nd6 7. Bxc6 +bxc6 8. dxe5 Nb7 9. c4 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Pillsbury variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. Qe2 Nd6 7. Bxc6 +bxc6 8. dxe5 Nb7 9. b3 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Winawer attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. Qe2 Nd6 7. Bxc6 +bxc6 8. dxe5 Nb7 9. Nd4 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Cordel variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. Qe2 Nd6 7. Bxc6 +bxc6 8. dxe5 Nf5 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Trifunovic variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. Qe2 d5 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Minckwitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 Be7 6. dxe5 *++[ECO "C67"]+[Opening "Ruy Lopez"]+[Variation "Berlin defence, Rosenthal variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. O-O Nxe4 5. d4 a6 *++[ECO "C68"]+[Opening "Ruy Lopez"]+[Variation "exchange variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 *++[ECO "C68"]+[Opening "Ruy Lopez"]+[Variation "exchange, Alekhine variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. d4 exd4 6. Qxd4 Qxd4 7. Nxd4+Bd7 *++[ECO "C68"]+[Opening "Ruy Lopez"]+[Variation "exchange, Keres variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. Nc3 *++[ECO "C68"]+[Opening "Ruy Lopez"]+[Variation "exchange, Romanovsky variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. Nc3 f6 6. d3 *++[ECO "C69"]+[Opening "Ruy Lopez"]+[Variation "exchange variation, 5.O-O"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. O-O *++[ECO "C69"]+[Opening "Ruy Lopez"]+[Variation "exchange variation, Alapin gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. O-O Bg4 6. h3 h5 *++[ECO "C69"]+[Opening "Ruy Lopez"]+[Variation "exchange, Gligoric variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. O-O f6 *++[ECO "C69"]+[Opening "Ruy Lopez"]+[Variation "exchange, Bronstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. O-O Qd6 *++[ECO "C70"]+[Opening "Ruy Lopez"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "fianchetto defence deferred"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 g6 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Cozio defence deferred"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nge7 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Bird's defence deferred"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nd4 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Alapin's defence deferred"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Bb4 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Classical defence deferred"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Bc5 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Caro variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 b5 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Graz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 b5 5. Bb3 Bc5 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Taimanov (chase/wing/accelerated counterthrust) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 b5 5. Bb3 Na5 *++[ECO "C70"]+[Opening "Ruy Lopez"]+[Variation "Schliemann defence deferred"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 f5 *++[ECO "C71"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 *++[ECO "C71"]+[Opening "Ruy Lopez"]+[Variation "Noah's ark trap"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. d4 b5 6. Bb3 Nxd4 7. Nxd4 exd4 +8. Qxd4 c5 *++[ECO "C71"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, Three knights variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. Nc3 *++[ECO "C71"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, Duras (Keres) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c4 *++[ECO "C72"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, 5.O-O"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. O-O *++[ECO "C73"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, Richter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. Bxc6+ bxc6 6. d4 *++[ECO "C73"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, Alapin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. Bxc6+ bxc6 6. d4 f6 *++[ECO "C74"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c3 *++[ECO "C74"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, siesta variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c3 f5 *++[ECO "C74"]+[Opening "Ruy Lopez"]+[Variation "Siesta, Kopayev variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c3 f5 6. exf5 Bxf5 7. O-O *++[ECO "C75"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c3 Bd7 *++[ECO "C75"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, Rubinstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c3 Bd7 6. d4 Nge7 *++[ECO "C76"]+[Opening "Ruy Lopez"]+[Variation "modern Steinitz defence, fianchetto (Bronstein) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 d6 5. c3 Bd7 6. d4 g6 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "Morphy defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "four knights (Tarrasch) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. Nc3 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "Treybal (Bayreuth) variation (exchange var. deferred)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. Bxc6 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "Wormald (Alapin) attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. Qe2 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "Wormald attack, Gruenfeld variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. Qe2 b5 6. Bb3 Be7 7. d4 d6 8. +c3 Bg4 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "Anderssen variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. d3 *++[ECO "C77"]+[Opening "Ruy Lopez"]+[Variation "Morphy defence, Duras variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. d3 d6 6. c4 *++[ECO "C78"]+[Opening "Ruy Lopez"]+[Variation "5.O-O"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O *++[ECO "C78"]+[Opening "Ruy Lopez"]+[Variation "Wing attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O b5 6. Bb3 Be7 7. a4 *++[ECO "C78"]+[Opening "Ruy Lopez"]+[Variation "...b5 & ...d6"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O b5 6. Bb3 d6 *++[ECO "C78"]+[Opening "Ruy Lopez"]+[Variation "Rabinovich variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O b5 6. Bb3 d6 7. Ng5 d5 8. +exd5 Nd4 9. Re1 Bc5 10. Rxe5+ Kf8 *++[ECO "C78"]+[Opening "Ruy Lopez"]+[Variation "Archangelsk (counterthrust) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O b5 6. Bb3 Bb7 *++[ECO "C78"]+[Opening "Ruy Lopez"]+[Variation "Moeller defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Bc5 *++[ECO "C79"]+[Opening "Ruy Lopez"]+[Variation "Steinitz defence deferred (Russian defence)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O d6 *++[ECO "C79"]+[Opening "Ruy Lopez"]+[Variation "Steinitz defence deferred, Lipnitsky variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O d6 6. Bxc6+ bxc6 7. d4 Bg4+*++[ECO "C79"]+[Opening "Ruy Lopez"]+[Variation "Steinitz defence deferred, Rubinstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O d6 6. Bxc6+ bxc6 7. d4 Nxe4+*++[ECO "C79"]+[Opening "Ruy Lopez"]+[Variation "Steinitz defence deferred, Boleslavsky variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O d6 6. Bxc6+ bxc6 7. d4 Nxe4+8. Re1 f5 9. dxe5 d5 10. Nc3 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open (Tarrasch) defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Tartakower variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. Qe2 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Knorre variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. Nc3 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, 6.d4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Riga variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 exd4 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, 6.d4 b5"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Friess attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Nxe5 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Richter variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. d5 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, 7.Bb3"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Schlechter defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+a4 Nxd4 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Berger variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+a4 Nxd4 9. Nxd4 exd4 10. Nc3 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Harksen gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+c4 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, 8.de"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Zukertort variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Ne7 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, 8...Be6"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Bernstein variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. Nbd2 *++[ECO "C80"]+[Opening "Ruy Lopez"]+[Variation "open, Bernstein variation, Karpov gambit"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. Nbd2 Nc5 10. c3 d4 11. Ng5 *++[ECO "C81"]+[Opening "Ruy Lopez"]+[Variation "open, Howell attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. Qe2 *++[ECO "C81"]+[Opening "Ruy Lopez"]+[Variation "open, Howell attack, Ekstroem variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. Qe2 Be7 10. Rd1 O-O 11. c4 bxc4 12. Bxc4 Qd7 *++[ECO "C81"]+[Opening "Ruy Lopez"]+[Variation "open, Howell attack, Adam variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. Qe2 Be7 10. c4 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, 9.c3"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, Berlin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Nc5 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, Italian variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Bc5 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, St. Petersburg variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Bc5 10. Nbd2 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, Dilworth variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Bc5 10. Nbd2 O-O 11. Bc2 Nxf2 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, Motzko attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Bc5 10. Qd3 *++[ECO "C82"]+[Opening "Ruy Lopez"]+[Variation "open, Motzko attack, Nenarokov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Bc5 10. Qd3 Ne7 *++[ECO "C83"]+[Opening "Ruy Lopez"]+[Variation "open, classical defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Be7 *++[ECO "C83"]+[Opening "Ruy Lopez"]+[Variation "open, Malkin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Be7 10. Nbd2 O-O 11. Qe2 *++[ECO "C83"]+[Opening "Ruy Lopez"]+[Variation "open, 9...Be7, 10.Re1"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Be7 10. Re1 *++[ECO "C83"]+[Opening "Ruy Lopez"]+[Variation "open, Tarrasch trap"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Be7 10. Re1 O-O 11. Nd4 Qd7 12. Nxe6 fxe6 13. Rxe4 *++[ECO "C83"]+[Opening "Ruy Lopez"]+[Variation "open, Breslau variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Nxe4 6. d4 b5 7. Bb3 d5 8.+dxe5 Be6 9. c3 Be7 10. Re1 O-O 11. Nd4 Nxe5 *++[ECO "C84"]+[Opening "Ruy Lopez"]+[Variation "closed defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 *++[ECO "C84"]+[Opening "Ruy Lopez"]+[Variation "closed, centre attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. d4 *++[ECO "C84"]+[Opening "Ruy Lopez"]+[Variation "closed, Basque gambit (North Spanish variation)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. d4 exd4 7. e5 Ne4 8.+c3 *++[ECO "C85"]+[Opening "Ruy Lopez"]+[Variation "Exchange variation doubly deferred (DERLD)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Bxc6 *++[ECO "C86"]+[Opening "Ruy Lopez"]+[Variation "Worrall attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Qe2 *++[ECO "C86"]+[Opening "Ruy Lopez"]+[Variation "Worrall attack, sharp line"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Qe2 b5 7. Bb3 O-O *++[ECO "C86"]+[Opening "Ruy Lopez"]+[Variation "Worrall attack, solid line"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Qe2 b5 7. Bb3 d6 *++[ECO "C87"]+[Opening "Ruy Lopez"]+[Variation "closed, Averbach variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 d6 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed, Leonhardt variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8.+c3 Na5 9. Bc2 c5 10. d4 Qc7 11. h3 Nc6 12. d5 Nb8 13. Nbd2 g5 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed, Balla variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8.+c3 Na5 9. Bc2 c5 10. d4 Qc7 11. a4 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed, 7...d6, 8.d4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8.+d4 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "Noah's ark trap"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8.+d4 Nxd4 9. Nxd4 exd4 10. Qxd4 c5 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "Trajkovic counter-attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 Bb7 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed, 7...O-O"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed, anti-Marshall 8.a4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+a4 *++[ECO "C88"]+[Opening "Ruy Lopez"]+[Variation "closed, 8.c3"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall counter-attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall counter-attack, 11...c6"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 9. exd5 Nxd5 10. Nxe5 Nxe5 11. Rxe5 c6 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall, Kevitz variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 9. exd5 Nxd5 10. Nxe5 Nxe5 11. Rxe5 c6 12. Bxd5 cxd5 13. d4 Bd6 14. +Re3 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall, main line, 12.d2d4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 9. exd5 Nxd5 10. Nxe5 Nxe5 11. Rxe5 c6 12. d4 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall, main line, 14...Qh3"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 9. exd5 Nxd5 10. Nxe5 Nxe5 11. Rxe5 c6 12. d4 Bd6 13. Re1 Qh4 14. g3+Qh3 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall, main line, Spassky variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 9. exd5 Nxd5 10. Nxe5 Nxe5 11. Rxe5 c6 12. d4 Bd6 13. Re1 Qh4 14. g3+Qh3 15. Be3 Bg4 16. Qd3 Rae8 17. Nd2 Re6 18. a4 Qh5 *++[ECO "C89"]+[Opening "Ruy Lopez"]+[Variation "Marshall, Herman Steiner variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d5 9. exd5 e4 *++[ECO "C90"]+[Opening "Ruy Lopez"]+[Variation "closed (with ...d6)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 *++[ECO "C90"]+[Opening "Ruy Lopez"]+[Variation "closed, Pilnik variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. d3 *++[ECO "C90"]+[Opening "Ruy Lopez"]+[Variation "closed, Lutikov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. Bc2 *++[ECO "C90"]+[Opening "Ruy Lopez"]+[Variation "closed, Suetin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. a3 *++[ECO "C91"]+[Opening "Ruy Lopez"]+[Variation "closed, 9.d4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. d4 *++[ECO "C91"]+[Opening "Ruy Lopez"]+[Variation "closed, Bogolyubov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. d4 Bg4 *++[ECO "C92"]+[Opening "Ruy Lopez"]+[Variation "closed, 9.h3"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 *++[ECO "C92"]+[Opening "Ruy Lopez"]+[Variation "closed, Keres (9...a5) variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 a5 *++[ECO "C92"]+[Opening "Ruy Lopez"]+[Variation "closed, Kholmov variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Be6 *++[ECO "C92"]+[Opening "Ruy Lopez"]+[Variation "closed, Ragozin-Petrosian (`Keres') variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Nd7 *++[ECO "C92"]+[Opening "Ruy Lopez"]+[Variation "closed, Flohr-Zaitsev system (Lenzerheide variation)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Bb7 *++[ECO "C93"]+[Opening "Ruy Lopez"]+[Variation "closed, Smyslov defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 h6 *++[ECO "C94"]+[Opening "Ruy Lopez"]+[Variation "closed, Breyer defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Nb8 *++[ECO "C95"]+[Opening "Ruy Lopez"]+[Variation "closed, Breyer, 10.d4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Nb8 10. d4 *++[ECO "C95"]+[Opening "Ruy Lopez"]+[Variation "closed, Breyer, Borisenko variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Nb8 10. d4 Nbd7 *++[ECO "C95"]+[Opening "Ruy Lopez"]+[Variation "closed, Breyer, Gligoric variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Nb8 10. d4 Nbd7 11. Nbd2 Bb7 12. Bc2 c5 *++[ECO "C95"]+[Opening "Ruy Lopez"]+[Variation "closed, Breyer, Simagin variation"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Nb8 10. d4 Nbd7 11. Nh4 *++[ECO "C96"]+[Opening "Ruy Lopez"]+[Variation "closed (8...Na5)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 *++[ECO "C96"]+[Opening "Ruy Lopez"]+[Variation "closed, Rossolimo defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c6 11. d4 Qc7 *++[ECO "C96"]+[Opening "Ruy Lopez"]+[Variation "closed (10...c5)"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 *++[ECO "C96"]+[Opening "Ruy Lopez"]+[Variation "closed, Borisenko defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Nc6 *++[ECO "C96"]+[Opening "Ruy Lopez"]+[Variation "closed, Keres (...Nd7) defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Nd7 *++[ECO "C97"]+[Opening "Ruy Lopez"]+[Variation "closed, Chigorin defence"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 *++[ECO "C97"]+[Opening "Ruy Lopez"]+[Variation "closed, Chigorin, Yugoslav system"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 Bd7 13. Nf1 Rfe8 14. Ne3 g6+*++[ECO "C98"]+[Opening "Ruy Lopez"]+[Variation "closed, Chigorin, 12...Nc6"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 Nc6 *++[ECO "C98"]+[Opening "Ruy Lopez"]+[Variation "closed, Chigorin, Rauzer attack"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 Nc6 13. dxc5 *++[ECO "C99"]+[Opening "Ruy Lopez"]+[Variation "closed, Chigorin, 12...c5d4"]++1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 O-O 8.+c3 d6 9. h3 Na5 10. Bc2 c5 11. d4 Qc7 12. Nbd2 cxd4 13. cxd4 *++[ECO "D00"]+[Opening "Queen's pawn game"]++1. d4 d5 *++[ECO "D00"]+[Opening "Queen's pawn, Mason variation"]++1. d4 d5 2. Bf4 *++[ECO "D00"]+[Opening "Queen's pawn, Mason variation, Steinitz counter-gambit"]++1. d4 d5 2. Bf4 c5 *++[ECO "D00"]+[Opening "Levitsky attack (Queen's bishop attack)"]++1. d4 d5 2. Bg5 *++[ECO "D00"]+[Opening "Blackmar gambit"]++1. d4 d5 2. e4 *++[ECO "D00"]+[Opening "Queen's pawn"]+[Variation "stonewall attack"]++1. d4 d5 2. e3 Nf6 3. Bd3 *++[ECO "D00"]+[Opening "Queen's pawn"]+[Variation "Chigorin variation"]++1. d4 d5 2. Nc3 *++[ECO "D00"]+[Opening "Queen's pawn"]+[Variation "Anti-Veresov"]++1. d4 d5 2. Nc3 Bg4 *++[ECO "D00"]+[Opening "Blackmar-Diemer gambit"]++1. d4 d5 2. Nc3 Nf6 3. e4 *++[ECO "D00"]+[Opening "Blackmar-Diemer"]+[Variation "Euwe defence"]++1. d4 d5 2. Nc3 Nf6 3. e4 dxe4 4. f3 exf3 5. Nxf3 e6 *++[ECO "D00"]+[Opening "Blackmar-Diemer"]+[Variation "Lemberg counter-gambit"]++1. d4 d5 2. Nc3 Nf6 3. e4 e5 *++[ECO "D01"]+[Opening "Richter-Veresov attack"]++1. d4 d5 2. Nc3 Nf6 3. Bg5 *++[ECO "D01"]+[Opening "Richter-Veresov attack, Veresov variation"]++1. d4 d5 2. Nc3 Nf6 3. Bg5 Bf5 4. Bxf6 *++[ECO "D01"]+[Opening "Richter-Veresov attack, Richter variation"]++1. d4 d5 2. Nc3 Nf6 3. Bg5 Bf5 4. f3 *++[ECO "D02"]+[Opening "Queen's pawn game"]++1. d4 d5 2. Nf3 *++[ECO "D02"]+[Opening "Queen's pawn game, Chigorin variation"]++1. d4 d5 2. Nf3 Nc6 *++[ECO "D02"]+[Opening "Queen's pawn game, Krause variation"]++1. d4 d5 2. Nf3 c5 *++[ECO "D02"]+[Opening "Queen's pawn game"]++1. d4 d5 2. Nf3 Nf6 *++[ECO "D02"]+[Opening "Queen's bishop game"]++1. d4 d5 2. Nf3 Nf6 3. Bf4 *++[ECO "D03"]+[Opening "Torre attack (Tartakower variation)"]++1. d4 d5 2. Nf3 Nf6 3. Bg5 *++[ECO "D04"]+[Opening "Queen's pawn game"]++1. d4 d5 2. Nf3 Nf6 3. e3 *++[ECO "D05"]+[Opening "Queen's pawn game"]++1. d4 d5 2. Nf3 Nf6 3. e3 e6 *++[ECO "D05"]+[Opening "Queen's pawn game, Zukertort variation"]++1. d4 d5 2. Nf3 Nf6 3. e3 e6 4. Nbd2 c5 5. b3 *++[ECO "D05"]+[Opening "Queen's pawn game"]++1. d4 d5 2. Nf3 Nf6 3. e3 e6 4. Bd3 *++[ECO "D05"]+[Opening "Queen's pawn game, Rubinstein (Colle-Zukertort) variation"]++1. d4 d5 2. Nf3 Nf6 3. e3 e6 4. Bd3 c5 5. b3 *++[ECO "D05"]+[Opening "Colle system"]++1. d4 d5 2. Nf3 Nf6 3. e3 e6 4. Bd3 c5 5. c3 *++[ECO "D06"]+[Opening "Queen's Gambit"]++1. d4 d5 2. c4 *++[ECO "D06"]+[Opening "QGD"]+[Variation "Grau (Sahovic) defence"]++1. d4 d5 2. c4 Bf5 *++[ECO "D06"]+[Opening "QGD"]+[Variation "Marshall defence"]++1. d4 d5 2. c4 Nf6 *++[ECO "D06"]+[Opening "QGD"]+[Variation "symmetrical (Austrian) defence"]++1. d4 d5 2. c4 c5 *++[ECO "D07"]+[Opening "QGD"]+[Variation "Chigorin defence"]++1. d4 d5 2. c4 Nc6 *++[ECO "D07"]+[Opening "QGD"]+[Variation "Chigorin defence, Janowski variation"]++1. d4 d5 2. c4 Nc6 3. Nc3 dxc4 4. Nf3 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit"]++1. d4 d5 2. c4 e5 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit, Lasker trap"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. e3 Bb4+ 5. Bd2 dxe3 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. Nf3 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit, Alapin variation"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. Nf3 Nc6 5. Nbd2 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit, Krenosz variation"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. Nf3 Nc6 5. Nbd2 Bg4 6. h3 Bxf3 7. Nxf3 Bb4++8. Bd2 Qe7 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit, Janowski variation"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. Nf3 Nc6 5. Nbd2 f6 *++[ECO "D08"]+[Opening "QGD"]+[Variation "Albin counter-gambit, Balogh variation"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. Nf3 Nc6 5. Nbd2 Qe7 *++[ECO "D09"]+[Opening "QGD"]+[Variation "Albin counter-gambit, 5.g3"]++1. d4 d5 2. c4 e5 3. dxe5 d4 4. Nf3 Nc6 5. g3 *++[ECO "D10"]+[Opening "QGD Slav defence"]++1. d4 d5 2. c4 c6 *++[ECO "D10"]+[Opening "QGD Slav defence, Alekhine variation"]++1. d4 d5 2. c4 c6 3. Nc3 dxc4 4. e4 *++[ECO "D10"]+[Opening "QGD Slav"]+[Variation "Winawer counter-gambit"]++1. d4 d5 2. c4 c6 3. Nc3 e5 *++[ECO "D10"]+[Opening "QGD Slav defence"]+[Variation "exchange variation"]++1. d4 d5 2. c4 c6 3. cxd5 *++[ECO "D11"]+[Opening "QGD Slav"]+[Variation "3.Nf3"]++1. d4 d5 2. c4 c6 3. Nf3 *++[ECO "D11"]+[Opening "QGD Slav"]+[Variation "Breyer variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nbd2 *++[ECO "D11"]+[Opening "QGD Slav"]+[Variation "4.e3"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. e3 *++[ECO "D12"]+[Opening "QGD Slav"]+[Variation "4.e3 Bf5"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. e3 Bf5 *++[ECO "D12"]+[Opening "QGD Slav"]+[Variation "Landau variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. e3 Bf5 5. cxd5 cxd5 6. Qb3 Qc8 7. Bd2 e6 8.+Na3 *++[ECO "D12"]+[Opening "QGD Slav"]+[Variation "exchange variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. e3 Bf5 5. cxd5 cxd5 6. Nc3 *++[ECO "D12"]+[Opening "QGD Slav"]+[Variation "Amsterdam variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. e3 Bf5 5. cxd5 cxd5 6. Nc3 e6 7. Ne5 Nfd7 *++[ECO "D13"]+[Opening "QGD Slav"]+[Variation "exchange variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. cxd5 cxd5 *++[ECO "D14"]+[Opening "QGD Slav"]+[Variation "exchange variation, 6.Bf4 Bf5"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. cxd5 cxd5 5. Nc3 Nc6 6. Bf4 Bf5 *++[ECO "D14"]+[Opening "QGD Slav"]+[Variation "exchange, Trifunovic variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. cxd5 cxd5 5. Nc3 Nc6 6. Bf4 Bf5 7. e3 e6 8.+Qb3 Bb4 *++[ECO "D15"]+[Opening "QGD Slav"]+[Variation "4.Nc3"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 *++[ECO "D15"]+[Opening "QGD Slav"]+[Variation "Suechting variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 Qb6 *++[ECO "D15"]+[Opening "QGD Slav"]+[Variation "Schlechter variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 g6 *++[ECO "D15"]+[Opening "QGD Slav accepted"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 *++[ECO "D15"]+[Opening "QGD Slav"]+[Variation "5.e3 (Alekhine variation)"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. e3 *++[ECO "D15"]+[Opening "QGD Slav"]+[Variation "Slav gambit"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. e4 *++[ECO "D15"]+[Opening "QGD Slav"]+[Variation "Tolush-Geller gambit"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. e4 b5 6. e5 *++[ECO "D16"]+[Opening "QGD Slav accepted"]+[Variation "Alapin variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 *++[ECO "D16"]+[Opening "QGD Slav"]+[Variation "Smyslov variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Na6 6. e4 Bg4 *++[ECO "D16"]+[Opening "QGD Slav"]+[Variation "Soultanbeieff variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 e6 *++[ECO "D16"]+[Opening "QGD Slav"]+[Variation "Steiner variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bg4 *++[ECO "D17"]+[Opening "QGD Slav"]+[Variation "Czech defence"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 *++[ECO "D17"]+[Opening "QGD Slav"]+[Variation "Krause attack"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. Ne5 *++[ECO "D17"]+[Opening "QGD Slav"]+[Variation "Carlsbad variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. Ne5 Nbd7 7. Nxc4 Qc7+8. g3 e5 *++[ECO "D17"]+[Opening "QGD Slav"]+[Variation "Wiesbaden variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. Ne5 e6 *++[ECO "D18"]+[Opening "QGD Slav"]+[Variation "Dutch variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. e3 *++[ECO "D18"]+[Opening "QGD Slav"]+[Variation "Dutch, Lasker variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. e3 Na6 *++[ECO "D19"]+[Opening "QGD Slav"]+[Variation "Dutch variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. e3 e6 7. Bxc4 Bb4 8.+O-O *++[ECO "D19"]+[Opening "QGD Slav"]+[Variation "Dutch variation, main line"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. e3 e6 7. Bxc4 Bb4 8.+O-O O-O 9. Qe2 *++[ECO "D19"]+[Opening "QGD Slav"]+[Variation "Dutch, Saemisch variation"]++1. d4 d5 2. c4 c6 3. Nf3 Nf6 4. Nc3 dxc4 5. a4 Bf5 6. e3 e6 7. Bxc4 Bb4 8.+O-O O-O 9. Qe2 Ne4 10. g4 *++[ECO "D20"]+[Opening "Queen's gambit accepted"]++1. d4 d5 2. c4 dxc4 *++[ECO "D20"]+[Opening "QGA"]+[Variation "3.e4"]++1. d4 d5 2. c4 dxc4 3. e4 *++[ECO "D20"]+[Opening "QGA"]+[Variation "Linares variation"]++1. d4 d5 2. c4 dxc4 3. e4 c5 4. d5 Nf6 5. Nc3 b5 *++[ECO "D20"]+[Opening "QGA"]+[Variation "Schwartz defence"]++1. d4 d5 2. c4 dxc4 3. e4 f5 *++[ECO "D21"]+[Opening "QGA"]+[Variation "3.Nf3"]++1. d4 d5 2. c4 dxc4 3. Nf3 *++[ECO "D21"]+[Opening "QGA"]+[Variation "Ericson variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 b5 *++[ECO "D21"]+[Opening "QGA"]+[Variation "Alekhine defense, Borisenko-Furman variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 a6 4. e4 *++[ECO "D22"]+[Opening "QGA"]+[Variation "Alekhine defence"]++1. d4 d5 2. c4 dxc4 3. Nf3 a6 *++[ECO "D22"]+[Opening "QGA"]+[Variation "Alekhine defence, Alatortsev variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 a6 4. e3 Bg4 5. Bxc4 e6 6. d5 *++[ECO "D22"]+[Opening "QGA"]+[Variation "Haberditz variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 a6 4. e3 b5 *++[ECO "D23"]+[Opening "Queen's gambit accepted"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 *++[ECO "D23"]+[Opening "QGA"]+[Variation "Mannheim variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. Qa4+ *++[ECO "D24"]+[Opening "QGA, 4.Nc3"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. Nc3 *++[ECO "D24"]+[Opening "QGA, Bogolyubov variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. Nc3 a6 5. e4 *++[ECO "D25"]+[Opening "QGA, 4.e3"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 *++[ECO "D25"]+[Opening "QGA, Smyslov variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 g6 *++[ECO "D25"]+[Opening "QGA, Janowsky-Larsen variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 Bg4 *++[ECO "D25"]+[Opening "QGA, Flohr variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 Be6 *++[ECO "D26"]+[Opening "QGA"]+[Variation "4...e6"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 *++[ECO "D26"]+[Opening "QGA"]+[Variation "classical variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 *++[ECO "D26"]+[Opening "QGA"]+[Variation "classical, Furman variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. Qe2 a6 7. dxc5 Bxc5 +8. O-O Nc6 9. e4 b5 10. e5 *++[ECO "D26"]+[Opening "QGA"]+[Variation "classical variation, 6.O-O"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O *++[ECO "D26"]+[Opening "QGA"]+[Variation "classical, Steinitz variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O cxd4 *++[ECO "D27"]+[Opening "QGA"]+[Variation "classical, 6...a6"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 *++[ECO "D27"]+[Opening "QGA"]+[Variation "classical, Rubinstein variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. a4 *++[ECO "D27"]+[Opening "QGA"]+[Variation "classical, Geller variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. e4 *++[ECO "D28"]+[Opening "QGA"]+[Variation "classical, 7.Qe2"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. Qe2 *++[ECO "D28"]+[Opening "QGA"]+[Variation "classical, 7...b5"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. Qe2 b5 *++[ECO "D28"]+[Opening "QGA"]+[Variation "classical, Flohr variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. Qe2 b5 8. +Bb3 Nc6 9. Rd1 c4 10. Bc2 Nb4 11. Nc3 Nxc2 12. Qxc2 Bb7 13. d5 Qc7 *++[ECO "D29"]+[Opening "QGA"]+[Variation "classical, 8...Bb7"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. Qe2 b5 8. +Bb3 Bb7 *++[ECO "D29"]+[Opening "QGA"]+[Variation "classical, Smyslov variation"]++1. d4 d5 2. c4 dxc4 3. Nf3 Nf6 4. e3 e6 5. Bxc4 c5 6. O-O a6 7. Qe2 b5 8. +Bb3 Bb7 9. Rd1 Nbd7 10. Nc3 Bd6 *++[ECO "D30"]+[Opening "Queen's gambit declined"]++1. d4 d5 2. c4 e6 *++[ECO "D30"]+[Opening "QGD Slav"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. e3 c6 5. Nbd2 *++[ECO "D30"]+[Opening "QGD"]+[Variation "Stonewall variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. e3 c6 5. Nbd2 Ne4 6. Bd3 f5 *++[ECO "D30"]+[Opening "QGD Slav"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. e3 c6 5. Nbd2 Nbd7 *++[ECO "D30"]+[Opening "QGD Slav"]+[Variation "Semmering variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. e3 c6 5. Nbd2 Nbd7 6. Bd3 c5 *++[ECO "D30"]+[Opening "QGD"]+[Variation "Spielmann variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. e3 c6 5. Nbd2 g6 *++[ECO "D30"]+[Opening "QGD"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. Bg5 *++[ECO "D30"]+[Opening "QGD"]+[Variation "Capablanca variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nbd2 *++[ECO "D30"]+[Opening "QGD"]+[Variation "Vienna variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. Bg5 Bb4+ *++[ECO "D30"]+[Opening "QGD"]+[Variation "Capablanca-Duras variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. Bg5 h6 *++[ECO "D30"]+[Opening "QGD"]+[Variation "Hastings variation"]++1. d4 d5 2. c4 e6 3. Nf3 Nf6 4. Bg5 h6 5. Bxf6 Qxf6 6. Nc3 c6 7. Qb3 *++[ECO "D31"]+[Opening "QGD"]+[Variation "3.Nc3"]++1. d4 d5 2. c4 e6 3. Nc3 *++[ECO "D31"]+[Opening "QGD"]+[Variation "Janowski variation"]++1. d4 d5 2. c4 e6 3. Nc3 a6 *++[ECO "D31"]+[Opening "QGD"]+[Variation "Alapin variation"]++1. d4 d5 2. c4 e6 3. Nc3 b6 *++[ECO "D31"]+[Opening "QGD"]+[Variation "Charousek (Petrosian) variation"]++1. d4 d5 2. c4 e6 3. Nc3 Be7 *++[ECO "D31"]+[Opening "QGD"]+[Variation "semi-Slav"]++1. d4 d5 2. c4 e6 3. Nc3 c6 *++[ECO "D31"]+[Opening "QGD"]+[Variation "semi-Slav, Noteboom variation"]++1. d4 d5 2. c4 e6 3. Nc3 c6 4. Nf3 dxc4 *++[ECO "D31"]+[Opening "QGD"]+[Variation "semi-Slav, Koomen variation"]++1. d4 d5 2. c4 e6 3. Nc3 c6 4. Nf3 dxc4 5. a4 Bb4 6. e3 b5 7. Bd2 Qe7 *++[ECO "D31"]+[Opening "QGD"]+[Variation "semi-Slav, Junge variation"]++1. d4 d5 2. c4 e6 3. Nc3 c6 4. Nf3 dxc4 5. a4 Bb4 6. e3 b5 7. Bd2 Qb6 *++[ECO "D31"]+[Opening "QGD"]+[Variation "semi-Slav, Abrahams variation"]++1. d4 d5 2. c4 e6 3. Nc3 c6 4. Nf3 dxc4 5. a4 Bb4 6. e3 b5 7. Bd2 a5 *++[ECO "D31"]+[Opening "QGD"]+[Variation "semi-Slav, Marshall gambit"]++1. d4 d5 2. c4 e6 3. Nc3 c6 4. e4 *++[ECO "D32"]+[Opening "QGD"]+[Variation "Tarrasch defence"]++1. d4 d5 2. c4 e6 3. Nc3 c5 *++[ECO "D32"]+[Opening "QGD"]+[Variation "Tarrasch, von Hennig-Schara gambit"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 cxd4 *++[ECO "D32"]+[Opening "QGD"]+[Variation "Tarrasch defence, 4.cd ed"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 *++[ECO "D32"]+[Opening "QGD"]+[Variation "Tarrasch defence, Tarrasch gambit"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. dxc5 d4 6. Na4 b5 *++[ECO "D32"]+[Opening "QGD"]+[Variation "Tarrasch defence, Marshall gambit"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. e4 *++[ECO "D32"]+[Opening "QGD"]+[Variation "Tarrasch defence"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 *++[ECO "D33"]+[Opening "QGD"]+[Variation "Tarrasch, Schlechter-Rubinstein system"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 *++[ECO "D33"]+[Opening "QGD"]+[Variation "Tarrasch, Folkestone (Swedish) variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 c4 *++[ECO "D33"]+[Opening "QGD"]+[Variation "Tarrasch, Schlechter-Rubinstein system, Rey Ardid variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 c4 7. e4 *++[ECO "D33"]+[Opening "QGD"]+[Variation "Tarrasch, Prague variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 *++[ECO "D33"]+[Opening "QGD"]+[Variation "Tarrasch, Wagner variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Bg4 *++[ECO "D34"]+[Opening "QGD"]+[Variation "Tarrasch, Prague variation, 7...Be7"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Be7 *++[ECO "D34"]+[Opening "QGD"]+[Variation "Tarrasch, Prague variation, Normal position"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Be7 8.+O-O O-O *++[ECO "D34"]+[Opening "QGD"]+[Variation "Tarrasch, Reti variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Be7 8.+O-O O-O 9. dxc5 Bxc5 10. Na4 *++[ECO "D34"]+[Opening "QGD"]+[Variation "Tarrasch, Prague variation, 9.Bg5"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Be7 8.+O-O O-O 9. Bg5 *++[ECO "D34"]+[Opening "QGD"]+[Variation "Tarrasch, Bogolyubov variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Be7 8.+O-O O-O 9. Bg5 Be6 10. Rc1 c4 *++[ECO "D34"]+[Opening "QGD"]+[Variation "Tarrasch, Stoltz variation"]++1. d4 d5 2. c4 e6 3. Nc3 c5 4. cxd5 exd5 5. Nf3 Nc6 6. g3 Nf6 7. Bg2 Be7 8.+O-O O-O 9. Bg5 Be6 10. Rc1 b6 *++[ECO "D35"]+[Opening "QGD"]+[Variation "3...Nf6"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 *++[ECO "D35"]+[Opening "QGD"]+[Variation "Harrwitz attack"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bf4 *++[ECO "D35"]+[Opening "QGD"]+[Variation "exchange variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. cxd5 *++[ECO "D35"]+[Opening "QGD"]+[Variation "exchange, Saemisch variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. cxd5 exd5 5. Nf3 Nbd7 6. Bf4 *++[ECO "D35"]+[Opening "QGD"]+[Variation "exchange, positional line"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. cxd5 exd5 5. Bg5 *++[ECO "D35"]+[Opening "QGD"]+[Variation "exchange, chameleon variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. cxd5 exd5 5. Bg5 Be7 6. e3 O-O 7. Bd3 Nbd7+8. Qc2 Re8 9. Nge2 Nf8 10. O-O-O *++[ECO "D35"]+[Opening "QGD"]+[Variation "exchange, positional line, 5...c6"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. cxd5 exd5 5. Bg5 c6 *++[ECO "D36"]+[Opening "QGD"]+[Variation "exchange, positional line, 6.Qc2"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. cxd5 exd5 5. Bg5 c6 6. Qc2 *++[ECO "D37"]+[Opening "QGD"]+[Variation "4.Nf3"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 *++[ECO "D37"]+[Opening "QGD"]+[Variation "classical variation (5.Bf4)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 Be7 5. Bf4 *++[ECO "D38"]+[Opening "QGD"]+[Variation "Ragozin variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 Bb4 *++[ECO "D39"]+[Opening "QGD"]+[Variation "Ragozin, Vienna variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 Bb4 5. Bg5 dxc4 *++[ECO "D40"]+[Opening "QGD"]+[Variation "Semi-Tarrasch defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 *++[ECO "D40"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, symmetrical variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. e3 Nc6 6. Bd3 Bd6 7. O-O O-O *++[ECO "D40"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, Levenfish variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. e3 Nc6 6. Bd3 Bd6 7. O-O O-O 8. +Qe2 Qe7 9. dxc5 Bxc5 10. e4 *++[ECO "D40"]+[Opening "QGD"]+[Variation "Semi-Tarrasch defence, Pillsbury variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. Bg5 *++[ECO "D41"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, 5.cd"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. cxd5 *++[ECO "D41"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, Kmoch variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. cxd5 Nxd5 6. e4 Nxc3 7. bxc3 cxd4+8. cxd4 Bb4+ 9. Bd2 Bxd2+ 10. Qxd2 O-O 11. Bb5 *++[ECO "D41"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, San Sebastian variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. cxd5 Nxd5 6. e4 Nxc3 7. bxc3 cxd4+8. cxd4 Bb4+ 9. Bd2 Qa5 *++[ECO "D41"]+[Opening "QGD"]+[Variation "Semi-Tarrasch with e3"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. cxd5 Nxd5 6. e3 *++[ECO "D42"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, 7.Bd3"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c5 5. cxd5 Nxd5 6. e3 Nc6 7. Bd3 *++[ECO "D43"]+[Opening "QGD semi-Slav"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 *++[ECO "D43"]+[Opening "QGD semi-Slav"]+[Variation "Hastings variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 h6 6. Bxf6 Qxf6 7. Qb3 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "5.Bg5 dc"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "Botvinnik system (anti-Meran)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 6. e4 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "Ekstrom variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 6. e4 b5 7. e5 h6 8. Bh4+g5 9. exf6 gxh4 10. Ne5 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "anti-Meran gambit"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 6. e4 b5 7. e5 h6 8. Bh4+g5 9. Nxg5 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "anti-Meran, Lilienthal variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 6. e4 b5 7. e5 h6 8. Bh4+g5 9. Nxg5 hxg5 10. Bxg5 Nbd7 11. g3 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "anti-Meran, Szabo variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 6. e4 b5 7. e5 h6 8. Bh4+g5 9. Nxg5 hxg5 10. Bxg5 Nbd7 11. Qf3 *++[ECO "D44"]+[Opening "QGD semi-Slav"]+[Variation "anti-Meran, Alatortsev system"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. Bg5 dxc4 6. e4 b5 7. e5 h6 8. Bh4+g5 9. Nxg5 Nd5 *++[ECO "D45"]+[Opening "QGD semi-Slav"]+[Variation "5.e3"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 *++[ECO "D45"]+[Opening "QGD semi-Slav"]+[Variation "stonewall defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Ne4 6. Bd3 f5 *++[ECO "D45"]+[Opening "QGD semi-Slav"]+[Variation "accelerated Meran (Alekhine variation)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 a6 *++[ECO "D45"]+[Opening "QGD semi-Slav"]+[Variation "5...Nd7"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 *++[ECO "D45"]+[Opening "QGD semi-Slav"]+[Variation "Stoltz variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Qc2 *++[ECO "D45"]+[Opening "QGD semi-Slav"]+[Variation "Rubinstein (anti-Meran) system"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Ne5 *++[ECO "D46"]+[Opening "QGD semi-Slav"]+[Variation "6.Bd3"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 *++[ECO "D46"]+[Opening "QGD semi-Slav"]+[Variation "Bogolyubov variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 Be7 *++[ECO "D46"]+[Opening "QGD semi-Slav"]+[Variation "Romih variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 Bb4 *++[ECO "D46"]+[Opening "QGD semi-Slav"]+[Variation "Chigorin defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 Bd6 *++[ECO "D47"]+[Opening "QGD semi-Slav"]+[Variation "7.Bc4"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 *++[ECO "D47"]+[Opening "QGD semi-Slav"]+[Variation "Meran variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 *++[ECO "D47"]+[Opening "QGD semi-Slav"]+[Variation "neo-Meran (Lundin variation)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 b4 *++[ECO "D47"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Wade variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 Bb7 *++[ECO "D48"]+[Opening "QGD semi-Slav"]+[Variation "Meran, 8...a6"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 *++[ECO "D48"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Pirc variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 b4 *++[ECO "D48"]+[Opening "QGD semi-Slav"]+[Variation "Meran"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 *++[ECO "D48"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Reynolds' variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. d5 *++[ECO "D48"]+[Opening "QGD semi-Slav"]+[Variation "Meran, old main line"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 *++[ECO "D49"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Blumenfeld variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 cxd4 11. Nxb5 *++[ECO "D49"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Rabinovich variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 cxd4 11. Nxb5 Ng4 *++[ECO "D49"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Sozin variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 cxd4 11. Nxb5 Nxe5 *++[ECO "D49"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Stahlberg variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 cxd4 11. Nxb5 Nxe5 12. Nxe5 axb5 13. Qf3 *++[ECO "D49"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Sozin variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 cxd4 11. Nxb5 Nxe5 12. Nxe5 axb5 13. O-O *++[ECO "D49"]+[Opening "QGD semi-Slav"]+[Variation "Meran, Rellstab attack"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Nf3 c6 5. e3 Nbd7 6. Bd3 dxc4 7. Bxc4 b5 8.+Bd3 a6 9. e4 c5 10. e5 cxd4 11. Nxb5 Nxe5 12. Nxe5 axb5 13. O-O Qd5 14. Qe2+Ba6 15. Bg5 *++[ECO "D50"]+[Opening "QGD"]+[Variation "4.Bg5"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 *++[ECO "D50"]+[Opening "QGD"]+[Variation "Been-Koomen variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 c5 *++[ECO "D50"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, Krause variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 c5 5. Nf3 cxd4 6. Nxd4 e5 7. Ndb5 a6 8.+Qa4 *++[ECO "D50"]+[Opening "QGD"]+[Variation "Semi-Tarrasch, Primitive Pillsbury variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 c5 5. Nf3 cxd4 6. Qxd4 *++[ECO "D50"]+[Opening "QGD"]+[Variation "Semi-Tarrasch"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 c5 5. cxd5 *++[ECO "D50"]+[Opening "QGD"]+[Variation "Canal (Venice) variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 c5 5. cxd5 Qb6 *++[ECO "D51"]+[Opening "QGD"]+[Variation "4.Bg5 Nbd7"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 *++[ECO "D51"]+[Opening "QGD"]+[Variation "Rochlin variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. Nf3 c6 6. Rc1 Qa5 7. Bd2 *++[ECO "D51"]+[Opening "QGD"]+[Variation "Alekhine variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. Nf3 c6 6. e4 *++[ECO "D51"]+[Opening "QGD"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 *++[ECO "D51"]+[Opening "QGD"]+[Variation "Manhattan variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 Bb4 *++[ECO "D51"]+[Opening "QGD"]+[Variation "5...c6"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 *++[ECO "D51"]+[Opening "QGD"]+[Variation "Capablanca anti-Cambridge Springs variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. a3 *++[ECO "D52"]+[Opening "QGD"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence, Bogoljubow variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 7. Nd2 Bb4 8.+Qc2 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence, Argentine variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 7. Nd2 Bb4 8.+Qc2 O-O 9. Bh4 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence, Rubinstein variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 7. Nd2 dxc4 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence, Capablanca variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 7. Bxf6 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence, 7.cd"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 7. cxd5 *++[ECO "D52"]+[Opening "QGD"]+[Variation "Cambridge Springs defence, Yugoslav variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Nbd7 5. e3 c6 6. Nf3 Qa5 7. cxd5 Nxd5 *++[ECO "D53"]+[Opening "QGD"]+[Variation "4.Bg5 Be7"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 *++[ECO "D53"]+[Opening "QGD"]+[Variation "Lasker variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 Ne4 *++[ECO "D53"]+[Opening "QGD"]+[Variation "4.Bg5 Be7, 5.e3 O-O"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O *++[ECO "D54"]+[Opening "QGD"]+[Variation "Anti-neo-orthodox variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Rc1 *++[ECO "D55"]+[Opening "QGD"]+[Variation "6.Nf3"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 *++[ECO "D55"]+[Opening "QGD"]+[Variation "Pillsbury attack"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 b6 7. Bd3 Bb7 8. +cxd5 exd5 9. Ne5 *++[ECO "D55"]+[Opening "QGD"]+[Variation "Neo-orthodox variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 *++[ECO "D55"]+[Opening "QGD"]+[Variation "Neo-orthodox variation, 7.Bxf6"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bxf6 *++[ECO "D55"]+[Opening "QGD"]+[Variation "Petrosian variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bxf6 Bxf6 8.+Rc1 c6 9. Bd3 Nd7 10. O-O dxc4 11. Bxc4 *++[ECO "D55"]+[Opening "QGD"]+[Variation "Neo-orthodox variation, 7.Bh4"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 *++[ECO "D56"]+[Opening "QGD"]+[Variation "Lasker defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 Ne4 *++[ECO "D56"]+[Opening "QGD"]+[Variation "Lasker defence, Teichmann variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 Ne4 8. +Bxe7 Qxe7 9. Qc2 *++[ECO "D56"]+[Opening "QGD"]+[Variation "Lasker defence, Russian variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 Ne4 8. +Bxe7 Qxe7 9. Qc2 Nf6 10. Bd3 dxc4 11. Bxc4 c5 12. O-O Nc6 13. Rfd1 Bd7 *++[ECO "D57"]+[Opening "QGD"]+[Variation "Lasker defence, main line"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 Ne4 8. +Bxe7 Qxe7 9. cxd5 Nxc3 10. bxc3 *++[ECO "D57"]+[Opening "QGD"]+[Variation "Lasker defence, Bernstein variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 Ne4 8. +Bxe7 Qxe7 9. cxd5 Nxc3 10. bxc3 exd5 11. Qb3 Qd6 *++[ECO "D58"]+[Opening "QGD"]+[Variation "Tartakower (Makagonov-Bondarevsky) system"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 b6 *++[ECO "D59"]+[Opening "QGD"]+[Variation "Tartakower (Makagonov-Bondarevsky) system, 8.cd Nxd5"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 b6 8. +cxd5 Nxd5 *++[ECO "D59"]+[Opening "QGD"]+[Variation "Tartakower variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 h6 7. Bh4 b6 8. +cxd5 Nxd5 9. Bxe7 Qxe7 10. Nxd5 exd5 11. Rc1 Be6 *++[ECO "D60"]+[Opening "QGD"]+[Variation "Orthodox defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 *++[ECO "D60"]+[Opening "QGD"]+[Variation "Orthodox defence, Botvinnik variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Bd3 *++[ECO "D60"]+[Opening "QGD"]+[Variation "Orthodox defence, Rauzer variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Qb3 *++[ECO "D61"]+[Opening "QGD"]+[Variation "Orthodox defence, Rubinstein variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Qc2 *++[ECO "D62"]+[Opening "QGD"]+[Variation "Orthodox defence, 7.Qc2 c5, 8.cd (Rubinstein)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Qc2 c5 8.+cxd5 *++[ECO "D63"]+[Opening "QGD"]+[Variation "Orthodox defence, 7.Rc1"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 *++[ECO "D63"]+[Opening "QGD"]+[Variation "Orthodox defence, Pillsbury attack"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 b6 8.+cxd5 exd5 9. Bd3 *++[ECO "D63"]+[Opening "QGD"]+[Variation "Orthodox defence, Capablanca variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 b6 8.+cxd5 exd5 9. Bb5 *++[ECO "D63"]+[Opening "QGD"]+[Variation "Orthodox defence, Swiss (Henneberger) variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 a6 *++[ECO "D63"]+[Opening "QGD"]+[Variation "Orthodox defence, Swiss, Karlsbad variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 a6 8.+cxd5 *++[ECO "D63"]+[Opening "QGD"]+[Variation "Orthodox defence"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 *++[ECO "D64"]+[Opening "QGD"]+[Variation "Orthodox defence, Rubinstein attack (with Rc1)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Qc2 *++[ECO "D64"]+[Opening "QGD"]+[Variation "Orthodox defence, Rubinstein attack, Wolf variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Qc2 Ne4 *++[ECO "D64"]+[Opening "QGD"]+[Variation "Orthodox defence, Rubinstein attack, Karlsbad variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Qc2 a6 *++[ECO "D64"]+[Opening "QGD"]+[Variation "Orthodox defence, Rubinstein attack, Gruenfeld variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Qc2 a6 9. a3 *++[ECO "D65"]+[Opening "QGD"]+[Variation "Orthodox defence, Rubinstein attack, main line"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Qc2 a6 9. cxd5 *++[ECO "D66"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 *++[ECO "D66"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line, fianchetto variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 b5 *++[ECO "D67"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line, Capablanca freeing manoevre"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 *++[ECO "D67"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line, Janowski variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. h4 *++[ECO "D67"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 *++[ECO "D67"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line, Alekhine variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 11. Ne4 *++[ECO "D67"]+[Opening "QGD"]+[Variation "Orthodox defence, Bd3 line, 11.O-O"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 11. O-O *++[ECO "D68"]+[Opening "QGD"]+[Variation "Orthodox defence, classical variation"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 11. O-O Nxc3 12. Rxc3 e5 *++[ECO "D68"]+[Opening "QGD"]+[Variation "Orthodox defence, classical, 13.d1b1 (Maroczy)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 11. O-O Nxc3 12. Rxc3 e5 13. Qb1 *++[ECO "D68"]+[Opening "QGD"]+[Variation "Orthodox defence, classical, 13.d1c2 (Vidmar)"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 11. O-O Nxc3 12. Rxc3 e5 13. Qc2 *++[ECO "D69"]+[Opening "QGD"]+[Variation "Orthodox defence, classical, 13.de"]++1. d4 d5 2. c4 e6 3. Nc3 Nf6 4. Bg5 Be7 5. e3 O-O 6. Nf3 Nbd7 7. Rc1 c6 8.+Bd3 dxc4 9. Bxc4 Nd5 10. Bxe7 Qxe7 11. O-O Nxc3 12. Rxc3 e5 13. dxe5 Nxe5 +14. Nxe5 Qxe5 *++[ECO "D70"]+[Opening "Neo-Gruenfeld defence"]++1. d4 Nf6 2. c4 g6 3. f3 d5 *++[ECO "D70"]+[Opening "Neo-Gruenfeld (Kemeri) defence"]++1. d4 Nf6 2. c4 g6 3. g3 d5 *++[ECO "D71"]+[Opening "Neo-Gruenfeld, 5.cd"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. cxd5 Nxd5 *++[ECO "D72"]+[Opening "Neo-Gruenfeld, 5.cd, main line"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. cxd5 Nxd5 6. e4 Nb6 7. Ne2 *++[ECO "D73"]+[Opening "Neo-Gruenfeld, 5.Nf3"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 *++[ECO "D74"]+[Opening "Neo-Gruenfeld, 6.cd Nxd5, 7.O-O"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. cxd5 Nxd5 7. O-O *++[ECO "D75"]+[Opening "Neo-Gruenfeld, 6.cd Nxd5, 7.O-O c5, 8.Nc3"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. cxd5 Nxd5 7. O-O c5 8.+Nc3 *++[ECO "D75"]+[Opening "Neo-Gruenfeld, 6.cd Nxd5, 7.O-O c5, 8.dc"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. cxd5 Nxd5 7. O-O c5 8.+dxc5 *++[ECO "D76"]+[Opening "Neo-Gruenfeld, 6.cd Nxd5, 7.O-O Nb6"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. cxd5 Nxd5 7. O-O Nb6 *++[ECO "D77"]+[Opening "Neo-Gruenfeld, 6.O-O"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. O-O *++[ECO "D78"]+[Opening "Neo-Gruenfeld, 6.O-O c6"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. O-O c6 *++[ECO "D79"]+[Opening "Neo-Gruenfeld, 6.O-O, main line"]++1. d4 Nf6 2. c4 g6 3. g3 d5 4. Bg2 Bg7 5. Nf3 O-O 6. O-O c6 7. cxd5 cxd5 *++[ECO "D80"]+[Opening "Gruenfeld defence"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 *++[ECO "D80"]+[Opening "Gruenfeld"]+[Variation "Spike gambit"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. g4 *++[ECO "D80"]+[Opening "Gruenfeld"]+[Variation "Stockholm variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bg5 *++[ECO "D80"]+[Opening "Gruenfeld"]+[Variation "Lundin variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bg5 Ne4 5. Nxe4 dxe4 6. Qd2 c5 *++[ECO "D81"]+[Opening "Gruenfeld"]+[Variation "Russian variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Qb3 *++[ECO "D82"]+[Opening "Gruenfeld"]+[Variation "4.Bf4"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bf4 *++[ECO "D83"]+[Opening "Gruenfeld"]+[Variation "Gruenfeld gambit"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bf4 Bg7 5. e3 O-O *++[ECO "D83"]+[Opening "Gruenfeld"]+[Variation "Gruenfeld gambit, Capablanca variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bf4 Bg7 5. e3 O-O 6. Rc1 *++[ECO "D83"]+[Opening "Gruenfeld"]+[Variation "Gruenfeld gambit, Botvinnik variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bf4 Bg7 5. e3 O-O 6. Rc1 c5 7. dxc5 Be6 *++[ECO "D84"]+[Opening "Gruenfeld"]+[Variation "Gruenfeld gambit accepted"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Bf4 Bg7 5. e3 O-O 6. cxd5 Nxd5 7. Nxd5 Qxd5+8. Bxc7 *++[ECO "D85"]+[Opening "Gruenfeld"]+[Variation "exchange variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 *++[ECO "D85"]+[Opening "Gruenfeld"]+[Variation "modern exchange variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Nf3 *++[ECO "D86"]+[Opening "Gruenfeld"]+[Variation "exchange, classical variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 *++[ECO "D86"]+[Opening "Gruenfeld"]+[Variation "exchange, Larsen variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 Qd7 9. O-O b6 *++[ECO "D86"]+[Opening "Gruenfeld"]+[Variation "exchange, Simagin's lesser variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 b6 *++[ECO "D86"]+[Opening "Gruenfeld"]+[Variation "exchange, Simagin's improved variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 Nc6 *++[ECO "D87"]+[Opening "Gruenfeld"]+[Variation "exchange, Spassky variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 c5 *++[ECO "D87"]+[Opening "Gruenfeld"]+[Variation "exchange, Seville variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 c5 9. O-O Nc6 10. Be3 Bg4 11. f3 Na5 12. Bxf7+ *++[ECO "D88"]+[Opening "Gruenfeld"]+[Variation "Spassky variation, main line, 10...cd, 11.cd"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 c5 9. O-O Nc6 10. Be3 cxd4 11. cxd4 *++[ECO "D89"]+[Opening "Gruenfeld"]+[Variation "Spassky variation, main line, 13.Bd3"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 c5 9. O-O Nc6 10. Be3 cxd4 11. cxd4 Bg4 12. f3 Na5 13. Bd3 Be6 *++[ECO "D89"]+[Opening "Gruenfeld"]+[Variation "exchange, Sokolsky variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. cxd5 Nxd5 5. e4 Nxc3 6. bxc3 Bg7 7. Bc4 O-O+8. Ne2 c5 9. O-O Nc6 10. Be3 cxd4 11. cxd4 Bg4 12. f3 Na5 13. Bd3 Be6 14. +d5 *++[ECO "D90"]+[Opening "Gruenfeld"]+[Variation "Three knights variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 *++[ECO "D90"]+[Opening "Gruenfeld"]+[Variation "Schlechter variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 c6 *++[ECO "D90"]+[Opening "Gruenfeld"]+[Variation "Three knights variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 *++[ECO "D90"]+[Opening "Gruenfeld"]+[Variation "Flohr variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qa4+ *++[ECO "D91"]+[Opening "Gruenfeld"]+[Variation "5.Bg5"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Bg5 *++[ECO "D92"]+[Opening "Gruenfeld"]+[Variation "5.Bf4"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Bf4 *++[ECO "D93"]+[Opening "Gruenfeld with Bf4    e3"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Bf4 O-O 6. e3 *++[ECO "D94"]+[Opening "Gruenfeld"]+[Variation "5.e3"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 *++[ECO "D94"]+[Opening "Gruenfeld"]+[Variation "Makogonov variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. b4 *++[ECO "D94"]+[Opening "Gruenfeld"]+[Variation "Opovcensky variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Bd2 *++[ECO "D94"]+[Opening "Gruenfeld with e3    Bd3"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Bd3 *++[ECO "D94"]+[Opening "Gruenfeld"]+[Variation "Smyslov defence"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Bd3 c6 7. O-O Bg4 *++[ECO "D94"]+[Opening "Gruenfeld"]+[Variation "Flohr defence"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Bd3 c6 7. O-O Bf5 *++[ECO "D95"]+[Opening "Gruenfeld with e3 & Qb3"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Qb3 *++[ECO "D95"]+[Opening "Gruenfeld"]+[Variation "Botvinnik variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Qb3 e6 *++[ECO "D95"]+[Opening "Gruenfeld"]+[Variation "Pachman variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. e3 O-O 6. Qb3 dxc4 7. Bxc4 Nbd7+8. Ng5 *++[ECO "D96"]+[Opening "Gruenfeld"]+[Variation "Russian variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 *++[ECO "D97"]+[Opening "Gruenfeld"]+[Variation "Russian variation with e4"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 *++[ECO "D97"]+[Opening "Gruenfeld"]+[Variation "Russian, Alekhine (Hungarian) variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 a6 *++[ECO "D97"]+[Opening "Gruenfeld"]+[Variation "Russian, Szabo (Boleslavsky) variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 c6 *++[ECO "D97"]+[Opening "Gruenfeld"]+[Variation "Russian, Levenfish variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 b6 *++[ECO "D97"]+[Opening "Gruenfeld"]+[Variation "Russian, Byrne (Simagin) variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Nc6 *++[ECO "D97"]+[Opening "Gruenfeld"]+[Variation "Russian, Prins variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Na6 *++[ECO "D98"]+[Opening "Gruenfeld"]+[Variation "Russian, Smyslov variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Bg4 *++[ECO "D98"]+[Opening "Gruenfeld"]+[Variation "Russian, Keres variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Bg4 +8. Be3 Nfd7 9. Be2 Nb6 10. Qd3 Nc6 11. O-O-O *++[ECO "D99"]+[Opening "Gruenfeld defence"]+[Variation "Smyslov, main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Bg4 +8. Be3 Nfd7 9. Qb3 *++[ECO "D99"]+[Opening "Gruenfeld defence"]+[Variation "Smyslov, Yugoslav variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 d5 4. Nf3 Bg7 5. Qb3 dxc4 6. Qxc4 O-O 7. e4 Bg4 +8. Be3 Nfd7 9. Qb3 c5 *++[ECO "E00"]+[Opening "Queen's pawn game"]++1. d4 Nf6 2. c4 e6 *++[ECO "E00"]+[Opening "Neo-Indian (Seirawan) attack"]++1. d4 Nf6 2. c4 e6 3. Bg5 *++[ECO "E00"]+[Opening "Catalan opening"]++1. d4 Nf6 2. c4 e6 3. g3 *++[ECO "E01"]+[Opening "Catalan"]+[Variation "closed"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 *++[ECO "E02"]+[Opening "Catalan"]+[Variation "open, 5.Qa4"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 dxc4 5. Qa4+ *++[ECO "E03"]+[Opening "Catalan"]+[Variation "open, Alekhine variation"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 dxc4 5. Qa4+ Nbd7 6. Qxc4 a6 7. Qc2 *++[ECO "E03"]+[Opening "Catalan"]+[Variation "open, 5.Qa4 Nbd7, 6.Qxc4"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 dxc4 5. Qa4+ Nbd7 6. Qxc4 *++[ECO "E04"]+[Opening "Catalan"]+[Variation "open, 5.Nf3"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 dxc4 5. Nf3 *++[ECO "E05"]+[Opening "Catalan"]+[Variation "open, classical line"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 dxc4 5. Nf3 Be7 *++[ECO "E06"]+[Opening "Catalan"]+[Variation "closed, 5.Nf3"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 *++[ECO "E07"]+[Opening "Catalan"]+[Variation "closed, 6...Nbd7"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 *++[ECO "E07"]+[Opening "Catalan"]+[Variation "closed, Botvinnik variation"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Nc3 c6 8.+Qd3 *++[ECO "E08"]+[Opening "Catalan"]+[Variation "closed, 7.Qc2"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Qc2 *++[ECO "E08"]+[Opening "Catalan"]+[Variation "closed, Zagoryansky variation"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Qc2 c6 8.+Rd1 b6 9. a4 *++[ECO "E08"]+[Opening "Catalan"]+[Variation "closed, Qc2 & b3"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Qc2 c6 8.+b3 *++[ECO "E08"]+[Opening "Catalan"]+[Variation "closed, Spassky gambit"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Qc2 c6 8.+b3 b6 9. Rd1 Bb7 10. Nc3 b5 *++[ECO "E09"]+[Opening "Catalan"]+[Variation "closed, main line"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Qc2 c6 8.+Nbd2 *++[ECO "E09"]+[Opening "Catalan"]+[Variation "closed, Sokolsky variation"]++1. d4 Nf6 2. c4 e6 3. g3 d5 4. Bg2 Be7 5. Nf3 O-O 6. O-O Nbd7 7. Qc2 c6 8.+Nbd2 b6 9. b3 a5 10. Bb2 Ba6 *++[ECO "E10"]+[Opening "Queen's pawn game"]++1. d4 Nf6 2. c4 e6 3. Nf3 *++[ECO "E10"]+[Opening "Blumenfeld counter-gambit"]++1. d4 Nf6 2. c4 e6 3. Nf3 c5 4. d5 b5 *++[ECO "E10"]+[Opening "Blumenfeld counter-gambit accepted"]++1. d4 Nf6 2. c4 e6 3. Nf3 c5 4. d5 b5 5. dxe6 fxe6 6. cxb5 d5 *++[ECO "E10"]+[Opening "Blumenfeld counter-gambit, Dus-Chotimursky variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 c5 4. d5 b5 5. Bg5 *++[ECO "E10"]+[Opening "Blumenfeld counter-gambit, Spielmann variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 c5 4. d5 b5 5. Bg5 exd5 6. cxd5 h6 *++[ECO "E10"]+[Opening "Dzindzikhashvili defence"]++1. d4 Nf6 2. c4 e6 3. Nf3 a6 *++[ECO "E10"]+[Opening "Doery defence"]++1. d4 Nf6 2. c4 e6 3. Nf3 Ne4 *++[ECO "E11"]+[Opening "Bogo-Indian defence"]++1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ *++[ECO "E11"]+[Opening "Bogo-Indian defence, Gruenfeld variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Nbd2 *++[ECO "E11"]+[Opening "Bogo-Indian defence, Nimzovich variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Bd2 Qe7 *++[ECO "E11"]+[Opening "Bogo-Indian defence, Monticelli trap"]++1. d4 Nf6 2. c4 e6 3. Nf3 Bb4+ 4. Bd2 Bxd2+ 5. Qxd2 b6 6. g3 Bb7 7. Bg2 O-O+8. Nc3 Ne4 9. Qc2 Nxc3 10. Ng5 *++[ECO "E12"]+[Opening "Queen's Indian defence"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 *++[ECO "E12"]+[Opening "Queen's Indian"]+[Variation "Miles variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. Bf4 *++[ECO "E12"]+[Opening "Queen's Indian"]+[Variation "Petrosian system"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. a3 *++[ECO "E12"]+[Opening "Queen's Indian"]+[Variation "4.Nc3"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. Nc3 *++[ECO "E12"]+[Opening "Queen's Indian"]+[Variation "4.Nc3, Botvinnik variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. Nc3 Bb7 5. Bg5 h6 6. Bh4 g5 7. Bg3 Nh5 *++[ECO "E13"]+[Opening "Queen's Indian"]+[Variation "4.Nc3, main line"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. Nc3 Bb7 5. Bg5 h6 6. Bh4 Bb4 *++[ECO "E14"]+[Opening "Queen's Indian"]+[Variation "4.e3"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. e3 *++[ECO "E14"]+[Opening "Queen's Indian"]+[Variation "Averbakh variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. e3 Bb7 5. Bd3 c5 6. O-O Be7 7. b3 O-O 8. +Bb2 cxd4 9. Nxd4 *++[ECO "E15"]+[Opening "Queen's Indian"]+[Variation "4.g3"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 *++[ECO "E15"]+[Opening "Queen's Indian"]+[Variation "Nimzovich variation (exaggerated fianchetto)"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Ba6 *++[ECO "E15"]+[Opening "Queen's Indian"]+[Variation "4.g3 Bb7"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 *++[ECO "E15"]+[Opening "Queen's Indian"]+[Variation "Rubinstein variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 c5 6. d5 exd5 7. Nh4 *++[ECO "E15"]+[Opening "Queen's Indian"]+[Variation "Buerger variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 c5 6. d5 exd5 7. Ng5 *++[ECO "E16"]+[Opening "Queen's Indian"]+[Variation "Capablanca variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Bb4+ *++[ECO "E16"]+[Opening "Queen's Indian"]+[Variation "Yates variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Bb4+ 6. Bd2 a5 *++[ECO "E16"]+[Opening "Queen's Indian"]+[Variation "Riumin variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Bb4+ 6. Bd2 Be7 *++[ECO "E17"]+[Opening "Queen's Indian"]+[Variation "5.Bg2 Be7"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 *++[ECO "E17"]+[Opening "Queen's Indian"]+[Variation "anti-Queen's Indian system"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 6. Nc3 *++[ECO "E17"]+[Opening "Queen's Indian"]+[Variation "Opovcensky variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 6. Nc3 Ne4 7. Bd2 *++[ECO "E17"]+[Opening "Queen's Indian"]+[Variation "old main line, 6.O-O"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 6. O-O *++[ECO "E17"]+[Opening "Queen's Indian"]+[Variation "Euwe variation"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 6. O-O O-O 7. b3 *++[ECO "E18"]+[Opening "Queen's Indian"]+[Variation "old main line, 7.Nc3"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 6. O-O O-O 7. Nc3 *++[ECO "E19"]+[Opening "Queen's Indian"]+[Variation "old main line, 9.Qxc3"]++1. d4 Nf6 2. c4 e6 3. Nf3 b6 4. g3 Bb7 5. Bg2 Be7 6. O-O O-O 7. Nc3 Ne4 8.+Qc2 Nxc3 9. Qxc3 *++[ECO "E20"]+[Opening "Nimzo-Indian defence"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 *++[ECO "E20"]+[Opening "Nimzo-Indian"]+[Variation "Kmoch variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. f3 *++[ECO "E20"]+[Opening "Nimzo-Indian"]+[Variation "Mikenas attack"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qd3 *++[ECO "E20"]+[Opening "Nimzo-Indian"]+[Variation "Romanishin-Kasparov (Steiner) system"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. g3 *++[ECO "E21"]+[Opening "Nimzo-Indian"]+[Variation "three knights variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Nf3 *++[ECO "E21"]+[Opening "Nimzo-Indian"]+[Variation "three knights, Korchnoi variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Nf3 c5 5. d5 *++[ECO "E21"]+[Opening "Nimzo-Indian"]+[Variation "three knights, Euwe variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Nf3 c5 5. d5 Ne4 *++[ECO "E22"]+[Opening "Nimzo-Indian"]+[Variation "Spielmann variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qb3 *++[ECO "E23"]+[Opening "Nimzo-Indian"]+[Variation "Spielmann, 4...c5, 5.dc Nc6"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qb3 c5 5. dxc5 Nc6 *++[ECO "E23"]+[Opening "Nimzo-Indian"]+[Variation "Spielmann, Karlsbad variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qb3 c5 5. dxc5 Nc6 6. Nf3 Ne4 7. Bd2 Nxd2+*++[ECO "E23"]+[Opening "Nimzo-Indian"]+[Variation "Spielmann, San Remo variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qb3 c5 5. dxc5 Nc6 6. Nf3 Ne4 7. Bd2 Nxc5+*++[ECO "E23"]+[Opening "Nimzo-Indian"]+[Variation "Spielmann, Staahlberg variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qb3 c5 5. dxc5 Nc6 6. Nf3 Ne4 7. Bd2 Nxc5+8. Qc2 f5 9. g3 *++[ECO "E24"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 *++[ECO "E24"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch, Botvinnik variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 c5 6. f3 d5 7. e3 O-O 8.+cxd5 Nxd5 *++[ECO "E25"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 c5 6. f3 d5 7. cxd5 *++[ECO "E25"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch, Keres variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 c5 6. f3 d5 7. cxd5 Nxd5+8. dxc5 *++[ECO "E25"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch, Romanovsky variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 c5 6. f3 d5 7. cxd5 Nxd5+8. dxc5 f5 *++[ECO "E26"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 c5 6. e3 *++[ECO "E26"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch, O'Kelly variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 c5 6. e3 b6 *++[ECO "E27"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 O-O *++[ECO "E28"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 O-O 6. e3 *++[ECO "E29"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch, main line"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 O-O 6. e3 c5 7. Bd3 Nc6 *++[ECO "E29"]+[Opening "Nimzo-Indian"]+[Variation "Saemisch, Capablanca variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. a3 Bxc3+ 5. bxc3 O-O 6. e3 c5 7. Bd3 Nc6 +8. Ne2 b6 9. e4 Ne8 *++[ECO "E30"]+[Opening "Nimzo-Indian"]+[Variation "Leningrad variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Bg5 *++[ECO "E30"]+[Opening "Nimzo-Indian"]+[Variation "Leningrad, ...b5 gambit"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Bg5 h6 5. Bh4 c5 6. d5 b5 *++[ECO "E31"]+[Opening "Nimzo-Indian"]+[Variation "Leningrad, main line"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Bg5 h6 5. Bh4 c5 6. d5 d6 *++[ECO "E32"]+[Opening "Nimzo-Indian"]+[Variation "classical variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 *++[ECO "E32"]+[Opening "Nimzo-Indian"]+[Variation "classical, Adorjan gambit"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 O-O 5. a3 Bxc3+ 6. Qxc3 b5 *++[ECO "E33"]+[Opening "Nimzo-Indian"]+[Variation "classical, 4...Nc6"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 Nc6 *++[ECO "E33"]+[Opening "Nimzo-Indian"]+[Variation "classical, Milner-Barry (Zurich) variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 Nc6 5. Nf3 d6 *++[ECO "E34"]+[Opening "Nimzo-Indian"]+[Variation "classical, Noa variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 *++[ECO "E35"]+[Opening "Nimzo-Indian"]+[Variation "classical, Noa variation, 5.cd ed"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 5. cxd5 exd5 *++[ECO "E36"]+[Opening "Nimzo-Indian"]+[Variation "classical, Noa variation, 5.a3"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 5. a3 *++[ECO "E36"]+[Opening "Nimzo-Indian"]+[Variation "classical, Botvinnik variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 5. a3 Bxc3+ 6. Qxc3 Nc6 *++[ECO "E36"]+[Opening "Nimzo-Indian"]+[Variation "classical, Noa variation, main line"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 5. a3 Bxc3+ 6. Qxc3 Ne4 *++[ECO "E37"]+[Opening "Nimzo-Indian"]+[Variation "classical, Noa variation, main line, 7.Qc2"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 5. a3 Bxc3+ 6. Qxc3 Ne4 7. Qc2 *++[ECO "E37"]+[Opening "Nimzo-Indian"]+[Variation "classical, San Remo variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 d5 5. a3 Bxc3+ 6. Qxc3 Ne4 7. Qc2 Nc6+8. e3 e5 *++[ECO "E38"]+[Opening "Nimzo-Indian"]+[Variation "classical, 4...c5"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 c5 *++[ECO "E39"]+[Opening "Nimzo-Indian"]+[Variation "classical, Pirc variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. Qc2 c5 5. dxc5 O-O *++[ECO "E40"]+[Opening "Nimzo-Indian"]+[Variation "4.e3"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 *++[ECO "E40"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Taimanov variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 Nc6 *++[ECO "E41"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 c5"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 c5 *++[ECO "E41"]+[Opening "Nimzo-Indian"]+[Variation "e3, Huebner variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 c5 5. Bd3 Nc6 6. Nf3 Bxc3+ 7. bxc3 d6 *++[ECO "E42"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 c5, 5.Ne2 (Rubinstein)"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 c5 5. Ne2 *++[ECO "E43"]+[Opening "Nimzo-Indian"]+[Variation "Fischer variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 b6 *++[ECO "E44"]+[Opening "Nimzo-Indian"]+[Variation "Fischer variation, 5.Ne2"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 b6 5. Ne2 *++[ECO "E45"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Bronstein (Byrne) variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 b6 5. Ne2 Ba6 *++[ECO "E46"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 O-O"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O *++[ECO "E46"]+[Opening "Nimzo-Indian"]+[Variation "Reshevsky variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Ne2 *++[ECO "E46"]+[Opening "Nimzo-Indian"]+[Variation "Simagin variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Ne2 d5 6. a3 Bd6 *++[ECO "E47"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 O-O, 5.Bd3"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Bd3 *++[ECO "E48"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 O-O, 5.Bd3 d5"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Bd3 d5 *++[ECO "E49"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Botvinnik system"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Bd3 d5 6. a3 Bxc3+ 7. bxc3 *++[ECO "E50"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 e8g8, 5.Nf3, without ...d5"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 *++[ECO "E51"]+[Opening "Nimzo-Indian"]+[Variation "4.e3 e8g8, 5.Nf3 d7d5"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 *++[ECO "E51"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Ragozin variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 Nc6 7. O-O dxc4 *++[ECO "E52"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, main line with ...b6"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 b6 *++[ECO "E53"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, main line with ...c5"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 *++[ECO "E53"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Keres variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O b6 *++[ECO "E53"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Gligoric system with 7...Nbd7"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O Nbd7 *++[ECO "E54"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Gligoric system with 7...dc"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O dxc4 8.+Bxc4 *++[ECO "E54"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Gligoric system, Smyslov variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O dxc4 8.+Bxc4 Qe7 *++[ECO "E55"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, Gligoric system, Bronstein variation"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O dxc4 8.+Bxc4 Nbd7 *++[ECO "E56"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, main line with 7...Nc6"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O Nc6 *++[ECO "E57"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, main line with 8...dc and 9...cd"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O Nc6 8. +a3 dxc4 9. Bxc4 cxd4 *++[ECO "E58"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, main line with 8...Bxc3"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O Nc6 8. +a3 Bxc3 9. bxc3 *++[ECO "E59"]+[Opening "Nimzo-Indian"]+[Variation "4.e3, main line"]++1. d4 Nf6 2. c4 e6 3. Nc3 Bb4 4. e3 O-O 5. Nf3 d5 6. Bd3 c5 7. O-O Nc6 8. +a3 Bxc3 9. bxc3 dxc4 10. Bxc4 *++[ECO "E60"]+[Opening "King's Indian defence"]++1. d4 Nf6 2. c4 g6 *++[ECO "E60"]+[Opening "King's Indian, 3.Nf3"]++1. d4 Nf6 2. c4 g6 3. Nf3 *++[ECO "E60"]+[Opening "Queen's pawn"]+[Variation "Mengarini attack"]++1. d4 Nf6 2. c4 g6 3. Qc2 *++[ECO "E60"]+[Opening "King's Indian"]+[Variation "Anti-Gruenfeld"]++1. d4 Nf6 2. c4 g6 3. d5 *++[ECO "E60"]+[Opening "King's Indian"]+[Variation "Danube gambit"]++1. d4 Nf6 2. c4 g6 3. d5 b5 *++[ECO "E60"]+[Opening "King's Indian"]+[Variation "3.g3"]++1. d4 Nf6 2. c4 g6 3. g3 *++[ECO "E60"]+[Opening "King's Indian"]+[Variation "3.g3, counterthrust variation"]++1. d4 Nf6 2. c4 g6 3. g3 Bg7 4. Bg2 d5 *++[ECO "E61"]+[Opening "King's Indian defence, 3.Nc3"]++1. d4 Nf6 2. c4 g6 3. Nc3 *++[ECO "E61"]+[Opening "King's Indian"]+[Variation "Smyslov system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. Bg5 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto, Larsen system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 c6 7. O-O Bf5 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto, Kavalek (Bronstein) variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 c6 7. O-O Qa5 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto with ...Nc6"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nc6 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto, Uhlmann (Szabo) variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nc6 7. O-O e5 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto, lesser Simagin (Spassky) variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nc6 7. O-O Bf5 *++[ECO "E62"]+[Opening "King's Indian"]+[Variation "fianchetto, Simagin variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nc6 7. O-O Bg4 *++[ECO "E63"]+[Opening "King's Indian"]+[Variation "fianchetto, Panno variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nc6 7. O-O a6 *++[ECO "E64"]+[Opening "King's Indian"]+[Variation "fianchetto, Yugoslav system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 c5 *++[ECO "E65"]+[Opening "King's Indian"]+[Variation "fianchetto, Yugoslav, 7.O-O"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 c5 7. O-O *++[ECO "E66"]+[Opening "King's Indian"]+[Variation "fianchetto, Yugoslav Panno"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 c5 7. O-O Nc6 8. +d5 *++[ECO "E67"]+[Opening "King's Indian"]+[Variation "fianchetto with ...Nd7"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nbd7 *++[ECO "E67"]+[Opening "King's Indian"]+[Variation "fianchetto, classical variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nbd7 7. O-O e5 *++[ECO "E68"]+[Opening "King's Indian"]+[Variation "fianchetto, classical variation, 8.e4"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nbd7 7. O-O e5 8.+e4 *++[ECO "E69"]+[Opening "King's Indian"]+[Variation "fianchetto, classical main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. Nf3 d6 5. g3 O-O 6. Bg2 Nbd7 7. O-O e5 8.+e4 c6 9. h3 *++[ECO "E70"]+[Opening "King's Indian"]+[Variation "4.e4"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 *++[ECO "E70"]+[Opening "King's Indian"]+[Variation "Kramer system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nge2 *++[ECO "E70"]+[Opening "King's Indian"]+[Variation "accelerated Averbakh system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Bg5 *++[ECO "E71"]+[Opening "King's Indian"]+[Variation "Makagonov system (5.h3)"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. h3 *++[ECO "E72"]+[Opening "King's Indian with e4 & g3"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. g3 *++[ECO "E72"]+[Opening "King's Indian"]+[Variation "Pomar system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. g3 O-O 6. Bg2 e5 7. Nge2 *++[ECO "E73"]+[Opening "King's Indian"]+[Variation "5.Be2"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 *++[ECO "E73"]+[Opening "King's Indian"]+[Variation "Semi-Averbakh system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Be3 *++[ECO "E73"]+[Opening "King's Indian"]+[Variation "Averbakh system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Bg5 *++[ECO "E74"]+[Opening "King's Indian"]+[Variation "Averbakh, 6...c5"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Bg5 c5 *++[ECO "E75"]+[Opening "King's Indian"]+[Variation "Averbakh, main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Be2 O-O 6. Bg5 c5 7. d5 e6 *++[ECO "E76"]+[Opening "King's Indian"]+[Variation "Four pawns attack"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 *++[ECO "E76"]+[Opening "King's Indian"]+[Variation "Four pawns attack, dynamic line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Nf3 c5 7. d5 *++[ECO "E77"]+[Opening "King's Indian"]+[Variation "Four pawns attack, 6.Be2"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Be2 *++[ECO "E77"]+[Opening "King's Indian"]+[Variation "Six pawns attack"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Be2 c5 7. d5 e6 8. dxe6+fxe6 9. g4 Nc6 10. h4 *++[ECO "E77"]+[Opening "King's Indian"]+[Variation "Four pawns attack"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Be2 c5 7. d5 e6 8. Nf3+*++[ECO "E77"]+[Opening "King's Indian"]+[Variation "Four pawns attack, Florentine gambit"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Be2 c5 7. d5 e6 8. Nf3+exd5 9. e5 *++[ECO "E78"]+[Opening "King's Indian"]+[Variation "Four pawns attack, with Be2 and Nf3"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Be2 c5 7. Nf3 *++[ECO "E79"]+[Opening "King's Indian"]+[Variation "Four pawns attack, main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f4 O-O 6. Be2 c5 7. Nf3 cxd4 8. +Nxd4 Nc6 9. Be3 *++[ECO "E80"]+[Opening "King's Indian"]+[Variation "Saemisch variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 *++[ECO "E81"]+[Opening "King's Indian"]+[Variation "Saemisch, 5...O-O"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O *++[ECO "E81"]+[Opening "King's Indian"]+[Variation "Saemisch, Byrne variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 c6 7. Bd3 a6 *++[ECO "E82"]+[Opening "King's Indian"]+[Variation "Saemisch, double fianchetto variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 b6 *++[ECO "E83"]+[Opening "King's Indian"]+[Variation "Saemisch, 6...Nc6"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 Nc6 *++[ECO "E83"]+[Opening "King's Indian"]+[Variation "Saemisch, Ruban variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 Nc6 7. Nge2 Rb8 *++[ECO "E83"]+[Opening "King's Indian"]+[Variation "Saemisch, Panno formation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 Nc6 7. Nge2 a6 *++[ECO "E84"]+[Opening "King's Indian"]+[Variation "Saemisch, Panno main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 Nc6 7. Nge2 a6 8. +Qd2 Rb8 *++[ECO "E85"]+[Opening "King's Indian"]+[Variation "Saemisch, orthodox variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 e5 *++[ECO "E86"]+[Opening "King's Indian"]+[Variation "Saemisch, orthodox, 7.Nge2 c6"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 e5 7. Nge2 c6 *++[ECO "E87"]+[Opening "King's Indian"]+[Variation "Saemisch, orthodox, 7.d5"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 e5 7. d5 *++[ECO "E87"]+[Opening "King's Indian"]+[Variation "Saemisch, orthodox, Bronstein variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 e5 7. d5 Nh5 8. Qd2+Qh4+ 9. g3 Nxg3 10. Qf2 Nxf1 11. Qxh4 Nxe3 12. Ke2 Nxc4 *++[ECO "E88"]+[Opening "King's Indian"]+[Variation "Saemisch, orthodox, 7.d5 c6"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 e5 7. d5 c6 *++[ECO "E89"]+[Opening "King's Indian"]+[Variation "Saemisch, orthodox main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. f3 O-O 6. Be3 e5 7. d5 c6 8. Nge2+cxd5 *++[ECO "E90"]+[Opening "King's Indian"]+[Variation "5.Nf3"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 *++[ECO "E90"]+[Opening "King's Indian"]+[Variation "Larsen variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be3 *++[ECO "E90"]+[Opening "King's Indian"]+[Variation "Zinnowitz variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Bg5 *++[ECO "E91"]+[Opening "King's Indian"]+[Variation "6.Be2"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 *++[ECO "E91"]+[Opening "King's Indian"]+[Variation "Kazakh variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 Na6 *++[ECO "E92"]+[Opening "King's Indian"]+[Variation "classical variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 *++[ECO "E92"]+[Opening "King's Indian"]+[Variation "Andersson variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. dxe5 *++[ECO "E92"]+[Opening "King's Indian"]+[Variation "Gligoric-Taimanov system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. Be3 *++[ECO "E92"]+[Opening "King's Indian"]+[Variation "Petrosian system"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. d5 *++[ECO "E92"]+[Opening "King's Indian"]+[Variation "Petrosian system, Stein variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. d5 a5 *++[ECO "E93"]+[Opening "King's Indian"]+[Variation "Petrosian system, main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. d5 Nbd7 *++[ECO "E93"]+[Opening "King's Indian"]+[Variation "Petrosian system, Keres variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. d5 Nbd7 8. +Bg5 h6 9. Bh4 g5 10. Bg3 Nh5 11. h4 *++[ECO "E94"]+[Opening "King's Indian"]+[Variation "orthodox variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O *++[ECO "E94"]+[Opening "King's Indian"]+[Variation "orthodox, Donner variation"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O c6 *++[ECO "E94"]+[Opening "King's Indian"]+[Variation "orthodox, 7...Nbd7"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nbd7 *++[ECO "E95"]+[Opening "King's Indian"]+[Variation "orthodox, 7...Nbd7, 8.Re1"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nbd7 8.+Re1 *++[ECO "E96"]+[Opening "King's Indian"]+[Variation "orthodox, 7...Nbd7, main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nbd7 8.+Re1 c6 9. Bf1 a5 *++[ECO "E97"]+[Opening "King's Indian"]+[Variation "orthodox, Aronin-Taimanov variation (Yugoslav attack / Mar del Plata variation)"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nc6 *++[ECO "E97"]+[Opening "King's Indian"]+[Variation "orthodox, Aronin-Taimanov, bayonet attack"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nc6 8. +d5 Ne7 9. b4 *++[ECO "E98"]+[Opening "King's Indian"]+[Variation "orthodox, Aronin-Taimanov, 9.Ne1"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nc6 8. +d5 Ne7 9. Ne1 *++[ECO "E99"]+[Opening "King's Indian"]+[Variation "orthodox, Aronin-Taimanov, main line"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nc6 8. +d5 Ne7 9. Ne1 Nd7 10. f3 f5 *++[ECO "E99"]+[Opening "King's Indian"]+[Variation "orthodox, Aronin-Taimanov, Benko attack"]++1. d4 Nf6 2. c4 g6 3. Nc3 Bg7 4. e4 d6 5. Nf3 O-O 6. Be2 e5 7. O-O Nc6 8. +d5 Ne7 9. Ne1 Nd7 10. f3 f5 11. g4 *+
book/twic-9g.bin view

file too large to diff

chessIO.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 3fcf399df92e8a53a4f22341832c3dc5a45222618873d4edd74b61fca3a35598+-- hash: 58ed029b69d3e53603aa5e6f7cdac0fb58c1971595e47e3aba37cb0cfc6ac07f  name:           chessIO-version:        0.6.1.1+version:        0.7.0.0 synopsis:       Basic chess library description:    A simple and fast library for generating legal chess moves. Also includes a module for communication with external processes that speak the UCI (Universal Chess Interface) protocol, a PGN parser/pretty printer, and Polyglot opening book support. On top of that, provides a console frontend program (cboard) that can be used to interactively play against UCI engines, and a terminal program (cbookview) to explore commonly played chess openings. category:       Game@@ -15,13 +15,14 @@ bug-reports:    https://github.com/mlang/chessIO/issues author:         Mario Lang maintainer:     mlang@blind.guru-copyright:      2020 Mario Lang+copyright:      2021 Mario Lang license:        BSD3 license-file:   LICENSE build-type:     Simple extra-source-files:     README.md     CHANGELOG.md+    book/eco.pgn     book/twic-9g.bin  source-repository head@@ -31,6 +32,7 @@ library   exposed-modules:       Game.Chess+      Game.Chess.ECO       Game.Chess.PGN       Game.Chess.Polyglot       Game.Chess.SAN@@ -38,6 +40,7 @@       Game.Chess.UCI   other-modules:       Game.Chess.Internal+      Game.Chess.Internal.ECO       Game.Chess.Internal.QuadBitboard       Game.Chess.Internal.Square       Game.Chess.Polyglot.Hash@@ -49,6 +52,7 @@       BinaryLiterals       BlockArguments       DeriveGeneric+      DeriveLift       FlexibleContexts       FlexibleInstances       GeneralizedNewtypeDeriving@@ -72,17 +76,25 @@     , binary     , bytestring     , containers+    , deepseq     , extra     , file-embed+    , hashable+    , lens     , megaparsec >=9.0+    , mono-traversable     , o-clock     , prettyprinter     , process     , random     , stm+    , template-haskell     , text+    , th-lift-instances     , unordered-containers     , vector+    , vector-binary-instances+    , vector-instances   default-language: Haskell2010  executable cboard@@ -96,6 +108,7 @@       BinaryLiterals       BlockArguments       DeriveGeneric+      DeriveLift       FlexibleContexts       FlexibleInstances       GeneralizedNewtypeDeriving@@ -120,19 +133,27 @@     , bytestring     , chessIO     , containers+    , deepseq     , extra     , file-embed+    , hashable     , haskeline+    , lens     , megaparsec >=9.0+    , mono-traversable     , mtl     , o-clock     , prettyprinter     , process     , random     , stm+    , template-haskell     , text+    , th-lift-instances     , unordered-containers     , vector+    , vector-binary-instances+    , vector-instances   default-language: Haskell2010  executable cbookview@@ -146,6 +167,7 @@       BinaryLiterals       BlockArguments       DeriveGeneric+      DeriveLift       FlexibleContexts       FlexibleInstances       GeneralizedNewtypeDeriving@@ -171,21 +193,27 @@     , bytestring     , chessIO     , containers+    , deepseq     , extra     , file-embed     , filepath+    , hashable+    , lens     , megaparsec >=9.0-    , microlens-    , microlens-th+    , mono-traversable     , o-clock     , prettyprinter     , process     , random     , rosezipper     , stm+    , template-haskell     , text+    , th-lift-instances     , unordered-containers     , vector+    , vector-binary-instances+    , vector-instances     , vty   default-language: Haskell2010 @@ -200,6 +228,7 @@       BinaryLiterals       BlockArguments       DeriveGeneric+      DeriveLift       FlexibleContexts       FlexibleInstances       GeneralizedNewtypeDeriving@@ -224,19 +253,27 @@     , bytestring     , chessIO     , containers+    , deepseq     , extra     , file-embed+    , hashable+    , lens     , megaparsec >=9.0+    , mono-traversable     , o-clock     , optparse-applicative     , prettyprinter     , process     , random     , stm+    , template-haskell     , text+    , th-lift-instances     , time     , unordered-containers     , vector+    , vector-binary-instances+    , vector-instances   default-language: Haskell2010  test-suite perft@@ -251,6 +288,7 @@       BinaryLiterals       BlockArguments       DeriveGeneric+      DeriveLift       FlexibleContexts       FlexibleInstances       GeneralizedNewtypeDeriving@@ -275,18 +313,26 @@     , bytestring     , chessIO     , containers+    , deepseq     , directory     , extra     , file-embed+    , hashable+    , lens     , megaparsec >=9.0+    , mono-traversable     , o-clock     , parallel     , prettyprinter     , process     , random     , stm+    , template-haskell     , text+    , th-lift-instances     , time     , unordered-containers     , vector+    , vector-binary-instances+    , vector-instances   default-language: Haskell2010
src/Game/Chess.hs view
@@ -1,7 +1,7 @@ {-| Module      : Game.Chess Description : Basic data types and functions related to the game of chess-Copyright   : (c) Mario Lang, 2020+Copyright   : (c) Mario Lang, 2021 License     : BSD3 Maintainer  : mlang@blind.guru Stability   : experimental@@ -18,6 +18,7 @@  The following modules implement more specific functionality: +- "Game.Chess.ECO": Parse the Encyclopedia of Chess Openings and lookup positions - "Game.Chess.Polyglot": Polyglot opening book format - "Game.Chess.SAN": Parse and print Standard Algebraic Notation. - "Game.Chess.PGN": Parse and format Portable Game Notation files.@@ -27,7 +28,18 @@ module Game.Chess (   -- * Chess positions   Color(..), opponent-, IsSquare(toIndex, toRF), Sq(..), isLight, isDark+, Square(A1, A2, A3, A4, A5, A6, A7, A8,+         B1, B2, B3, B4, B5, B6, B7, B8,+         C1, C2, C3, C4, C5, C6, C7, C8,+         D1, D2, D3, D4, D5, D6, D7, D8,+         E1, E2, E3, E4, E5, E6, E7, E8,+         F1, F2, F3, F4, F5, F6, F7, F8,+         G1, G2, G3, G4, G5, G6, G7, G8,+         H1, H2, H3, H4, H5, H6, H7, H8)+, rank, Rank(Rank1, Rank2, Rank3, Rank4, Rank5, Rank6, Rank7, Rank8)+, file, File(FileA, FileB, FileC, FileD, FileE, FileF, FileG, FileH)+, rankFile, isLight, isDark+, rankChar, fileChar, toCoord , PieceType(..), Castle(..) , Position, startpos, color, moveNumber, halfMoveClock, pieceAt, inCheck , castlingRights, canCastleKingside, canCastleQueenside@@ -35,7 +47,7 @@   -- ** Converting from/to Forsyth-Edwards-Notation , fromFEN, toFEN   -- * Chess moves-, Ply(..), plySource, plyTarget, plyPromotion+, Ply, plySource, plyTarget, plyPromotion   -- ** Convertion , fromUCI, toUCI, fromPolyglot, toPolyglot   -- ** Move generation@@ -44,5 +56,5 @@ , doPly, unsafeDoPly ) where -import Game.Chess.Internal.Square-import Game.Chess.Internal+import           Game.Chess.Internal+import           Game.Chess.Internal.Square
+ src/Game/Chess/ECO.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE TemplateHaskell #-}+{-|+Module      : Game.Chess.ECO+Description : Encyclopedia of Chess Openings+Copyright   : (c) Mario Lang, 2021+License     : BSD3+Maintainer  : mlang@blind.guru+Stability   : experimental++Types and functions to name chess positions according to the opening used.++Two commonly used file formats for opening classification are supported.+-}+module Game.Chess.ECO (+  -- * Data types+  ECO, Opening(..)+, defaultECO+  -- * Query+, lookup+  -- * Conversion+, fromList, toList+  -- * Parsing eco.pgn files+, fromPGN, readECOPGNFile+  -- * Parsing scid .eco files+, readSCIDECOFile, scid+  -- * Template Haskell+, embedECO, ecoPgn, scidEco+) where++import           Game.Chess.Internal.ECO+import           Prelude                 hiding (lookup)++defaultECO :: ECO+defaultECO = $$(embedECO ecoPgn "book/eco.pgn")
src/Game/Chess/Internal.hs view
@@ -16,57 +16,76 @@ -} module Game.Chess.Internal where -import Data.Bits-  ( Bits((.&.), testBit, unsafeShiftR, unsafeShiftL, xor, (.|.), bit, complement),-    FiniteBits(countLeadingZeros, countTrailingZeros) )-import Data.Char ( ord, chr )-import Data.Ix ( Ix(inRange) )-import Data.List (nub, sortOn)-import Data.Maybe ( fromJust, isJust, listToMaybe )-import Data.Ord (Down(..))-import Data.String ( IsString(..) )-import Data.Vector.Unboxed (Vector, (!))-import qualified Data.Vector.Unboxed as Vector-import Data.Word ( Word16, Word64 )-import Foreign.Storable-import Game.Chess.Internal.Square (IsSquare(toIndex, toRF), Sq(..), toCoord)-import Game.Chess.Internal.QuadBitboard (QuadBitboard)+import           Control.DeepSeq+import           Control.Lens                     (view)+import           Control.Lens.Iso                 (from)+import           Data.Binary+import           Data.Bits                        (Bits (bit, complement, testBit, unsafeShiftL, unsafeShiftR, xor, (.&.), (.|.)),+                                                   FiniteBits (countLeadingZeros, countTrailingZeros))+import           Data.Char                        (chr, ord)+import           Data.Hashable+import           Data.Ix                          (Ix (inRange))+import           Data.List                        (nub, sortOn)+import           Data.Maybe                       (fromJust, isJust,+                                                   listToMaybe)+import           Data.Ord                         (Down (..))+import           Data.String                      (IsString (..))+import qualified Data.Vector.Generic              as G+import qualified Data.Vector.Generic.Mutable      as M+import           Data.Vector.Unboxed              (MVector, Unbox, Vector, (!))+import qualified Data.Vector.Unboxed              as Vector+import           Data.Word                        (Word16, Word64)+import           Foreign.Storable+import           GHC.Generics                     (Generic)+import           GHC.Stack                        (HasCallStack)+import           Game.Chess.Internal.QuadBitboard (QuadBitboard) import qualified Game.Chess.Internal.QuadBitboard as QBB-import Text.Read (readMaybe)+import           Game.Chess.Internal.Square+import           Language.Haskell.TH.Syntax       (Lift)+import           Text.Read                        (readMaybe)  capturing :: Position -> Ply -> Maybe PieceType capturing pos@Position{flags} (plyTarget -> to)-  | (flags .&. epMask) `testBit` to = Just Pawn+  | (flags .&. epMask) `testBit` unSquare to = Just Pawn   | otherwise = snd <$> pieceAt pos to  isCapture :: Position -> Ply -> Bool-isCapture pos = isJust . capturing pos+isCapture Position{qbb, flags} =+  testBit (QBB.occupied qbb .|. (flags .&. epMask)) . unSquare . plyTarget  -- | The starting position as given by the FEN string --   "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1". startpos :: Position-startpos = fromJust $-  fromFEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"+startpos = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" +instance IsString Position where fromString = fromJust . fromFEN+ data PieceType = Pawn | Knight | Bishop | Rook | Queen | King deriving (Eq, Ix, Ord, Show) -data Color = Black | White deriving (Eq, Ix, Ord, Show)+data Color = Black | White deriving (Eq, Generic, Ix, Ord, Lift, Show) -pieceAt :: IsSquare sq => Position -> sq -> Maybe (Color, PieceType)-pieceAt Position{qbb} (toIndex -> sq) = case qbb QBB.! sq of-  QBB.WhitePawn -> Just (White, Pawn)+instance Binary Color+instance NFData Color++instance Hashable Color where+  hashWithSalt s Black = s `hashWithSalt` (0 :: Int)+  hashWithSalt s White = s `hashWithSalt` (1 :: Int)++pieceAt :: Position -> Square -> Maybe (Color, PieceType)+pieceAt Position{qbb} sq = case qbb QBB.! sq of+  QBB.WhitePawn   -> Just (White, Pawn)   QBB.WhiteKnight -> Just (White, Knight)   QBB.WhiteBishop -> Just (White, Bishop)-  QBB.WhiteRook -> Just (White, Rook)-  QBB.WhiteQueen -> Just (White, Queen)-  QBB.WhiteKing -> Just (White, King)-  QBB.BlackPawn -> Just (Black, Pawn)+  QBB.WhiteRook   -> Just (White, Rook)+  QBB.WhiteQueen  -> Just (White, Queen)+  QBB.WhiteKing   -> Just (White, King)+  QBB.BlackPawn   -> Just (Black, Pawn)   QBB.BlackKnight -> Just (Black, Knight)   QBB.BlackBishop -> Just (Black, Bishop)-  QBB.BlackRook -> Just (Black, Rook)-  QBB.BlackQueen -> Just (Black, Queen)-  QBB.BlackKing -> Just (Black, King)-  _             -> Nothing+  QBB.BlackRook   -> Just (Black, Rook)+  QBB.BlackQueen  -> Just (Black, Queen)+  QBB.BlackKing   -> Just (Black, King)+  _               -> Nothing  opponent :: Color -> Color opponent White = Black@@ -75,15 +94,18 @@ data Piece = Piece !Color !PieceType deriving (Eq, Show)  data Position = Position {-  qbb :: {-# UNPACK #-} !QuadBitboard-, color :: !Color+  qbb           :: {-# UNPACK #-} !QuadBitboard+, color         :: !Color   -- ^ active color-, flags :: {-# UNPACK #-} !Word64+, flags         :: {-# UNPACK #-} !Word64 , halfMoveClock :: {-# UNPACK #-} !Int-, moveNumber :: {-# UNPACK #-} !Int+, moveNumber    :: {-# UNPACK #-} !Int   -- ^ number of the full move-}+} deriving (Generic, Lift) +instance Binary Position+instance NFData Position+ -- Article 9.2 states that a position is considered -- identical to another if the same player is on move, the same types of -- pieces of the same colors occupy the same squares, and the same moves@@ -92,6 +114,10 @@ instance Eq Position where   a == b = qbb a == qbb b && color a == color b && flags a == flags b +instance Hashable Position where+  hashWithSalt s Position{qbb, color, flags} =+    s `hashWithSalt` qbb `hashWithSalt` color `hashWithSalt` flags+ repetitions :: [Position] -> Maybe (Int, Position) repetitions p = listToMaybe . sortOn (Down . fst) . fmap f $ nub p where   f x = (count x p, x)@@ -118,7 +144,7 @@   parts = words fen   readColor "w" = Just White   readColor "b" = Just Black-  readColor _ = Nothing+  readColor _   = Nothing    readFlags cst ep = (.|.) <$> readCst cst <*> readEP ep where     readCst "-" = Just 0@@ -127,8 +153,8 @@       go ('Q':xs) = (crwQs .|.) <$> go xs       go ('k':xs) = (crbKs .|.) <$> go xs       go ('q':xs) = (crbQs .|.) <$> go xs-      go [] = Just 0-      go _ = Nothing+      go []       = Just 0+      go _        = Nothing     readEP "-" = Just 0     readEP [f,r]       | inRange ('a','h') f && (r == '3' || r == '6')@@ -151,7 +177,7 @@   showCst x     | str == "" = "-"     | otherwise = str-   where +   where     str = snd . wks . wqs . bks . bqs $ (x, "")     wks (v, xs) | v `testMask` crwKs = (v, 'K':xs)                 | otherwise          = (v, xs)@@ -162,7 +188,7 @@     bqs (v, xs) | v `testMask` crbQs = (v, 'q':xs)                 | otherwise          = (v, xs)   showEP 0 = "-"-  showEP x = toCoord (bitScanForward x)+  showEP x = toCoord . Sq . bitScanForward $ x  occupiedBy :: Color -> QuadBitboard -> Word64 occupiedBy White = QBB.white@@ -180,13 +206,46 @@ bitScanForward = countTrailingZeros bitScanReverse = (63 -) . countLeadingZeros -newtype Ply = Ply Word16 deriving (Eq, Storable)+newtype Ply = Ply Word16 deriving (Binary, Eq, Hashable, Lift, Storable)  instance Show Ply where-  show = toUCI+  show (unpack -> (from, to, promo)) = "move " <> show from <> " " <> show to <> p where+    p = case promo of+      Just piece -> " `promoteTo` " <> show piece+      Nothing    -> "" -move :: (IsSquare from, IsSquare to) => from -> to -> Ply-move (toIndex -> from) (toIndex -> to) =+newtype instance MVector s Ply = MV_Ply (MVector s Word16)+newtype instance Vector    Ply = V_Ply (Vector Word16)++instance M.MVector MVector Ply where+  basicLength (MV_Ply v) = M.basicLength v+  basicUnsafeSlice i n (MV_Ply v) = MV_Ply $ M.basicUnsafeSlice i n v+  basicOverlaps (MV_Ply v1) (MV_Ply v2) = M.basicOverlaps v1 v2+  basicUnsafeNew n = MV_Ply <$> M.basicUnsafeNew n+  basicInitialize (MV_Ply v) = M.basicInitialize v+  basicUnsafeReplicate n (Ply pl) = MV_Ply <$> M.basicUnsafeReplicate n pl+  basicUnsafeRead (MV_Ply v) i = Ply <$> M.basicUnsafeRead v i+  basicUnsafeWrite (MV_Ply v) i (Ply pl) = M.basicUnsafeWrite v i pl+  basicClear (MV_Ply v) = M.basicClear v+  basicSet (MV_Ply v) (Ply pl) = M.basicSet v pl+  basicUnsafeCopy (MV_Ply v1) (MV_Ply v2) = M.basicUnsafeCopy v1 v2+  basicUnsafeMove (MV_Ply v1) (MV_Ply v2) = M.basicUnsafeMove v1 v2+  basicUnsafeGrow (MV_Ply v) n = MV_Ply <$> M.basicUnsafeGrow v n++instance G.Vector Vector Ply where+  {-# INLINE basicUnsafeIndexM #-}+  basicUnsafeFreeze (MV_Ply v) = V_Ply <$> G.basicUnsafeFreeze v+  basicUnsafeThaw (V_Ply v) = MV_Ply <$> G.basicUnsafeThaw v+  basicLength (V_Ply v) = G.basicLength v+  basicUnsafeSlice i n (V_Ply v) = V_Ply $ G.basicUnsafeSlice  i n v+  basicUnsafeIndexM (V_Ply v) i = Ply <$> G.basicUnsafeIndexM v i+  basicUnsafeCopy (MV_Ply mv) (V_Ply v) = G.basicUnsafeCopy mv v+  elemseq _ pl z = G.elemseq (undefined :: Vector a) pl z++instance Unbox Ply++move :: Square -> Square -> Ply+move (Sq from) (Sq to) =   Ply $ fromIntegral to .|. fromIntegral from `unsafeShiftL` 6  promoteTo :: Ply -> PieceType -> Ply@@ -197,9 +256,9 @@   set Queen  = x .&. 0xfff .|. 0x4000   set _      = x -plySource, plyTarget :: Ply -> Int-plySource (Ply x) = fromIntegral ((x `unsafeShiftR` 6) .&. 0b111111)-plyTarget (Ply x) = fromIntegral (x .&. 0b111111)+plySource, plyTarget :: Ply -> Square+plySource (Ply x) = Sq $ fromIntegral ((x `unsafeShiftR` 6) .&. 0b111111)+plyTarget (Ply x) = Sq $ fromIntegral (x .&. 0b111111)  plyPromotion :: Ply -> Maybe PieceType plyPromotion (Ply x) = case x `unsafeShiftR` 12 of@@ -209,9 +268,9 @@   4 -> Just Queen   _ -> Nothing -unpack :: Ply -> (Int, Int, Maybe PieceType)-unpack (Ply x) = ( fromIntegral ((x `unsafeShiftR` 6) .&. 0b111111)-                 , fromIntegral (x .&. 0b111111)+unpack :: Ply -> (Square, Square, Maybe PieceType)+unpack (Ply x) = ( Sq $ fromIntegral ((x `unsafeShiftR` 6) .&. 0b111111)+                 , Sq $ fromIntegral (x .&. 0b111111)                  , piece)  where   !piece = case x `unsafeShiftR` 12 of@@ -223,76 +282,76 @@  fromPolyglot :: Position -> Ply -> Ply fromPolyglot pos pl@(unpack -> (from, to, _)) = case color pos of-  White | from == toIndex E1+  White | from == E1         , canCastleKingside pos-        , to == toIndex H1+        , to == H1         -> wKscm-        | from == toIndex E1+        | from == E1         , canCastleQueenside pos-        , to == toIndex A1+        , to == A1         -> wQscm-  Black | from == toIndex E8+  Black | from == E8         , canCastleKingside pos-        , to == toIndex H8+        , to == H8         -> bKscm-        | from == toIndex E8+        | from == E8         , canCastleQueenside pos-        , to == toIndex A8+        , to == A8         -> bQscm   _ -> pl  toPolyglot :: Position -> Ply -> Ply toPolyglot pos pl@(unpack -> (from, to, _)) = case color pos of-  White | from == toIndex E1+  White | from == E1         , canCastleKingside pos-        , to == toIndex G1+        , to == G1         -> from `move` H1-        | from == toIndex E1+        | from == E1         , canCastleQueenside pos-        , to == toIndex C1+        , to == C1         -> from `move` A1-  Black | from == toIndex E8+  Black | from == E8         , canCastleKingside pos-        , to == toIndex G8+        , to == G8         -> from `move` H8-        | from == toIndex E8+        | from == E8         , canCastleQueenside pos-        , to == toIndex C8+        , to == C8         -> from `move` A8   _ -> pl  -- | Parse a move in the format used by the Universal Chess Interface protocol. fromUCI :: Position -> String -> Maybe Ply-fromUCI pos (fmap (splitAt 2) . splitAt 2 -> (from, (to, promo)))+fromUCI pos (fmap (splitAt 2) . splitAt 2 -> (src, (dst, promo)))   | null promo-  = move <$> readCoord from <*> readCoord to >>= relativeTo pos+  = move <$> readCoord src <*> readCoord dst >>= relativeTo pos   | otherwise-  = (\f t p -> move f t `promoteTo` p) <$> readCoord from-                                       <*> readCoord to+  = (\f t p -> move f t `promoteTo` p) <$> readCoord src+                                       <*> readCoord dst                                        <*> readPromo promo       >>= relativeTo pos  where   readCoord [f,r]     | inRange ('a','h') f && inRange ('1','8') r-    = Just $ (ord r - ord '1') * 8 + (ord f - ord 'a')+    = Just . view (from rankFile) $ (mkRank $ ord r - ord '1',  mkFile $ ord f - ord 'a')   readCoord _ = Nothing   readPromo "q" = Just Queen   readPromo "r" = Just Rook   readPromo "b" = Just Bishop   readPromo "n" = Just Knight-  readPromo _ = Nothing+  readPromo _   = Nothing  -- | Convert a move to the format used by the Universal Chess Interface protocol. toUCI :: Ply -> String toUCI (unpack -> (from, to, promo)) = coord from <> coord to <> p where-  coord x = let (r,f) = toRF x in-            chr (f + ord 'a') : [chr (r + ord '1')]+  coord x = let (r,f) = view rankFile x in+            chr (unFile f + ord 'a') : [chr (unRank r + ord '1')]   p = case promo of-    Just Queen -> "q"-    Just Rook -> "r"+    Just Queen  -> "q"+    Just Rook   -> "r"     Just Bishop -> "b"     Just Knight -> "n"-    _ -> ""+    _           -> ""  -- | Validate that a certain move is legal in the given position. relativeTo :: Position -> Ply -> Maybe Ply@@ -321,7 +380,7 @@ -- -- This function checks if the move is actually legal and throws and error -- if it isn't.  See 'unsafeDoPly' for a version that omits the legality check.-doPly :: Position -> Ply -> Position+doPly :: HasCallStack => Position -> Ply -> Position doPly p m   | m `elem` legalPlies p = unsafeDoPly p m   | otherwise        = error "Game.Chess.doPly: Illegal move"@@ -343,7 +402,7 @@   pos' = unsafeDoPly' pos m   isPawnPush p m = case pieceAt p (plySource m) of     Just (_, Pawn) -> True-    _         -> False+    _              -> False  unsafeDoPly' :: Position -> Ply -> Position unsafeDoPly' pos@Position{qbb, flags} m@(unpack -> (from, to, promo))@@ -367,34 +426,34 @@   = case color pos of       White -> case piece of         Queen -> pos { qbb = QBB.whitePromotion qbb from to QBB.WhiteQueen-                     , flags = flags `clearMask` (epMask .|. bit to)+                     , flags = flags `clearMask` (epMask .|. bit (unSquare to))                      }         Rook  -> pos { qbb = QBB.whitePromotion qbb from to QBB.WhiteRook-                     , flags = flags `clearMask` (epMask .|. bit to)+                     , flags = flags `clearMask` (epMask .|. bit (unSquare to))                      }         Bishop -> pos { qbb = QBB.whitePromotion qbb from to QBB.WhiteBishop-                      , flags = flags `clearMask` (epMask .|. bit to)+                      , flags = flags `clearMask` (epMask .|. bit (unSquare to))                       }         Knight -> pos { qbb = QBB.whitePromotion qbb from to QBB.WhiteKnight-                      , flags = flags `clearMask` (epMask .|. bit to)+                      , flags = flags `clearMask` (epMask .|. bit (unSquare to))                       }         _ -> error "Impossible: White tried to promote to Pawn"       Black -> case piece of         Queen -> pos { qbb = QBB.blackPromotion qbb from to QBB.BlackQueen-                     , flags = flags `clearMask` (epMask .|. bit to)-                     }  +                     , flags = flags `clearMask` (epMask .|. bit (unSquare to))+                     }         Rook   -> pos { qbb = QBB.blackPromotion qbb from to QBB.BlackRook-                      , flags = flags `clearMask` (epMask .|. bit to)+                      , flags = flags `clearMask` (epMask .|. bit (unSquare to))                       }         Bishop -> pos { qbb = QBB.blackPromotion qbb from to QBB.BlackBishop-                      , flags = flags `clearMask` (epMask .|. bit to)+                      , flags = flags `clearMask` (epMask .|. bit (unSquare to))                       }         Knight -> pos { qbb = QBB.blackPromotion qbb from to QBB.BlackKnight-                      , flags = flags `clearMask` (epMask .|. bit to)+                      , flags = flags `clearMask` (epMask .|. bit (unSquare to))                       }         _ -> error "Impossible: Black tried to promote to Pawn"-  | QBB.pawns qbb `testMask` fromMask &&-    toMask .&. (rank3 .|. rank6) .&. flags /= 0+  | QBB.pawns qbb `testMask` fromMask+  , toMask .&. (rank3 .|. rank6) .&. flags /= 0   = pos { qbb = qbb <> QBB.enPassant from to         , flags = flags `clearMask` toMask         }@@ -403,12 +462,14 @@         , flags = (flags `clearMask` (epMask .|. mask)) .|. dpp         }  where-  !fromMask = 1 `unsafeShiftL` from-  !toMask = 1 `unsafeShiftL` to+  !fromMask = 1 `unsafeShiftL` unSquare from+  !toMask = 1 `unsafeShiftL` unSquare to   !mask = fromMask .|. toMask   dpp = case color pos of-    White | fromMask .&. rank2 .&. QBB.wPawns qbb /= 0 && from + 16 == to -> shiftN fromMask-    Black | fromMask .&. rank7 .&. QBB.bPawns qbb /= 0 && from - 16 == to -> shiftS fromMask+    White | fromMask .&. rank2 .&. QBB.wPawns qbb /= 0+          , unSquare from + 16 == unSquare to -> shiftN fromMask+    Black | fromMask .&. rank7 .&. QBB.bPawns qbb /= 0+          , unSquare from - 16 == unSquare to -> shiftS fromMask     _                                                            -> 0  -- | Generate a list of possible moves for the given position.@@ -446,14 +507,14 @@             | otherwise                  = ml   bLong ml  | canCastleQueenside' pos occ = bQscm : ml             | otherwise              = ml-  mkM !from ms !to = move from to : ms+  mkM !from ms !to = move (Sq from) (Sq to) : ms  -- | Returns 'True' if 'Color' is in check in the given position. inCheck :: Color -> Position -> Bool inCheck White Position{qbb} =-  attackedBy Black qbb (occupied qbb) (bitScanForward (QBB.wKings qbb))+  attackedBy Black qbb (occupied qbb) (Sq (bitScanForward (QBB.wKings qbb))) inCheck Black Position{qbb} =-  attackedBy White qbb (occupied qbb) (bitScanForward (QBB.bKings qbb))+  attackedBy White qbb (occupied qbb) (Sq (bitScanForward (QBB.bKings qbb)))  wPawnMoves :: Word64 -> Word64 -> Word64 -> [Ply] -> [Ply] wPawnMoves !pawns !emptySquares !opponentPieces =@@ -469,7 +530,7 @@   mkPly diff ms tsq     | tsq >= 56 = (promoteTo m <$> [Queen, Rook, Bishop, Knight]) <> ms     | otherwise = m : ms-   where m = move (tsq - diff) tsq+   where m = move (Sq (tsq - diff)) (Sq tsq)  bPawnMoves :: Word64 -> Word64 -> Word64 -> [Ply] -> [Ply] bPawnMoves !pawns !emptySquares !opponentPieces =@@ -485,19 +546,19 @@   mkPly diff ms tsq     | tsq <= 7  = (promoteTo m <$> [Queen, Rook, Bishop, Knight]) <> ms     | otherwise = m : ms-   where m = move (tsq + diff) tsq+   where m = move (Sq (tsq + diff)) (Sq  tsq)  slideMoves :: PieceType -> Position -> Word64 -> Word64 -> [Ply] -> [Ply] slideMoves piece (Position bb c _ _ _) !notOurs !occ =   flip (foldBits gen) pieces  where   gen ms from = foldBits (mkPly from) ms (targets from)-  mkPly from ms to = move from to : ms+  mkPly from ms to = move (Sq from) (Sq to) : ms   targets sq = case piece of-    Rook -> rookTargets sq occ .&. notOurs+    Rook   -> rookTargets sq occ .&. notOurs     Bishop -> bishopTargets sq occ .&. notOurs-    Queen -> queenTargets sq occ .&. notOurs-    _ -> error "Not a sliding piece"+    Queen  -> queenTargets sq occ .&. notOurs+    _      -> error "Not a sliding piece"   pieces = case (c, piece) of     (White, Bishop) -> QBB.wBishops bb     (Black, Bishop) -> QBB.bBishops bb@@ -505,7 +566,7 @@     (Black, Rook)   -> QBB.bRooks bb     (White, Queen)  -> QBB.wQueens bb     (Black, Queen)  -> QBB.bQueens bb-    _ -> 0+    _               -> 0  data Castle = Kingside | Queenside deriving (Eq, Ix, Ord, Show) @@ -520,10 +581,10 @@   bqs xs | flags `testMask` crbQs = (Black, Queenside):xs          | otherwise              = xs -enPassantSquare :: Position -> Maybe Sq+enPassantSquare :: Position -> Maybe Square enPassantSquare Position{flags} = case flags .&. epMask of   0 -> Nothing-  x -> Just $ toEnum $ bitScanForward x+  x -> Just . Sq . bitScanForward $ x  canCastleKingside, canCastleQueenside :: Position -> Bool canCastleKingside pos@Position{qbb} = canCastleKingside' pos (occupied qbb)@@ -533,7 +594,7 @@ canCastleKingside' Position{qbb, color = White, flags} !occ =   flags `testMask` crwKs && occ .&. crwKe == 0 &&   not (any (attackedBy Black qbb occ) [E1, F1, G1])-canCastleKingside' Position{qbb, color = Black, flags} !occ = +canCastleKingside' Position{qbb, color = Black, flags} !occ =   flags `testMask` crbKs && occ .&. crbKe == 0 &&   not (any (attackedBy White qbb occ) [E8, F8, G8]) canCastleQueenside' Position{qbb, color = White, flags} !occ =@@ -549,8 +610,8 @@ bKscm = move E8 G8 bQscm = move E8 C8 -attackedBy :: IsSquare sq => Color -> QuadBitboard -> Word64 -> sq -> Bool-attackedBy White qbb !occ (toIndex -> sq)+attackedBy :: Color -> QuadBitboard -> Word64 -> Square -> Bool+attackedBy White qbb !occ (unSquare -> sq)   | (wPawnAttacks ! sq) .&. QBB.wPawns qbb /= 0 = True   | (knightAttacks ! sq) .&. QBB.wKnights qbb /= 0 = True   | bishopTargets sq occ .&. QBB.wBishops qbb /= 0 = True@@ -558,7 +619,7 @@   | queenTargets sq occ .&. QBB.wQueens qbb /= 0 = True   | (kingAttacks ! sq) .&. QBB.wKings qbb /= 0   = True   | otherwise                        = False-attackedBy Black qbb !occ (toIndex -> sq)+attackedBy Black qbb !occ (unSquare -> sq)   | (bPawnAttacks ! sq) .&. QBB.bPawns qbb /= 0 = True   | (knightAttacks ! sq) .&. QBB.bKnights qbb /= 0 = True   | bishopTargets sq occ .&. QBB.bBishops qbb /= 0 = True@@ -617,7 +678,7 @@  getRayTargets :: Int -> Direction -> Word64 -> Word64 getRayTargets sq dir occ = blocked $ attacks .&. occ where-  blocked 0 = attacks+  blocked 0  = attacks   blocked bb = attacks `xor` (ray ! bitScan bb)   attacks = ray ! sq   (bitScan, ray) = case dir of
+ src/Game/Chess/Internal/ECO.hs view
@@ -0,0 +1,167 @@+{-# LANGUAGE GADTs           #-}+{-# LANGUAGE RankNTypes      #-}+{-# LANGUAGE TemplateHaskell #-}+module Game.Chess.Internal.ECO where++import           Control.DeepSeq+import           Control.Exception          (Exception (displayException),+                                             throwIO)+import           Control.Monad+import           Control.Monad.IO.Class+import           Data.Bifunctor+import           Data.Binary+import           Data.ByteString.Char8      (ByteString)+import qualified Data.ByteString.Char8      as BS+import qualified Data.ByteString.Lazy.Char8 as Lazy+import           Data.Char+import           Data.Data+import           Data.Either                (fromRight)+import           Data.FileEmbed             (embedFile)+import           Data.Foldable              (fold)+import           Data.Functor+import           Data.HashMap.Strict        (HashMap)+import qualified Data.HashMap.Strict        as HashMap+import           Data.Hashable              (Hashable)+import           Data.Maybe+import           Data.MonoTraversable       (MonoFoldable (ofoldl'))+import           Data.Ord+import           Data.Ratio+import           Data.Text                  (Text)+import qualified Data.Text                  as T+import           Data.Tree                  (foldTree)+import           Data.Typeable              (Typeable)+import           Data.Vector.Binary+import           Data.Vector.Instances+import qualified Data.Vector.Unboxed        as Unboxed+import           Data.Void+import           Data.Word                  (Word8)+import           GHC.Generics               (Generic)+import           Game.Chess+import           Game.Chess.PGN+import           Game.Chess.SAN+import           Instances.TH.Lift+import           Language.Haskell.TH.Syntax (Lift, Q, TExp, liftTyped)+import           Prelude                    hiding (lookup)+import qualified Prelude+import           System.IO+import           Text.Megaparsec+import           Text.Megaparsec.Byte+import qualified Text.Megaparsec.Byte.Lexer as L++-- | A Chess Opening+data Opening = CO {+  coCode      :: !Text+, coName      :: !Text+, coVariation :: !(Maybe Text)+, coPlies     :: !(Unboxed.Vector Ply)+} deriving (Eq, Generic, Lift, Show)++instance Binary Opening+instance Hashable Opening+instance NFData Opening++type FileReader = forall m. MonadIO m => FilePath -> m (Either String [Opening])++-- | Parse an ECO database in .pgn format+ecoPgn :: FileReader+ecoPgn fp = fmap fromPGN' <$> readPGNFile fp++-- | Parse an ECO database in .eco format+scidEco :: FileReader+scidEco fp = first errorBundlePretty . parse scid' fp <$> liftIO (BS.readFile fp)++-- | Encyclopedia of Chess Openings+newtype ECO = ECO { toHashMap :: HashMap Position Opening }+              deriving (Eq, NFData, Hashable, Semigroup, Monoid)++instance Binary ECO where+  put = put . toList+  get = fromList <$> get++embedECO :: FileReader -> FilePath -> Q (TExp ECO)+embedECO load fp = (fmap.fmap) liftTyped (load fp) >>= \case+  Right xs -> [|| fromList $$(xs) ||]+  Left err -> fail err++toList :: ECO -> [Opening]+toList = map snd . HashMap.toList . toHashMap++fromList :: [Opening] -> ECO+fromList = ECO . HashMap.fromList . fmap (\co -> (pos co, co)) where+  pos = ofoldl' unsafeDoPly startpos . coPlies++-- | Convert a PGN database to ECO assuming the ECO, Opening and Variation tags are+-- being used to identify chess openings.+fromPGN :: PGN -> ECO+fromPGN = fromList . fromPGN'++fromPGN' :: PGN -> [Opening]+fromPGN' (PGN games) = map mkCO games where+  mkCO (tags, (_, forest)) = CO { .. } where+    coCode = fromMaybe "" $ Prelude.lookup "ECO" tags+    coName = fromMaybe "" $ Prelude.lookup "Opening" tags+    coVariation = Prelude.lookup "Variation" tags+    coPlies = Unboxed.fromList . head . concatMap (foldTree g) $ forest where+      g a [] = [[pgnPly a]]+      g a xs = (pgnPly a :) <$> fold xs++opening :: Parser Opening+opening = CO <$> lexeme code <*> lexeme var <*> pure Nothing <*> lexeme (plies startpos)++code :: Parser Text+code = p <?> "code" where+  p = f <$> alphaNumChar <*> many digitChar <*> optional alphaNumChar+  f x xs y = let s = x : xs in T.pack . fmap (chr . fromEnum) $ case y of+    Nothing -> s+    Just y' -> s ++ [y']++var :: Parser Text+var = p <?> "string" where+  p = fmap (T.pack . fmap (chr . fromEnum)) $ single quoteChar *> many ch <* single quoteChar+  ch = single backslashChar *> (  single backslashChar $> backslashChar+                              <|> single quoteChar $> quoteChar+                               )+    <|> anySingleBut quoteChar++plies :: Position -> Parser (Unboxed.Vector Ply)+plies = fmap Unboxed.fromList . go where+  go p = eol <|> line where+    eol = lexeme (string "*") $> []+    line = ply >>= \pl -> (pl :) <$> go (unsafeDoPly p pl)+    ply = validateMoveNumber p *> lexeme (relaxedSAN p)+  validateMoveNumber p =+    optional (lexeme $ L.decimal <* space <* many (single periodChar)) >>= \case+      Just n | moveNumber p /= n ->+        fail $ "Invalid move number: " <> show n <> " /= " <> show (moveNumber p)+      _ -> pure ()++-- | A parser for opening databases in SCID .eco format+scid :: Parser ECO+scid = fromList <$> scid'++scid' :: Parser [Opening]+scid' = spaceConsumer *> many opening <* eof++readECOPGNFile :: MonadIO m => FilePath -> m (Either String ECO)+readECOPGNFile = (fmap . fmap) fromList . ecoPgn++readSCIDECOFile :: MonadIO m => FilePath -> m (Either String ECO)+readSCIDECOFile = (fmap . fmap) fromList . scidEco++-- | Retrieve the opening for a particular position+lookup :: Position -> ECO -> Maybe Opening+lookup pos = HashMap.lookup pos . toHashMap++type Parser = Parsec Void ByteString++spaceConsumer :: Parser ()+spaceConsumer = L.space+  space1 (L.skipLineComment "#") (L.skipBlockComment "{" "}")++lexeme :: Parser a -> Parser a+lexeme = L.lexeme spaceConsumer++periodChar, quoteChar, backslashChar :: Word8+periodChar    = fromIntegral $ ord '.'+quoteChar     = fromIntegral $ ord '"'+backslashChar = fromIntegral $ ord '\\'
src/Game/Chess/Internal/QuadBitboard.hs view
@@ -30,36 +30,39 @@ , whitePromotion, blackPromotion, whitePromotion', blackPromotion' ) where -import Control.Applicative (liftA2)-import Data.Bifunctor (first)-import Data.Binary ( Binary(put, get) )-import Data.Bits-    ( Bits((.|.), (.&.), xor, complement-          , unsafeShiftR, unsafeShiftL, testBit, setBit, clearBit, popCount)-    , FiniteBits(..) )-import Data.Char (ord, toLower)-import Data.Ix ( Ix(inRange) )-import Data.List ( groupBy, intercalate )-import Data.String ( IsString(..) )-import qualified Data.Vector.Generic as G+import           Control.Applicative         (liftA2)+import           Control.DeepSeq+import           Control.Lens                (view, (^.))+import           Control.Lens.Iso            (from)+import           Data.Bifunctor              (first)+import           Data.Binary                 (Binary (get, put))+import           Data.Bits                   (Bits (clearBit, complement, popCount, setBit, testBit, unsafeShiftL, unsafeShiftR, xor, (.&.), (.|.)),+                                              FiniteBits (..))+import           Data.Char                   (ord, toLower)+import           Data.Hashable+import           Data.Ix                     (Ix (inRange))+import           Data.List                   (groupBy, intercalate)+import           Data.String                 (IsString (..))+import qualified Data.Vector.Generic         as G import qualified Data.Vector.Generic.Mutable as M-import Data.Vector.Unboxed (Vector, MVector, Unbox)-import Data.Word (Word8, Word64)-import Foreign.Storable-import Game.Chess.Internal.Square (toIndex, toRF, Sq(A8))-import GHC.Enum-    ( boundedEnumFrom,-      boundedEnumFromThen,-      predError,-      succError,-      toEnumError )-import GHC.Exts (IsList(Item, fromList, toList))-import GHC.Ptr ( castPtr, plusPtr )-import Numeric (showHex)+import           Data.Vector.Unboxed         (MVector, Unbox, Vector)+import           Data.Word                   (Word64, Word8)+import           Foreign.Storable+import           GHC.Enum                    (boundedEnumFrom,+                                              boundedEnumFromThen, predError,+                                              succError, toEnumError)+import           GHC.Exts                    (IsList (Item, fromList, toList))+import           GHC.Generics                (Generic)+import           GHC.Ptr                     (castPtr, plusPtr)+import           Game.Chess.Internal.Square+import           Language.Haskell.TH.Syntax  (Lift)+import           Numeric                     (showHex)  data QuadBitboard = QBB { black, pbq, nbk, rqk :: {-# UNPACK #-} !Word64 }-                    deriving Eq+                    deriving (Eq, Generic, Lift) +instance NFData QuadBitboard+ occupied, pnr, white, pawns, knights, bishops, rooks, queens, kings :: QuadBitboard -> Word64 occupied = liftA2 (.|.) pbq $ liftA2 (.|.) nbk rqk pnr      = liftA2  xor  pbq $ liftA2  xor  nbk rqk@@ -131,13 +134,13 @@ pattern BlackKing   = 13  instance IsList QuadBitboard where-  type Item QuadBitboard = (Sq, Word4)-  fromList = mconcat . map (uncurry singleton . first toIndex)+  type Item QuadBitboard = (Square, Word4)+  fromList = mconcat . map (uncurry singleton)   toList qbb = go maxBound [] where     go sq xs       | sq /= minBound = go (pred sq) xs'       | otherwise      = xs'-     where nb = qbb ! toIndex sq+     where nb = qbb ! sq            xs' | nb /= NoPiece = (sq, nb) : xs                | otherwise     = xs @@ -260,13 +263,13 @@  -- | law: singleton i x ! i = x where inRange (0,63) i && inRange (0,15) x {-# INLINE singleton #-}-singleton :: Int -> Word4 -> QuadBitboard-singleton !sq !nb = QBB (f 0) (f 1) (f 2) (f 3) where+singleton :: Square -> Word4 -> QuadBitboard+singleton (Sq sq) !nb = QBB (f 0) (f 1) (f 2) (f 3) where   !b = 1 `unsafeShiftL` sq   f !n = fromIntegral ((nb `unsafeShiftR` n) .&. 1) * b -(!) :: QuadBitboard -> Int -> Word4-(!) QBB{..} sq = fromIntegral $ f black 0 .|. f pbq 1 .|. f nbk 2 .|. f rqk 3 where+(!) :: QuadBitboard -> Square -> Word4+(!) QBB{..} (Sq sq) = fromIntegral $ f black 0 .|. f pbq 1 .|. f nbk 2 .|. f rqk 3 where   f !bb !n = ((bb `unsafeShiftR` sq) .&. 1) `unsafeShiftL` n  setNibble :: Bits nibble => QuadBitboard -> Int -> nibble -> QuadBitboard@@ -274,17 +277,16 @@   f n | nb `testBit` n = (`setBit` sq)       | otherwise      = (`clearBit` sq) -instance Binary QuadBitboard where-  get = QBB <$> get <*> get <*> get <*> get-  put QBB{..} = put black *> put pbq *> put nbk *> put rqk+instance Binary QuadBitboard  instance IsString QuadBitboard where-  fromString = go (toRF A8) mempty where+  fromString = go (view rankFile A8) mempty where     go _ !qbb "" = qbb-    go (!r,_) qbb ('/':xs) = go (r - 1, 0) qbb xs-    go rf@(!r,!f) !qbb (x:xs)-      | inRange ('1','8') x = go (r, f + ord x - ord '0') qbb xs-      | otherwise = go (r, f + 1) (qbb <> singleton (toIndex rf) nb) xs where+    go (r, _) qbb ('/':xs) = go (pred r, FileA) qbb xs+    go rf@(r, f) !qbb (x:xs)+      | inRange ('1','8') x = go (r, mkFile $ unFile f + ord x - ord '0') qbb xs+      | otherwise = go (r, succ f) (qbb <> singleton sq nb) xs where+        sq = view (from rankFile) rf         nb = case x of           'P' -> WhitePawn           'N' -> WhiteKnight@@ -300,6 +302,10 @@           'k' -> BlackKing           _ -> error $ "QuadBitBoard.fromString: Illegal FEN character " <> show x +instance Hashable QuadBitboard where+  hashWithSalt s QBB{black, pbq, nbk, rqk} =+    s `hashWithSalt` black `hashWithSalt` pbq `hashWithSalt` nbk `hashWithSalt` rqk+ instance Show QuadBitboard where   show QBB{..} =      "QBB {black = 0x" <> showHex black@@ -308,46 +314,46 @@     (", rqk = 0x" <> showHex rqk "}")))  toString :: QuadBitboard -> String-toString qbb = intercalate "/" $ rank <$> [7, 6..0] where-  rank r = concatMap countEmpty . groupBy spaces $ charAt r <$> [0..7]+toString qbb = intercalate "/" $ rank <$> [Rank8, Rank7 .. Rank1] where+  rank r = concatMap countEmpty . groupBy spaces $ charAt r <$> [FileA .. FileH]   countEmpty xs | head xs == spc = show $ length xs                 | otherwise      = xs   spaces x y = x == spc && x == y   charAt r f = maybe spc (if odd nb then toLower else id) $     lookup (nb `div` 2) $ zip [1..] "PNBRQK"-   where nb = qbb ! (r*8+f)+   where nb = qbb ! ((r, f) ^. from rankFile)   spc = ' '  -- | Move a nibble.  Note that this function, while convenient, isn't very -- fast as it needs to lookup the source nibble value.-move :: QuadBitboard -> Int -> Int -> QuadBitboard+move :: QuadBitboard -> Square -> Square -> QuadBitboard move qbb fromSq toSq = qbb <> move' fromSq (qbb ! fromSq) toSq (qbb ! toSq) -move' :: Int -> Word4 -> Int -> Word4 -> QuadBitboard+move' :: Square -> Word4 -> Square -> Word4 -> QuadBitboard move' fromSq fromCode toSq toCode =   singleton fromSq fromCode <> singleton toSq (fromCode `xor` toCode)  whiteKingsideCastle, whiteQueensideCastle, blackKingsideCastle, blackQueensideCastle   :: QuadBitboard-whiteKingsideCastle  = move' 4 WhiteKing 6 NoPiece <> move' 7 WhiteRook 5 NoPiece-whiteQueensideCastle = move' 4 WhiteKing 2 NoPiece <> move' 0 WhiteRook 3 NoPiece-blackKingsideCastle  = move' 60 BlackKing 62 NoPiece <> move' 63 BlackRook 61 NoPiece-blackQueensideCastle = move' 60 BlackKing 58 NoPiece <> move' 56 BlackRook 59 NoPiece+whiteKingsideCastle  = move' E1 WhiteKing G1 NoPiece <> move' H1 WhiteRook F1 NoPiece+whiteQueensideCastle = move' E1 WhiteKing C1 NoPiece <> move' A1 WhiteRook D1 NoPiece+blackKingsideCastle  = move' E8 BlackKing G8 NoPiece <> move' H8 BlackRook F8 NoPiece+blackQueensideCastle = move' E8 BlackKing C8 NoPiece <> move' A8 BlackRook D8 NoPiece -enPassant :: Int -> Int -> QuadBitboard+enPassant :: Square -> Square -> QuadBitboard enPassant fromSq toSq-  | fromSq < toSq-  = move' fromSq WhitePawn toSq NoPiece <> singleton (toSq-8) BlackPawn+  | unSquare fromSq < unSquare toSq+  = move' fromSq WhitePawn toSq NoPiece <> singleton (mkSq $ unSquare toSq - 8) BlackPawn   | otherwise-  = move' fromSq BlackPawn toSq NoPiece <> singleton (toSq+8) WhitePawn+  = move' fromSq BlackPawn toSq NoPiece <> singleton (mkSq $ unSquare toSq + 8) WhitePawn -whitePromotion, blackPromotion :: QuadBitboard -> Int -> Int -> Word4 -> QuadBitboard+whitePromotion, blackPromotion :: QuadBitboard -> Square -> Square -> Word4 -> QuadBitboard whitePromotion qbb fromSq toSq promoCode =   qbb <> whitePromotion' fromSq toSq (qbb ! toSq) promoCode blackPromotion qbb fromSq toSq promoCode =   qbb <> blackPromotion' fromSq toSq (qbb ! toSq) promoCode -whitePromotion', blackPromotion' :: Int -> Int -> Word4 -> Word4 -> QuadBitboard+whitePromotion', blackPromotion' :: Square -> Square -> Word4 -> Word4 -> QuadBitboard whitePromotion' fromSq toSq toCode promoCode =   singleton fromSq WhitePawn <> singleton toSq (toCode `xor` promoCode) blackPromotion' fromSq toSq toCode promoCode =
src/Game/Chess/Internal/Square.hs view
@@ -1,43 +1,234 @@-module Game.Chess.Internal.Square (-  IsSquare(..), Sq(..), isDark, isLight, toCoord-) where+module Game.Chess.Internal.Square where -import Data.Bits (Bits(testBit))-import Data.Char (chr, ord)-import Data.Ix (Ix)-import Data.String (IsString(fromString))-import Data.Word+import           Control.Lens.Iso+import           Data.Bits        (Bits (testBit))+import           Data.Char        (chr, ord)+import           Data.Coerce      (coerce)+import           Data.Ix          (Ix (..))+import           Data.String      (IsString (fromString))+import           Data.Word+import           GHC.Stack        (HasCallStack) -class IsSquare sq where-  toIndex :: sq -> Int-  toRF :: sq -> (Int, Int)-  toRF sq = toIndex sq `divMod` 8+newtype Rank = Rank Int deriving (Eq, Ord) -instance IsSquare Int where-  toIndex = id+unRank :: Rank -> Int+unRank = coerce -instance IsSquare (Int, Int) where-  toIndex (r, f) = r*8 + f-  toRF = id+mkRank :: HasCallStack => Int -> Rank+mkRank n | n >= 0 && n <= 7 = Rank n+         | otherwise        = error $ "mkRank " ++ show n -data Sq = A1 | B1 | C1 | D1 | E1 | F1 | G1 | H1-        | A2 | B2 | C2 | D2 | E2 | F2 | G2 | H2-        | A3 | B3 | C3 | D3 | E3 | F3 | G3 | H3-        | A4 | B4 | C4 | D4 | E4 | F4 | G4 | H4-        | A5 | B5 | C5 | D5 | E5 | F5 | G5 | H5-        | A6 | B6 | C6 | D6 | E6 | F6 | G6 | H6-        | A7 | B7 | C7 | D7 | E7 | F7 | G7 | H7-        | A8 | B8 | C8 | D8 | E8 | F8 | G8 | H8-        deriving (Bounded, Enum, Eq, Ix, Ord, Show, Read)+instance Show Rank where+  showsPrec _ (Rank 0) = showString "Rank1"+  showsPrec _ (Rank 1) = showString "Rank2"+  showsPrec _ (Rank 2) = showString "Rank3"+  showsPrec _ (Rank 3) = showString "Rank4"+  showsPrec _ (Rank 4) = showString "Rank5"+  showsPrec _ (Rank 5) = showString "Rank6"+  showsPrec _ (Rank 6) = showString "Rank7"+  showsPrec _ (Rank 7) = showString "Rank8"+  showsPrec d (Rank n) = showParen (d > 10) $+                         showString "Rank " . showsPrec 11 n -instance IsSquare Sq where-  toIndex = fromEnum+instance Enum Rank where+  toEnum n | n >= 0 && n <= 7 = Rank n+           | otherwise        = error $ "Rank out-of-bound " ++ show n+  fromEnum = coerce -toCoord :: (IsSquare sq, IsString s) => sq -> s-toCoord (toRF -> (r,f)) = fromString [chr (f + ord 'a'), chr (r + ord '1')]+instance Bounded Rank where+  minBound = Rank1+  maxBound = Rank8 -isDark :: IsSquare sq => sq -> Bool-isDark sq = (0xaa55aa55aa55aa55 :: Word64) `testBit` toIndex sq+pattern Rank1, Rank2, Rank3, Rank4, Rank5, Rank6, Rank7, Rank8 :: Rank+pattern Rank1 = Rank 0+pattern Rank2 = Rank 1+pattern Rank3 = Rank 2+pattern Rank4 = Rank 3+pattern Rank5 = Rank 4+pattern Rank6 = Rank 5+pattern Rank7 = Rank 6+pattern Rank8 = Rank 7 -isLight :: IsSquare sq => sq -> Bool+{-# COMPLETE Rank1, Rank2, Rank3, Rank4, Rank5, Rank6, Rank7, Rank8 :: Rank #-}++newtype File = File Int deriving (Eq, Ord)++unFile :: File -> Int+unFile = coerce++mkFile :: HasCallStack => Int -> File+mkFile n | n >= 0 && n <= 7 = File n+         | otherwise        = error $ "mkFile " ++ show n++instance Show File where+  showsPrec _ (File 0) = showString "FileA"+  showsPrec _ (File 1) = showString "FileB"+  showsPrec _ (File 2) = showString "FileC"+  showsPrec _ (File 3) = showString "FileD"+  showsPrec _ (File 4) = showString "FileE"+  showsPrec _ (File 5) = showString "FileF"+  showsPrec _ (File 6) = showString "FileG"+  showsPrec _ (File 7) = showString "FileH"+  showsPrec d (File n) = showParen (d > 10) $+                         showString "File " . showsPrec 11 n++instance Enum File where+  toEnum n | n >= 0 && n <= 7 = File n+           | otherwise        = error $ "File out-of-bound " ++ show n+  fromEnum = coerce++instance Bounded File where+  minBound = FileA+  maxBound = FileH++pattern FileA, FileB, FileC, FileD, FileE, FileF, FileG, FileH :: File+pattern FileA = File 0+pattern FileB = File 1+pattern FileC = File 2+pattern FileD = File 3+pattern FileE = File 4+pattern FileF = File 5+pattern FileG = File 6+pattern FileH = File 7++{-# COMPLETE FileA, FileB, FileC, FileD, FileE, FileF, FileG, FileH :: File #-}++newtype Square = Sq Int deriving (Eq, Ord)++instance Ix Square where+  range (Sq i, Sq j) = [Sq k | k <- [i..j]]+  index (Sq i, Sq j) (Sq k) = index (i, j) k+  inRange (Sq i, Sq j) (Sq k) = inRange (i, j) k+  rangeSize (Sq i, Sq j) = j - i++unSquare :: Square -> Int+unSquare = coerce+{-# INLINE unSquare #-}++-- TODO: this check is expensive, maybe only worth in "debug" builds.+mkSq :: HasCallStack => Int -> Square+mkSq n | n >= 0 && n <= 63 = Sq n+       | otherwise         = error $ "mkSq " ++ show n++instance Show Square where+  showsPrec d (Sq i) | i >= 0 && i <= 63 = showString [f', r']+                     | otherwise         = showParen (d > 10) $+                                           showString "Sq " . showsPrec 11 i+      where+        (r, f) = i `divMod` 8+        r' = chr (r + ord '1')+        f' = chr (f + ord 'A')++instance Enum Square where+  toEnum n | n >= 0 && n <= 63 = Sq n+           | otherwise         = error $ "Sq out-of-bound " ++ show n+  fromEnum = coerce++instance Bounded Square where+  minBound = A1+  maxBound = H8++pattern A1, A2, A3, A4, A5, A6, A7, A8 :: Square+pattern B1, B2, B3, B4, B5, B6, B7, B8 :: Square+pattern C1, C2, C3, C4, C5, C6, C7, C8 :: Square+pattern D1, D2, D3, D4, D5, D6, D7, D8 :: Square+pattern E1, E2, E3, E4, E5, E6, E7, E8 :: Square+pattern F1, F2, F3, F4, F5, F6, F7, F8 :: Square+pattern G1, G2, G3, G4, G5, G6, G7, G8 :: Square+pattern H1, H2, H3, H4, H5, H6, H7, H8 :: Square++pattern A1 = Sq 0+pattern B1 = Sq 1+pattern C1 = Sq 2+pattern D1 = Sq 3+pattern E1 = Sq 4+pattern F1 = Sq 5+pattern G1 = Sq 6+pattern H1 = Sq 7++pattern A2 = Sq 8+pattern B2 = Sq 9+pattern C2 = Sq 10+pattern D2 = Sq 11+pattern E2 = Sq 12+pattern F2 = Sq 13+pattern G2 = Sq 14+pattern H2 = Sq 15++pattern A3 = Sq 16+pattern B3 = Sq 17+pattern C3 = Sq 18+pattern D3 = Sq 19+pattern E3 = Sq 20+pattern F3 = Sq 21+pattern G3 = Sq 22+pattern H3 = Sq 23++pattern A4 = Sq 24+pattern B4 = Sq 25+pattern C4 = Sq 26+pattern D4 = Sq 27+pattern E4 = Sq 28+pattern F4 = Sq 29+pattern G4 = Sq 30+pattern H4 = Sq 31++pattern A5 = Sq 32+pattern B5 = Sq 33+pattern C5 = Sq 34+pattern D5 = Sq 35+pattern E5 = Sq 36+pattern F5 = Sq 37+pattern G5 = Sq 38+pattern H5 = Sq 39++pattern A6 = Sq 40+pattern B6 = Sq 41+pattern C6 = Sq 42+pattern D6 = Sq 43+pattern E6 = Sq 44+pattern F6 = Sq 45+pattern G6 = Sq 46+pattern H6 = Sq 47++pattern A7 = Sq 48+pattern B7 = Sq 49+pattern C7 = Sq 50+pattern D7 = Sq 51+pattern E7 = Sq 52+pattern F7 = Sq 53+pattern G7 = Sq 54+pattern H7 = Sq 55++pattern A8 = Sq 56+pattern B8 = Sq 57+pattern C8 = Sq 58+pattern D8 = Sq 59+pattern E8 = Sq 60+pattern F8 = Sq 61+pattern G8 = Sq 62+pattern H8 = Sq 63++rank :: Square -> Rank+rank = Rank . (`div` 8) . coerce++file :: Square -> File+file = File . (`mod` 8) . coerce++rankFile :: Iso' Square (Rank, File)+rankFile = iso f g where+  f (Sq i) = case i `divMod` 8 of (r, f) -> (Rank r, File f)+  g (Rank r, File f) = Sq $ r*8 + f++fileChar, rankChar :: Square -> Char+fileChar = chr . (ord 'a' +) . unFile . file+rankChar = chr . (ord '1' +) . unRank . rank++toCoord :: IsString s => Square -> s+toCoord sq = fromString $ ($ sq) <$> [fileChar, rankChar]++isDark :: Square -> Bool+isDark (Sq i) = (0xaa55aa55aa55aa55 :: Word64) `testBit` i++isLight :: Square -> Bool isLight = not . isDark
src/Game/Chess/PGN.hs view
@@ -1,34 +1,47 @@ {-# LANGUAGE GADTs #-}+{-|+Module      : Game.Chess.PGN+Description : Portable Game Notation+Copyright   : (c) Mario Lang, 2021+License     : BSD3+Maintainer  : mlang@blind.guru+Stability   : experimental++A PGN file consists of a list of games.+Each game consists of a tag list, the outcome, and a forest of rosetrees.+-} module Game.Chess.PGN (-  readPGNFile, gameFromForest, pgnForest, PGN(..), Game(..), Outcome(..)+  readPGNFile, gameFromForest, pgnForest, PGN(..), Game(..), Outcome(..), PlyData(..)+, pgn , hPutPGN, pgnDoc, RAVOrder, breadthFirst, depthFirst, gameDoc , weightedForest ) where -import Control.Monad-import Data.Bifunctor-import Data.ByteString.Char8 (ByteString)-import qualified Data.ByteString.Char8 as BS-import Data.Char-import Data.Foldable-import Data.Functor-import Data.List-import Data.Maybe-import Data.Ord-import Data.Ratio-import Data.Text (Text)-import qualified Data.Text as T-import Data.Text.Prettyprint.Doc hiding (space)-import Data.Text.Prettyprint.Doc.Render.Text-import Data.Tree-import Data.Word-import Data.Void-import Game.Chess-import Game.Chess.SAN-import System.IO-import Text.Megaparsec-import Text.Megaparsec.Byte-import qualified Text.Megaparsec.Byte.Lexer as L+import           Control.Monad+import           Control.Monad.IO.Class+import           Data.Bifunctor+import           Data.ByteString.Char8                 (ByteString)+import qualified Data.ByteString.Char8                 as BS+import           Data.Char+import           Data.Foldable+import           Data.Functor+import           Data.List+import           Data.Maybe+import           Data.Ord+import           Data.Ratio+import           Data.Text                             (Text)+import qualified Data.Text                             as T+import           Data.Text.Prettyprint.Doc             hiding (space)+import           Data.Text.Prettyprint.Doc.Render.Text+import           Data.Tree+import           Data.Void+import           Data.Word+import           Game.Chess+import           Game.Chess.SAN+import           System.IO+import           Text.Megaparsec+import           Text.Megaparsec.Byte+import qualified Text.Megaparsec.Byte.Lexer            as L  gameFromForest :: [(ByteString, Text)] -> Forest Ply -> Outcome -> Game gameFromForest tags forest o = (("Result", r):tags, (o, (fmap . fmap) f forest)) where@@ -59,12 +72,12 @@   instance Ord Outcome where-  Win _ `compare` Win _ = EQ-  Win _ `compare` _ = GT-  _ `compare` Win _ = LT-  Draw `compare` Draw = EQ-  Draw `compare` _ = GT-  _ `compare` Draw = LT+  Win _ `compare` Win _         = EQ+  Win _ `compare` _             = GT+  _ `compare` Win _             = LT+  Draw `compare` Draw           = EQ+  Draw `compare` _              = GT+  _ `compare` Draw              = LT   Undecided `compare` Undecided = EQ  instance Pretty Outcome where@@ -75,12 +88,12 @@  data PlyData = PlyData {   prefixNAG :: ![Int]-, pgnPly :: !Ply+, pgnPly    :: !Ply , suffixNAG :: ![Int] } deriving (Eq, Show) -readPGNFile :: FilePath -> IO (Either String PGN)-readPGNFile fp = first errorBundlePretty . parse pgn fp <$> BS.readFile fp+readPGNFile :: MonadIO m => FilePath -> m (Either String PGN)+readPGNFile fp = liftIO $ first errorBundlePretty . parse pgn fp <$> BS.readFile fp  hPutPGN :: Handle -> RAVOrder (Doc ann) -> PGN -> IO () hPutPGN h ro (PGN games) = for_ games $ \g -> do@@ -165,17 +178,17 @@   pos <- case lookup "FEN" tl of     Nothing -> pure startpos     Just fen -> case fromFEN (T.unpack fen) of-      Just p -> pure p+      Just p  -> pure p       Nothing -> fail "Invalid FEN"   (tl,) <$> movetext pos-  + str :: Parser Text str = p <?> "string" where   p = fmap (T.pack . fmap (chr . fromEnum)) $ single quoteChar *> many ch <* single quoteChar   ch = single backslashChar *> (  single backslashChar $> backslashChar-                          <|> single quoteChar $> quoteChar-                           )-   <|> anySingleBut quoteChar+                              <|> single quoteChar $> quoteChar+                               )+    <|> anySingleBut quoteChar  type RAVOrder a = (Forest PlyData -> a) -> Forest PlyData -> [a] @@ -200,8 +213,8 @@   tagpair (k, esc -> v) = brackets $ pretty (BS.unpack k) <+> dquotes (pretty v)   esc = T.concatMap e where     e '\\' = T.pack "\\\\"-    e '"' = T.pack "\\\""-    e c = T.singleton c+    e '"'  = T.pack "\\\""+    e c    = T.singleton c  moveDoc :: RAVOrder (Doc ann) -> Position -> (Outcome, Forest PlyData) -> Doc ann moveDoc ro p (o,f) = fillSep (go p True f <> [pretty o]) <> line where@@ -231,7 +244,7 @@         | otherwise = 0     f pos (Node a ts') = Node (w (color pos), pgnPly a) $       f (unsafeDoPly pos (pgnPly a)) <$> ts'-  trunk [] = []+  trunk []    = []   trunk (x:_) = [x { subForest = trunk (subForest x)}]   merge [] = []   merge ((Node a ts) : xs) =
src/Game/Chess/Polyglot.hs view
@@ -1,5 +1,5 @@ {-# LANGUAGE ScopedTypeVariables #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TemplateHaskell     #-} module Game.Chess.Polyglot (   -- * Data type   PolyglotBook@@ -17,34 +17,34 @@ , findPosition ) where -import Control.Arrow-import Control.Monad.Random (Rand)-import qualified Control.Monad.Random as Rand-import Data.Bits-import Data.ByteString (ByteString)+import           Control.Arrow+import           Control.Monad.Random     (Rand)+import qualified Control.Monad.Random     as Rand+import           Data.Bits+import           Data.ByteString          (ByteString)+import qualified Data.ByteString          as BS import qualified Data.ByteString.Internal as BS-import qualified Data.ByteString as BS-import Data.FileEmbed-import Data.Foldable (fold)-import Data.List-import Data.Ord-import Data.String (IsString(fromString))-import qualified Data.Vector.Storable as VS-import Data.Tree-import Data.Word-import Foreign.ForeignPtr (castForeignPtr, plusForeignPtr)-import Foreign.Storable-import Game.Chess.Internal-import Game.Chess.PGN-import Game.Chess.Polyglot.Hash-import GHC.Ptr (Ptr, castPtr, plusPtr)-import System.Random (RandomGen)+import           Data.FileEmbed+import           Data.Foldable            (fold)+import           Data.List+import           Data.Ord+import           Data.String              (IsString (fromString))+import           Data.Tree+import qualified Data.Vector.Storable     as VS+import           Data.Word+import           Foreign.ForeignPtr       (castForeignPtr, plusForeignPtr)+import           Foreign.Storable+import           GHC.Ptr                  (Ptr, castPtr, plusPtr)+import           Game.Chess.Internal+import           Game.Chess.PGN+import           Game.Chess.Polyglot.Hash+import           System.Random            (RandomGen)  data BookEntry = BookEntry {-  key :: {-# UNPACK #-} !Word64-, ply :: {-# UNPACK #-} !Ply+  key    :: {-# UNPACK #-} !Word64+, ply    :: {-# UNPACK #-} !Ply , weight :: {-# UNPACK #-} !Word16-, learn :: {-# UNPACK #-} !Word32+, learn  :: {-# UNPACK #-} !Word32 } deriving (Eq, Show)  instance Ord BookEntry where@@ -67,12 +67,12 @@ peekBE :: forall a. (Bits a, Num a, Storable a) => Ptr Word8 -> IO a peekBE ptr = go ptr 0 (sizeOf (undefined :: a)) where   go _ !x 0 = pure x-  go !p !x !n = peek p >>= \w8 -> +  go !p !x !n = peek p >>= \w8 ->     go (p `plusPtr` 1) (x `shiftL` 8 .|. fromIntegral w8) (n - 1)  pokeBE :: forall a. (Bits a, Integral a, Num a, Storable a) => Ptr Word8 -> a -> IO () pokeBE p x = go x (sizeOf x) where-  go _ 0 = pure ()+  go _ 0   = pure ()   go !v !n = pokeElemOff p (n-1) (fromIntegral v) *> go (v `shiftR` 8) (n-1)  defaultBook, twic :: PolyglotBook@@ -134,7 +134,7 @@ bookPly :: RandomGen g => PolyglotBook -> Position -> Maybe (Rand g Ply) bookPly b pos = case findPosition b pos of   [] -> Nothing-  l -> Just . Rand.fromList $ map (ply &&& fromIntegral . weight) l+  l  -> Just . Rand.fromList $ map (ply &&& fromIntegral . weight) l  -- | Probe the book for all plies known for the given position. bookPlies :: PolyglotBook -> Position -> [Ply]
src/Game/Chess/Polyglot/Hash.hs view
@@ -2,16 +2,16 @@   hashPosition, pieceKey, castleKey, epKeys, turnKey ) where -import Data.Bits-import Data.Maybe+import           Data.Bits+import           Data.Ix+import           Data.Maybe import qualified Data.Vector.Unboxed as Unboxed-import Data.Ix-import Data.Word-import Game.Chess+import           Data.Word+import           Game.Chess  hashPosition :: Position -> Word64 hashPosition pos = piece `xor` castling `xor` ep `xor` turn where-  piece = foldr xor 0 $ mapMaybe f [A1 .. ] where+  piece = foldr xor 0 $ mapMaybe f [A1 .. H8] where     f sq = (\(c, p) -> pieceKey (p, c, sq)) <$> pieceAt pos sq   castling = foldr (xor . castleKey) 0 $ castlingRights pos   ep = 0 -- TODO@@ -19,7 +19,7 @@     White -> turnKey     Black -> 0 -pieceKey :: (PieceType, Color, Sq) -> Word64+pieceKey :: (PieceType, Color, Square) -> Word64 pieceKey = Unboxed.unsafeIndex pieceKeys . index ((Pawn,Black,A1),(King,White,H8))  castleKey :: (Color, Castle) -> Word64
src/Game/Chess/SAN.hs view
@@ -1,8 +1,11 @@-{-# LANGUAGE PolyKinds, FlexibleInstances, GADTs, ScopedTypeVariables #-}+{-# LANGUAGE FlexibleInstances   #-}+{-# LANGUAGE GADTs               #-}+{-# LANGUAGE PolyKinds           #-}+{-# LANGUAGE ScopedTypeVariables #-} {-| Module      : Game.Chess.SAN Description : Standard Algebraic Notation-Copyright   : (c) Mario Lang, 2020+Copyright   : (c) Mario Lang, 2021 License     : BSD3 Maintainer  : mlang@blind.guru Stability   : experimental@@ -18,36 +21,44 @@ , varToSAN ) where -import           Control.Applicative (Applicative(liftA2))-import           Control.Arrow ((&&&))-import           Data.Bifunctor (first)-import qualified Data.ByteString as Strict (ByteString)-import qualified Data.ByteString.Lazy as Lazy (ByteString)-import           Data.Char (chr, ord)-import           Data.Functor (($>))-import           Data.List (sortOn)-import           Data.List.Extra (chunksOf)-import           Data.Maybe (fromJust)-import           Data.Ord (Down(..))-import           Data.Proxy ( Proxy(..) )-import           Data.String (IsString(fromString))-import qualified Data.Text as Strict (Text)-import qualified Data.Text.Lazy as Lazy (Text)-import           Data.Traversable (mapAccumL)-import           Data.Void (Void)-import           Data.Word ( Word8 )-import Game.Chess.Internal ( Castle(Queenside, Kingside),-                             Ply, Position(color, moveNumber), Color(Black, White),-                             PieceType(..), isCapture, pieceAt,-                             promoteTo, plySource, plyTarget, unpack, doPly, unsafeDoPly, legalPlies,-                             inCheck, canCastleKingside, canCastleQueenside,-                             wKscm, wQscm, bKscm, bQscm )-import Game.Chess.Internal.Square (toIndex, toRF, toCoord)-import Text.Megaparsec ( optional, (<|>), empty, (<?>), chunk, parse,-                         errorBundlePretty, choice, option, Parsec,-                         MonadParsec(try, token),-                         Stream, TraversableStream, VisualStream,-                         Token, Tokens, chunkLength )+import           Control.Applicative        (Applicative (liftA2))+import           Control.Arrow              ((&&&))+import           Control.Lens               (view)+import           Control.Lens.Iso           (from)+import           Data.Bifunctor             (first)+import qualified Data.ByteString            as Strict (ByteString)+import qualified Data.ByteString.Lazy       as Lazy (ByteString)+import           Data.Char                  (chr, ord)+import           Data.Functor               (($>))+import           Data.List                  (sortOn)+import           Data.List.Extra            (chunksOf)+import           Data.Maybe                 (fromJust)+import           Data.MonoTraversable       (Element, MonoFoldable (otoList))+import           Data.Ord                   (Down (..))+import           Data.Proxy                 (Proxy (..))+import           Data.String                (IsString (fromString))+import qualified Data.Text                  as Strict (Text)+import qualified Data.Text.Lazy             as Lazy (Text)+import           Data.Traversable           (mapAccumL)+import           Data.Void                  (Void)+import           Data.Word                  (Word8)+import           GHC.Stack                  (HasCallStack)+import           Game.Chess.Internal        (Castle (Kingside, Queenside),+                                             Color (Black, White),+                                             PieceType (..), Ply,+                                             Position (color, moveNumber),+                                             bKscm, bQscm, canCastleKingside,+                                             canCastleQueenside, doPly, inCheck,+                                             isCapture, legalPlies, pieceAt,+                                             plySource, plyTarget, promoteTo,+                                             unpack, unsafeDoPly, wKscm, wQscm)+import           Game.Chess.Internal.Square+import           Text.Megaparsec            (MonadParsec (token, try), Parsec,+                                             Stream, Token, Tokens,+                                             TraversableStream, VisualStream,+                                             choice, chunk, chunkLength, empty,+                                             errorBundlePretty, option,+                                             optional, parse, (<?>), (<|>))  type Parser s = Parsec Void s @@ -68,9 +79,9 @@   castleMove Queenside | color pos == White = wQscm                        | otherwise          = bQscm -data From = File Int-          | Rank Int-          | Square Int+data From = F File+          | R Rank+          | RF Square           deriving (Eq, Show)  data SANStatus = Check | Checkmate deriving (Eq, Read, Show)@@ -85,10 +96,12 @@ sanPiece :: (Stream s, SANToken (Token s)) => Parser s PieceType sanPiece = token sanPieceToken mempty <?> "piece" -fileP, rankP, squareP :: (Stream s, SANToken (Token s)) => Parser s Int-fileP = token fileToken mempty <?> "file"-rankP = token rankToken mempty <?> "rank"-squareP = liftA2 (flip $ curry toIndex) fileP rankP <?> "square"+fileP :: (Stream s, SANToken (Token s)) => Parser s File+fileP = mkFile <$> token fileToken mempty <?> "file"+rankP :: (Stream s, SANToken (Token s)) => Parser s Rank+rankP = mkRank <$> token rankToken mempty <?> "rank"+squareP :: (Stream s, SANToken (Token s)) => Parser s Square+squareP = liftA2 (flip . curry $ view (from rankFile)) fileP rankP <?> "square"  promotionPiece :: (Stream s, SANToken (Token s)) => Parser s PieceType promotionPiece = token promotionPieceToken mempty <?> "Q, R, B, N"@@ -103,7 +116,7 @@     'R' -> Just Rook     'Q' -> Just Queen     'K' -> Just King-    _ -> Nothing+    _   -> Nothing   fileToken c | c >= 'a' && c <= 'h' = Just $ ord c - ord 'a'               | otherwise  = Nothing   rankToken c | c >= '1' && c <= '8' = Just $ ord c - ord '1'@@ -113,11 +126,11 @@     'B' -> Just Bishop     'R' -> Just Rook     'Q' -> Just Queen-    _ -> Nothing+    _   -> Nothing   statusToken = \case     '+' -> Just Check     '#' -> Just Checkmate-    _ -> Nothing+    _   -> Nothing  instance SANToken Word8 where   sanPieceToken = \case@@ -126,7 +139,7 @@     82 -> Just Rook     81 -> Just Queen     75 -> Just King-    _ -> Nothing+    _  -> Nothing   rankToken c | c >= 49 && c <= 56 = Just . fromIntegral $ c - 49               | otherwise  = Nothing   fileToken c | c >= 97 && c <= 104 = Just . fromIntegral $ c - 97@@ -136,11 +149,11 @@     66 -> Just Bishop     82 -> Just Rook     81 -> Just Queen-    _ -> Nothing+    _  -> Nothing   statusToken = \case     43 -> Just Check     35 -> Just Checkmate-    _ -> Nothing+    _  -> Nothing  strictSAN :: forall s. (Stream s, SANToken (Token s), IsString (Tokens s))           => Position -> Parser s Ply@@ -156,12 +169,12 @@   pieceFrom p (plySource -> from) = p == snd (fromJust (pieceAt pos from))   target p ms = coords p ms >>= \m@(plyTarget -> to) -> case p of     Pawn | lastRank to -> promoteTo m <$> promotion-    _ -> pure m+    _                  -> pure m   coords p ms = choice $ fmap (uncurry (<$) . fmap chunk) $     sortOn (Down . chunkLength (Proxy :: Proxy s) . snd) $     (\m -> (m, sanCoords pos (p,ms) m)) <$> ms   promotion = chunk "=" *> promotionPiece-  lastRank i = i >= 56 || i <= 7+  lastRank (rank -> r) = r == Rank1 || r == Rank8   checkStatus m     | inCheck (color nextPos) nextPos && null (legalPlies nextPos)     = chunk "#" $> m@@ -181,12 +194,12 @@     prm <- optional $ optional (chunk "=") *> promotionPiece     case possible pc from to prm of       [m] -> pure m-      [] -> fail "Illegal move"-      _ -> fail "Ambiguous move"+      []  -> fail "Illegal move"+      _   -> fail "Ambiguous move"   conv (Nothing, Nothing, cap, to) = (Nothing, cap, to)-  conv (Just f, Nothing, cap, to) = (Just (File f), cap, to)-  conv (Nothing, Just r, cap, to) = (Just (Rank r), cap, to)-  conv (Just f, Just r, cap, to) = (Just (Square (r*8+f)), cap, to)+  conv (Just f, Nothing, cap, to) = (Just (F f), cap, to)+  conv (Nothing, Just r, cap, to) = (Just (R r), cap, to)+  conv (Just f, Just r, cap, to) = (Just (RF (view (from rankFile) (r, f))), cap, to)   location = try ((,Nothing,,) <$> (Just <$> fileP) <*> capture <*> squareP)          <|> try ((Nothing,,,) <$> (Just <$> rankP) <*> capture <*> squareP)          <|> try ((,,,) <$> (Just <$> fileP) <*> (Just <$> rankP)@@ -195,12 +208,12 @@   capture = option False $ chunk "x" $> True   ms = legalPlies pos   possible pc from to prm = filter (f from) ms where-    f (Just (Square sq)) (unpack -> (from', to', prm')) =+    f (Just (RF sq)) (unpack -> (from', to', prm')) =       pAt from' == pc && from' == sq && to' == to && prm' == prm-    f (Just (File ff)) (unpack -> (from', to', prm')) =-      pAt from' == pc && from' `mod` 8 == ff && to == to' && prm == prm'-    f (Just (Rank fr)) (unpack -> (from', to', prm')) =-      pAt from' == pc && from' `div` 8 == fr && to == to' && prm == prm'+    f (Just (F ff)) (unpack -> (from', to', prm')) =+      pAt from' == pc && file from' == ff && to == to' && prm == prm'+    f (Just (R fr)) (unpack -> (from', to', prm')) =+      pAt from' == pc && rank from' == fr && to == to' && prm == prm'     f Nothing (unpack -> (from', to', prm')) =       pAt from' == pc && to == to' && prm == prm'   pAt = snd . fromJust . pieceAt pos@@ -209,26 +222,27 @@         => Position -> s -> Either String Ply fromSAN pos = first errorBundlePretty . parse (relaxedSAN pos) "" -toSAN :: IsString s => Position -> Ply -> s+toSAN :: (HasCallStack, IsString s) => Position -> Ply -> s toSAN pos m   | m `elem` legalPlies pos = fromString $ unsafeToSAN pos m-  | otherwise          = error "Game.Chess.toSAN: Illegal move"+  | otherwise               = error "Game.Chess.toSAN: Illegal move" -varToSAN :: IsString s => Position -> [Ply] -> s-varToSAN _ [] = ""-varToSAN pos plies-  | color pos == Black && length plies == 1-  = fromString $ show (moveNumber pos) <> "..." <> toSAN pos (head plies)-  | color pos == Black-  = fromString $ show (moveNumber pos) <> "..." <> toSAN pos (head plies) <> " " <> fromWhite (doPly pos (head plies)) (tail plies)-  | otherwise-  = fromString $ fromWhite pos plies- where-  fromWhite pos' = unwords . concat-                 . zipWith f [moveNumber pos' ..] . chunksOf 2 . snd-                 . mapAccumL (curry (uncurry doPly &&& uncurry toSAN)) pos'+varToSAN :: (MonoFoldable variation, Element variation ~ Ply, IsString string)+         => Position -> variation -> string+varToSAN p = fromString . go p . otoList where+  go pos [] = ""+  go pos plies+    | color pos == Black && length plies == 1+    = show (moveNumber pos) <> "..." <> toSAN pos (head plies)+    | color pos == Black+    = show (moveNumber pos) <> "..." <> toSAN pos (head plies) <> " " <> fromWhite (doPly pos (head plies)) (tail plies)+    | otherwise+    = fromWhite pos plies+  fromWhite pos = unwords . concat+                . zipWith f [moveNumber pos ..] . chunksOf 2 . snd+                . mapAccumL (curry (uncurry doPly &&& uncurry toSAN)) pos   f n (x:xs) = (show n <> "." <> x):xs-  f _ [] = []+  f _ []     = []  sanCoords :: IsString s => Position -> (PieceType, [Ply]) -> Ply -> s sanCoords pos (pc,lms) m@(unpack -> (from, to, _)) =@@ -236,28 +250,19 @@  where   capture = isCapture pos m   source-    | pc == Pawn && capture-    = [fileChar from]-    | pc == Pawn-    = []-    | length ms == 1-    = []-    | length (filter fEq ms) == 1-    = [fileChar from]-    | length (filter rEq ms) == 1-    = [rankChar from]-    | otherwise-    = toCoord from+    | pc == Pawn && capture       = [fileChar from]+    | pc == Pawn                  = []+    | length ms == 1              = []+    | length (filter fEq ms) == 1 = [fileChar from]+    | length (filter rEq ms) == 1 = [rankChar from]+    | otherwise                   = toCoord from   target-    | capture = "x" <> toCoord to+    | capture   = "x" <> toCoord to     | otherwise = toCoord to-  ms = filter (isMoveTo to) lms-  isMoveTo sq (plyTarget -> to') = sq == to'-  fEq (plySource -> from') = from' `mod` 8 == fromFile-  rEq (plySource -> from') = from' `div` 8 == fromRank-  (fromRank, fromFile) = toRF from-  fileChar i = chr $ (i `mod` 8) + ord 'a'-  rankChar i = chr $ (i `div` 8) + ord '1'+  ms = filter ((to ==) . plyTarget) lms+  fEq (file . plySource -> file) = file == fromFile+  rEq (rank . plySource -> rank) = rank == fromRank+  (fromRank, fromFile) = view rankFile from  unsafeToSAN :: Position -> Ply -> String unsafeToSAN pos m@(unpack -> (from, to, promo)) =@@ -290,22 +295,17 @@     Just Bishop -> "B"     Just Rook   -> "R"     Just Queen  -> "Q"-    _      -> ""-  status | inCheck (color nextPos) nextPos && null (legalPlies nextPos)-         = "#"-         | inCheck (color nextPos) nextPos-         = "+"-         | otherwise-         = ""+    _           -> ""+  status | inCheck (color nextPos) nextPos && null (legalPlies nextPos) = "#"+         | inCheck (color nextPos) nextPos                              = "+"+         | otherwise                                                    = ""   nextPos = unsafeDoPly pos m   ms = filter movesTo $ legalPlies pos   movesTo (unpack -> (from', to', _)) =     fmap snd (pieceAt pos from') == Just piece && to' == to-  fEq (plySource -> from') = from' `mod` 8 == fromFile-  rEq (plySource -> from') = from' `div` 8 == fromRank-  (fromRank, fromFile) = toRF from-  fileChar i = chr $ (i `mod` 8) + ord 'a'-  rankChar i = chr $ (i `div` 8) + ord '1'+  fEq (file . plySource -> file) = file == fromFile+  rEq (rank . plySource -> rank) = rank == fromRank+  (fromRank, fromFile) = view rankFile from  {-# SPECIALISE relaxedSAN :: Position -> Parser Strict.ByteString Ply #-} {-# SPECIALISE relaxedSAN :: Position -> Parser Lazy.ByteString Ply #-}
src/Game/Chess/Tree.hs view
@@ -1,12 +1,8 @@-module Game.Chess.Tree (-  positionTree, positionForest-, plyTree, plyForest-, pathTree-) where+module Game.Chess.Tree (positionTree, positionForest, plyTree, plyForest) where -import Data.List.NonEmpty (NonEmpty, cons)-import Data.Tree ( Tree(Node), Forest, foldTree )-import Game.Chess.Internal+import           Data.List.NonEmpty  (NonEmpty, cons)+import           Data.Tree           (Forest, Tree (Node), foldTree)+import           Game.Chess.Internal  positionTree :: Position -> Tree Position positionTree pos = Node pos $ positionForest pos@@ -19,6 +15,3 @@  plyTree :: Position -> Ply -> Tree Ply plyTree pos ply = Node ply . plyForest $ unsafeDoPly pos ply--pathTree :: Tree a -> Tree (NonEmpty a)-pathTree = foldTree $ \a -> Node (pure a) . (fmap . fmap) (cons a)
src/Game/Chess/UCI.hs view
@@ -1,7 +1,7 @@ {-| Module      : Game.Chess.UCI Description : Universal Chess Interface-Copyright   : (c) Mario Lang, 2020+Copyright   : (c) Mario Lang, 2021 License     : BSD3 Maintainer  : mlang@blind.guru Stability   : experimental@@ -33,49 +33,53 @@ , quit, quit' ) where -import Control.Applicative-import Control.Concurrent-import Control.Concurrent.STM hiding (check)-import Control.Exception-import Control.Monad-import Control.Monad.IO.Class-import Data.Attoparsec.Combinator-import Data.Attoparsec.ByteString.Char8-import Data.ByteString.Builder-import Data.ByteString.Char8 (ByteString)-import qualified Data.ByteString.Char8 as BS-import Data.Foldable-import Data.Functor-import Data.HashMap.Strict (HashMap)-import qualified Data.HashMap.Strict as HashMap-import Data.IORef-import Data.Ix-import Data.List-import Data.String (IsString(..))-import Game.Chess-import Numeric.Natural-import System.Exit (ExitCode)-import System.IO-import System.Process-import Time.Rational-import Time.Units+import           Control.Applicative+import           Control.Concurrent+import           Control.Concurrent.STM           hiding (check)+import           Control.Exception+import           Control.Monad+import           Control.Monad.IO.Class+import           Data.Attoparsec.ByteString.Char8+import           Data.Attoparsec.Combinator+import           Data.ByteString.Builder+import           Data.ByteString.Char8            (ByteString)+import qualified Data.ByteString.Char8            as BS+import           Data.Foldable+import           Data.Functor+import           Data.HashMap.Strict              (HashMap)+import qualified Data.HashMap.Strict              as HashMap+import           Data.IORef+import           Data.Ix+import           Data.List+import           Data.STRef                       (modifySTRef, newSTRef,+                                                   readSTRef, writeSTRef)+import           Data.String                      (IsString (..))+import qualified Data.Vector.Unboxed              as Unboxed+import qualified Data.Vector.Unboxed.Mutable      as Unboxed+import           Game.Chess+import           Numeric.Natural+import           System.Exit                      (ExitCode)+import           System.IO+import           System.Process+import           Time.Rational+import           Time.Units  type BestMove = Maybe (Ply, Maybe Ply)  data Engine = Engine {-  inH :: Handle-, outH :: Handle-, procH :: ProcessHandle-, outputStrLn :: String -> IO ()-, infoThread :: Maybe ThreadId-, name :: Maybe ByteString-, author :: Maybe ByteString-, options :: HashMap ByteString Option-, isReady :: MVar ()-, isSearching :: IORef Bool-, infoChan :: TChan [Info]+  inH          :: Handle+, outH         :: Handle+, procH        :: ProcessHandle+, outputStrLn  :: String -> IO ()+, infoThread   :: Maybe ThreadId+, name         :: Maybe ByteString+, author       :: Maybe ByteString+, options      :: HashMap ByteString Option+, isReady      :: MVar ()+, isSearching  :: IORef Bool+, infoChan     :: TChan [Info] , bestMoveChan :: TChan BestMove-, game :: IORef (Position, [Ply])+, game         :: IORef (Position, [Ply]) }  -- | Set the starting position of the current game, also clearing any@@ -102,25 +106,25 @@              | BestMove !BestMove              deriving (Show) -data Info = PV [Ply]-          | Depth Int-          | SelDepth Int-          | Elapsed (Time Millisecond)-          | MultiPV Int-          | Score Score (Maybe Bounds)-          | Nodes Int-          | NPS Int-          | TBHits Int-          | HashFull Int-          | CurrMove Ply-          | CurrMoveNumber Int-          | String ByteString+data Info = PV !(Unboxed.Vector Ply)+          | Depth !Int+          | SelDepth !Int+          | Elapsed !(Time Millisecond)+          | MultiPV !Int+          | Score !Score (Maybe Bounds)+          | Nodes !Int+          | NPS !Int+          | TBHits !Int+          | HashFull !Int+          | CurrMove !Ply+          | CurrMoveNumber !Int+          | String !ByteString           deriving (Eq, Show)  data Score = CentiPawns Int            | MateIn Int            deriving (Eq, Ord, Show)-           + data Bounds = UpperBound | LowerBound deriving (Eq, Show)  @@ -195,12 +199,11 @@                                 <|> LowerBound <$ "lowerbound"                                  )     pure $ Score s b-  pv = fmap (PV . reverse . snd) $ foldM toPly (pos, []) =<< sepBy mv skipSpace-  toPly (pos, xs) s = case fromUCI pos s of-    Just m -> pure (unsafeDoPly pos m, m : xs)-    Nothing -> fail $ "Failed to parse move " <> s+  pv = varToVec pos <$> sepBy mv skipSpace >>= \case+    Right v -> pure . PV $ v+    Left s  -> fail $ "Failed to parse move " <> s   currmove = fmap (fromUCI pos) mv >>= \case-    Just m -> pure $ CurrMove m+    Just m  -> pure $ CurrMove m     Nothing -> fail "Failed to parse move"    mv = BS.unpack . fst <$> match (sq *> sq *> optional (satisfy p)) where@@ -209,7 +212,7 @@     p 'r' = True     p 'b' = True     p 'n' = True-    p _ = False +    p _   = False   bestmove = do     m <- mv     ponder <- optional (skipSpace *> kv "ponder" mv)@@ -222,6 +225,23 @@       Nothing -> fail $ "Failed to parse best move " <> m   kv k v = k *> skipSpace *> v +varToVec :: Position -> [String] -> Either String (Unboxed.Vector Ply)+varToVec p xs = Unboxed.createT $ do+  v <- Unboxed.new $ length xs+  i <- newSTRef 0+  pos <- newSTRef p+  fmap (fmap (const v) . sequenceA) $ forM xs $ \x -> do+    pos' <- readSTRef pos+    case fromUCI pos' x of+      Just pl -> do+        i' <- readSTRef i+        Unboxed.write v i' pl+        modifySTRef i (+ 1)+        writeSTRef pos (unsafeDoPly pos' pl)+        pure . Right $ ()+      Nothing -> do+        pure . Left $ x+ -- | Start a UCI engine with the given executable name and command line arguments. start :: String -> [String] -> IO (Maybe Engine) start = start' (sec 2) putStrLn@@ -278,7 +298,7 @@ isready e@Engine{isReady} = do   send e "isready"   takeMVar isReady-  + send :: Engine -> Builder -> IO () send Engine{inH, procH} b = do   hPutBuilder inH (b <> "\n")@@ -302,7 +322,7 @@                  | Infinite                 -- ^ search until 'stop' gets called                  deriving (Eq, Show)- + searchmoves :: [Ply] -> SearchParam searchmoves = SearchMoves @@ -400,19 +420,19 @@   if m `notElem` legalPlies pos then throwIO $ IllegalMove m else do     atomicModifyIORef' game $ \g -> (fmap (<> [m]) g, ())     sendPosition e- + replacePly :: MonadIO m => Engine -> Ply -> m () replacePly e@Engine{game} pl = liftIO $ do   atomicModifyIORef' game $ \g ->     (fmap init g, ())   addPly e pl-  + sendPosition :: Engine -> IO () sendPosition e@Engine{game} = readIORef game >>= send e . cmd where   cmd (p, h) = fold . intersperse " " $     "position" : "fen" : fromString (toFEN p) : line h   line [] = []-  line h = "moves" : (fromString . toUCI <$> h)+  line h  = "moves" : (fromString . toUCI <$> h)  -- | Quit the engine. quit :: MonadIO m => Engine -> m (Maybe ExitCode)