{"version":3,"sources":["CBReact/Components/DesignElements/Icons/CBIcons.module.css","CBReact/Components/Frames/CBOnlineFrame.module.css","CBReact/Components/Account/CBAccount.module.css","CBReact/Components/SearchField/CBPremiumSearch.module.css","CBReact/Components/Table/CBTable.module.css","CBReact/Components/NavBars/CBNavBarBottom.module.css","CBReact/Components/Chess/ChessBoard/CBSelectPromotion.module.css","CBReact/Components/PlayerInformation/CBPlayerInformation.module.css","CBReact/Components/NavBars/CBNavBarTop.module.css","CBReact/Components/Chess/ChessBoard/CBBoardMargin.module.css","CBReact/Components/Modules/CBModules.module.css","CBReact/Components/Chess/MaterialBalance/CBMaterialBalance.module.css","CBReact/Components/DesignElements/Buttons/ButtonBadge/CBButtonBadge.module.css","CBReact/Components/Chess/ChessBoard/CBSquare.module.css","CBReact/Components/NavBars/CBNavBarSide.module.css","CBReact/Components/Settings/CBSettings.module.css","CBReact/Components/DesignElements/Buttons/SideNavButton/CBSideNavButton.module.css","CBReact/Components/Modules/EngineModule/CBLocalEngine.module.css","CBReact/Components/Chess/ChessBoard/CBBoardArrow.module.css","CBReact/Components/DesignElements/Buttons/Button/CBButton.module.css","CBReact/Components/Chess/Notation/CBNotation.module.css","CBReact/Components/Chess/Notation/CBMove.module.css","CBReact/Components/GameInformation/CBGameInformation.module.css","CBReact/Resources/Localization/en/Chess.en.js","CBReact/Components/Table/CBScrollSearchHint.module.css","CBReact/Components/DesignElements/Selects/CBAutoComplete.module.css","CBReact/Components/DesignElements/InputFields/CBSearchInput.module.css","CBReact/Components/DesignElements/InputFields/CBCheckBox.module.css","CBReact/Resources/Raster/SwitchApp/Live32.png","CBReact/Components/Chess/ChessBoard/CBChessPiece.module.css","CBReact/Components/Chess/NotationTools/CBNotationTools.module.css","CBReact/Components/Table/CBTableResizer.module.css","CBReact/Components/DesignElements/Loaders/CBLoadingCircle/CBLoadingCircle.module.css","CBReact/Components/DesignElements/Text/ModuleHeadline/CBModuleHeadline.module.css","common/Chess/Engine/webasm/FritzWorkerBlob.js","CBReact/Components/SearchField/CBSearchBar.module.css","CBReact/Components/Modules/GameInfoModule/CBGameInfoModule.module.css","CBReact/Components/DesignElements/HorizontalSpacer/CBHorizontalSpacer.module.css","CBReact/Resources/Raster/SwitchApp/Playchess32.png","CBReact/Resources/Raster/SwitchApp/tactics32.png","CBReact/Resources/Raster/SwitchApp/videos32.png","CBReact/Resources/Raster/SwitchApp/Openings32.png","CBReact/Resources/Raster/SwitchApp/MyGames32.png","CBReact/Resources/Raster/SwitchApp/quiz32.png","CBReact/Resources/Raster/SwitchApp/Players32.png","CBReact/Resources/Raster/SwitchApp/News32.png","CBReact/Resources/Raster/SwitchApp/Studies32.png","CBReact/Components/Modules/BoardModule/CBBoardModule.module.css","CBReact/Components/Chess/ChessBoard/CBChessBoard.module.css","CBReact/Components/DesignElements/Ribbon/CBRibbon.module.css","CBReact/Components/Chess/NotationBar/CBNotationBar.module.css","CBReact/Resources/Raster/MaterialImbalance/wp.png","CBReact/Resources/Raster/MaterialImbalance/wn.png","CBReact/Resources/Raster/MaterialImbalance/wb.png","CBReact/Resources/Raster/MaterialImbalance/wr.png","CBReact/Resources/Raster/MaterialImbalance/wq.png","CBReact/Resources/Raster/MaterialImbalance/bp.png","CBReact/Resources/Raster/MaterialImbalance/bn.png","CBReact/Resources/Raster/MaterialImbalance/bb.png","CBReact/Resources/Raster/MaterialImbalance/br.png","CBReact/Resources/Raster/MaterialImbalance/bq.png","CBReact/Components/Modules/EngineModule/CBEngineModule.module.css","CBReact/Components/Modules/SearchModule/CBSearchModule.module.css","CBReact/Components/SearchField/CBSearchFilterContainer.module.css","CBReact/Components/Modules/BookModule/CBBookModule.module.css","CBReact/Resources/Localization lazy /^/.*/.js$/ groupOptions: {} namespace object","CBReact/Resources/CssEncoded/Board lazy /^/.*$/ groupOptions: {} namespace object","CBReact/Resources/CssEncoded/ChessPieces lazy /^/.*$/ groupOptions: {} namespace object","serviceWorker.js","common/Patterns/HashTable.js","common/Patterns/ObjectUtil.js","common/Tools/Strings/StringBuilder.js","common/Chess/Logic/Chess.js","common/Tools/Tools.js","common/Tools/CBDate.js","common/Tools/Time.js","common/Container/BinToString.js","common/Tools/Debug/debug_util.js","common/Container/DataBuffer.js","common/Tools/Language.js","common/Chess/Format/AnnoTypes.js","common/Chess/Logic/Annotation.js","common/Chess/Logic/MoveLine.js","common/Chess/Logic/Move.js","common/Chess/Logic/Undo.js","common/Chess/Logic/Board.js","common/Patterns/FuncUtil.js","common/Tools/Strings/CharUtil.js","common/Chess/Logic/Position.js","common/Chess/Logic/Notation.js","common/Chess/Format/PGN/PGNWriter.js","common/Tools/Log.js","common/Patterns/Listeners.js","common/Chess/Logic/GameHeader.js","common/Chess/Logic/LineStack.js","common/Chess/Logic/Game.js","common/Chess/PlayChess/EloRating.js","common/Chess/PlayingModes/ClockParams.js","common/Chess/Format/PGN/glyph.js","common/Chess/Format/PGN/PGNLexer.js","common/Chess/Format/PGN/PGNParser.js","CBReact/Utils/CookieUtils.js","CBReact/Hooks/ReactContext/useLocalizationContext/LocalizationUtils.js","common/Tools/Graphics/GeometricalObjects.js","common/Tools/System.js","CBReact/Components/Account/AccountUtils.js","common/Chess/OnlineDB/OnlineEntry.js","common/Tools/Timer.js","common/Resources/Localization/Localization.js","common/Container/Queue.js","common/WebClient/Protocol/YourId.js","common/WebClient/Protocol/WebSockMessage.js","common/WebClient/Connection.js","common/WebClient/Protocol/LogonData.js","common/HTMLDocument/Text.js","common/WebClient/Connector.js","common/Chess/OnlineDB/GameAutoComplete.js","common/Chess/OnlineDB/MoveCoder.js","common/Tools/Debug/debug_util.debug.js","common/Chess/OnlineDB/NumBoard.js","common/Chess/OnlineDB/OnlineStatEntry.js","common/Chess/OnlineDB/OnlineStatistics.js","common/Chess/OnlineDB/OnlineLobby.js","CBReact/Hooks/ReactContext/useOnlineLobbyContext.js","CBReact/Hooks/ReactContext/useOnlineDBLayoutContext.js","common/Chess/PlayerBase/LocalPlayerBase.js","common/Chess/PlayerBase/PlayerMessage.js","common/Chess/PlayerBase/PlayerKey.js","common/Chess/Tools/CBTitle.js","common/Chess/PlayerBase/HighPlayerData.js","common/Chess/PlayerBase/LowPlayerData.js","common/Chess/PlayerBase/NewCBPlayer.js","common/Chess/Format/ExtRatingType12.js","common/Chess/Format/EloNumber.js","common/Chess/Format/EloArray.js","common/Chess/Format/PLMMRecord.js","common/Chess/Format/MMNameArray.js","common/Chess/PlayerBase/Player.js","common/Chess/PlayerBase/PlayerLobby.js","common/Tools/CBNation.js","CBReact/Hooks/ReactContext/usePlayerLobbyContext.js","CBReact/Components/DesignElements/HorizontalSpacer/CBHorizontalSpacer.js","CBReact/Components/Account/CBLogIn.js","CBReact/Components/DesignElements/Buttons/SideNavButton/CBSideNavButton.js","CBReact/Hooks/ReactContext/useThemeContext.js","CBReact/Hooks/ReactContext/useBoardThemeContext.js","CBReact/Components/Settings/CBSettings.js","CBReact/Components/Account/CBAccountInfo.js","CBReact/Components/DesignElements/Icons/CBIcons.js","CBReact/Components/NavBars/CBNavBarSide.js","common/Chess/Format/PosTree.js","common/Chess/TeraBrain/HashPosition.js","common/Chess/TeraBrain/GamePerformanceStats.js","common/Chess/TeraBrain/TeraBrainTimeStamp.js","common/Chess/TeraBrain/TBrainMove.js","common/Chess/TeraBrain/HashMoveData.js","common/Chess/TeraBrain/HashTableData.js","common/Chess/TeraBrain/TBrainMoveList.js","common/Tools/Storage.js","common/Container/Set.js","common/Chess/Logic/PositionTracker.js","common/Tools/CBGuid.js","common/Chess/TeraBrain/CPUInfo.js","common/Chess/TeraBrain/MachineInfo.js","common/Chess/TeraBrain/ClientMachineInfo.js","common/Chess/TeraBrain/TaggedHashPosition.js","common/Chess/TeraBrain/TeraBrainRequest.js","common/Chess/TeraBrain/TeraBrainMessage.js","common/Chess/TeraBrain/TeraBrainInfo.js","common/Chess/TeraBrain/TeraBrainLobby.js","CBReact/Hooks/ReactContext/useTeraBrainLobbyContext.js","CBReact/Contexts/CBOnlineDBContext.js","CBReact/Hooks/ReactContext/useLocalizationContext/useLocalizationContext.js","CBReact/Hooks/ReactContext/useLoginContext.js","CBReact/Hooks/ReactContext/useSideNavContext.js","CBReact/Components/HtmlRoot/CBHtmlRoot.js","CBReact/Utils/DebugUtils.js","CBReact/Components/Chess/ChessBoard/ChessBoardUtils.js","CBReact/Components/Chess/ChessBoard/CBSquare.js","CBReact/Hooks/usePrevious.js","CBReact/Components/Chess/ChessBoard/CBChessPiece.js","CBReact/Components/Chess/ChessBoard/CBBoardMargin.js","CBReact/Components/Chess/ChessBoard/CBBoardArrow.js","CBReact/Components/Chess/ChessBoard/CBSelectPromotion.js","CBReact/Components/Chess/ChessBoard/CBChessBoard.js","CBReact/Components/DesignElements/Ribbon/CBRibbon.js","CBReact/Components/DesignElements/Buttons/Button/CBButton.js","CBReact/Components/Chess/BoardNavigationBar/CBBoardNavigationBar.js","CBReact/Components/Chess/ChessBoardAndNavigationBar/CBChessBoardAndNavigationBar.js","CBReact/Utils/DimensionUtils.js","CBReact/Components/Chess/Notation/CBMove.js","CBReact/Components/Chess/Notation/CBNotation.js","CBReact/Utils/ComparisonUtils.js","CBReact/Components/Chess/MaterialBalance/CBMaterialBalance.js","CBReact/Components/DesignElements/Buttons/ButtonBadge/CBButtonBadge.js","CBReact/Components/Chess/NotationTools/CBNotationTools.js","CBReact/Components/Chess/NotationBar/CBNotationBar.js","CBReact/Components/Modules/BoardModule/CBBoardModule.js","CBReact/Components/Table/CBTableResizer.js","CBReact/Components/DesignElements/Loaders/CBLoadingCircle/CBLoadingCircle.js","CBReact/Utils/Calculate.js","CBReact/Components/Table/CBScrollSearchHint.js","CBReact/Components/Table/CBTable.js","CBReact/Components/Table/TableUtils.js","CBReact/Components/Modules/EngineModule/CBEngineTable.js","CBReact/Components/DesignElements/Text/ModuleHeadline/CBModuleHeadline.js","common/Chess/Engine/EngineInstance.js","CBReact/Components/Modules/EngineModule/EngineModuleUtils.js","CBReact/Components/Modules/EngineModule/CBLocalEngine.js","CBReact/Components/Modules/EngineModule/CBEngineModule.js","common/Chess/OnlineDB/SearchMask.js","CBReact/Components/DesignElements/Selects/CBAutoComplete.js","CBReact/Hooks/useAfterMountEffect.js","CBReact/Components/SearchField/CBSearchBar.js","CBReact/Components/SearchField/CBSearchFilterContainer.js","CBReact/Components/DesignElements/InputFields/CBSearchInput.js","CBReact/Components/DesignElements/InputFields/CBCheckBox.js","CBReact/Components/SearchField/CBPremiumSearch.js","CBReact/Components/SearchField/CBSearchContainer.js","CBReact/Components/Modules/SearchModule/CBDatabaseTable.js","CBReact/Components/Modules/SearchModule/CBSearchModule.js","CBReact/Components/Modules/BookModule/CBBookModule.js","CBReact/Components/PlayerInformation/CBPlayerInformation.js","CBReact/Components/GameInformation/CBGameInformation.js","CBReact/Components/Modules/GameInfoModule/CBGameInfoModule.js","CBReact/Components/NavBars/CBNavBarTop.js","CBReact/Components/NavBars/CBNavBarBottom.js","CBReact/Components/Frames/CBOnlineDBFrame.js","common/Chess/Logic/DrawChecker.js","common/Tools/Graphics/Color.js","common/Chess/GUI/BoardAttributes.js","common/Chess/Logic/MoveEntry.js","common/Chess/Logic/BaseClock.js","common/Chess/PlayChess/ManualClock.js","common/Chess/PlayingModes/ChessClock.js","common/Chess/PlayingModes/AbstractPlayingMode.js","common/Chess/PlayingModes/PlayingMode.js","common/Chess/Logic/GameKernelLight.js","common/Chess/PlayingModes/EngineHostMode.js","common/Chess/PlayingModes/OnlineDBModeNew.js","common/WebClient/VersionCode.js","common/WebClient/ClientParams.js","index.js","common/Tools/Strings/StringFormat.js"],"names":["module","exports","getLocalizationObject","LOGIN","LOGOUT","ACCOUNT","BOARDS","RECONNECT","RESIGN","CLOSE_BOARD","OFFER_DRAW","ACCEPT_DRAW","ACCEPTED_DRAW","OFFERS_DRAW","ACCEPTS_DRAW","RESIGNS","TESTING_CONN","CONNECTING","RECONNECTED_OK","NAME","NATION","RANK","WHITE","BLACK","ELO_WHITE","ELO_BLACK","RESULT","TIME_CONTROL","TOURNAMENT","GAMES","CHAT","CHAT_PARTNER_GONE","CONNECTION","MAP","KING","QUEEN","ROOK","BISHOP","KNIGHT","PAWN","TYPE_CHAT_HERE","TYPE_HERE_TO_CHAT_WITH","GUEST","CONFIRM","CANCEL","CLOCK","TIME","GAIN_PER_MOVE","CLOSE","ADD","REMOVE","NOTATION","BOARD_FRITZ","BOARD_CRYSTALS","BOARD_USCF","BOARD_OLDSTYLE","BOARD_HABSBURG","BOARD_FRITZ_AND_CHESTER","PLAY_BLITZ","NEW_GAME","TAKE_BACK","MAKE_MOVE","FLIP_BOARD","COPY","SEARCH_BOARD","YEAR","BOOK","LIVE_BOOK","MOVE","NR_GAMES","SCORE","LAST_PLAYED","ELO_AVG","VISITS","LOADING_STATISTICS","LETS_CHECK","EVAL","VARIATION","DEPTH","ENGINE","ENTER_YOUR_SEARCH_TEXT","RETRIEVING_GAMES","PLAYER_DETAILS","PLAYER_INFORMATION","FIRST_NAME","LAST_NAME","YEAR_OF_BIRTH","TREND","RATING","SEND_FEEDBACK","YOUR_COMMENT","YOUR_EMAIL_ADDRESS","SEND","BROWSER_DOESNT_SUPPORT_3D","BOARD3D_FRITZ","BOARD3D_MODERN","BOARD3D_ROOM","BOARD3D_BALLOON","BOARD3D_METAL","BOARD3D_SILVER","BOARD3D_FUTURE","BOARD3D_MARBLE","WELCOME","MATERIAL","ANALYSIS","ANALYSIS_ENGINE","ENG_SEARCH_INFO_FMT","PASTE","PW_INVALID","PLEASE_LOGIN","ACCOUNTNAME","PASSWORD","CREATE_ACCOUNT","LOGIN_GUEST","PLEASE_LOGIN_SHORT","LOADING_ENGINE","LOADING_LIVE_GAMES","INVITING_OTHER_PLAYERS","OTHER_TOOLS","DATABASES","OPEN_DATABASE","CREATE_DATABASE","DELETE_DATABASE","DELETE","CLEAN_UP","MY_DATABASES","DATABASES_SHARED_WITH_ME","SELECT_DATABASE_FOR_USER","OPEN_PGN","SAVE","SAVE_AND_REPLACE_GAMES","SAVE_AS_NEW","EDIT_GAME","DATABASE_FUNCTIONS","TEXT_BEFORE","TEXT_AFTER","START_LINE","PROMOTE_LINE","DELETE_LINE","CUT_LINE","OPEN_PGN_TIP","TEXT_BEFORE_TIP","TEXT_AFTER_TIP","START_LINE_TIP","PROMOTE_LINE_TIP","DELETE_LINE_TIP","CUT_LINE_TIP","STAY_LOGGED_IN","FORGOT_PASSWORD","CHANGE_PASSWORD","OLD_PASSWORD","NEW_PASSWORD","CONFIRM_PASSWORD","MENU_PLAYCHESS_TOOL","MENU_DATABASE_TOOL","MENU_MYGAMES_TOOL","MENU_FRITZ_TOOL","MENU_FRITZ_CHESSTER_TOOL","MENU_TACTICS_TOOL","LANGUAGE","LOGIN_CREATE_LINK","LOGIN_PLEASE_LOGIN","LOGIN_ACCOUNT_FREE","LOGIN_WELCOME","MANAGE_FRIENDS","INVITE_FRIEND","PING","NOTATION_KING","NOTATION_QUEEN","NOTATION_KNIGHT","NOTATION_BISHOP","NOTATION_ROOK","NOTATION_PAWN","GENERAL_INVITE","MYGAMES_INVITE","MYGAMES_FUNCTIONALITY","ECO","BACK","NEXT_MOVE","PREV_MOVE","NEXT_GAME","PREV_GAME","MENU_VIDEO_TOOL","MENU_OPENINGS_TOOL","REQUESTING_MOVES","FRESH_POSITION","EMBED","HELP","TOGGLE_3D_2D","BOARD3D_BLACKWHITE","MATE","STALEMATE","SETUP_POSITION","WHITE_MATES","WHITE_CLEARLY_WINNING","WHITE_WINNING","WHITE_DECISIVE","WHITE_CLEARLY_BETTER","WHITE_BETTER","WHITE_SLIGHTLY","WHITE_EDGE","BLACK_MATES","BLACK_CLEARLY_WINNING","BLACK_WINNING","BLACK_DECISIVE","BLACK_CLEARLY_BETTER","BLACK_BETTER","BLACK_SLIGHTLY","BLACK_EDGE","EQUAL_POS","PREMIUM_ONLY","BOARD3D_CHARACTER","CALC_TRAINING","TTIP_CALC_TRAINING","CALC_INFO","CALCULATING","WOOD","TRAINING_SOLUTION","TRAINING_HELP","TRAINING_QUESTION","UNANNOTATE","MORE_LINES","LESS_LINES","CALCULATE_THREAT","START_RADIO","PAUSE_RADIO","CURRENTLY_NO_LIVE_BROADCAST","CONNECTED_TO_SERVER","INITIALIZING","INSERT_DIAGRAM","BOARD","LOADING_BOARD","LIKE","DB_NOGAMES_FOUND","YOUR_KING_ACC","YOUR_QUEEN_ACC","YOUR_KNIGHT_ACC","YOUR_BISHOP_ACC","YOUR_ROOK_ACC","YOUR_PAWN_ACC","MOVE_IMP","WHITES_MOVE","BLACKS_MOVE","CLICK_TO_FLIP_BOARD","MAXIMIZE","PIECES","SOUND_ONOFF","GOTO_BEGIN","GOTO_END","LOAD_PREV","LOAD_NEXT","SEARCH_MATERIAL","engWorkerCode","cbPreInit","fnHandle","cbPreRun","Module","cwrap","cbInput","cbOnMessage","_msg","data","inited","queue","push","cbPostRun","forEach","oninfo","self","postMessage","addEventListener","preRun","preInit","postRun","noExitRuntime","eval","aa","k","hasOwnProperty","l","m","p","ba","ca","da","ENVIRONMENT","Error","window","importScripts","process","print","console","log","printErr","warn","read","a","b","require","normalize","readFileSync","toString","readBinary","buffer","Uint8Array","assert","load","ea","thisProgram","argv","length","replace","arguments","slice","on","fa","inspect","readbuffer","scriptArgs","quit","XMLHttpRequest","open","send","responseText","responseType","response","readAsync","c","d","onload","status","onerror","setWindowTitle","document","title","call","u","O","tempRet0","hb","ua","q","ta","Na","G","parseInt","substr","gb","Math","max","Dd","Vd","Ld","min","ka","apply","concat","h","Za","rb","K","sa","ma","Od","Array","prototype","Md","va","w","Ia","x","y","z","ha","Da","ceil","Rd","ia","Ed","Runtime","addFunction","removeFunction","A","la","B","ja","oa","charAt","D","pa","tempI64","tempDouble","qa","ra","wa","E","e","f","n","r","g","F","subarray","set","Pd","C","String","fromCharCode","UTF8ToString","match","body","returnValue","stackSave","stackRestore","arrayToC","stringToC","na","string","array","H","every","v","map","join","L","M","ccall","setValue","getValue","ALLOC_NORMAL","ALLOC_STACK","ALLOC_STATIC","ALLOC_DYNAMIC","ALLOC_NONE","allocate","getMemory","xa","ya","Pointer_stringify","AsciiToString","stringToAscii","za","Aa","TextDecoder","Ba","decode","Ca","charCodeAt","Ea","___cxa_demangle","__cxa_demangle","Fa","Ga","stack","extraStackTrace","UTF8ArrayToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","stackTrace","Ha","Ja","La","Ma","Oa","Pa","Qa","Ra","Ta","Ka","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","usingWasm","reallocBuffer","byteLength","ArrayBuffer","Bb","Sa","Function","bind","Object","getOwnPropertyDescriptor","get","Ua","TOTAL_STACK","TOTAL_MEMORY","WebAssembly","Memory","wasmMemory","initial","Va","shift","R","X","dynCall_v","dynCall_vi","HEAP","Wa","Xa","Ya","$a","ab","unshift","bb","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","writeStringToMemory","Infinity","writeArrayToMemory","writeAsciiToMemory","imul","fround","cb","Kd","clz32","trunc","floor","abs","db","eb","fb","monitorRunDependencies","clearInterval","addRunDependency","removeRunDependency","preloadedImages","preloadedAudios","I","wasmBinary","fetch","Promise","credentials","then","ok","arrayBuffer","catch","memory","STATIC_BASE","STATIC_BUMP","asm","instance","instantiate","global","NaN","env","instantiateWasm","$c","jb","indexOf","wasmJSMethod","wasmTextFile","wasmBinaryFile","asmjsCodeFile","locateFile","asm2wasm","parent","asmPreload","t","__growWasmMemory","grow","table","wasmTableSize","wasmMaxTableSize","Table","maximum","element","wasmTable","memoryBase","tableBase","ib","kb","lb","mb","nb","s","ob","pb","qb","type","___cxa_is_pointer_type","___cxa_can_catch","J","qd","lc","Eb","Jc","V","Sb","Ad","dc","Vc","Bd","P","i","Ec","xd","ec","Rc","W","nd","xc","ed","ac","kd","Nc","ic","Tb","oc","pc","qc","wc","yd","Hc","nc","Yb","Kc","Kb","Nb","Cd","Fc","Ob","Pb","Zb","Qb","Tc","Ic","ud","Sc","Oc","Pc","md","Lc","Hb","rd","Ub","gd","zc","bc","Mb","Lb","ld","rc","sc","vc","uc","tc","Uc","Ac","ga","ad","dd","Xb","Gc","Ib","jd","Yc","Qc","od","Wb","Fb","Vb","Dc","Bc","vd","fc","hc","kc","Jb","$b","yc","hd","pd","Gb","Cc","mc","Wc","wd","zd","cc","sd","Zc","Mc","jc","bd","Rb","Xc","cd","td","sb","___errno_location","tb","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","122","123","125","130","131","ub","splice","vb","split","filter","wb","exec","xb","lastIndexOf","yb","zb","TypeError","Ab","input","output","N","Cb","Db","node","rdev","tty","seekable","close","flush","timestamp","Date","now","write","Buffer","stdin","fd","platform","fs","openSync","readSync","closeSync","prompt","readline","createNode","dir","lookup","S","rename","unlink","rmdir","readdir","symlink","stream","file","$","link","readlink","Q","mode","Nd","dev","id","ino","nlink","uid","gid","size","atime","mtime","ctime","blocks","name","position","byteOffset","Z","root","lstatSync","code","o","reverse","129","193","514","577","578","705","706","1024","1025","1026","1089","1090","1153","1154","1217","1218","4096","4098","chmodSync","truncateSync","mkdirSync","writeFileSync","renameSync","unlinkSync","rmdirSync","readdirSync","symlinkSync","readlinkSync","relative","resolve","U","flags","writeSync","fstatSync","T","path","this","defineProperties","rs","wx","xw","ax","object","error","logReadFiles","onOpenFile","message","onWriteToFile","constructor","url","FS","Y","dateNow","performance","setTimeout","setImmediate","target","stopPropagation","setImmediates","Gd","setStatus","statusMessage","Jd","preMainLoop","postMainLoop","SDL","audio","pointerLockElement","canvas","mozPointerLockElement","webkitPointerLockElement","msPointerLockElement","preloadPlugins","MozBlobBuilder","WebKitBlobBuilder","URL","webkitURL","canHandle","test","handle","Blob","append","getBlob","createObjectURL","Image","complete","createElement","width","height","getContext","drawImage","revokeObjectURL","src","Ud","Audio","requestPointerLock","mozRequestPointerLock","webkitRequestPointerLock","msRequestPointerLock","exitPointerLock","mozExitPointerLock","webkitExitPointerLock","msExitPointerLock","elementPointerLock","preventDefault","antialias","alpha","GL","createContext","GLctx","Sd","Xd","parentNode","fullscreenElement","mozFullScreenElement","msFullscreenElement","webkitFullscreenElement","webkitCurrentFullScreenElement","exitFullscreen","cancelFullScreen","mozCancelFullScreen","msExitFullscreen","webkitCancelFullScreen","screen","insertBefore","removeChild","onFullScreen","onFullscreen","appendChild","requestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitRequestFullscreen","Element","ALLOW_KEYBOARD_INPUT","webkitRequestFullScreen","Yd","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","jpg","jpeg","png","bmp","ogg","wav","mp3","forcedAspectRatio","round","style","removeProperty","setProperty","exit","USER","LOGNAME","PATH","PWD","HOME","LANG","_","getTime","getMonth","getFullYear","getDate","setDate","setMonth","setFullYear","getDay","j","Wd","RegExp","substring","crypto","getRandomValues","randomBytes","random","noFSInit","stdout","stderr","_fflush","FS_createFolder","FS_createPath","pop","FS_createDataFile","FS_createPreloadedFile","FS_createLazyFile","chunkSize","Number","getResponseHeader","setRequestHeader","overrideMimeType","keys","FS_createLink","FS_createDevice","FS_unlink","willDeletePath","onDeletePath","hrtime","requestFullScreen","setCanvasSize","pauseMainLoop","resumeMainLoop","getUserMedia","navigator","mozGetUserMedia","intArrayFromString","intArrayToString","abort","enlargeMemory","getTotalMemory","abortOnCannotGrowMemory","invoke_ii","dynCall_ii","setThrew","jsCall_ii","invoke_iii","dynCall_iii","jsCall_iii","invoke_iiii","dynCall_iiii","jsCall_iiii","invoke_iiiii","dynCall_iiiii","jsCall_iiiii","invoke_iiiiid","dynCall_iiiiid","jsCall_iiiiid","invoke_iiiiii","dynCall_iiiiii","jsCall_iiiiii","invoke_iiiiiid","dynCall_iiiiiid","jsCall_iiiiiid","invoke_iiiiiii","dynCall_iiiiiii","jsCall_iiiiiii","invoke_iiiiiiii","dynCall_iiiiiiii","jsCall_iiiiiiii","invoke_iiiiiiiii","dynCall_iiiiiiiii","jsCall_iiiiiiiii","invoke_iiiiij","dynCall_iiiiij","jsCall_iiiiij","invoke_v","jsCall_v","invoke_vi","jsCall_vi","invoke_vii","dynCall_vii","jsCall_vii","invoke_viii","dynCall_viii","jsCall_viii","invoke_viiii","dynCall_viiii","jsCall_viiii","invoke_viiiii","dynCall_viiiii","jsCall_viiiii","invoke_viiiiii","dynCall_viiiiii","jsCall_viiiiii","invoke_viijii","dynCall_viijii","jsCall_viijii","__ZSt18uncaught_exceptionv","___assert_fail","___buildEnvironment","___cxa_allocate_exception","___cxa_begin_catch","___cxa_find_matching_catch","___cxa_throw","Hd","___gxx_personality_v0","___lock","___map_file","___resumeException","___setErrNo","___syscall140","___syscall145","___syscall146","___syscall54","___syscall6","___syscall91","Qd","Td","___unlock","__addDays","__arraySum","__exit","__isLeapYear","_abort","_clock_gettime","_emscripten_force_exit","_emscripten_get_now","_emscripten_get_now_is_monotonic","_emscripten_memcpy_big","_emscripten_run_script","_emscripten_set_main_loop","_emscripten_set_main_loop_timing","_exit","_getenv","_llvm_cttz_i32","_llvm_cttz_i64","_pthread_cond_signal","_pthread_cond_wait","_pthread_getspecific","_pthread_key_create","_pthread_once","_pthread_setspecific","_strftime","_strftime_l","_usleep","DYNAMICTOP_PTR","tempDoublePtr","ABORT","STACKTOP","STACK_MAX","cttz_i8","__GLOBAL__I_000101","__GLOBAL__sub_I_eval_cpp","__GLOBAL__sub_I_iostream_cpp","__GLOBAL__sub_I_uci_cpp","_emscripten_get_global_libc","_emscripten_replace_memory","_free","_llvm_bswap_i32","_llvm_ctlz_i64","_llvm_ctpop_i64","_main","_malloc","_memcpy","_memmove","_memset","_oncommand","_pthread_cond_broadcast","_pthread_mutex_lock","_pthread_mutex_unlock","_sbrk","establishStackSpace","getTempRet0","runPostSets","setTempRet0","stackAlloc","Id","memoryInitializerPrefixURL","memoryInitializerRequest","Fd","calledRun","onRuntimeInitialized","callMain","onExit","run","onAbort","JSON","stringify","noInitialRun","blob","fritzWorkerScript","webpackAsyncContext","req","__webpack_require__","ids","all","Boolean","location","hostname","HashTable","_funcHash","_funcEq","impl","funcHash","funcEq","_obj","ObjUtil","hashCode","_obj1","_obj2","_key","hashKey","arrPairs","funcFilter","_pair","key","matches","value","_value","inx","len","pair","newPair","arrNewPairs","_val1","_val2","undefined","typ1","typ2","equals","me","mix","djb2","_str","hash","clone","_src","_hash","there","getItem","isArray","setItem","copyTo","clone2","copyTo2","cloneNoFunc","str","parse","_dst","_onlyMissing","prop","val","copy","valMy","valHis","_CMP","isEmpty","isFunction","_arr","StringHash","StringBuilder","sp","ep","accum","MAX_LEN","formatEx","what","oep","ptr","nsp","nep","nl","Side","NONE","SIDE_OFFSET","_sd","Piece","W_KING","W_QUEEN","W_KNIGHT","W_BISHOP","W_ROOK","W_PAWN","B_KING","B_QUEEN","B_KNIGHT","B_BISHOP","B_ROOK","B_PAWN","COLOUR","JOKER","_pc","PIECE_MASK","SIDE_MASK","g_arrPieces","_ch","CastleRights","W_000","W_00","B_000","B_00","W_ALL","B_ALL","ALL","_cr","res","fromString","Square","ROW_OFFSET","ROW_MASK","COL_OFFSET","COL_MASK","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","C_A","C_B","C_C","C_D","C_E","C_F","C_G","C_H","R_1","R_2","R_3","R_4","R_5","R_6","R_7","R_8","Names","g_arrSquareStrs","getStr","getStrXY","get64","colToString","_col","rowToString","_row","colFromString","rowFromString","_inx","getRank","getFile","DIST","_fld1","_fld2","dr","sqrt","getTranslate","squareIndex","squareSize","whiteIsBottom","getArrowTranslate","isLegal","isDark","isLight","isCenterFile","isCenterRank","isCenterSquare","_s","getDist","dFile","dRank","getFileDist","getPromRow","strUtil","unescape","encodeURIComponent","utf8ArrayToStr","u8","encodeUTF8","mayBeUtf8","isFlag","bits","out","char2","char3","bUtf8","hasASCIIgreater127","codeURLParameter","base64","encode","decodeURLParameter","base64s","decStr","btoa","dual","encOut","encStr","atob","decOut","decodeToBinary","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","bytes","getURLParam","paramName","results","href","ret","shortenURL","shortURL","toLowerCase","search","nFirstSlash","trimQuotes","escapeHtmlEntities","text","htmlEncode","htmlDecode","dec","tryConvertCyrillicAscii","cnt8BitAscii","cy","conv1252","TimeTools","centiSecs","jsTime","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","CBDate","_year","_month","_day","year","month","day","date","buf","num","readInt32","constructFromNum","writeInt32","g_regexPGN","setToday","getYear","_date","alert","Time","timeAsInt","time","BinToString","StringToByteArray","pBuf","rStr","nByte","nBit","cByte","nChar","BASECHAR","ByteArrayToString","nBufLen","pEncode","ByteArrayToBase64","_data","chr1","chr2","chr3","enc1","enc2","enc3","enc4","KEY_STR","isNaN","ByteArrayToDataURI","_mime","CBDebug","_cond","_ctx","_func","profile","_name","profileEnd","DataBuffer","readByte","readUint8","writeByte","writeUint8","readShort","readInt16","writeShort","writeInt16","writeInt","readInt","nPos","nSize","viewBuf","DataView","nSizeMarker","nMarkedSize","nNewPos","sum","getUint8","dataView","nFirstPos","setInt32","_swapBytes","setUint8","getInt32","_checkAlloc","uint8","_incSize","strUnicode","strUTF8","writeUTFString","nMaxLen","nLen","decodeUTF8","strASCII","arr","getSize","nUint8","nRet","nInt16","setInt16","getInt16","nUint16","setUint16","getUint16","nInt32","nUint32","setUint32","getUint32","aDate","nDate","writeUint32","dateAsInt","readUint32","setYear","setDay","nInt64","higherPart","lowerPart","nRetHigh","nRetLow","float32","setFloat32","getFloat32","float64","setFloat64","getFloat64","vecByte","strText","bCompressed","clear","aMsg","strElement","bElement","view","writeByteArray","rewind","v1","v2","v3","fnRdr","obj","getPos","nCurrPos","setPos","keepSize","nSizeRead","skip","nPrevPos","fnWrite","savePos","nNew","maxS","nNewBufSize","newBuffer","viewNew","nStart","bufSwap","createReadFactory","_buf","Language","ENG","DEU","GER","FRA","ESP","ITA","NED","POR","DEF","SLO","SWE","BAS","SVK","POL","CZE","CAT","TRK","MGY","RUS","GRK","ROM","CHN","UN","NOR","HEB","UKR","VIE","ARA","SER","LIT","BRA","FAR","CRO","GAL","HIN","getStrUserLanguage","languages","language","userLanguage","getStrUserLanguageTwoChars","getUserLanguageId","lang","getLanguageIdOfParam","param","getParamOfLanguageId","getHelpParamOfLanguageId","langId","getRibbonFlagName","lid","lids","getNativeLangName","AnnoType","POSTTEXT","SYMBOL","SQUARE_LIST","ARROW_LIST","DIAGRAM","DATE","TRAINING","BIGMAX","AUDIO","PICTURE","VIDEO","GAME_QUOTATION","PAWN_STRUCT","PIECE_PATH","MIDDLEGAME_CLASS","ENDGAME_CLASS","CRITICAL_POS","CORR","STREAM","CHESS_VARIANT","MAX","CAPTION","FRITZ_EVAL","MOVE_MEDAL","COLOR","SYNC","EVAL_PROFILE","AUDIO_STREAM","GENERIC","ANNO_BITS","PRE_BIT","attr","AnnoMarkType","TextType","PRETEXT","PRE_SQUARE_LIST","PRE_ARROW_LIST","Medal","AnnoFactory","_type","func","AnnoRec","inxMv","readBEInt24","readBEInt16","writeBEInt24","writeBEInt16","ANNO_HEAD_SIZE","TextAnno","textType","m_str","writeUint16","writeHeader","writeSizedString","_annoLen","readSizedString","SymbolsAnno","isExclusiveEval","symbol","isExclusiveMark","BoardColor","GREEN","YELLOW","RED","TRANSYELLOW","ColSq","_fld","field","color","_strVal","fromChar","toChar","STRING_LEN","readFactory","ColSqAnno","aSq","_sep","ColArrow","_from","_to","from","to","ColArrowAnno","anArrow","EvalAnno","_eval","_depth","depth","TimeAnno","cs","centis","secs","getCBTimeOfCentiSecs","getTimeIn100th","readBEInt32","writeBEInt32","TimeControlAnno","SyncAnno","MoveMedalAnno","medal","EvalProfileAnno","first","last","evalArr","detMinMax","EV_INVALID","arrbuf","setInt8","ev","getInt8","TrainingAnno","correctMove","move","solved","nHelpClicked","texts","question","help","ln","lns","readUint16","nQuestions","decodeString","nDefaultWrong","nHelp1","nHelp2","decodeLocals","nMoves","prom","nFeedback","Move","nAnswers","nStrings","readMoveInputItem","readMultipleChoiceItem","trBuf","lenPos","nStringsPos","encodeString","lIds","writeAtPrevPos","nHelpPos","writeData","_nStrings","lId","Annotation","fromDataBuf","toDataBuf","toggleDiagram","removeDiagram","strRet","_cntAnnos","hdr","readHeader","anno","factory","_read","cnt","annoTypes","lengthPos","pos","cntAnnos","_read2","_anno","addText","hasItem","hasPreText","getString","hasPostText","addSymbol","_annos","write2","DIAG_CHAR","MoveLine","_parentLine","_inxMv","inxMvParent","_line","_inxMvParent","reduce","_cnt","_mv","getTreeMoveCount","_rec","setSubParentData","_lineReplacement","args","arrOld","setParentLine","_pos","_lineParent","_inxParentMv","cur","mv","hasLines","subLines","getSubLines","inxLn","selfTest","makeMove","readArray","shiftTrainingAnnosBack","lineLen","aMove","read2","shiftTrainingAnnosFwd","writeArray","some","hasAnno","getAnno","hasTraining","getTraining","setTraining","setAnnoItem","unAnnotate","fn","forAllMoves","removeLines","readFactory2","_prom","isACheck","isAMate","needCol","needRow","mvd","vct","shortCastling","longCastling","annos","isShortCastling","isLongCastling","g_mvW00","g_mvB00","g_mvW000","g_mvB000","_isShortCastling","_isLongCastling","_val","side","_ln","getTreeconstructorCount","line","_parent","lineNew","_inx1","_inx2","tmp","writeAnnos","writeSubLines","nFlags","count","getSubLinesCount","writeAnnos2","writeSubLines2","readAnnos","readSubLines","readAnnos2","readSubLines2","json","setParentconstructorIndex","deleteItem","resetAnno","reconstructorLines","baggage","forAllconstructors","_strMv","g_regex","strFrom","strTo","strProm","nominal","Undo","cr","board","mvdUnique","uniquePiecePositions","vctUnique","trace","fldVct","to2","from2","_vct","_fldVct","_vctUnique","_from2","_to2","Board","bSetup","writeToDataBuffer","rBuf","sqs","setup","currColour","currPiece","nThis","nNext","n64","piece","strs","rank","strRank","sq","refBoard","setExclude","toDebugStrs","sLine","NOT","SIZE","Char","IsDigit","IsLetter","IsUpperCaseLetter","IsLetterOrDigit","IsWhiteSpace","getIsChar","_chCmp","getIsNotChar","StringIterator","Current","m_inx","Peek","m_len","Next","CurrentString","_len","SubString","NextString","_start","rest","end","getPosition","setPosition","_chs","isEOF","AcceptWhile","_fromCur","ch","AcceptUntil","AcceptStr","AcceptChar","skipWhile","skipUntil","skipWhite","Position","_fen","toFEN","getBTM","isBTM","initFields","initString","initFEN","initStartPos","fld","lastKillOrPawn","numPly","plyToMvNum","_numMv","mvToPlyNum","col","it","rCur","cCur","strCr","strFld","NOEP","fldEp","mvNum","strLastKill","strMvNum","initEmpty","ger","curr_piece","curr_colour","parseAttributes","isCheck","unmakeMove","undo","other","oldEP","isNullMove","pcMvd","pcVct","rFrom","rTo","cFrom","cTo","changeSide","pcVctUnique","setEP","pcProm","make","from2Unique","setCastle","_undo","arrMvs","generateSemiLegals","filterLegals","arrRes","_generateSemiLegalsFrom","arrSemiLegals","generateSemiLegalsFrom","_arrRes","generatePawn","generateKnight","generateBishop","generateRook","generateQueen","generateKing","generate","g_arrKnightMvs","g_arrKingMvs","isAttacked","g_arrRookMvs","g_arrBishopMvs","rDir","rProm","sdMe","fldOne","promMv","mvSingle","fldDouble","mvDouble","cDir","rTakeTo","fldTo","mvKill","rEPFrom","fldEPVct","pcEPVct","mvEPKill","_arrMvs","_long","dshift","contin","mvNew","isSuicideMove","mvDummy","isProm","isLegalMove","isSemiLegalMove","isSuicidePos","fen","cntEmpty","fldEP","getEPField","toNormalizedFEN","getMoveNum","cPieceNames","diaString","thePieces","ptrPieces","ix","newPiece","PieceData","black","cBits","cppep","rEP","pcKillPawn","pcEPPawn","getAttacksTo","_getAttacksTo","getPawnAttacksTo","getKnightAttacksTo","getKingAttacksTo","getRangedAttacksTo","getAttacks","getIsPiece","rDbl","fldDbl","g_arrWhPawnAttks","g_arrBlPawnAttks","pcAttkr","pcKing","getKingsPos","sdChecker","sdVct","hasLegals","isMate","isStaleMate","generateLegals","getVictim","pcNom","arrCoCandidates","uniqueCol","uniqueRow","cocand","inxCand","cofrom","_mvElem","preSetMinCtx","need","calcNeed","setNeedCol","setNeedRow","setMoved","setVictim","setIsCastling","_canBeLast","setCheck","check","setMate","readByteArray","newPosition","squareSet","fnLog","copyFrom","arrPieces","getPieces","arrCnts","pcd","_numPly","_a","_b","_pc1","_pc2","_board","arrPacked","_arrPacked","castleRights","epFile","setCastleRights","setCPPEPFile","_other","InvariantLocalization","arrStrPieces","strTakes","strCheck","strMate","str00","str000","strNullMove","bOmitPawnTakes","NotationGenerator","_loc","m_loc","_firstMove","numMv","strRes","getMoved","wtm","getMoveNota","game","moveNum","getMainLine","getMoveNo","_kernel","getCurPos","preCalcCtx","isNeedCol","isNeedRow","isTake","iStart","blackStarts","Localizations","invariant","NotationLocalizations","PGNLocalization","PGNWriter","notaGen","_sb","appendFormat","_timeAnno","centSecs","writeCmd","symbols","gly","writeTimeAnno","txt","_game","getHeader","writeHeaderItem","getEvent","getWhite","getBlack","getSite","getRoundStr","getAnnotator","getCBResult","toPGNString","getDateStr","getEloWhite","getEloBlack","isNormalInit","getStartPos","clockParams","getClockParams","strCtrl","getStartSecs","incSecs","_needNum","writePreAnno","writePostAnno","getLine","writeLine","writeMove","_var","writeGame","pgn","toPGN","strTags","reg","encodeURI","Log","TraceCollapsed","Exception","Missing","WillItWork","Stats","ListenersUtil","_inst","addListener","removeListener","fireEvent","getListeners","enableEvents","eventsEnabled","idLstnr","initInstForListeners","_evtname","dctListenersName","dctListeners","_listener","_inxRemove","_args","_funcArgs","_lstnr","delayed","needFire","removeAllListeners","msDelay","addInstEvent","GameResultEnum","GAME_UNFINISHED","BLACK_WINS","DRAW","WHITE_WINS","LINE","UNDEFINED_RESULT","UNDEFINED","isFinished","GameResult","GameHeader","white","PlayerData","event","EventData","player","result","annotator","subRound","eco","eloWh","eloBl","withElo","firstNameLen","getListStr","strEvent","strDate","toLocaleString","getStrPlayers","_clockParams","init","site","rnds","fromPGNString","deleted","SourceData","AnnotatorData","nEco","ECOtoString","readResult","dt","plyCount","skipSizedRead","beginSizedRead","eType","nGame","endSizedRead","beginSizedWrite","writeResult","endSizedWrite","gameNo","elow","elob","filterVal","_res","nClass","pClass","_first","_last","lenFirst","_strFull","g_splitOnComma","arrPartsColon","trim","g_splitOnSpace","arrPartsSpace","readByteLenASCIIString","writeByteLenASCIIString","create","nation","category","rounds","source","publisher","pubdt","verdt","version","quality","TeamData","team","seasoned","LineStackItem","_mvsToGo","mvsToGo","setMainLine","LineStack","_mainLine","shallowClone","Top","deleteRemaining","itmTop","lineNewMain","deletePrevious","decMovesToGo","getMovesToGo","subLine","parentLine","getParentLine","getParentMoveIndex","mvKnick","inxLine","indexOfLine","removeLine","mvNewKnick","moveLinesTo","swapMoves","insertLine","setMovesToGo","mvParent","itm","MoveEnterType","Game","getMoves","getPreviousMove","getLastMove","getPlyNum","InitListeners","start","mainLine","stk","initPost","onlineDBID","fireOnChanged","fireOnHeaderChanged","initLine","_gm","noFire","replaceGameNo","replaceDBId","fireOnResetGame","fireOnCurPosChanged","posInit","isLineEnd","isLineStart","assign","setResult","getResult","_stk","getStackForLine","getStackPos","_stkNew","getSimplePath","_hdr","moveNr","getMoveIndex","getBaggage","setBaggage","getAnnoItem","_nofire","setAnno","nofire","curLine","getCurLine","deleteAnnoItem","fireOnAnnoChanged","_p","strLine","strMove","getStrMoveNumInLine","nVal","delayfireOnCurPosChanged","delayfireOnChanged","delayfireOnHeaderChanged","delayfireOnAnnoChanged","continuefireOnCurPosChanged","continuefireOnChanged","continuefireOnHeaderChanged","continuefireOnAnnoChanged","_getCurLine","_cut","itmStk","stkNew","itmNew","gotoStack","nMove","gotoIndex","fireOnNavigate","getStackForIndex","_arrSimplePath","_getStackForSimplePath","simplePath","fireOnClickInNotation","getNextMove","getTopItem","incMovesToGo","isGameStart","gotoPrev","setStack","_fireOnMove","mvNext","gotoNext","fireOnMove","findLine","gotoLine","nLine","firstMoveOfLine","gotoMove","inxRes","linePrev","inxItm","lineCur","inxParMv","mvLined","inxPrevLine","lenLine","lenLines","isOnMainLine","promoteLine","_shiftLine","lineTop","getTopLine","getParentMove","_noFire","posStart","_findPos","lnMe","inxMeStart","inxSrc","lnSrc","inxMe","mvMe","mvSrc","CMP","lnDst","mvLast","lnNew","addLine","storeState","_makeMoveNewLine","_mvType","mvType","_makeMoveNewMainLine","_makeMoveInsertMove","_makeMoveOverwriteMain","_makeMoveOverwriteLine","_makeMoveInsertLine","str64","constructFromBase64","compactFromDataBuf","readGameOnly2","setHeader","_writeGame","_readGame","_readGame2","_writeGame2","posWrk","tree","gotoEnd","hasPos","initForListeners","addEvent","lineSub","postCalcCtx","arrTmp","_arrPath","itmSimple","stt","_getStackForIndex","_stt","_inc","cntLines","inxCur","inxShift","swapLines","_mv1","_mv2","_makeMoveInMain","_fnCut","_makeMoveSetCtx","_cutIllegalMoves","lineToCut","_makeMoveInLine","fnCut","newLine","pushMove","_posStart","_inxStart","mvToCheck","normalInit","writeBool","readBool","setMoveNum","_writeStartPos","_writeMoves","_writeMoves2","_readStartPos","_readMoves","empty","_readMoves2","_posTarget","_posWrk","getPiece","pcPawn","rStart","pcKilledPawn","rKilledStart","isMainLine","lnSub","canCut","EloRating","nElo","RATING_COUNT_MAX","RATING_COUNT","ratingType","getElo","BULLET","POOL","BLITZ","SLOW","POOL_BLITZ","POOL_BULLET","CENTAUR","ClockParams","minutes","startMins","addMins","addSecs","getAvGameTimeSeconds","calcRatingType","createFromSeekParams","seekParams","cp","params","SpecialGlyphs","GlyphTexts","PieceGlyphs","UnicodePieceGlyphs","addTexts","_symbols","txts","GlyphType","MOVE_GLYPH","PRE_GLYPH","POST_GLYPH","getText","getType","GlyphLocalization","UnicodeGlyphLocalization","_gly","glyphs","uglyphs","TokenType","UNKNOWN","EOF","HEAD_OP","HEAD_CL","STR_VAR","STR_VAL","COMMENT","VAR_OP","VAR_CL","RES_STAR","RES_1_0","RES_0_1","RES_1_2","BUCK","CHECK","ROCHADE","NULLMOVE","NUM","DOT","LONG_ROCHADE","SHORT_ROCHADE","BAD","VERY_BAD","GOOD","VERY_GOOD","BAD_GOOD","GOOD_BAD","Token","_enumType","EnumToString","PGNTokenStream","_strPGN","m_it","m_inHeader","hdrVar","hdrVal","strComment","strNum","isMoveChar","PGNLexer","m_stm","m_last","nextToken","peek","getIsType","_typeCmp","PGNSubLine","PGNMove","m_strMove","m_isCheck","m_isMate","m_isShortCastle","m_isLongCastle","m_isNullMove","m_isTake","m_mvd","m_prom","m_colFrom","m_rowFrom","m_colTo","m_rowTo","m_to","$1","$2","$3","$4","$5","$6","$7","_chk","_mate","matchesFrom","PGNComment","_strComment","m_strComment","PGNGlyph","_glyph","getGlyph","m_glyph","PGNMoveNum","_num","_isBlack","m_num","m_isBlack","PGNGame","getHeaders","m_hdrs","m_mainLine","PGNParser","_lexer","m_lexer","gm","acceptHeaders","acceptGameNotation","acceptNotation","acceptResult","tokRes","isResultTokenType","elem","acceptNotaElem","acceptMoveNum","acceptMove","acceptGlyph","acceptSubLine","acceptComment","tokenTypeToGlyph","popT","tokNum","tokSpec","isGlyphType","glyph","tokComment","cntDots","tokMove","isMoveTokenType","setLongCastling","setShortCastling","setNullMove","chk","mate","_hdrs","acceptHeader","tokVar","tokVal","toColSq","_arrArgs","strArg","csq","toColArrow","carr","toDiag","strLegend","toTime","arrParts","fromCentiSecs","toEval","myeval","toTraining","fromPGN","toEvalProfile","evals","toMedal","PGNAnnoResolver","g_regexEval","toAnno","tmpComment","myEval","evalAnno","inxStart","index","arrCmds","PGNCommand","cmd","m_cmd","cmdToAnno","m_args","PGN","_pgnHdr","setWhite","checkUndefined","setBlack","setEvent","setSite","setAnnotator","setECO","setRoundStr","isDefined","whiteelo","setEloWhite","blackelo","setEloBlack","setDateStr","timecontrol","setClockParams","toClockParams","plycount","rexCP","_pgnGM","hdrs","toHeader","pgnLine","toLine","gmRes","_pgnMv","isWTM","trustLegal","getTo","getSideToMove","getProm","arrAttks","getBishopAttacksTo","getRookAttacksTo","getQueenAttacksTo","getEPVictimField","getPawnMovesTo","funFltr","arrEnds","lexer","pgnGM","acceptGame","toGame","_pgnLine","lineRes","undoLast","preComment","toMove","getComment","setParentMoveIndex","splitGames","firstToken","lineEnd","detectLineEnd","canBeMixed","fixMixed","delim","lenShift","lastInx","inxDelim","lastPGN","g_regexHdr","g_regexWS","repair","regexHdr","regexWS","lastIndex","inxLast","strBetween","strVar","strVal","strRest","parseGameNoMoves","acceptGameNoMoves","parseHeader","pgnHdr","_cmd","_strCmd","_strParams","initArgs","_strArgs","regexArg","more","g_regexWhole","_arrCmds","strCmd","CookieUtils","unannotate","strPGN","html","g2","moveIndex","gameID","parseGame","sName","sValue","localStorage","SetStorageItem","CodeAccountName","doHtmlDecode","GetStorageItem","removeItem","GameToPgn","ParseGame","strExpires","oDate","toUTCString","domain","sCookie","cookie","oCrumbles","oPair","sKey","decodeURIComponent","SetCookie","GetCookie","filePaths","LocalizationUtils","newLocalization","NOTA_LOCALIZATION","chessLocEng","getChessLocEng","myMovesLocEng","getMyMovesLocEng","mixObject","strings","newLanguage","currentLocalization","setLocalization","folderName","GetLanguageFolderName","nImportCallbacks","localizationObj","localizationPart","default","GetNotationLocalization","notaLoc","Point","clientX","clientY","touches","pageX","pageY","dVec","subtract","toInt","Size","sizOuter","Rect","left","top","right","bottom","rect","clientRect","x1","y1","x2","y2","boundary","Path","getTopLeft","getTopRight","getBottomRight","getBottomLeft","dx","dy","shrink","_w","_h","tl","subPaths","point","ctx","beginPath","execPoly","closePath","points","moveTo","lineTo","execCurve","quadraticCurveTo","System","getStrOS","strOS","getiOSVersion","getAndroidVersion","isWindows","isLinux","isMac","getOSChar","osID","isIPhone","isIPad","isAndroid","getStrSysInfo","innerWidth","innerHeight","devicePixelRatio","getNCpus","isCordova","cordova","isMobile","userAgent","isDesktop","isElectron","documentElement","webkitrequestFullscreen","mozrequestFullscreen","msrequestFullscreen","isFullScreen","fullscreen","webkitIsFullScreen","mozFullScreen","availHeight","isAtLeastTablet","parseFloat","isTouchDevice","isTouchChecked","MaxTouchPoints","msMaxTouchPoints","runsInIFrame","referrer","getWindowPos","screenLeft","screenTop","screenX","screenY","getWindowSize","getElementsByTagName","wid","clientWidth","hgt","clientHeight","getTimeZone","rightNow","isHighResScreen","isPortraitScreen","fact","getLanguage","getSystemLanguage","systemLanguage","getWindowsCodePage","inputEncoding","getInternetExplorerVersion","rv","appName","useExtJSTouchCSS","isBrowserOk","getIEVersion","isAndroidBrowser","isSafariOnWindows","getSafariVersion","isChrome","isHTTPS","protocol","msie","edge","getFirefoxVersion","isNonCrossDomainIE","canRunWebAssembly","isActivexEnabled","isWebKit","isSafari","isFirefox","isIE","isOldIE","browserIsSafeForEngine","cpus","ie","ff","saf","safe","copyToClipboard","clipboard","writeText","textArea","focus","select","execCommand","fallbackCopyTextToClipboard","isWebGlCapable","return_context","WebGLRenderingContext","names","context","getParameter","gl","runsOnChessBaseDomain","runsOnChessBaseCom","runsOnLiveChessBaseCom","runsOnVideosChessBaseCom","getDevicePixelRatio","overrideDeviceZoom","overriddenDeviceZoom","pixToZoom","zoomToPix","hardwareConcurrency","getDeviceMemory","deviceMemory","getHardwareId","browser","detect","appVersion","os","version_string","dataString","dataProp","versionSearch","identity","subString","vendor","opera","SERVER","BACKUP_SERVER","LOGIN_MODES","AccountUtils","username","password","callback","nameCoded","EncodeAndBase64","GetCmdKey","queryParameters","user","app","pass","QueryServer","userName","token","parameters","query","xmlRequest","timeout","ontimeout","HandleLoginFailed","readyState","responsedata","subscription","loginStatus","Length","cat","nameChars","codeChars","chars2","nCode","nName","OnlineEntryEnum","OnlineEntry","aGame","aHeader","aDB","nGameNr","Timer","handler","active","runOnce","inHandler","fnAfterHandler","stop","isPeriodic","timer","timeoutHandler","tick","Tick","setInterval","getExpiredMS","clearTimeout","busyWait","milliSecs","launch","hasHiResTimer","ticker","valueOf","strLog","getExpired","getHiResTick","lm","RepeatGate","isActive","Queue","nOffset","item","YourIdData","nId","ConnectId","nIdDefaultPlayingGroup","nIdBroadcastGroup","nIdCMSArchive","strToken","strUserId","accountType","msg","getBuf","nIdCMSArchiv","readASCIIString","SockMsgId","WIN_INVALID_PASSWORD","WIN_ACCESS_DENIED","ALIVE","LOGON","LOGOFF","YOUR_ID","INVALID_PASSWORD","RECONNECT_OK","CLIENTPING","CLIENTECHO","BINDERTIMEOUT","ALREADYLOGGEDON","FORCE_LOGOFF","INVALIDPASSWORD","YOUR_LOGINTOKEN","ACCOUNT_LOCKOUT","IAMALIVE","LOGIN_OTHER_MACHINE","KICKEDOUT_OTHER_MACHINE","IDLE_CLIENT_LOGOFF","STARTTYPINGCHAT","ALERT","PING_BY_NAME","RESPOND_PING_BY_NAME","QUERY_SERVERALIVE","SERVER_IS_ALIVE","TEST","CLIENTLIST","ADDCLIENTS","REMOVECLIENTS","CLIENTDATACHANGE","LISTFRAGMENTRECEIVED","LISTUPDATECHANGE","CLIENTDATACHANGELIST","SESSIONSTATUSCHANGELIST","REQUESTCLIENTLIST","GROUPSTATUSCHANGE","CHANGEGROUP","DEFAULTGROUPS","CHANNELDATA","CHANNELSTATUSCHANGE","REQUESTCHANNELS","JOINCHANNEL","GETBROADCASTURLS","BROADCASTURLS_DATA","GETGEOLEADERBOARD","GEOLEADERBOARD_DATA","GETFRIENDSLEADERBOARD","GETFRIENDSLEADERBOARD_REPLY","REQUEST_STATISTICS","STATISTICS_DATA","RELAYFRIENDSMESSAGE","FRIENDSMESSAGE_DATA","GETACTIVEHLSSTREAMS","GETACTIVEHLSSTREAMS_REPLY","GROUPHTMLCHANGED","REQUESTCLIENTDATA","CLIENTDATA","REQUESTBROADCASTURLSEX","REQUESTBROADCASTURLSEX_DATA","REQUESTGROUPS","GROUPSDATA","QUERY_ONLINE_DB","REQUEST_ONLINE_DB_GAMES","REQUEST_ONLINE_DB_HEADERS","REQUEST_ONLINE_DB_STATISTICS","REQUEST_ONLINE_DB_USER_INFO","REQUEST_ONLINE_DB_ADMIN_INFO","ONLINE_DB_NUMBERS","ONLINE_DB_GAMES","ONLINE_DB_HEADERS","ONLINE_DB_STATISTICS","ONLINE_DB_MAINTENANCE","ONLINE_DB_USER_INFO","ONLINE_DB_ADMIN_INFO","MAINTENANCE_ONLINE_DB_UPDATE","PLAYER_BASE_USER","TERABRAIN_USER","TERABRAIN_ERROR","TERABRAIN_MAINTENANCE","REQUEST_TERABRAIN_POSITION","TERABRAIN_REQUEST","TERABRAIN_ENGINE_SEARCHDATA","TERABRAIN_BOOKINFO","TERABRAIN_TABLEDATA","CLOUD_USER","TRAINING_USER","ANALYSIS_USER","LIVE_USER","toNumString","WebSockMessage","_init","userType","idReceiver","idSender","withMsgId","withCheckSum","hdrLen","checkSize","arrBuf","getWriteSize","msgId","writeToDataView","getCheckSum16","readFromDataView","SockState","Connection","lobby","uris","connectId","nUri","wsUri","msgsWaitingToSend","msgsWaitingToSendNoId","onYourId","conn","onClose","isFirstConnect","firstConnectTries","onConnectionLoss","onServerDown","reconnectTries","isActiveTicker","weAreAliveTicker","tryTimer","periodicHandler","tryTimerPeriod","msgCnt","socket","WebSocket","onopen","sendMessage","onConnect","onclose","onBroken","Code","switchConnection","onSocketError","onmessage","evt","fromReceiveBuf","handleReceivedMessage","LogException","isConnected","isConnecting","periodicPingTimer","runPeriodic","sockMsg","bDone","handleYourId","handleReceived","yourId","fromSocketsMsg","idReceived","noId","noCheck","getIdReceiver","setIdReceiver","setIdSender","binaryType","arrBufSend","fillSendArrBuf","getLength","pingServer","onSwitchConn","LoginMode","LoginFlags","LogonData","strName","strPassword","nLoginMode","guid","strPass","nMode","versionCode","codepage","strRoom","strRoomUrl","documentUrl","hasSockMsgIds","address","writeASCIIString","DOM","getElementById","className","header","div","innerText","createTextNode","textContent","insertId","styleClass","setCodedCookie","getCodedCookie","setCookie","codeAccountName","getCookie","toGMTString","el","cls","ex","caller","textOut","LogOffReason","Connector","hasIdReceived","pingServerPeriodMS","reconnectBaseTime","bufferedMsgs","isFirstConn","connectCount","pingCount","silentServerPing","logClientEcho","gateReconn","gatePing","stupidClosureCompilerBugMsg","pingTimer","onServerPingTimeout","utf8User","loginMode","pingStart","getTick","timerReconnect","nMyLagMS","onConnLoss","hdlOnServerDown","boundLoginOk","setAccountNameCookie","periodicPingHandler","onConnBroken","onServerNotAlive","forcedLogOff","userLoggedOff","logOff","onChangeLogin","connectFresh","connectUser","connect","isSilent","statusMsg","logIntoChat","getWaitForServerMsg","clientParams","fromRandom","aLogonData","createLogonData","modifyLoginData","sendNoId","getSocketsMsg","hasSockCheckSum","isGuest","clearLoginCookies","onLogOff","prepareLoginChange","silentPing","period","force","sendSimple","silentMS","getMaxConnSilenceMS","getConnTimeOutMS","getTimeoutMs","ms","millis","onServerAlive","idBound","client","isPremium","signalOnConnect","logon","logonGuest","dailyResources","MaxVideoGroupSessions","nGroupVideoSessions","MaxVideoGroupMinutes","nGroupVideoQuarters","loginToken","rememberLoginToken","onIdReceived","bHandled","handleAreYouAlive","handleBinderTimeout","handleInvalidPassword","handleAccountLockout","onAlreadyLoggedOn","onLoginOtherMachine","onKickedOutOtherMachine","handleServerIsAlive","handleClientPing","handleClientEcho","handleRespondPingByName","handleForceLogoff","handleLoginToken","CHECKSUM_ERROR","handleCheckSumError","onInvalidPassword","nBoundId","onLoginToken","getIdSender","lists","clientNameMap","fnOnClientEcho","getNIdBound","idMsg","recv","getNId","bufferIfError","prevMsg","initiateReconnect","inTorture","onDisconnectAlarm","GameAutoCompleteEnum","GameAutoCompleteRequest","strRequest","m_strRequest","m_nFlags","rDB","writeString","GameAutoCompleteAnswer","nCount","strItem","readString","MoveCoder","moveEncode19","moveDecode19","cMove","coffs","NumBoardImpl","numBoard","piecePos","NumBoard","rMove","FULL_MOVE_INFO","maxPiece","Nominal","offs","To","From","pieceOffs","moveOffs","tableOffs","KING2_START","KING2_END","m_aImpl","pieceMov","pieceNum","bPawnMov","pieceInx","wPawnOffs","fr","rBoard","nFormat","nPiece","moveOffs_Chess","tableOffs_Chess","pieceMov_Chess","pieceNum_Chess","bPawnMov_Chess","pieceOffs_Chess","pieceInx_Chess","maxPiece_Chess","wPawnOffs_Chess","FORMAT_1","FORMAT_0","pawn","MOVEPIECE","lastPiece","_sq","_piece","rPos","IsNullMove","frSq","toSq","capture","isCastling","IsProm","promote","moveOffs2","tableOffs2","maxPiece_MultiKing","MOVE_EP","MOVE_DOUBLE","MOVE_PROM","CB_ORIGIN1","CB_LINE_START","CB_LINE_END","OnlineStatEntry","moves","strMoves","strGames","strScore","iLastYear","strMoveNr","nota","nWhiteEloSum","nBlackEloSum","nWhiteEloCount","nBlackEloCount","nLosses","nDraws","nWins","nGames","score","getNWhiteEloAv","getNBlackEloAv","dateLastPlayed","readInt64","aNumBoard","aBoard","aNota","aMoveCoder","pPos","OnlineStatistics","vecStat","readFromDataBuffer","nStat","strFen","OrgPosition","aStat","getNMoves","strFenOrg","OrgPositionMove","getMove","aNext","getEntry","Count","OnlineDBUserMsgId","OnlineLobby","idGroup","gamesInitialLoad","firstMove","games","statboard","statside","isScrollSearching","gamesScrollLoad","maxGamesScrollLoad","gameSearchIndices","searchMask","maxGames","parseFreeText","numberOfGamesToSearch","getGames","sideToMove","arrIds","setVal","handleReceivedByConnector","requestInfo","handleOnlineStatistics","handleOnlineDBUserInfo","handleOnlineDBNumbers","handleGames","handleHeaders","handleUserMsg","nGameNo","aEntry","aGameNr","headersNeeded","fireOnNoGamesFound","newGames","nRead","aDBGame","loadHeader","fireOnGames","getVal","readGame","fireOnScrollSearch","onlineStats","fireOnStatistics","fireOnIDReceived","getUserType","handleAutoComplete","autoCompleteCallback","autoCompleteCallbackFn","request","setUserType","useOnlineLobbyContext","getCurrentLoginStatus","localizationRef","onlineLobbyRef","useRef","callbackIndices","databaseTableContentRef","useState","databaseTableContent","setDatabaseTableContent","playerData","setPlayerData","setIsConnected","isLoading","setIsLoading","isScrollLoading","setIsScrollLoading","reachedScrollSearchEnd","setReachedScrollSearchEnd","currentSearchCount","setCurrentSearchCount","handleOnlineLobbyConnected","reachedScrollEnd","newDatabaseTableContent","createDatabaseTableContent","current","newPlayerData","selection","OnlineLobbyUtils","calcTeraBrainID","includes","createPlayerData","handleGamesOnScrollSearch","handleNoGamesFound","showPremium","newContent","render","gameToString","info","logOffOnlineLobby","useEffect","newOnlineLobby","addOnIDReceivedListener","index01","addOnGamesListener","index02","addOnNoGamesFoundListener","index03","addOnScrollSearchListener","removeOnGamesListener","removeOnNoGamesFoundListener","removeOnScrollSearchListener","searchOnlineDB","newSearchMask","ReactGA","action","scrollSearchOnlineDB","scrollSearch","refreshOnlineDBList","newBoard","newSideToMove","setSearchBoard","setUseBoard","requestAutoComplete","startMove","notaLocalization","nCnt","strMoveNum","ONLINEDB_LAYOUTS","LocalPlayerBase","localforage","createInstance","storageObject","firstname","lastname","getLastNameKey","getFirstNameKey","keydata","m_NewCBPlayer","m_aKey","m_sLastName","m_sFirstName","firstName","lastName","elo","callbackSuccess","callbackError","realLastName","VERSION","PlayerUserMsgId","QUERY_MULTI_NATION_INFO","QUERY_FILL_PLAYERITEM_BY_NAME_AND_THUMB","QUERY_FILL_PLAYERITEM_BY_NAME","QUERY_FILL_MULTIPLAYERITEM_BNAT","QUERY_GET_BATCH_ID","QUERY_CURRENT_PB_VERSION","QUERY_FILL_PLAYER_BY_CBID","QUERY_FILL_CANDIDATES_ARRAY","QUERY_FILL_PICTURE","ANS_MULTI_NATION_INFO","ANS_FILL_PLAYERITEM_BY_NAME_AND_THUMB","ANS_FILL_PLAYERITEM_BY_NAME","ANS_FILL_MULTIPLAYERITEM_BNAT","ANS_GET_BATCH_ID","ANS_CURRENT_PB_VERSION","ANS_FILL_PLAYER_BY_CBID","ANS_FILL_CANDIDATES_ARRAY","ANS_FILL_PICTURE","SEND_FEEDBACK_ANS","QUERY_JS_PLAYER_BY_NAME_AND_ELO","ANS_JS_PLAYER_BY_NAME_AND_ELO","QUERY_JS_MULTI_PLAYER_INFO","ANS_JS_PLAYER_MULTI_PLAYER_INFO","QUERY_JS_MULTI_PLAYER_WITH_PIC","ANS_JS_MULTI_PLAYER_WITH_PIC","PlayerKey","rFirstName","rLastName","m_nIdenticalCount","m_nCBId","m_aBirthDate","writeCBDate","PLKMAX","MAX_FIRSTNAME","MAX_LASTNAME","readCBDate","usn","GetYear","aStr","rD","Title","eTitleCode","Str1","CBTC_WCH","CBTC_WWCH","CBTC_GM","CBTC_IM","CBTC_FM","CBTC_WGM","CBTC_WIM","CBTC_WFM","CBTC_HGM","CBTC_MARKED","eCode","CBTC_NONE","HighPlayerData","setDeathDate","setCurrentTitle","setNation","setBornNation","setIsMale","m_aDeathDate","m_aTitle","rT","m_aNation","rN","m_aBornNation","m_isMale","bMale","LowPlayerData","m_Titles","m_TitleDate","m_OtherNations","m_ChangeDate","PLMAX","MAX_TITLES","aTitle","m_ChangedBornNation","MAX_NATIONS","nNation","NewCBPlayer","nDataMask","Player","PL","PL_DATA_KEY","m_HighData","PL_DATA_HIGH","m_LowData","PL_DATA_LOW","getLastName","rS","setLastName","getFirstName","setFirstName","rKey","GetRLowPlayerData","getMaxTitles","getMaxNations","ExtRatingType12","nRating","aNation","sProvider","EloNumber","bOld","nRatingId","bFide","aRating","nRank","getNElo","getRating","EloArray","vecElo","bOldFormat","aEloNumber","ReadFromDataBuffer","nTrendLen","aTrend","n2","nMonthN","nDiff","rDate","nEloMax","rElo","nEloMin","nMinYear","nMaxYear","nTotalSum","nFound","nRetElo","PLMMRecord","nSerial","nMediaType","sAuthor","sLocation","isExact","MMNameArray","nPhotos","aRecord","vecMM","m_nDataMask","m_EloArray","PL_DATA_ELO","PL_DATA_ONE_ELO","readLatestFromDataBuffer","m_MMNameArray","PL_DATA_PICS","PL_DATA_ONE_PIC","setModifyDate","GetKey","GetCBId","SetCBId","m_nMediaId","getRPlayerKey","GetBirthDate","setBirthDate","getIdenticalCount","getRHighPlayerData","getCurrentTitle","GetNation","getBornNation","GetDeathDate","getIsMale","m_nVersion","m_dCached","m_aModifyDate","PFN","PFN_RAW","PFN_ARR","PFN_BMP","PL_DATA_ALL","PlayerLobby","localPB","idPlayerTicket","idCandidateTicket","idPictureTicket","playerContext","requestQueue","connectTries","callbackfnConnected","loggedOff","strAddress","callbackFeedback","nFamily","binary","binary_string","created","setPlayer","aPlayer","setTitle","pic","callbackPlayer","callbackNotFound","beginGetPlayer","playerFound","playerErrorFunc","datas","isLoggedIn","requestWithTicket","addToStorage","playerArray","callbackPlayerArray","withPicture","requestMultiPlayerInfo","fnCallback","found","writeDataBuffer","workRequestQueue","fireOnConnected","handleChat","handleReconnectOk","idStr","handleFillJSPlayer","handleFeedback","handleFillJSPlayerArray","handleFillJSPlayerArrayWithPics","handleTicket","nTicketId","arrPlayer","nPicSize","ReadByte","callbackPortrait","changeGroup","requestChannels","updatePlayerStatus","requestGameList","onShowPlayers","onHideGames","onShowGames","onHidePlayers","Nation","NAT","flag","initFlag","initCode","AFG","ALB","ALG","ASU","AND","ANG","AGG","ANT","ARG","ARM","ARN","AUS","AUT","AZE","BAH","BHN","BAN","BAR","BLR","BEL","BLZ","BNN","BER","BTN","BOL","BIH","BOT","IVB","ISV","BRN","BUL","BUR","BRI","CMB","CAM","CAN","KAP","CAY","CAR","CHD","CIB","CHI","CIA","COA","COL","COM","CON","CIN","CRI","CUB","CYP","DEN","DJI","ECU","ELG","EGY","ERI","EST","ETH","FGB","FAI","FIJ","FIN","FRG","FRP","MKD","GAB","GAM","GEO","SAA","DDR","GE2","GHA","GGB","GRE","GRA","GRL","FGA","GMA","GUA","GUI","GUB","GCI","GUY","HAI","HON","HKG","HUN","ISL","IND","INA","IRI","IRQ","IOM","ISR","IRL","IVO","JAM","JMY","JPN","JCI","JOR","KAZ","KEN","KBA","KOR","KYR","KUW","LAO","LAT","LBN","LES","LBR","LBY","LIE","LTU","LUX","MAC","MAD","MAS","MLI","MLT","MWI","MFR","MAU","MRI","MYF","MEX","MIC","MDA","MNC","MON","MSG","MAR","MOZ","MYA","NAM","NEP","AHO","NCF","NET","NZL","NCA","NGR","NNN","NNA","NMI","OTM","PAK","PAL","PLE","PAN","PNG","PAR","PER","PHI","PIG","PUR","QAT","RUF","ROU","URS","ZAR","ESA","SMR","SAO","SCO","SEN","YUG","SRB","SEY","SIN","SOM","RSA","SRI","SUD","SUR","SVN","SUI","SYR","HGB","PGB","TJK","TAN","THA","TKI","TRI","TUN","TCI","TUR","TKM","UGA","UAE","USA","URU","UZB","VEN","WLS","WFR","YEM","ZAM","ZIM","ZRE","NKO","MDV","MSH","OMN","NAU","NIG","SAU","TOG","TON","VAN","VAT","TUV","SWA","SIE","SLU","PAP","SVI","SAM","SKI","SAL","RWA","TPE","NIR","GBR","KOS","styleSheets","theFlag","CSR","ISS","MNE","PlayerLobbyUtils","nDot","CBHorizontalSpacer","props","styles","base","CBLogIn","changeSideNav","useContext","SideNavContext","changeLogInStatus","LoginContext","loc","LocalizationContext","localization","setUserName","setPassword","loginHasError","setLoginHasError","userNameRef","passwordRef","handleSubmit","blur","PasswordLogin","handleReceiveLogInToken","userId","ResultType","SetCodedCookie","TokenLogin","handleTokenLogin","GetLoginStatusFromSubscription","Subscription","container","label","placeholder","ref","onChange","onSubmit","onClick","button","rel","register","CBSideNavButton","selected","children","image","alt","DESIGN_THEMES","light","dark","BOARD_LAYOUTS","PIECE_THEMES","preload","fritz","crystals","uscf","oldstyle","BOARD_THEMES","BOARD_THEMES_SETTINGS","clean","wood","blue","useBoardThemeContext","appLayout","mainDesignTheme","isInitialised","setIsInitialised","boardLayout","setBoardLayout","boardTheme","setBoardTheme","boardImagesCss","setBoardImagesCss","boardThemeSetting","setBoardThemeSetting","pieceTheme","setPieceTheme","pieceCss","setPieceCss","changeBoardTheme","newBoardThemeSetting","loadBoardImagesCss","pathEnding","newBoardTheme","cssObject","changePieceTheme","newPieceTheme","loadPieceImagesCss","savedBoardThemeSetting","values","initBoardTheme","savedPieceTheme","initPieceTheme","getPieceImageCss","pieceIndex","whiteKing","whiteQueen","whiteKnight","whiteBishop","whiteRook","whitePawn","blackKing","blackQueen","blackKnight","blackBishop","blackRook","blackPawn","SETTINGSMODE","CBSettings","renderMode","setRenderMode","selectedTheme","ThemeContext","theme","setTheme","selectedBoardThemeSetting","BoardThemeContext","selectedPieceTheme","changeLocalization","setNewRenderMode","newRenderMode","SIDENAV_RENDERMODES","basic","settingsContainer","inset","GetAvailableLanguages","nativeString","chooseLanguage","renderLanguageButton","chooseBoard","choosePieces","chooseTheme","CBAccountInfo","logoutContext","logout","infoText","GetLoginStringFromLoginStatus","CBMAccountIcon","React","memo","baseProfile","xmlns","viewBox","headerIcon","display","margin","float","cx","CBMBoardIcon","defaultIcon","CBMBookIcon","CBMCloseIcon","transform","CBMMinusIcon","CBMNextIcon","CBMPlusIcon","CBCirclePlusIcon","CBMPreviousIcon","CBMResetIcon","CBMSearchIcon","CBMSettingsIcon","CBMSideNavIcon","CBTableSortIcon","tableSort","CBMTableSortIcon","CBMTableSortReversedIcon","CBDownloadIcon","download","CBMToEndIcon","CBMToStartIcon","CBMTurnBoardIcon","main","login","settings","account","CBNavBarSide","sideNavIsOpen","sideNavRenderMode","renderSideBar","renderMain","renderModeFunction","closed","closeButton","iconStyles","sendSwitchAppAnalytics","topContainer","appLinkContainer","playChess","liveChess","tactics","videos","openings","myGames","quiz","players","news","studies","PosTree","posToHuff3","nBufSize","bufLen","numBits","theBits","extraBits","extraFlags","getCastleRights","HUFF_CASTLE","getCPPEPFile","HUFF_EP","huff3ToPos","maxBuf","testBit","HUFF_960","setBTM","theCode","sqSum","isUniqe","HashPosition","m_cPos","rHP","nNormFlags","aPosTree","GamePerformanceStats","strLastName","strFirstName","m_nEloCount","m_nEloSum","m_nResultCount","m_nResultSum","rhs","WriteUnsigned","bInvertBTM","TBrainTimeStamp","nTimeStamp","nDay","nMonth","nYear","TS_STARTYEAR","Min","Today","GetDate","DateToUShort","TBRAIN","TBrainMove","m_performanceStats","m_aLine","m_nEval","m_nTimeStamp","TBRAINMOVE_HASEVAL","getNGames","getSortEloAv","BeginSizedWrite","WriteInt64","m_nVisits","WriteBYTE","nType","nProm","WriteShort","WriteUShort","WriteToDataBuffer","EndSizedWrite","HASH_LINE_LEN","lineItem","UShortToDate","getNum","TBLineFeedbackType","TBLINEFB_LIKE","TBLINEFB_DISLIKE","TBLINEFB_REPORT","CALCTIME_MINIMAL","CALCTIME_REASONABLE_THRESH","CALCTIME_DONATION","CALCTIME_DISCOVERY","CALCTIME_CRAZY","TBRAINMOVE_HASCOMMENT","HASH_LINE_CNT","CALCTIME_DEEP","HashMoveData","m_nConfidence","m_nDepth","nLineLen","m_nEngineId","m_nUserId","m_nCalcDepth","m_bReasonableDepth","m_nRankingListWeight","rVar","bBTM","rEval","nMoveNo","rnMoveNo","Abs","nCurrCalcDepth","GetNCalcDepth","SETFLAG","ISFLAG","HashTableData","m_nIdDiscoverer","m_aMove","writeUShort","writeInt64","m_nPopularity","writeUnsigned","m_nGames","wndSizedWrite","nLineCnt","readUint64","m_nReasonableThresh","m_nDiscoveryThresh","m_nDonationThresh","m_nDeepAnalysisThresh","Clear","Empty","FillPos","nPopularity","htd","gameKernel","maxMoves","maxLen","convertToCBMoveLine","lineNota","startPosition","notationLocalization","moveline","HTD_DISCOVERED","TBrainMoveList","add","aTBMove","getNFormat","getMaxGames","nMaxGames","getHintedBestMove","hintMove","strongestEval","sortEval","btm","sort","Storage","storage","sessionStorage","Set","elements","bag","insert","pivot","setEquals","setGreater","otherSet","fnFilter","store","save","fnConverter","PositionTracker","trackCnt","enabled","lastSeenAt","TrackedPos","contains","tracked","inc","trackedPos","CBGuid","uint32Data1","uint16Data2","uint16Data3","uint8Data4","appSeed","nSeed","CPUInfo","m_nNumaNodes","m_nPhysicalProcs","m_nPhysicalCores","m_nLogicalCores","m_nNumaNode","MachineInfo","m_aCPUInfo","m_nSpeed","nSpeed","PROPFLAGS","PROP_HT","aGuid","CreateFromHardware","PROP_NONE","ClientMachineInfo","s_bInited","TaggedHashPos","rTag","m_nMoveNo","m_nConnectIdSubmissor","m_nConnectIdSolver","m_nTicket","m_strTag","IsSet","IsStartPosition","IsFinalPosition","WriteInt","WriteString","BeginSizedRead","ReadInt","ReadString","bRet","EndSizedRead","CreatePosition","SetMoveNo","TeraBrainRequest","eRequestType","rMachineInfo","m_eRequestType","m_aHashPos","m_aMachineInfo","m_bCountVisit","m_bConfirmRequested","m_bHumanServerGame","TeraBrainRequestType","TBREQUEST_LB_POSINFO","TBREQUEST_LB_ALLMOVES","TBREQUEST_SEARCH_INFO","TBREQUEST_LB_UPLOADONLY","getHashPos","TBREQ_NORM_EVAL","TBREQ_MULTI_REQ","rMsg","aBuf","getPDataBuf","ReadUint32","ReadBool","TeraBrainUserMsgType","TBUSER_REQ_ENGINENAMES","TBUSER_ENGINENAMES","TBUSER_REQ_USERENTRIES","TBUSER_USERENTRIES","TBUSER_CHAT_TO_ALL","TBUSER_INJECT_GAME","TBUSER_CHESSSERVER_LOGIN","TBUSER_CHESSSERVER_LOGOUT","TBUSER_CONFIRM_LOGIN","TBUSER_HOTPOSITION","TBUSER_REQ_HOTPOSITION","TBUSER_CONFIRM_REQUEST","TBUSER_DEEP_CHECK","TBUSER_DEEP_VAR","TBUSER_BEGIN_DONATION","TBUSER_END_DONATION","TBUSER_SLAVE_ANALYSIS","TBUSER_RETRACT_REQUEST","TBUSER_RETRACT","TBUSER_SUBMIT_POSITION","TBUSER_SUBMIT_POSITION_DONE","TBUSER_SUBMIT_GAME","TBUSER_SUBMIT_GAME_RESPONSE","TBUSER_ANALYSE_GAME","TBUSER_ANALYSE_GAME_RESPONSE","TBUSER_COMMENTS","TBUSER_REQ_COMMENTS","TBUSER_ADD_COMMENT","TBUSER_COMMENT_FEEDBACK","TBUSER_REFRESH_COMMENT","TBUSER_CONFIRMCOMMENT_REQUEST","TBUSER_REQ_RANKINGLIST","TBUSER_RANKINGLIST","TBUSER_BACKUP_DATABASES","TBUSER_TEST","TBUSER_ADMIN_RESET_RANKING","TBUSER_ADMIN_BLOCK_DISCOVERY","TBUSER_REQUEST_PERSONALDATA","TBUSER_USERDATA","TBUSER_REQUEST_LOCALTREE","TBUSER_LOCALTREE","TBUSER_SUSPICIOUS_LINE","TBUSER_RESET_LIN","TBUSER_FEEDBACK_ON_LINE","TBUSER_SET_MACHINE_FACTOR","TeraBrainInfo","moveList","GetPDataBuf","Rewind","TeraBrainLobby","m_nUsageCnt","m_bLoggedIn","m_nUserReliability","m_bAdmin","m_bLaunchRankingDia","m_nAnalysisTicket","m_bSuppressRequests","m_bLaunchAnalysisByEngineNames","m_bIsInAnalysis","m_nAnalysisMoveLimit","m_bInEngineDonation","m_nDonationPositions","associativeArray","tableDataHandlers","timerClear","setEmptyTable","tracker","fnOnIdReceived","nTicket","eReqType","bDontCountVisit","bRequestConfirm","bIsHumanServerGame","bMultiRequest","s_aMachineInfo","aTBR","setIsNormedEval","setCountVisit","setConfirmRequested","setIsHumanServerGame","setIsMultiRequest","getSocketsMessage","idTicket","noVisitCount","confirm","ticket","isMultiRequest","knownPos","track","EngineIds","onConnectedToBoundServer","handleInfoMsg","handleTableData","handleEngineNames","handleConfirmRequest","aTBI","tbInfo","fireOnLiveBook","aHTD","EngineName","requestEngineNames","aPos","fireOnTBData","bPostMessage","m_sMachineGuid","IsZero","TeraBrainLobbyUtils","curSide","sorted","nTotalVisits","getNVisits","stampToday","getTimeStampToday","isEndGame","records","rTBMove","passesMoveFilter","getMoveRecord","generateLine","fPercent","getNEval","Games","Result","getFPercent","EloAvg","calcId","tbMove","isMyMove","hasEval","dataPosition","gamePosition","gameStartPosition","convertJSONLine","CBLocalizationContext","localizationContext","InitLocalization","languagePreference","SetLanguage","useLocalizationContext","Provider","CBLoginContext","loginContext","setLogInStatus","loginStatusRef","GetCodedCookie","GetCodedStorageItem","setLoginToken","loginValue","ClearCookie","ClearStorageItem","useLoginContext","LayoutContext","CBLayoutContext","layoutContext","getOnlineDbLayout","setAppLayout","windowWidth","setWindowWidth","timeOutFunction","handleResizeEvent","doResize","containerWidth","removeEventListener","useOnlineDBLayoutContext","PlayerLobbyContext","CBPlayerLobbyContext","playerLobbyContext","playerLobbyRef","playerInfoWhite","setPlayerInfoWhite","playerInfoBlack","setPlayerInfoBlack","handlePlayerLobbyConnected","handleWhitePlayerData","getStrCode","constructImage","handleBlackPlayerData","img","logOffPlayerLobby","newPlayerLobby","addOnConnectedListener","requestPlayerInfo","prepareHeader","getThisYear","getPlayer","usePlayerLobbyContext","CBThemeContext","themeContext","savedDesignTheme","matchMedia","initDesignTheme","useThemeContext","CBSideNavContext","sideNavContext","setSideNavRenderMode","setsideNavIsOpen","sideNavIsOpenRef","toggle","useSideNavContext","OnlineLobbyContext","CBOnlineLobbyContext","onlineLobbyContext","TeraBrainLobbyContext","CBTeraBrainLobbyContext","teraBrainContext","teraBrainLobbyRef","bookTablePositionRef","bookTableStartPositionRef","engineTablePositionRef","engineTableStartPositionRef","bookTableTimer","engineTableTimer","bookTableContent","setBookTableContent","bookTableIsLoading","setBookTableIsLoading","engineTableContent","setEngineTableContent","engineTableIsLoading","setEngineTableIsLoading","handleTeraBrainLobbyConnected","handleLiveBookUpdate","bookEntries","getBookData","entry","handlePosInfoUpdate","lines","variation","generateLineWithStartPosition","toFixed","logOffTeraBrainLobby","newTeraBrainLobby","addOnLiveBookListener","addOnTBDataListener","removeOnLiveBookListener","removeOnTBDataListener","searchTeraBrainBook","requestAllMoves","searchPositionInfo","requestPosInfo","useTeraBrainLobbyContext","CBBoardThemeContext","boardContext","CBHtmlRoot","htmlTag","setAttribute","checkPropsAndRenderComponent","propsToCheck","renderFunction","padding","INDEX2BACKGROUNDTRANSLATE","41","58","CBMSquare","isBottomSquareInfo","getBackgroundTranslate","backgroundPosition","getBoardImageCss","isWhiteField","squareWhite","squareBlack","isHighlighted","showSquareInfo","squareindex","whiteField","blackField","gridArea","squareName","highlight","squareInfo","squareInfoBottom","squareInfoTop","prev","next","usePrevious","previousRef","CBMChessPiece","inDrag","setInDrag","pieceRef","pieceIndexRef","startPositionRef","selectedSquareRef","prevSquareIndex","prevShowPiece","showPiece","prevPieceTheme","changeInlineTransform","speed","translate","scale","transition","getDragPosition","startDrag","currentPosition","getBoundingClientRect","pieceCenter","offset","newTranslate","onDrag","passive","endDrag","boardInDragRef","hoverElement","elementFromPoint","newSquare","getAttribute","setSelectedSquare","moveInfo","handlePieceDropped","boardIsShowingPromotion","inactive","onMouseDown","onTouchStart","CBMBoardMargin","getMarginImageCss","marginContent","textAnchor","dominantBaseline","corner","CBMBoardArrow","isKnightMove","xDist","yDist","getArrowTargetOffset","isLastMoveArrow","getKnightArrowTargetOffset","hasArrowHead","doAnimate","arrow","abovePieces","belowPieces","opacity","arrowHead","refX","arrowHeadWidth","refY","arrowHeadHeight","markerWidth","markerHeight","markerUnits","orient","strokeWidth","arrowHeadStrokeWidth","fill","strokeLinecap","arrowLine","markerEnd","CBSelectPromotion","isWhitePromo","enterPromotion","fromTop","promotionContainer","promotionElement","promotionQueen","promotionRook","promotionBishop","promotionKnight","closePromotion","closePromotionBottom","closePromotionInner","CBChessBoard","setSquareSize","selectedSquare","pieceList","userArrows","setUserArrows","promoMove","setPromoMove","showPromotionChoices","setShowPromotionChoices","boardRef","inDragRef","preventScrollingOnDrag","boardPosition","boardRefCallback","useCallback","recalculateBoardSize","newSquareSize","gridTemplateRows","gridTemplateColumns","borderSize","isLegalFromTo","isCaptureMove","isPromotionMove","reactToEnteredMove","newUserArrows","chosenPiece","grid","boardtheme","boardalignment","square","findIndex","uniquePiece","CBRibbon","CBButton","borderRight","border","borderLeft","CBMButton","CBBoardNavigationBar","keyDownInterval","checkKeyDown","moveOnKeyDown","isFirst","moveBack","moveForward","checkKeyUp","newGame","restartGame","playingMode","mayNavigate","gotoStart","goToGameEnd","turnBoard","setWhiteIsBottom","onkeydown","onkeyup","flexGrow","CBChessBoardAndNavigationBar","DimensionUtils","box","pageYOffset","pageXOffset","coords","getDocumentCoordinates","CBMMove","notation","changeGamePosition","isWhite","isSelectedPrimary","isSelectedSecondary","movePart","movePartOne","movePartTwo","selectedPrimary","selectedSecondary","CBNotation","notationGenerator","setNotationGenerator","notationRef","heightStyles","setHeightStyles","isSelected","lineStackPath","checkSecondarySelection","notationPath","cloneLineStack","lineStackPathNew","renderMove","moveIndexLine","moveIndexGame","fillRemainingHeight","bottomSpace","newHeight","getRemainingHeight","maxHeight","minHeight","getHeightStyles","gameHeader","renderLine","lineIndex","insetLine","ComparisonUtils","calculateBalance","pieceCounts","matBalance","CBMaterialBalance","materialBalance","setMaterialBalance","hasMaterialImbalance","setHasMaterialImbalance","getBalanceObject","balanceObject","renderBalanceObject","imbalance","isWhiteImbalance","imgArray","hasImbalance","whiteImbalance","blackImbalance","arraysAreEqual","CBButtonBadge","clickable","renderClose","deletable","small","big","CBMButtonBadge","CBNotationTools","handlePGNClick","strTitle","blb","FileSaver","saveAs","clipboardData","setData","downloadPGN","toolObject","paddingRight","CBNotationBar","CBBoardModule","baseStyles","boardModule","paddingSection","CBMTableResizer","lastPos","dragStart","cancelable","drag","dragStop","mouseX","dragOffset","headerParent","firstChild","headerSize","offsetWidth","cell","currentPixelSizes","newFlexGrow","accumulatedFlex","cellIndex","nextSibling","cellsToRender","pixelsTaken","pixelsToBeTaken","takePixels","tableDispatch","visible","CBLoadingCircle","background","loader","Calculate","inMin","inMax","outMin","outMax","position1","position2","minDistance","maxDistance","clamp","atan2","PI","CBScrollSearchHint","loaderVisibility","setLoaderVisibility","setReachedScrollEnd","containerRef","timeOutRef","lastDistanceToScrollEnd","tableRef","handleScroll","distanceToScrollEnd","scrollHeight","scrollTop","MAX_SAFE_INTEGER","offsetHeight","handlePremiumClick","tableData","premiumContainer","premiumBadge","loadingContainer","CBTable","setCellsToRender","headerCellRef","renderHeaderCell","content","classes","renderIndex","selectedHeader","cellOuter","headerCellSortable","sortingMethods","columnIndex","isSortedReversed","headerCellInner","renderCell","renderFancy","cellInnerFancy","cellInner","renderRow","row","selectedRow","bodyRow","striped","rowInfo","onEntryClick","newSelection","handleRowClick","fixedHeight","notToRender","removeOnResize","removeAtSize","toRender","flexGrowFallback","scrollToTop","showScrollEnd","isEmptyHint","loadingCircleStyle","TableSort","TableData","TableReducer","newTable","keepHeaderSelection","newRenderFancy","CBEngineTable","teraBrainLobbyIsConnected","engineTableData","numbers","alphabet","handleLoginClick","useReducer","engineTable","engineTableDispatch","handleInfoLineClick","CBModuleHeadline","outer","inner","LineEvalType","PredefinedEngineOptions","EngineValue","_mateIn","MATE_VALUE","MATE_THRESHOLD","MOVE_VALUE","MOVE_THRESHOLD","MIN_VALUE","MAX_VALUE","EvaluationGrade","EV_WINNING","EV_ADVANTAGE","EV_SLIGHT_ADVANTAGE","EV_SLIGHT_DISADVANTAGE","EV_DISADVANTAGE","EV_LOSING","EV_TOTALLY_WINNING","EV_TOTALLY_LOSING","EngineInstance","_engUrl","_szPool","_tag","worker","calculating","tag","szPool","pool","meta","author","metaDone","idPoolTimeout","_poolTimeout","POOL_TIMEOUT","engOptionVals","_createPreDefaultOptions","_pushWorker","engineCount","minDepthForFire","terminate","loadingWorker","ponderMove","strMv","fireOnBestMove","ponder","arrTokens","seldepth","pvnum","pv","nps","nodes","curmv","curmvnum","evalType","isValidString","fireOnInfo","linesOnly","fireOnCurMove","lnPV","fireOnLine","handicapStyle","analysis","currGoOptions","infinite","g_regexMeta","fireOnUCIInfo","_handleUCIOK","startsWith","_handleIdInfo","_handleBestMove","_handleInfo","_evt","_handle","Worker","_getWorker","_onMessage","_post","_sendPendingOptions","_options","fireOnSearchStart","_startWorker","strPos","UCIUtils","getPosString","strGo","getGoString","_killWorker","fireOnNewGame","dispose","fireOnExit","getSetOptionString","_multiPV","setOption","getOption","getCurLineCut","moveTime","wTime","bTime","EngineModuleUtils","_sender","_pv","_notaLocalization","lineString","getLineNota","evaluation","getLocalization","ENGINE_URL","CBLocalEngine","locRef","engineLines","setEngineLines","lineStrings","setLineStrings","linesRefDidChange","setLinesRefDidChange","engineInfo","setEngineInfo","engineRef","lineStringsRef","addAnalysisLine","setMultiPV","go","addOnLineListener","handleEngineLine","addOnInfoListener","handleEngineInfo","fireOnThreat","removeAnalysisLine","_seldepth","_evalType","_pvnum","getEngineLineString","_nodes","_nps","_time","infoString","newLineStrings","entries","engineLineContainer","isLastItem","engineLine","engineLinePadding","renderEngineLine","engineLineInactive","CBMEngineModule","engineModule","FilterFlagsEnum","SearchMask","m_strWhMask","m_strBlMask","m_strTournMask","m_strTitle","m_strPlaceMask","freeText","m_nMinECO","m_nMaxECO","m_iMinYear","m_iMaxYear","m_iWhiteMinElo","m_iBlackMinElo","m_board","m_eSideToMove","getUseBoard","eSideToMove","parts","ELO_NONE","YEAR_NONE","CBAutoComplete","autoCompleteList","setAutoCompleteList","selectionIndex","setSelectionIndex","selectionRef","offsetTop","scrollToAutoCompleteElement","handleKeyDown","keyCode","handleClick","handleReceiveAutoComplete","autoComplete","renderElement","option","quickSearchIndent","quickSearch","dependencyArray","didMount","useAfterMountEffect","inputData","keepAutoComplete","handleSelection","CBSearchBar","setInputData","searchOptions","useBoard","handleInputChange","handleFocus","setShowPremiumSearch","handleAutoCompleteSelection","autoCompleteText","handleAutocompleteSubmit","searchFieldContainer","searchField","onKeyDown","maxLength","CBSearchFilterContainer","renderFilter","filterEntry","removeFilter","renderQuickSearchFilter","removeQuickSearchFilter","filterList","quickSearchFilterList","CBSearchInput","startText","setIsActive","handleChange","handleBlur","handleAutoCompleteSubmit","htmlFor","onFocus","onBlur","hasAutoComplete","CBCheckBox","initValue","checked","setChecked","tabIndex","checkbox","CBPremiumSearch","ignoreColor","setIgnoreColor","guest","headline","newWhite","newWhiteEloMin","whiteEloMin","newBlack","newBlackEloMin","blackEloMin","newYearMin","yearMin","newYearMax","yearMax","newPlace","place","wins","draws","losses","submit","borderRadius","premiumHint","span","CBSearchContainer","onlineLobbyIsConnected","setFilterList","setQuickSearchFilterList","showPremiumSearch","quickSearchFilterRef","searchFormRef","searchDatabase","newFilter","filterText","addQuickSearchFilter","setWins","setDraws","setLosses","onDelete","filterIndex","CBDatabaseTable","onlineLobbyIsLoading","onlineLobbyReachedScrollSearchEnd","onlineLobbySearchCount","databaseTableData","alphabetReversed","databaseTable","databaseTableDispatch","handleGameClick","setOnlineDBListGame","selectedGame","isInitialSearch","setOnlineDBLoadPos","tableMaxHeight","CBMSearchModule","searchModule","CBMBookModule","bookTableData","resultPercent","bookTable","bookTableDispatch","handleBookClick","newMove","getMoveEnterType","bookModule","tableFixedHeight","CBPlayerInformation","playerColor","playerInfo","alignRight","playerImage","playerName","playerLink","textContainer","playerTitle","playerElo","playerNation","imageContainer","CBGameInformation","gameInfo","setGameInfo","setDidMount","playerLobbyIsConnected","newGameInfo","whiteLink","eloWhite","blackLink","eloBlack","playerFirstName","whiteFirst","centerInfo","tournament","blackFirst","CBMGameInfoModule","gameInfoModule","gameInfoPadding","CBMNavBarTop","navBarButton","welcomeText","headlineContainer","subHeadline","CBNavBarBottom","ONECOLUMNRENDERMODES","setSelected","selectModule","changeOneColumnRenderMode","navigateButton","navigateText","book","CBOnlineDBFrame","setNotationPath","copy02","setBoardPosition","setStartPosition","setGameHeader","currentGameID","setCurrentGameID","oneColumnRenderMode","setOneColumnRenderMode","onGameMove","setBoardPositions","onGameNavigate","onGameReset","addOnMoveListener","addOnNavigateListener","addOnResetGameListener","newMainLine","goToSimplePathGenerateAnimationData","renderOneColumn","moduleContainer","baseMarginsOneColumn","center","margins","marginBottom","getOneColumnRender","baseMarginsTwoColumns","baseMarginsThreeColumns","DrawType","DrawChecker","drawType","checkPos","gameLen","nMinQuick","isValid","isPawn","nEPFile","getEPCol","moveFiftyLim","threeCount","runPos","boardEquals","pieces","piecesWithClr","wBish","bBish","canWin","colMask","nPieceCnt","nColor","getStrDrawType","HSLColor","hue","saturation","lightness","CYAN","BLUE","MAGENTA","signX","attrId","BoardArrow","rgba","lineWidthPercent","dash","pxFrom","boardControl","getSquareCenterPos","pxTo","fromFile","fromRank","toFile","blackIsBottom","nSqPix","headW","lineWidth","lineCap","setStrokeFillStyles","hsl","getHslYellow","strokeStyle","fillStyle","drawArrow","restore","_getClipRect","toRank","restoreSquare","neighbour1","neighbour2","getSquareRect","getUnion","delta","expand","x0","y0","angle","cos","sin","stroke","lineW","which","capRadius","toDrawHead","drawHead","dist","tox","toy","fromx","fromy","lineangle","capOffsX","capOffsY","ratio","grad","createLinearGradient","addColorStop","setLineDash","angle1","topx","topy","angle2","hsla","strHsla","hslaFrom","hslaFrom2","hslaMid","hslaTo","backdist","arcTo","cpx","cpy","cp1x","cp1y","cp2x","cp2y","xmid","ymid","bezierCurveTo","BoardLinePoint","bInside","inside","getPixPos","fromTwoPoints","stringToPoints","BoardLine","thick","clr","thickPercent","workCanvas","getLineWidthPixel","pt","getXY","getClipRect","BoardZone","sqFrom","sqTo","bDrawInside","edges","getEdgeSquares","getId","createLine","sortEdges","corners","draw","fnGetPixPos","edgesArr","fromLiteral","zone","setPrototypeOf","AllowedColor","WHITE_ONLY","BLACK_ONLY","BOTH_COLORS","detFromOpponentSide","BaseClock","clockLink","updateTimer","update","isBlack","nextId","showTimeOverstepped","setText","setToMove","ManualClock","whiteTime","blackTime","currTime","startTime","setNoClock","showResult","emphasizeToMove","runningClockId","centiSecsExpired","nCurrTime","restTime","showCurrTime","showRestTime","TimeTrouble","ChessClock","fnTimeout","fnWarnClock","runsForward","centiSecsWhite","centiSecsBlack","uniqueId","_uniqueId","_isRunning","mySide","warned","setDisplayHours","expiredAtStop","setRunsForward","sgn","timeAnno","takeStartTime","showTimes","isOnLastMove","setExpired","restTimeAtStart","getTimeTroubleIndex","localExpired","getTimeString","strW","strB","setDisplayCentiSecs","timeOut","myTime","oppTime","displayHours","mins","AbstractPlayingMode","saved","isPost","saveAndReset","saveToCloud","cntUpdates","legalMoves","reset","_boardWin","blockMode","onEval","ResultFlags","PlayingMode","kernel","isAutoplay","beforeGameLoad","afterGameLoad","deleteClock","clock","manualClock","chessClock","onTimeOverstepped","options","onResult","initFromGame","updateClockFromGame","boardWin","getClockDisplay","setTime","hasClock","fnMarkSquaresOnButtonDown","getMarkedSquaresOnButtonDown","clickSq","genLegalSquareHints","getLegalSqClr","GameKernelLight","viewLink","defineProperty","writable","setGameListeners","isPostAnnoEdit","onlineDBLoadPos","_mode","modeState","saveState","getFnLoadSearchResult","loadSearchResultGame","gotoFirst","fnInitGame","resetGame","idNavListener","_onGameNavigate","idMoveListener","_onGameMove","idChangeListener","addOnChangedListener","_onGameChanged","idHeaderListener","addOnHeaderChangedListener","_onHeaderChanged","idCurPosListener","addOnCurPosChangedListener","_onGameCurPosChanged","idResetGameListener","_onResetGame","idClickInNotationListener","addOnClickInNotationListener","_onClickInNotation","removeOnNavigateListener","removeOnMoveListener","removeOnChangedListener","removeOnHeaderChangedListener","removeOnCurPosChangedListener","removeOnResetGameListener","removeOnClickInNotationListener","idClickOnNotationListener","gotoPos","getMySide","setMySide","onEnteredMove","nextMoveEnterType","fnMakeMoveContinue","checkIfTechnicalGameEnd","onAfterMoveEntry","drawObj","checkTechnicalResult","suppressTechnicalResult","onTechnicalGameEnd","resObj","staticCheckTechnicalResult","updateGamePos","_updateAnnoField","config","updateHeader","onResetGame","onClickInNotation","idGame","gameAsText","toClipboard","getData","setPGN","updateFromExtern","techEnd","checkGame","OnlineDBMode","curBoard","nMaxOnlineDBGames","nMultiVars","gateUpdate","block","blockUpdate","updateCloudOnGamePos","goAll","animSteps","forMove","forPosition","engines","nEngines","panEng","_strUrl","eng","getMultiPV","stopAll","_eng","_best","execEngineMove","idOnBestMove","addOnBestMoveListener","onBestMove","removeOnBestMoveListener","setHandicap","isHandicap","_handicap","VersionCodeEnum","JSPLAYCHESS","JSLIVEBLITZ","JSNLINE","JSOPENINGS","JSPREMIUM","JSFRITZ","JSTEST","JSMYGAMES","JSPLAYERDB","JSTACTICS","JSTACTICSBOARD","JSNLINEBOARD","JSPREMIUMBOARD","JSENDGAMES","JSLIVE","JSREADER","JSPLAY","JSSTUDY","JSINTERACTIVEFRITZ","JSPLUGIN","JSFFLINE","VersionCode","family","major","minor","beta","nMajor","nMinor","nBeta","familyToString","getStrVersion","eFamily","JSTRAINING","ClientParams","stayLoggedIn","jsonGuid","room","roomurl","banner","tournRoom","gradient","seek","attrib","getSessionStorage","layout","isKibitz","noRibbons","state","getBanner","getGradient","getRoom","roomUrl","getRoomUrl","keepStateAccrossLogin","getStateAcrossLogin","resetStateAfterLogin","storeBanner","strJson","keepName","clearCookie","LOG","initialize","anonymizeIp","pageview","formatCache","regexFmt","_prepareFormat","_fmt","inxLastEnd","strLit","quote","strEndLit","arg","vformatEx","_arg","InitStringFormat","capitalize","toUpperCase","getAccountNameCookie","JSCBONLINE","gk","setPlayingMode","loadedGame","LoadGameFromStorage","SaveGameToStorage","ReactDOM","StrictMode","serviceWorker","ready","registration","unregister"],"mappings":"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oB,CACnB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,GACA,GAED,qBAAsB,CACrB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,qBAAsB,CACrB,IACA,EACA,IAED,yBAA0B,CACzB,IACA,EACA,IAED,wBAAyB,CACxB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,mBAAoB,CACnB,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,KAED,uBAAwB,CACvB,IACA,EACA,KAED,sBAAuB,CACtB,IACA,EACA,MAGF,SAAS00B,EAAoBC,GAC5B,IAAIC,EAAoB/W,EAAE7d,EAAK20B,GAC9B,O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,IACb,MAAO,KACR,KAAK1B,EAAS2B,IACb,MAAO,KACR,KAAK3B,EAAS4B,IACb,MAAO,KACR,KAAK5B,EAAS6B,IACb,MAAO,KACR,KAAK7B,EAAS8B,IACb,MAAO,KACR,KAAK9B,EAAS+B,IAKb,MAAO,KACR,KAAK/B,EAASgC,IACb,MAAO,KACR,KAAKhC,EAASiC,IACb,MAAO,KACR,KAAKjC,EAASkC,IACb,MAAO,KACR,KAAKlC,EAASmC,IACb,MAAO,KACR,KAAKnC,EAASe,IACb,MAAO,OAOXf,gBAA2B,SAAWiD,GAErC,OAASA,GAER,QACA,KAAKjD,EAASC,IACb,MAAO,MACR,KAAKD,EAASE,IACd,KAAKF,EAASG,IACb,MAAO,MACR,KAAKH,EAASK,IACb,MAAO,MACR,KAAKL,EAASO,IACb,MAAO,MACR,KAAKP,EAASqB,IACb,MAAO,MACR,KAAKrB,EAASsB,IACb,MAAO,MACR,KAAKtB,EAASI,IACb,MAAO,MACR,KAAKJ,EAASmB,IACb,MAAO,MACR,KAAKnB,EAASwB,IACb,MAAO,MACR,KAAKxB,EAASc,IACb,MAAO,MACR,KAAKd,EAASM,IACb,MAAO,MACR,KAAKN,EAASyB,IACb,MAAO,MACR,KAAKzB,EAASgB,IACb,MAAO,MACR,KAAKhB,EAASiB,IACb,MAAO,MACR,KAAKjB,EAASU,IACb,MAAO,MACR,KAAKV,EAASuB,GACb,MAAO,KACR,KAAKvB,EAASoB,IACb,MAAO,KACR,KAAKpB,EAAS0B,IACb,MAAO,MACR,KAAK1B,EAAS2B,IACb,MAAO,MACR,KAAK3B,EAAS4B,IACb,MAAO,MACR,KAAK5B,EAAS6B,IACb,MAAO,MACR,KAAK7B,EAAS8B,IACb,MAAO,MACR,KAAK9B,EAAS+B,IACb,MAAO,MACR,KAAK/B,EAASgC,IACb,MAAO,MACR,KAAKhC,EAASiC,IACb,MAAO,MACR,KAAKjC,EAASkC,IACb,MAAO,MACR,KAAKlC,EAASmC,IACb,MAAO,MACR,KAAKnC,EAASe,IACb,MAAO,QAIVf,kBAA6B,SAAWiD,GAEvC,OAASA,GAER,QACA,KAAKjD,EA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LC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLE,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,GACL10E,IAAK,GACL20E,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,GACLI,IAAK,GACLM,IAAK,GACLl2E,IAAK,GACLq2E,IAAK,GACLI,IAAK,GACL91E,IAAK,GACL+1E,IAAK,GACLC,IAAK,GACLl3E,IAAK,GACLm3E,IAAK,GACLC,IAAK,GACL/pB,IAAK,GACLgqB,IAAK,GACLE,IAAK,GACLr4E,IAAK,GACLI,IAAK,GACLm4E,IAAK,GACLC,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,GACLz4E,IAAK,GACL44E,IAAK,GACLE,IAAK,GACLC,IAAK,GACLh5E,IAAK,GACLo5E,IAAK,GACLE,IAAK,GACLK,IAAK,GACLG,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLE,IAAK,GACLC,IAAK,GACLx6E,IAAK,GACLy6E,IAAK,GACLC,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,GACLE,IAAK,GACLC,IAAK,GACLG,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLC,IAAK,GACLG,IAAK,GACLC,IAAK,GACLE,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,GACLE,IAAK,GACLC,IAAK,GACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLj9E,IAAK,IACLk9E,IAAK,IACLG,IAAK,IACLC,IAAK,IACLC,IAAK,IACLt8E,IAAK,IACL28E,IAAK,IACLE,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACL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","file":"static/js/main.e76b1423.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"defaultIcon\":\"CBIcons_defaultIcon__1DfdS\",\"headerIcon\":\"CBIcons_headerIcon__1x3Jr\",\"tableSort\":\"CBIcons_tableSort__sDaZj\",\"download\":\"CBIcons_download__dOuwI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"moduleContainer\":\"CBOnlineFrame_moduleContainer__rTi7H\",\"baseMarginsOneColumn\":\"CBOnlineFrame_baseMarginsOneColumn__bK0GS\",\"baseMarginsTwoColumns\":\"CBOnlineFrame_baseMarginsTwoColumns__1ENXv\",\"baseMarginsThreeColumns\":\"CBOnlineFrame_baseMarginsThreeColumns__M1pQs\",\"left\":\"CBOnlineFrame_left__Lst__\",\"center\":\"CBOnlineFrame_center__1F0Li\",\"right\":\"CBOnlineFrame_right__3_hR2\",\"margins\":\"CBOnlineFrame_margins__sIXKe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBAccount_container__3deVz\",\"label\":\"CBAccount_label__1b2Ju\",\"error\":\"CBAccount_error__1OzoA\",\"infoText\":\"CBAccount_infoText__2Wl7B\",\"input\":\"CBAccount_input__xyxJl\",\"button\":\"CBAccount_button__kfs73\",\"register\":\"CBAccount_register__1cpVN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBPremiumSearch_container__2joT2\",\"guest\":\"CBPremiumSearch_guest__DF-wP\",\"form\":\"CBPremiumSearch_form__3FHgk\",\"headline\":\"CBPremiumSearch_headline__36XkK\",\"row\":\"CBPremiumSearch_row__3aQJn\",\"first\":\"CBPremiumSearch_first__39sc-\",\"submit\":\"CBPremiumSearch_submit__2hrMt\",\"premiumHint\":\"CBPremiumSearch_premiumHint___timD\",\"premiumBadge\":\"CBPremiumSearch_premiumBadge__1ts7w\",\"span\":\"CBPremiumSearch_span__qdgXu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"CBTable_header__2q3UA\",\"headerCellSortable\":\"CBTable_headerCellSortable__2r69y\",\"selected\":\"CBTable_selected__2FIJO\",\"headerCellInner\":\"CBTable_headerCellInner__15lje\",\"body\":\"CBTable_body__19K6Z\",\"isEmptyHint\":\"CBTable_isEmptyHint__1MX-L\",\"bodyRow\":\"CBTable_bodyRow__1rd1f\",\"cellOuter\":\"CBTable_cellOuter__sitIS\",\"cellInner\":\"CBTable_cellInner__1Kv5J\",\"cellInnerFancy\":\"CBTable_cellInnerFancy__20agd\",\"striped\":\"CBTable_striped__11D1x\",\"scrollEnd\":\"CBTable_scrollEnd__3tvGV\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBNavBarBottom_container__2aL06\",\"navigateButton\":\"CBNavBarBottom_navigateButton__Hu1Nj\",\"navigateText\":\"CBNavBarBottom_navigateText__3cJn1\",\"selection\":\"CBNavBarBottom_selection__3M40F\",\"selected\":\"CBNavBarBottom_selected__2hmXz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"top\":\"CBSelectPromotion_top__IM6nQ\",\"bottom\":\"CBSelectPromotion_bottom__3X7kv\",\"promotionContainer\":\"CBSelectPromotion_promotionContainer__2gARU\",\"promotionElement\":\"CBSelectPromotion_promotionElement__2fWEp\",\"promotionQueen\":\"CBSelectPromotion_promotionQueen__2IqqU\",\"promotionRook\":\"CBSelectPromotion_promotionRook__1_XYp\",\"promotionBishop\":\"CBSelectPromotion_promotionBishop__1EDlB\",\"promotionKnight\":\"CBSelectPromotion_promotionKnight__2izmZ\",\"closePromotion\":\"CBSelectPromotion_closePromotion__1lSL-\",\"closePromotionInner\":\"CBSelectPromotion_closePromotionInner__y78Uz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"playerInfo\":\"CBPlayerInformation_playerInfo__2Yo0J\",\"textContainer\":\"CBPlayerInformation_textContainer__1de7P\",\"left\":\"CBPlayerInformation_left__2hAwC\",\"right\":\"CBPlayerInformation_right__10f5M\",\"name\":\"CBPlayerInformation_name__3pX9g\",\"playerData\":\"CBPlayerInformation_playerData__EF4DQ\",\"link\":\"CBPlayerInformation_link__1lyel\",\"image\":\"CBPlayerInformation_image__1tLnV\",\"inactive\":\"CBPlayerInformation_inactive__sYXQU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBNavBarTop_container__Y7Rgk\",\"navBarButton\":\"CBNavBarTop_navBarButton__2YKHe\",\"more\":\"CBNavBarTop_more__itxkA\",\"settings\":\"CBNavBarTop_settings__2a2Og\",\"account\":\"CBNavBarTop_account__3T9aP\",\"welcomeText\":\"CBNavBarTop_welcomeText__2WXIC\",\"headlineContainer\":\"CBNavBarTop_headlineContainer__2nXZd\",\"headline\":\"CBNavBarTop_headline__HaCZc\",\"subHeadline\":\"CBNavBarTop_subHeadline__2fEHY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBBoardMargin_container__3q7Rm\",\"left\":\"CBBoardMargin_left__3ZP2n\",\"bottom\":\"CBBoardMargin_bottom__UP26j\",\"top\":\"CBBoardMargin_top__3y7NN\",\"right\":\"CBBoardMargin_right__1c06e\",\"corner\":\"CBBoardMargin_corner__3x-m_\",\"marginContent\":\"CBBoardMargin_marginContent__1ng_S\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBModules_base__QnZ-U\",\"paddingSection\":\"CBModules_paddingSection__3K6X1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBMaterialBalance_container__2zh7x\",\"balanceObject\":\"CBMaterialBalance_balanceObject__2Qqfc\",\"inactive\":\"CBMaterialBalance_inactive__2ODUl\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBButtonBadge_base__THYO6\",\"clickable\":\"CBButtonBadge_clickable__3hvZX\",\"deletable\":\"CBButtonBadge_deletable__HCRFN\",\"big\":\"CBButtonBadge_big__TgMCm\",\"small\":\"CBButtonBadge_small__6g4l6\",\"text\":\"CBButtonBadge_text___jceO\",\"close\":\"CBButtonBadge_close__FCzPw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBSquare_container__2Ik7H\",\"whiteField\":\"CBSquare_whiteField__1-0hi\",\"blackField\":\"CBSquare_blackField__xNGpt\",\"highlight\":\"CBSquare_highlight__3OvVH\",\"squareInfo\":\"CBSquare_squareInfo__UiEQG\",\"squareInfoTop\":\"CBSquare_squareInfoTop__wv_72\",\"squareInfoBottom\":\"CBSquare_squareInfoBottom__35LrK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBNavBarSide_base__1N-2L\",\"open\":\"CBNavBarSide_open__12zFA\",\"closed\":\"CBNavBarSide_closed__gzIYV\",\"topContainer\":\"CBNavBarSide_topContainer__G3IZa\",\"closeButton\":\"CBNavBarSide_closeButton__1H-TD\",\"appLinkContainer\":\"CBNavBarSide_appLinkContainer__38tGf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"settingsContainer\":\"CBSettings_settingsContainer__1_Gn9\",\"label\":\"CBSettings_label__32Our\",\"inset\":\"CBSettings_inset__1LzMg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"CBSideNavButton_button__1tuGw\",\"selected\":\"CBSideNavButton_selected__288UW\",\"color\":\"CBSideNavButton_color__3blQn\",\"image\":\"CBSideNavButton_image__3E--U\",\"settingsColorHeader\":\"CBSideNavButton_settingsColorHeader__2-l2F\",\"settingsColorEntry\":\"CBSideNavButton_settingsColorEntry__3NkcJ\",\"playChess\":\"CBSideNavButton_playChess__1FOQH\",\"liveChess\":\"CBSideNavButton_liveChess__38vfE\",\"tactics\":\"CBSideNavButton_tactics__c0dtp\",\"videos\":\"CBSideNavButton_videos__1dSRk\",\"fritz\":\"CBSideNavButton_fritz__3dvgU\",\"openings\":\"CBSideNavButton_openings__3_-eW\",\"myGames\":\"CBSideNavButton_myGames__3J-KP\",\"quiz\":\"CBSideNavButton_quiz__3P9M5\",\"players\":\"CBSideNavButton_players__3TjId\",\"news\":\"CBSideNavButton_news__1Ps2s\",\"studies\":\"CBSideNavButton_studies__1DhGI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"engineLineContainer\":\"CBLocalEngine_engineLineContainer__2DFM0\",\"engineLine\":\"CBLocalEngine_engineLine__1MoDQ\",\"engineLineInactive\":\"CBLocalEngine_engineLineInactive___r6r1\",\"engineLinePadding\":\"CBLocalEngine_engineLinePadding__L5n3W\",\"engineInfo\":\"CBLocalEngine_engineInfo__1XfaJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"arrow\":\"CBBoardArrow_arrow__o4rWM\",\"abovePieces\":\"CBBoardArrow_abovePieces__17Kl-\",\"belowPieces\":\"CBBoardArrow_belowPieces__1BC1Q\",\"arrowLine\":\"CBBoardArrow_arrowLine__1uQya\",\"arrowHead\":\"CBBoardArrow_arrowHead__1K3SY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBButton_base__2ye08\",\"border\":\"CBButton_border__2F_qq\",\"borderRight\":\"CBButton_borderRight__10lMB\",\"borderLeft\":\"CBButton_borderLeft__gERas\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBNotation_base__23NU2\",\"line\":\"CBNotation_line__39gkC\",\"insetLine\":\"CBNotation_insetLine__20HGe\",\"movePart\":\"CBNotation_movePart__1hhM6\",\"movePartOne\":\"CBNotation_movePartOne__1QeYI\",\"movePartTwo\":\"CBNotation_movePartTwo__tN0uw\",\"result\":\"CBNotation_result__1KWHQ\",\"selectedPrimary\":\"CBNotation_selectedPrimary__3jGQ0\",\"selectedSecondary\":\"CBNotation_selectedSecondary__cr0xW\",\"inactive\":\"CBNotation_inactive__rVK6H\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"movePart\":\"CBMove_movePart__YyoQn\",\"movePartOne\":\"CBMove_movePartOne__2MpSl\",\"movePartTwo\":\"CBMove_movePartTwo__1vjO8\",\"selectedPrimary\":\"CBMove_selectedPrimary__3ejRo\",\"selectedSecondary\":\"CBMove_selectedSecondary__1b3TU\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBGameInformation_base__3eZDk\",\"inactive\":\"CBGameInformation_inactive__3bQIE\",\"centerInfo\":\"CBGameInformation_centerInfo__gYdKb\",\"result\":\"CBGameInformation_result__1ukfz\",\"tournament\":\"CBGameInformation_tournament__ceD-s\"};","\r\n\r\nexport default function getLocalizationObject ()\r\n{\r\n\treturn {\r\n\t\tLOGIN: 'Log in',\r\n\t\tLOGOUT: 'Log out',\r\n\t\tACCOUNT: 'My Account',\r\n\t\tBOARDS: 'Boards',\r\n\t\tRECONNECT: 'Reconnect',\r\n\t\tRESIGN: 'Resign',\r\n\t\tCLOSE_BOARD: 'Close Board',\r\n\t\tOFFER_DRAW: 'Offer Draw',\r\n\t\tACCEPT_DRAW: 'Accept Draw',\r\n\t\tACCEPTED_DRAW: \"{0} accepted a draw.\",\r\n\t\tOFFERS_DRAW: \"{0} offers a draw.\",\r\n\t\tACCEPTS_DRAW: \"{0} accepts a draw.\",\r\n\t\tRESIGNS: \"{0} resigns.\",\r\n\t\tTESTING_CONN: \"Testing Connection to Server\",\r\n\t\tCONNECTING: \"Connecting to server, please wait...\",\r\n\t\tRECONNECTED_OK: \"Reconnected OK\",\r\n\t\tNAME: 'Name',\r\n\t\tNATION: 'Country',\r\n\t\tRANK: 'Rank',\r\n\t\tWHITE: 'White',\r\n\t\tBLACK: 'Black',\r\n\t\tELO_WHITE: 'Elo White',\r\n\t\tELO_BLACK: 'Elo Black',\r\n\t\tRESULT: 'Result',\r\n\t\tTIME_CONTROL: 'Time Control',\r\n\t\tTOURNAMENT: 'Tournament',\r\n\t\tGAMES: 'Games',\r\n\t\tCHAT: 'Chat',\r\n\t\tCHAT_PARTNER_GONE: \"Your chat partner is gone.\",\r\n\t\tCONNECTION: 'Connection',\r\n\t\tMAP: 'Map',\r\n\t\tKING: 'King',\r\n\t\tQUEEN: 'Queen',\r\n\t\tROOK: 'Rook',\r\n\t\tBISHOP: 'Bishop',\r\n\t\tKNIGHT: 'Knight',\r\n\t\tPAWN: 'Pawn',\r\n\r\n\t\tTYPE_CHAT_HERE: 'Type Chat Here',\r\n\t\tTYPE_HERE_TO_CHAT_WITH: 'Type Here To Chat With',\r\n\t\tGUEST: 'Guest',\r\n\t\tCONFIRM: 'Confirm',\r\n\t\tCANCEL: 'Cancel',\r\n\r\n\t\tCLOCK: 'Clock',\r\n\t\tTIME: 'Time',\r\n\t\tGAIN_PER_MOVE: 'Gain per Move',\r\n\t\tCLOSE: 'Close',\r\n\t\tADD: 'Add',\r\n\t\tREMOVE: 'Remove',\r\n\t\tNOTATION: 'Notation',\r\n\t\tBOARD_FRITZ: 'Fritz',\r\n\t\tBOARD_CRYSTALS: 'Crystals',\r\n\t\tBOARD_USCF: 'USCF',\r\n\t\tBOARD_OLDSTYLE: 'OldStyle',\r\n\t\tBOARD_HABSBURG: 'Habsburg',\r\n\t\tBOARD_FRITZ_AND_CHESTER: 'Fritz & Chesster',\r\n\t\tPLAY_BLITZ: 'Play Blitz',\r\n\r\n\t\tNEW_GAME: 'New Game',\r\n\t\tTAKE_BACK: 'Take Back',\r\n\t\tMAKE_MOVE: 'Make Move',\r\n\t\tFLIP_BOARD: 'Flip Board',\r\n\t\tCOPY: 'Copy',\r\n\t\tSEARCH_BOARD: 'Search Board',\r\n\t\tYEAR: 'Year',\r\n\t\tBOOK: 'Book',\r\n\t\tLIVE_BOOK: 'Live Book',\r\n\t\tMOVE: 'Move',\r\n\t\tNR_GAMES: 'Nr Games',\r\n\t\tSCORE: 'Score',\r\n\t\tLAST_PLAYED: 'Last Played',\r\n\t\tELO_AVG: 'Elo Avg.',\r\n\t\tVISITS: 'Visits',\r\n\t\tLOADING_STATISTICS: 'Loading statistics',\r\n\t\tLETS_CHECK: \"Let's Check\",\r\n\t\tEVAL: 'Eval',\r\n\t\tVARIATION: 'Variation',\r\n\t\tDEPTH: 'Depth',\r\n\t\tENGINE: 'Engine',\r\n\t\tENTER_YOUR_SEARCH_TEXT: 'Enter your search text...',\r\n\t\tRETRIEVING_GAMES: \"Retrieving games\",\r\n\t\tPLAYER_DETAILS: 'Player details',\r\n\t\tPLAYER_INFORMATION: 'Player information',\r\n\t\tFIRST_NAME: 'First Name',\r\n\t\tLAST_NAME: 'Last Name',\r\n\t\tYEAR_OF_BIRTH: 'Year of Birth',\r\n\t\tTREND: 'Trend',\r\n\t\tRATING: 'Rating',\r\n\t\tSEND_FEEDBACK: 'Send Feedback',\r\n\t\tYOUR_COMMENT: 'Your Comment',\r\n\t\tYOUR_EMAIL_ADDRESS: 'Your E-mail Address',\r\n\t\tSEND: 'Send',\r\n\t\tBROWSER_DOESNT_SUPPORT_3D: 'Browser does not support 3d boards',\r\n\t\tBOARD3D_FRITZ: 'Fritz',\r\n\t\tBOARD3D_MODERN: 'Modern',\r\n\t\tBOARD3D_ROOM: 'Room',\r\n\t\tBOARD3D_BALLOON: 'Balloon',\r\n\t\tBOARD3D_METAL: 'Metal',\r\n\t\tBOARD3D_SILVER: 'Silver',\r\n\t\tBOARD3D_FUTURE: 'Future',\r\n\t\tBOARD3D_MARBLE: 'Marble',\r\n\t\tWELCOME: 'Welcome',\r\n\t\tMATERIAL: 'Material',\r\n\t\tANALYSIS: 'Analysis',\r\n\t\tANALYSIS_ENGINE: 'Engine',\r\n\r\n\t\tENG_SEARCH_INFO_FMT: \"Depth {0}/{1}, Speed = {2}kPos/s, Time = {3}s\",\r\n\t\tPASTE: 'Paste',\r\n\t\tPW_INVALID: 'User/Password invalid, please try again',\r\n\t\tPLEASE_LOGIN: 'Please log in with your ChessBase (Playchess) account:',\r\n\t\tACCOUNTNAME: 'Name',\r\n\t\tPASSWORD: 'Password',\r\n\t\tCREATE_ACCOUNT: 'Create Account',\r\n\t\tLOGIN_GUEST: 'Guest',\r\n\t\tPLEASE_LOGIN_SHORT: 'Please Log In',\r\n\t\tLOADING_ENGINE: 'Loading Engine...',\r\n\t\tLOADING_LIVE_GAMES: 'Loading Live Games ...',\r\n\t\tINVITING_OTHER_PLAYERS: \"Inviting other players to a game of {0} ({1})\",\r\n\t\tOTHER_TOOLS: 'More Apps',\r\n\t\tDATABASES: 'Databases',\r\n\t\tOPEN_DATABASE: 'Open Database',\r\n\t\tCREATE_DATABASE: 'Create Database',\r\n\t\tDELETE_DATABASE: 'Delete Database',\r\n\t\tDELETE: 'Delete',\r\n\t\tCLEAN_UP: 'Clean Up',\r\n\t\tMY_DATABASES: 'My Databases',\r\n\t\tDATABASES_SHARED_WITH_ME: 'Databases shared with me',\r\n\t\tSELECT_DATABASE_FOR_USER: \"Select Database For '{0}'\",\r\n\t\tOPEN_PGN: 'Open PGN',\r\n\t\tSAVE: 'Save',\r\n\t\tSAVE_AND_REPLACE_GAMES: 'Save and replace games',\r\n\t\tSAVE_AS_NEW: 'Save As New',\r\n\t\tEDIT_GAME: 'Edit Game',\r\n\t\tDATABASE_FUNCTIONS: 'Open, create and delete databases',\r\n\t\tTEXT_BEFORE: 'Text Before',\r\n\t\tTEXT_AFTER: 'Text',\r\n\t\tSTART_LINE: 'Start Line',\r\n\t\tPROMOTE_LINE: 'Promote Line',\r\n\t\tDELETE_LINE: 'Delete Line',\r\n\t\tCUT_LINE: 'Cut Line',\r\n\t\tOPEN_PGN_TIP: 'Open a PGN file from your computer',\r\n\t\tTEXT_BEFORE_TIP: 'Add a text annotation before this move',\r\n\t\tTEXT_AFTER_TIP: 'Add a text annotation after this move',\r\n\t\tSTART_LINE_TIP: 'Retract current move and start a line',\r\n\t\tPROMOTE_LINE_TIP: 'Promote the currently selected line',\r\n\t\tDELETE_LINE_TIP: 'Delete the selected line',\r\n\t\tCUT_LINE_TIP: 'Cut off the following moves',\r\n\t\tSTAY_LOGGED_IN: 'Stay Logged In',\r\n\t\tFORGOT_PASSWORD: 'Forgot Password',\r\n\t\tCHANGE_PASSWORD: 'Change Password',\r\n\t\tOLD_PASSWORD: 'Old Password',\r\n\t\tNEW_PASSWORD: 'New Password',\r\n\t\tCONFIRM_PASSWORD: 'Confirm Password',\r\n\t\tMENU_PLAYCHESS_TOOL: \"Play & Watch\",\r\n\t\tMENU_DATABASE_TOOL: \"Live Database\",\r\n\t\tMENU_MYGAMES_TOOL: \"My Own Games\",\r\n\t\tMENU_FRITZ_TOOL: \"Chess Program Fritz\",\r\n\t\tMENU_FRITZ_CHESSTER_TOOL: \"Chess For Kids\",\r\n\t\tMENU_TACTICS_TOOL: \"Tactics Training\",\r\n\t\tLANGUAGE: \"Language\",\r\n\t\tLOGIN_CREATE_LINK: \"Click here to create an account\",\r\n\t\tLOGIN_PLEASE_LOGIN: \"Please Log In\",\r\n\t\tLOGIN_ACCOUNT_FREE: \"Creating an account is free. The account is valid for all other ChessBase Web Tools and for play.chessbase.com.\",\r\n\t\tLOGIN_WELCOME: \"Welcome, {0}\",\r\n\t\tMANAGE_FRIENDS: \"Manage friends\",\r\n\t\tINVITE_FRIEND: \"Invite a friend\",\r\n\t\tPING: \"Ping\",\r\n\t\tNOTATION_KING: \"K\",\r\n\t\tNOTATION_QUEEN: \"Q\",\r\n\t\tNOTATION_KNIGHT: \"N\",\r\n\t\tNOTATION_BISHOP: \"B\",\r\n\t\tNOTATION_ROOK: \"R\",\r\n\t\tNOTATION_PAWN: \"P\",\r\n\r\n\t\tGENERAL_INVITE: 'Thank you for using the {0}.',\r\n\t\tMYGAMES_INVITE: 'Thank you for using ChessBase MyGames, your personal chess database in the web.',\r\n\t\tMYGAMES_FUNCTIONALITY: \"Please login with your ChessBase Account to create and access your cloud chess databases. You can also use the cloud databases with ChessBase 13.\",\r\n\r\n\t\tECO: \"ECO\",\r\n\t\tBACK: \"Back\",\r\n\r\n\t\tNEXT_MOVE: \"Next Move\",\r\n\t\tPREV_MOVE: \"Previous Move\",\r\n\t\tNEXT_GAME: \"Next Game\",\r\n\t\tPREV_GAME: \"Previous Game\",\r\n\t\tMENU_VIDEO_TOOL: \"Training Videos\",\r\n\t\tMENU_OPENINGS_TOOL: \"Manage Openings\",\r\n\r\n\t\tREQUESTING_MOVES: \"Requesting Moves\",\r\n\t\tFRESH_POSITION: \"Fresh Position\",\r\n\t\tEMBED: \"Embed\",\r\n\t\tHELP: \"Help\",\r\n\t\tTOGGLE_3D_2D: \"Toggle 2D/3D Board\",\r\n\t\tBOARD3D_BLACKWHITE: \"Black white\",\r\n\t\tMATE: \"Mate\",\r\n\t\tSTALEMATE: \"Stalemate\",\r\n\t\tSETUP_POSITION: \"Setup Position\",\r\n\r\n\t\tWHITE_MATES: \"White mates\",\r\n\t\tWHITE_CLEARLY_WINNING: \"White is clearly winning\",\r\n\t\tWHITE_WINNING: \"White is winning\",\r\n\t\tWHITE_DECISIVE: \"White has a decisive advantage\",\r\n\t\tWHITE_CLEARLY_BETTER: \"White is clearly better\",\r\n\t\tWHITE_BETTER: \"White is better\",\r\n\t\tWHITE_SLIGHTLY: \"White is slightly better\",\r\n\t\tWHITE_EDGE: \"White is minimally better\",\r\n\r\n\t\tBLACK_MATES: \"Black mates\",\r\n\t\tBLACK_CLEARLY_WINNING: \"Black is clearly winning\",\r\n\t\tBLACK_WINNING: \"Black is winning\",\r\n\t\tBLACK_DECISIVE: \"Black has a decisive advantage\",\r\n\t\tBLACK_CLEARLY_BETTER: \"Black is clearly better\",\r\n\t\tBLACK_BETTER: \"Black is better\",\r\n\t\tBLACK_SLIGHTLY: \"Black is slightly better\",\r\n\t\tBLACK_EDGE: \"Black is minimally better\",\r\n\r\n\t\tEQUAL_POS: \"The position is equal\",\r\n\t\tPREMIUM_ONLY: \"Premium Only\",\r\n\t\tBOARD3D_CHARACTER: \"Avatar\",\r\n\r\n\t\tCALC_TRAINING: \"Assisted Calculation\",\r\n\t\tTTIP_CALC_TRAINING: \"Calculate variations with Fritz' assistance before you continue the game here.\",\r\n\t\tCALC_INFO: \"Enter moves blindly. Click in the notation to add variations anywhere. Right-click unveils current position. Click 'Assisted Calculation' to resume your game.\",\r\n\r\n\t\tCALCULATING: \"Calculating...\",\t// engine\r\n\t\tWOOD: \"Wood\",\t// crystal\r\n\r\n\t\tTRAINING_SOLUTION: \"Show Solution\",\r\n\t\tTRAINING_HELP: \"Get Help\",\r\n\t\tTRAINING_QUESTION: \"Find the correct move\",\r\n\t\tUNANNOTATE: \"Unannotate\",\r\n\t\tMORE_LINES: \"More Lines\",\r\n\t\tLESS_LINES: \"Less Lines\",\r\n\t\tCALCULATE_THREAT: \"Calculate Threat\",\r\n\t\tSTART_RADIO: \"Start\",\r\n\t\tPAUSE_RADIO: \"Pause\",\r\n\t\tCURRENTLY_NO_LIVE_BROADCAST: \"At the moment there’s no live broadcast\",\r\n\t\tCONNECTED_TO_SERVER: \"Connected to server: {0}\",\r\n\t\tINITIALIZING: \"Initializing\",\r\n\t\tINSERT_DIAGRAM: \"Insert Diagram\",\r\n\t\tBOARD: \"Board\",\r\n\r\n\t\tLOADING_BOARD: \"Loading board, just a second...\",\r\n\t\tLIKE: \"Like\",\r\n\t\tDB_NOGAMES_FOUND: \"No games found for this position and search string.\",\r\n\r\n\t\tYOUR_KING_ACC: 'your king',\r\n\t\tYOUR_QUEEN_ACC: 'your queen',\r\n\t\tYOUR_KNIGHT_ACC: 'your knight',\r\n\t\tYOUR_BISHOP_ACC: 'your bishop',\r\n\t\tYOUR_ROOK_ACC: 'your rook',\r\n\t\tYOUR_PAWN_ACC: 'your pawn',\r\n\r\n\t\tMOVE_IMP: 'Move',\r\n\t\tWHITES_MOVE: \"White's move\",\r\n\t\tBLACKS_MOVE: \"Black's move\",\r\n\t\tCLICK_TO_FLIP_BOARD: \"click to flip board\",\r\n\t\tMAXIMIZE: \"Maximize\",\r\n\t\tPIECES: \"Pieces\",\r\n\t\tSOUND_ONOFF: \"Sound On/Off\",\r\n\t\tGOTO_BEGIN: \"Goto Begin\",\r\n\t\tGOTO_END: \"Goto End\",\r\n\t\tLOAD_PREV: \"Load Prev.\",\r\n\t\tLOAD_NEXT: \"Load Next\",\r\n\t\tSEARCH_MATERIAL: 'Search Material',\r\n\t};\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBScrollSearchHint_container__ilzAo\",\"premiumContainer\":\"CBScrollSearchHint_premiumContainer__3rMHO\",\"premiumBadge\":\"CBScrollSearchHint_premiumBadge__2Nmfg\",\"loadingContainer\":\"CBScrollSearchHint_loadingContainer__3bLx0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"autoComplete\":\"CBAutoComplete_autoComplete__2joCB\",\"option\":\"CBAutoComplete_option__2-Edz\",\"quickSearch\":\"CBAutoComplete_quickSearch__14txs\",\"selected\":\"CBAutoComplete_selected__2IaBk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBSearchInput_container__AO1lM\",\"active\":\"CBSearchInput_active__2Hayo\",\"label\":\"CBSearchInput_label__2bEy4\",\"searchField\":\"CBSearchInput_searchField__3S1vy\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBCheckBox_container__39IXs\",\"checkbox\":\"CBCheckBox_checkbox__2GeTJ\",\"label\":\"CBCheckBox_label__2l6Ch\",\"checked\":\"CBCheckBox_checked__23bO5\"};","module.exports = \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"piece\":\"CBChessPiece_piece__3q7cG\",\"inDrag\":\"CBChessPiece_inDrag___f655\",\"inactive\":\"CBChessPiece_inactive__16KUL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBNotationTools_container__32UXF\",\"toolObject\":\"CBNotationTools_toolObject__RibWr\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBTableResizer_base__3DuKC\",\"visible\":\"CBTableResizer_visible__grbWG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"background\":\"CBLoadingCircle_background__3kMKw\",\"loader\":\"CBLoadingCircle_loader__J0oqf\",\"spin\":\"CBLoadingCircle_spin__2Rc8r\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"outer\":\"CBModuleHeadline_outer__1SLUc\",\"inner\":\"CBModuleHeadline_inner__1UINH\"};","/* eslint-disable */\n\n\nconst engWorkerCode = () =>\n{\n\tfunction cbPreInit()\n\t{ }\n\n\tvar fnHandle = null;\n\tfunction cbPreRun()\n\t{\n\t\tfnHandle = Module.cwrap( \"oncommand\", \"number\", [ \"string\" ] );\n\t}\n\n\tfunction cbInput()\n\t{\n\t\treturn null;\n\t}\n\n\tfunction cbOnMessage( _msg )\n\t{\n\t\tif ( !_msg.data )\n\t\t\treturn;\n\t\tif ( !inited )\n\t\t\tqueue.push( _msg.data );\n\t\telse\n\t\t\tfnHandle( _msg.data );\n\t}\n\n\tvar inited = false;\n\tvar queue = [];\n\tfunction cbPostRun()\n\t{\n\t\tinited = true;\n\t\tqueue.forEach( fnHandle );\n\t\tqueue = null;\n\t}\n\n\tfunction oninfo( _msg )\n\t{\n\t\tself.postMessage( _msg );\n\t}\n\n\tself.addEventListener( 'message', cbOnMessage, false );\n\n\tModule =\n\t{\n\t\tpreRun: [ cbPreRun ],\n\t\tpreInit: cbPreInit,\n\t\tpostRun: cbPostRun,\n\t\tnoExitRuntime: true\n\t};\n\n\n\tvar Module; Module || ( Module = eval( \"(function() { try { return Fritz || {} } catch(e) { return {} } })()\" ) ); var aa = {}, k; for ( k in Module ) Module.hasOwnProperty( k ) && ( aa[ k ] = Module[ k ] ); var l = !1, m = !1, p = !1, ba = !1;\n\tif ( Module.ENVIRONMENT ) if ( \"WEB\" === Module.ENVIRONMENT ) l = !0; else if ( \"WORKER\" === Module.ENVIRONMENT ) m = !0; else if ( \"NODE\" === Module.ENVIRONMENT ) p = !0; else if ( \"SHELL\" === Module.ENVIRONMENT ) ba = !0; else throw Error( \"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\" ); else l = \"object\" === typeof window, m = \"function\" === typeof importScripts, p = \"object\" === typeof process && \"function\" === typeof require && !l && !m, ba = !l && !p && !m;\n\tif ( p )\n\t{\n\tModule.print || ( Module.print = console.log ); Module.printErr || ( Module.printErr = console.warn ); var ca, da; Module.read = function( a, b ) { ca || ( ca = require( \"fs\" ) ); da || ( da = require( \"path\" ) ); a = da.normalize( a ); a = ca.readFileSync( a ); return b ? a : a.toString() }; Module.readBinary = function( a ) { a = Module.read( a, !0 ); a.buffer || ( a = new Uint8Array( a ) ); assert( a.buffer ); return a }; Module.load = function( a ) { ea( read( a ) ) };\n\n\t\tModule.thisProgram || ( Module.thisProgram = 1 < process.argv.length ? process.argv[ 1 ].replace( /\\\\/g, \"/\" ) : \"unknown-program\" );\n\n\t\tModule.arguments = process.argv.slice( 2 ); \"undefined\" !== typeof module && ( module.exports = Module ); process.on( \"uncaughtException\", function( a ) { if ( !( a instanceof fa ) ) throw a; } ); Module.inspect = function() { return \"[Emscripten Module object]\" }\n\t} else if ( ba ) Module.print || ( Module.print = print ), \"undefined\" != typeof printErr && ( Module.printErr = printErr ), Module.read = \"undefined\" != typeof read ? function( a ) { return read( a ) } : function() { throw \"no read() available\"; }, Module.readBinary = function( a )\n\t{\n\t\tif ( \"function\" === typeof readbuffer ) return new Uint8Array( readbuffer( a ) );\n\t\ta = read( a, \"binary\" ); assert( \"object\" === typeof a ); return a\n\t}, \"undefined\" != typeof scriptArgs ? Module.arguments = scriptArgs : \"undefined\" != typeof arguments && ( Module.arguments = arguments ), \"function\" === typeof quit && ( Module.quit = function( a ) { quit( a ) } ); else if ( l || m ) Module.read = function( a ) { var b = new XMLHttpRequest; b.open( \"GET\", a, !1 ); b.send( null ); return b.responseText }, m && ( Module.readBinary = function( a ) { var b = new XMLHttpRequest; b.open( \"GET\", a, !1 ); b.responseType = \"arraybuffer\"; b.send( null ); return new Uint8Array( b.response ) } ),\n\t\tModule.readAsync = function( a, b, c ) { var d = new XMLHttpRequest; d.open( \"GET\", a, !0 ); d.responseType = \"arraybuffer\"; d.onload = function() { 200 == d.status || 0 == d.status && d.response ? b( d.response ) : c() }; d.onerror = c; d.send( null ) }, \"undefined\" != typeof arguments && ( Module.arguments = arguments ), \"undefined\" !== typeof console ? ( Module.print || ( Module.print = function( a ) { console.log( a ) } ), Module.printErr || ( Module.printErr = function( a ) { console.warn( a ) } ) ) : Module.print || ( Module.print = function() { } ), m && ( Module.load = importScripts ), \"undefined\" ===\n\t\ttypeof Module.setWindowTitle && ( Module.setWindowTitle = function( a ) { document.title = a } ); else throw Error( \"Unknown runtime environment. Where are we?\" ); function ea( a ) { eval.call( null, a ) } !Module.load && Module.read && ( Module.load = function( a ) { ea( Module.read( a ) ) } ); Module.print || ( Module.print = function() { } ); Module.printErr || ( Module.printErr = Module.print ); Module.arguments || ( Module.arguments = [] ); Module.thisProgram || ( Module.thisProgram = \"./this.program\" ); Module.quit || ( Module.quit = function( a, b ) { throw b; } );\n\tModule.print = Module.print; Module.printErr = Module.printErr; Module.preRun = []; Module.postRun = []; for ( k in aa ) aa.hasOwnProperty( k ) && ( Module[ k ] = aa[ k ] ); aa = void 0;\n\tvar u = {\n\t\tO: function( a ) { return tempRet0 = a }, hb: function() { return tempRet0 }, ua: function() { return q }, ta: function( a ) { q = a }, Na: function( a ) { switch ( a ) { case \"i1\": case \"i8\": return 1; case \"i16\": return 2; case \"i32\": return 4; case \"i64\": return 8; case \"float\": return 4; case \"double\": return 8; default: return \"*\" === a[ a.length - 1 ] ? u.G : \"i\" === a[ 0 ] ? ( a = parseInt( a.substr( 1 ) ), assert( 0 === a % 8 ), a / 8 ) : 0 } }, gb: function( a ) { return Math.max( u.Na( a ), u.G ) }, Dd: 16, Vd: function( a, b )\n\t\t{\n\t\t\"double\" === b || \"i64\" === b ? a & 7 && ( assert( 4 === ( a & 7 ) ), a += 4 ) : assert( 0 ===\n\t\t\t( a & 3 ) ); return a\n\t\t}, Ld: function( a, b, c ) { return c || \"i64\" != a && \"double\" != a ? a ? Math.min( b || ( a ? u.gb( a ) : 0 ), u.G ) : Math.min( b, 8 ) : 8 }, ka: function( a, b, c ) { return c && c.length ? Module[ \"dynCall_\" + a ].apply( null, [ b ].concat( c ) ) : Module[ \"dynCall_\" + a ].call( null, b ) }, h: [ null ], Za: function( a ) { for ( var b = 0; b < u.h.length; b++ )if ( !u.h[ b ] ) return u.h[ b ] = a, 2 * ( 1 + b ); throw \"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"; }, rb: function( a ) { u.h[ ( a - 2 ) / 2 ] = null }, K: function( a )\n\t\t{\n\t\t\tu.K.sa || ( u.K.sa = {} ); u.K.sa[ a ] ||\n\t\t\t\t( u.K.sa[ a ] = 1, Module.printErr( a ) )\n\t\t}, ma: {}, Od: function( a, b ) { if ( a ) { assert( b ); u.ma[ b ] || ( u.ma[ b ] = {} ); var c = u.ma[ b ]; c[ a ] || ( c[ a ] = 1 === b.length ? function() { return u.ka( b, a ) } : 2 === b.length ? function( c ) { return u.ka( b, a, [ c ] ) } : function() { return u.ka( b, a, Array.prototype.slice.call( arguments ) ) } ); return c[ a ] } }, Md: function() { throw \"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"; }, aa: function( a ) { var b = q; q = q + a | 0; q = q + 15 & -16; return b }, va: function( a )\n\t\t{\n\t\t\tvar b =\n\t\t\t\tw; w = w + a | 0; w = w + 15 & -16; return b\n\t\t}, Ia: function( a ) { var b = x[ y >> 2 ]; a = ( b + a + 15 | 0 ) & -16; x[ y >> 2 ] = a; return a >= z && !ha() ? ( x[ y >> 2 ] = b, 0 ) : b }, Da: function( a, b ) { return Math.ceil( a / ( b ? b : 16 ) ) * ( b ? b : 16 ) }, Rd: function( a, b, c ) { return c ? +( a >>> 0 ) + 4294967296 * +( b >>> 0 ) : +( a >>> 0 ) + 4294967296 * +( b | 0 ) }, ia: 1024, G: 4, Ed: 0\n\t}; Module.Runtime = u; u.addFunction = u.Za; u.removeFunction = u.rb; var A = 0; function assert( a, b ) { a || B( \"Assertion failed: \" + b ) }\n\tfunction ja( a ) { var b = Module[ \"_\" + a ]; if ( !b ) try { b = eval( \"_\" + a ) } catch ( c ) { } assert( b, \"Cannot call unknown function \" + a + \" (perhaps LLVM optimizations or closure removed it?)\" ); return b } var ka, la;\n\t( function()\n\t{\n\t\tfunction a( a ) { a = a.toString().match( e ).slice( 1 ); return { arguments: a[ 0 ], body: a[ 1 ], returnValue: a[ 2 ] } } function b() { if ( !f ) { f = {}; for ( var b in c ) c.hasOwnProperty( b ) && ( f[ b ] = a( c[ b ] ) ) } } var c = { stackSave: function() { u.ua() }, stackRestore: function() { u.ta() }, arrayToC: function( a ) { var b = u.aa( a.length ); ma( a, b ); return b }, stringToC: function( a ) { var b = 0; if ( null !== a && void 0 !== a && 0 !== a ) { var c = ( a.length << 2 ) + 1; b = u.aa( c ); na( a, b, c ) } return b } }, d = { string: c.stringToC, array: c.arrayToC }; la = function( a, b, c, e )\n\t\t{\n\t\t\tvar f = ja( a ),\n\t\t\tg = []; a = 0; if ( e ) for ( var h = 0; h < e.length; h++ ) { var H = d[ c[ h ] ]; H ? ( 0 === a && ( a = u.ua() ), g[ h ] = H( e[ h ] ) ) : g[ h ] = e[ h ] } c = f.apply( null, g ); \"string\" === b && ( c = C( c ) ); 0 !== a && u.ta( a ); return c\n\t\t}; var e = /^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/, f = null; ka = function( c, d, e )\n\t\t{\n\t\t\te = e || []; var g = ja( c ); c = e.every( function( a ) { return \"number\" === a } ); var h = \"string\" !== d; if ( h && c ) return g; var v = e.map( function( a, b ) { return \"$\" + b } ); d = \"(function(\" + v.join( \",\" ) + \") {\"; var n = e.length; if ( !c )\n\t\t\t{\n\t\t\t\tb(); d += \"var stack = \" +\n\t\t\t\t\tf.stackSave.body + \";\"; for ( var H = 0; H < n; H++ ) { var L = v[ H ], M = e[ H ]; \"number\" !== M && ( M = f[ M + \"ToC\" ], d += \"var \" + M.arguments + \" = \" + L + \";\", d += M.body + \";\", d += L + \"=(\" + M.returnValue + \");\" ) }\n\t\t\t} e = a( function() { return g } ).returnValue; d += \"var ret = \" + e + \"(\" + v.join( \",\" ) + \");\"; h || ( e = a( function() { return C } ).returnValue, d += \"ret = \" + e + \"(ret);\" ); c || ( b(), d += f.stackRestore.body.replace( \"()\", \"(stack)\" ) + \";\" ); return eval( d + \"return ret})\" )\n\t\t}\n\t} )(); Module.ccall = la; Module.cwrap = ka;\n\tfunction oa( a, b, c )\n\t{\n\t\tc = c || \"i8\"; \"*\" === c.charAt( c.length - 1 ) && ( c = \"i32\" ); switch ( c )\n\t\t{\n\t\t\tcase \"i1\": D[ a >> 0 ] = b; break; case \"i8\": D[ a >> 0 ] = b; break; case \"i16\": pa[ a >> 1 ] = b; break; case \"i32\": x[ a >> 2 ] = b; break; case \"i64\": tempI64 = [ b >>> 0, ( tempDouble = b, 1 <= +qa( tempDouble ) ? 0 < tempDouble ? ( ra( +sa( tempDouble / 4294967296 ), 4294967295 ) | 0 ) >>> 0 : ~~+ta( ( tempDouble - +( ~~tempDouble >>> 0 ) ) / 4294967296 ) >>> 0 : 0 ) ]; x[ a >> 2 ] = tempI64[ 0 ]; x[ a + 4 >> 2 ] = tempI64[ 1 ]; break; case \"float\": ua[ a >> 2 ] = b; break; case \"double\": va[ a >> 3 ] = b; break; default: B( \"invalid type for setValue: \" +\n\t\t\t\tc )\n\t\t}\n\t} Module.setValue = oa; function wa( a, b ) { b = b || \"i8\"; \"*\" === b.charAt( b.length - 1 ) && ( b = \"i32\" ); switch ( b ) { case \"i1\": return D[ a >> 0 ]; case \"i8\": return D[ a >> 0 ]; case \"i16\": return pa[ a >> 1 ]; case \"i32\": return x[ a >> 2 ]; case \"i64\": return x[ a >> 2 ]; case \"float\": return ua[ a >> 2 ]; case \"double\": return va[ a >> 3 ]; default: B( \"invalid type for getValue: \" + b ) }return null } Module.getValue = wa; Module.ALLOC_NORMAL = 0; Module.ALLOC_STACK = 1; Module.ALLOC_STATIC = 2; Module.ALLOC_DYNAMIC = 3; Module.ALLOC_NONE = 4;\n\tfunction E( a, b, c, d )\n\t{\n\t\tif ( \"number\" === typeof a ) { var e = !0; var f = a } else e = !1, f = a.length; var g = \"string\" === typeof b ? b : null, h; 4 == c ? h = d : h = [ \"function\" === typeof F ? F : u.va, u.aa, u.va, u.Ia ][ void 0 === c ? 2 : c ]( Math.max( f, g ? 1 : b.length ) ); if ( e ) { d = h; assert( 0 == ( h & 3 ) ); for ( a = h + ( f & -4 ); d < a; d += 4 )x[ d >> 2 ] = 0; for ( a = h + f; d < a; )D[ d++ >> 0 ] = 0; return h } if ( \"i8\" === g ) return a.subarray || a.slice ? G.set( a, h ) : G.set( new Uint8Array( a ), h ), h; d = 0; for ( var n, r; d < f; )e = a[ d ], \"function\" === typeof e && ( e = u.Pd( e ) ), c = g || b[ d ], 0 === c ? d++ : ( \"i64\" == c && ( c = \"i32\" ), oa( h +\n\t\t\td, e, c ), r !== c && ( n = u.Na( c ), r = c ), d += n ); return h\n\t} Module.allocate = E; Module.getMemory = function( a ) { return xa ? ya ? F( a ) : u.Ia( a ) : u.va( a ) }; function C( a, b ) { if ( 0 === b || !a ) return \"\"; for ( var c = 0, d, e = 0; ; ) { d = G[ a + e >> 0 ]; c |= d; if ( 0 == d && !b ) break; e++; if ( b && e == b ) break } b || ( b = e ); d = \"\"; if ( 128 > c ) { for ( ; 0 < b; )c = String.fromCharCode.apply( String, G.subarray( a, a + Math.min( b, 1024 ) ) ), d = d ? d + c : c, a += 1024, b -= 1024; return d } return Module.UTF8ToString( a ) } Module.Pointer_stringify = C;\n\tModule.AsciiToString = function( a ) { for ( var b = \"\"; ; ) { var c = D[ a++ >> 0 ]; if ( !c ) return b; b += String.fromCharCode( c ) } }; Module.stringToAscii = function( a, b ) { return za( a, b, !1 ) }; var Aa = \"undefined\" !== typeof TextDecoder ? new TextDecoder( \"utf8\" ) : void 0;\n\tfunction Ba( a, b )\n\t{\n\t\tfor ( var c = b; a[ c ]; )++c; if ( 16 < c - b && a.subarray && Aa ) return Aa.decode( a.subarray( b, c ) ); for ( c = \"\"; ; )\n\t\t{\n\t\t\tvar d = a[ b++ ]; if ( !d ) return c; if ( d & 128 )\n\t\t\t{\n\t\t\t\tvar e = a[ b++ ] & 63; if ( 192 == ( d & 224 ) ) c += String.fromCharCode( ( d & 31 ) << 6 | e ); else\n\t\t\t\t{\n\t\t\t\t\tvar f = a[ b++ ] & 63; if ( 224 == ( d & 240 ) ) d = ( d & 15 ) << 12 | e << 6 | f; else { var g = a[ b++ ] & 63; if ( 240 == ( d & 248 ) ) d = ( d & 7 ) << 18 | e << 12 | f << 6 | g; else { var h = a[ b++ ] & 63; if ( 248 == ( d & 252 ) ) d = ( d & 3 ) << 24 | e << 18 | f << 12 | g << 6 | h; else { var n = a[ b++ ] & 63; d = ( d & 1 ) << 30 | e << 24 | f << 18 | g << 12 | h << 6 | n } } } 65536 > d ? c += String.fromCharCode( d ) : ( d -=\n\t\t\t\t\t\t65536, c += String.fromCharCode( 55296 | d >> 10, 56320 | d & 1023 ) )\n\t\t\t\t}\n\t\t\t} else c += String.fromCharCode( d )\n\t\t}\n\t} Module.UTF8ArrayToString = Ba; Module.UTF8ToString = function( a ) { return Ba( G, a ) };\n\tfunction Ca( a, b, c, d )\n\t{\n\t\tif ( !( 0 < d ) ) return 0; var e = c; d = c + d - 1; for ( var f = 0; f < a.length; ++f )\n\t\t{\n\t\t\tvar g = a.charCodeAt( f ); 55296 <= g && 57343 >= g && ( g = 65536 + ( ( g & 1023 ) << 10 ) | a.charCodeAt( ++f ) & 1023 ); if ( 127 >= g ) { if ( c >= d ) break; b[ c++ ] = g } else\n\t\t\t{\n\t\t\t\tif ( 2047 >= g ) { if ( c + 1 >= d ) break; b[ c++ ] = 192 | g >> 6 } else\n\t\t\t\t{\n\t\t\t\t\tif ( 65535 >= g ) { if ( c + 2 >= d ) break; b[ c++ ] = 224 | g >> 12 } else\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( 2097151 >= g ) { if ( c + 3 >= d ) break; b[ c++ ] = 240 | g >> 18 } else { if ( 67108863 >= g ) { if ( c + 4 >= d ) break; b[ c++ ] = 248 | g >> 24 } else { if ( c + 5 >= d ) break; b[ c++ ] = 252 | g >> 30; b[ c++ ] = 128 | g >> 24 & 63 } b[ c++ ] = 128 | g >> 18 & 63 } b[ c++ ] = 128 |\n\t\t\t\t\t\t\tg >> 12 & 63\n\t\t\t\t\t} b[ c++ ] = 128 | g >> 6 & 63\n\t\t\t\t} b[ c++ ] = 128 | g & 63\n\t\t\t}\n\t\t} b[ c ] = 0; return c - e\n\t} Module.stringToUTF8Array = Ca; function na( a, b, c ) { return Ca( a, G, b, c ) } Module.stringToUTF8 = na; function Da( a ) { for ( var b = 0, c = 0; c < a.length; ++c ) { var d = a.charCodeAt( c ); 55296 <= d && 57343 >= d && ( d = 65536 + ( ( d & 1023 ) << 10 ) | a.charCodeAt( ++c ) & 1023 ); 127 >= d ? ++b : b = 2047 >= d ? b + 2 : 65535 >= d ? b + 3 : 2097151 >= d ? b + 4 : 67108863 >= d ? b + 5 : b + 6 } return b } Module.lengthBytesUTF8 = Da; \"undefined\" !== typeof TextDecoder && new TextDecoder( \"utf-16le\" );\n\tfunction Ea( a ) { return a.replace( /__Z[\\w\\d_]+/g, function( a ) { a: { var b = Module.___cxa_demangle || Module.__cxa_demangle; if ( b ) try { var d = a.substr( 1 ), e = Da( d ) + 1, f = F( e ); na( d, f, e ); var g = F( 4 ), h = b( f, 0, 0, g ); if ( 0 === wa( g, \"i32\" ) && h ) { var n = C( h ); break a } } catch ( r ) { } finally { f && Fa( f ), g && Fa( g ), h && Fa( h ) } else u.K( \"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\" ); n = a } return a === n ? a : a + \" [\" + n + \"]\" } ) }\n\tfunction Ga() { a: { var a = Error(); if ( !a.stack ) { try { throw Error( 0 ); } catch ( b ) { a = b } if ( !a.stack ) { a = \"(no stack trace available)\"; break a } } a = a.stack.toString() } Module.extraStackTrace && ( a += \"\\n\" + Module.extraStackTrace() ); return Ea( a ) } Module.stackTrace = Ga; var Ha = 65536, Ia = 16777216, Ja = 16777216; function Ka( a, b ) { 0 < a % b && ( a += b - a % b ); return a } var buffer, D, G, pa, La, x, Ma, ua, va;\n\tfunction Na() { Module.HEAP8 = D = new Int8Array( buffer ); Module.HEAP16 = pa = new Int16Array( buffer ); Module.HEAP32 = x = new Int32Array( buffer ); Module.HEAPU8 = G = new Uint8Array( buffer ); Module.HEAPU16 = La = new Uint16Array( buffer ); Module.HEAPU32 = Ma = new Uint32Array( buffer ); Module.HEAPF32 = ua = new Float32Array( buffer ); Module.HEAPF64 = va = new Float64Array( buffer ) } var Oa, w, xa, Pa, q, Qa, Ra, y; Oa = w = Pa = q = Qa = Ra = y = 0; xa = !1;\n\tModule.reallocBuffer || ( Module.reallocBuffer = function( a ) { try { if ( ArrayBuffer.Bb ) var b = ArrayBuffer.Bb( buffer, a ); else { var c = D; b = new ArrayBuffer( a ); ( new Int8Array( b ) ).set( c ) } } catch ( d ) { return !1 } return Sa( b ) ? b : !1 } ); function ha() { var a = Module.usingWasm ? Ha : Ia, b = 2147483648 - a; if ( x[ y >> 2 ] > b ) return !1; var c = z; for ( z = Math.max( z, Ja ); z < x[ y >> 2 ]; )536870912 >= z ? z = Ka( 2 * z, a ) : z = Math.min( Ka( ( 3 * z + 2147483648 ) / 4, a ), b ); a = Module.reallocBuffer( z ); if ( !a || a.byteLength != z ) return z = c, !1; Module.buffer = buffer = a; Na(); return !0 } var Ta;\n\ttry { Ta = Function.prototype.call.bind( Object.getOwnPropertyDescriptor( ArrayBuffer.prototype, \"byteLength\" ).get ), Ta( new ArrayBuffer( 4 ) ) } catch ( a ) { Ta = function( b ) { return b.byteLength } } var Ua = Module.TOTAL_STACK || 5242880, z = Module.TOTAL_MEMORY || 16777216; z < Ua && Module.printErr( \"TOTAL_MEMORY should be larger than TOTAL_STACK, was \" + z + \"! (TOTAL_STACK=\" + Ua + \")\" );\n\tModule.buffer ? buffer = Module.buffer : \"object\" === typeof WebAssembly && \"function\" === typeof WebAssembly.Memory ? ( Module.wasmMemory = new WebAssembly.Memory( { initial: z / Ha } ), buffer = Module.wasmMemory.buffer ) : buffer = new ArrayBuffer( z ); Na(); x[ 0 ] = 1668509029; pa[ 1 ] = 25459; if ( 115 !== G[ 2 ] || 99 !== G[ 3 ] ) throw \"Runtime error: expected the system to be little-endian!\"; Module.HEAP = void 0; Module.buffer = buffer; Module.HEAP8 = D; Module.HEAP16 = pa; Module.HEAP32 = x; Module.HEAPU8 = G; Module.HEAPU16 = La; Module.HEAPU32 = Ma; Module.HEAPF32 = ua;\n\tModule.HEAPF64 = va; function Va( a ) { for ( ; 0 < a.length; ) { var b = a.shift(); if ( \"function\" == typeof b ) b(); else { var c = b.R; \"number\" === typeof c ? void 0 === b.X ? Module.dynCall_v( c ) : Module.dynCall_vi( c, b.X ) : c( void 0 === b.X ? null : b.X ) } } } var Wa = [], Xa = [], Ya = [], Za = [], $a = [], ya = !1; function ab( a ) { Wa.unshift( a ) } Module.addOnPreRun = ab; Module.addOnInit = function( a ) { Xa.unshift( a ) }; Module.addOnPreMain = function( a ) { Ya.unshift( a ) }; Module.addOnExit = function( a ) { Za.unshift( a ) }; function bb( a ) { $a.unshift( a ) } Module.addOnPostRun = bb;\n\tModule.writeStringToMemory = function( a, b, c ) { u.K( \"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\" ); if ( c ) { var d = b + Da( a ); var e = D[ d ] } na( a, b, Infinity ); c && ( D[ d ] = e ) }; function ma( a, b ) { D.set( a, b ) } Module.writeArrayToMemory = ma; function za( a, b, c ) { for ( var d = 0; d < a.length; ++d )D[ b++ >> 0 ] = a.charCodeAt( d ); c || ( D[ b >> 0 ] = 0 ) } Module.writeAsciiToMemory = za;\n\tMath.imul && -5 === Math.imul( 4294967295, 5 ) || ( Math.imul = function( a, b ) { var c = a & 65535, d = b & 65535; return c * d + ( ( a >>> 16 ) * d + c * ( b >>> 16 ) << 16 ) | 0 } ); Math.imul = Math.imul; if ( !Math.fround ) { var cb = new Float32Array( 1 ); Math.fround = function( a ) { cb[ 0 ] = a; return cb[ 0 ] } } Math.Kd = Math.fround; Math.clz32 || ( Math.clz32 = function( a ) { a >>>= 0; for ( var b = 0; 32 > b; b++ )if ( a & 1 << 31 - b ) return b; return 32 } ); Math.clz32 = Math.clz32; Math.trunc || ( Math.trunc = function( a ) { return 0 > a ? Math.ceil( a ) : Math.floor( a ) } ); Math.trunc = Math.trunc;\n\tvar qa = Math.abs, ta = Math.ceil, sa = Math.floor, ra = Math.min, db = 0, eb = null, fb = null; function gb() { db++; Module.monitorRunDependencies && Module.monitorRunDependencies( db ) } Module.addRunDependency = gb; function hb() { db--; Module.monitorRunDependencies && Module.monitorRunDependencies( db ); if ( 0 == db && ( null !== eb && ( clearInterval( eb ), eb = null ), fb ) ) { var a = fb; fb = null; a() } } Module.removeRunDependency = hb; Module.preloadedImages = {}; Module.preloadedAudios = {}; var I = null;\n\t( function()\n\t{\n\t\tfunction a( a ) { a = Ka( a, Module.usingWasm ? Ha : Ia ); var b = Module.buffer, c = b.byteLength; if ( Module.usingWasm ) try { return -1 !== Module.wasmMemory.grow( ( a - c ) / 65536 ) ? Module.buffer = Module.wasmMemory.buffer : null } catch ( L ) { return null } else return n.__growWasmMemory( ( a - c ) / 65536 ), Module.buffer !== b ? Module.buffer : null } function b()\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tif ( Module.wasmBinary ) return new Uint8Array( Module.wasmBinary ); if ( Module.readBinary ) return Module.readBinary( f ); throw \"on the web, we need the wasm binary to be preloaded and set on Module['wasmBinary']. emcc.py will do that for you when generating HTML (but not JS)\";\n\t\t\t} catch ( v ) { B( v ) }\n\t\t} function c() { return Module.wasmBinary || !l && !m || \"function\" !== typeof fetch ? new Promise( function( a ) { a( b() ) } ) : fetch( f, { credentials: \"same-origin\" } ).then( function( a ) { if ( !a.ok ) throw \"failed to load wasm binary file at '\" + f + \"'\"; return a.arrayBuffer() } ).catch( function() { return b() } ) } function d( a, b )\n\t\t{\n\t\t\tfunction d( a )\n\t\t\t{\n\t\t\t\tn = a.exports; if ( n.memory )\n\t\t\t\t{\n\t\t\t\t\ta = n.memory; var b = Module.buffer; a.byteLength < b.byteLength && Module.printErr( \"the new buffer in mergeMemory is smaller than the previous one. in native wasm, we should grow memory here\" );\n\t\t\t\t\tb = new Int8Array( b ); var c = new Int8Array( a ); I || b.set( c.subarray( Module.STATIC_BASE, Module.STATIC_BASE + Module.STATIC_BUMP ), Module.STATIC_BASE ); c.set( b ); Module.buffer = buffer = a; Na()\n\t\t\t\t} Module.asm = n; Module.usingWasm = !0; hb()\n\t\t\t} function e( a ) { d( a.instance ) } function g( a ) { c().then( function( a ) { return WebAssembly.instantiate( a, h ) } ).then( a ).catch( function( a ) { Module.printErr( \"failed to asynchronously prepare wasm: \" + a ); B( a ) } ) } if ( \"object\" !== typeof WebAssembly ) return Module.printErr( \"no native wasm support detected\" ),\n\t\t\t\t!1; if ( !( Module.wasmMemory instanceof WebAssembly.Memory ) ) return Module.printErr( \"no native wasm Memory in use\" ), !1; b.memory = Module.wasmMemory; h.global = { NaN: NaN, Infinity: Infinity }; h[ \"global.Math\" ] = a.Math; h.env = b; gb(); if ( Module.instantiateWasm ) try { return Module.instantiateWasm( h, d ) } catch ( $c ) { return Module.printErr( \"Module.instantiateWasm callback failed with error: \" + $c ), !1 } Module.wasmBinary || \"function\" !== typeof WebAssembly.jb || 0 === f.indexOf( \"data:\" ) || \"function\" !== typeof fetch ? g( e ) : WebAssembly.jb( fetch( f,\n\t\t\t\t\t{ credentials: \"same-origin\" } ), h ).then( e ).catch( function( a ) { Module.printErr( \"wasm streaming compile failed: \" + a ); Module.printErr( \"falling back to ArrayBuffer instantiation\" ); g( e ) } ); return {}\n\t\t} Module.wasmJSMethod = Module.wasmJSMethod || \"native-wasm\"; var e = Module.wasmTextFile || \"Fritz.wast\", f = Module.wasmBinaryFile || \"https://pgn.chessbase.com/common/chess/engine/webasm/Fritz3.wasm\", g = Module.asmjsCodeFile || \"Fritz.temp.asm.js\"; \"function\" === typeof Module.locateFile && ( e = Module.locateFile( e ), f = Module.locateFile( f ), g = Module.locateFile( g ) ); var h = {\n\t\t\tglobal: null, env: null,\n\t\t\tasm2wasm: { \"f64-rem\": function( a, b ) { return a % b }, \"f64-to-int\": function( a ) { return a | 0 }, \"i32s-div\": function( a, b ) { return ( a | 0 ) / ( b | 0 ) | 0 }, \"i32u-div\": function( a, b ) { return ( a >>> 0 ) / ( b >>> 0 ) >>> 0 }, \"i32s-rem\": function( a, b ) { return ( a | 0 ) % ( b | 0 ) | 0 }, \"i32u-rem\": function( a, b ) { return ( a >>> 0 ) % ( b >>> 0 ) >>> 0 }, \"debugger\": function() { debugger } }, parent: Module\n\t\t}, n = null; Module.asmPreload = Module.asm; var r = Module.reallocBuffer; Module.reallocBuffer = function( b ) { return \"asmjs\" === t ? r( b ) : a( b ) }; var t = \"\"; Module.asm = function( a, b )\n\t\t{\n\t\t\tif ( !b.table )\n\t\t\t{\n\t\t\t\tvar c =\n\t\t\t\t\tModule.wasmTableSize; void 0 === c && ( c = 1024 ); var e = Module.wasmMaxTableSize; b.table = \"object\" === typeof WebAssembly && \"function\" === typeof WebAssembly.Table ? void 0 !== e ? new WebAssembly.Table( { initial: c, maximum: e, element: \"anyfunc\" } ) : new WebAssembly.Table( { initial: c, element: \"anyfunc\" } ) : Array( c ); Module.wasmTable = b.table\n\t\t\t} b.memoryBase || ( b.memoryBase = Module.STATIC_BASE ); b.tableBase || ( b.tableBase = 0 ); ( a = d( a, b ) ) || B( \"no binaryen method succeeded. consider enabling more options, like interpreting, if you want that: https://github.com/kripken/emscripten/wiki/WebAssembly#binaryen-methods\" );\n\t\t\treturn a\n\t\t}\n\t} )(); Oa = u.ia; w = Oa + 1599264; Xa.push( { R: function() { ib() } }, { R: function() { jb() } }, { R: function() { kb() } }, { R: function() { lb() } } ); I = null; Module.STATIC_BASE = Oa; Module.STATIC_BUMP = 1599264; var mb = w; w += 16; function nb() { return !!nb.s } var ob = 0, pb = [], qb = {};\n\tfunction rb() { var a = ob; if ( !a ) return ( u.O( 0 ), 0 ) | 0; var b = qb[ a ], c = b.type; if ( !c ) return ( u.O( 0 ), a ) | 0; var d = Array.prototype.slice.call( arguments ); Module.___cxa_is_pointer_type( c ); rb.buffer || ( rb.buffer = F( 4 ) ); x[ rb.buffer >> 2 ] = a; a = rb.buffer; for ( var e = 0; e < d.length; e++ )if ( d[ e ] && Module.___cxa_can_catch( d[ e ], c, a ) ) return a = x[ a >> 2 ], b.Ca = a, ( u.O( d[ e ] ), a ) | 0; a = x[ a >> 2 ]; return ( u.O( c ), a ) | 0 }\n\tvar J = {\n\t\tF: 1, A: 2, qd: 3, lc: 4, D: 5, Ba: 6, Eb: 7, Jc: 8, V: 9, Sb: 10, wa: 11, Ad: 11, Wa: 12, ea: 13, dc: 14, Vc: 15, fa: 16, ya: 17, Bd: 18, ha: 19, za: 20, P: 21, i: 22, Ec: 23, Va: 24, L: 25, xd: 26, ec: 27, Rc: 28, W: 29, nd: 30, xc: 31, ed: 32, ac: 33, kd: 34, Nc: 42, ic: 43, Tb: 44, oc: 45, pc: 46, qc: 47, wc: 48, yd: 49, Hc: 50, nc: 51, Yb: 35, Kc: 37, Kb: 52, Nb: 53, Cd: 54, Fc: 55, Ob: 56, Pb: 57, Zb: 35, Qb: 59, Tc: 60, Ic: 61, ud: 62, Sc: 63, Oc: 64, Pc: 65, md: 66, Lc: 67, Hb: 68, rd: 69, Ub: 70, gd: 71, zc: 72, bc: 73, Mb: 74, $c: 76, Lb: 77, ld: 78, rc: 79, sc: 80, vc: 81, uc: 82, tc: 83, Uc: 38, Aa: 39, Ac: 36, ga: 40, ad: 95, dd: 96, Xb: 104,\n\t\tGc: 105, Ib: 97, jd: 91, Yc: 88, Qc: 92, od: 108, Wb: 111, Fb: 98, Vb: 103, Dc: 101, Bc: 100, vd: 110, fc: 112, hc: 113, kc: 115, Jb: 114, $b: 89, yc: 90, hd: 93, pd: 94, Gb: 99, Cc: 102, mc: 106, Wc: 107, wd: 109, zd: 87, cc: 122, sd: 116, Zc: 95, Mc: 123, jc: 84, bd: 75, Rb: 125, Xc: 131, cd: 130, td: 86\n\t}; function sb( a ) { Module.___errno_location && ( x[ Module.___errno_location() >> 2 ] = a ); return a }\n\tvar tb = {\n\t\t0: \"Success\", 1: \"Not super-user\", 2: \"No such file or directory\", 3: \"No such process\", 4: \"Interrupted system call\", 5: \"I/O error\", 6: \"No such device or address\", 7: \"Arg list too long\", 8: \"Exec format error\", 9: \"Bad file number\", 10: \"No children\", 11: \"No more processes\", 12: \"Not enough core\", 13: \"Permission denied\", 14: \"Bad address\", 15: \"Block device required\", 16: \"Mount device busy\", 17: \"File exists\", 18: \"Cross-device link\", 19: \"No such device\", 20: \"Not a directory\", 21: \"Is a directory\", 22: \"Invalid argument\", 23: \"Too many open files in system\",\n\t\t24: \"Too many open files\", 25: \"Not a typewriter\", 26: \"Text file busy\", 27: \"File too large\", 28: \"No space left on device\", 29: \"Illegal seek\", 30: \"Read only file system\", 31: \"Too many links\", 32: \"Broken pipe\", 33: \"Math arg out of domain of func\", 34: \"Math result not representable\", 35: \"File locking deadlock error\", 36: \"File or path name too long\", 37: \"No record locks available\", 38: \"Function not implemented\", 39: \"Directory not empty\", 40: \"Too many symbolic links\", 42: \"No message of desired type\", 43: \"Identifier removed\",\n\t\t44: \"Channel number out of range\", 45: \"Level 2 not synchronized\", 46: \"Level 3 halted\", 47: \"Level 3 reset\", 48: \"Link number out of range\", 49: \"Protocol driver not attached\", 50: \"No CSI structure available\", 51: \"Level 2 halted\", 52: \"Invalid exchange\", 53: \"Invalid request descriptor\", 54: \"Exchange full\", 55: \"No anode\", 56: \"Invalid request code\", 57: \"Invalid slot\", 59: \"Bad font file fmt\", 60: \"Device not a stream\", 61: \"No data (for no delay io)\", 62: \"Timer expired\", 63: \"Out of streams resources\", 64: \"Machine is not on the network\",\n\t\t65: \"Package not installed\", 66: \"The object is remote\", 67: \"The link has been severed\", 68: \"Advertise error\", 69: \"Srmount error\", 70: \"Communication error on send\", 71: \"Protocol error\", 72: \"Multihop attempted\", 73: \"Cross mount point (not really error)\", 74: \"Trying to read unreadable message\", 75: \"Value too large for defined data type\", 76: \"Given log. name not unique\", 77: \"f.d. invalid for this operation\", 78: \"Remote address changed\", 79: \"Can access a needed shared lib\", 80: \"Accessing a corrupted shared lib\", 81: \".lib section in a.out corrupted\",\n\t\t82: \"Attempting to link in too many libs\", 83: \"Attempting to exec a shared library\", 84: \"Illegal byte sequence\", 86: \"Streams pipe error\", 87: \"Too many users\", 88: \"Socket operation on non-socket\", 89: \"Destination address required\", 90: \"Message too long\", 91: \"Protocol wrong type for socket\", 92: \"Protocol not available\", 93: \"Unknown protocol\", 94: \"Socket type not supported\", 95: \"Not supported\", 96: \"Protocol family not supported\", 97: \"Address family not supported by protocol family\", 98: \"Address already in use\", 99: \"Address not available\",\n\t\t100: \"Network interface is not configured\", 101: \"Network is unreachable\", 102: \"Connection reset by network\", 103: \"Connection aborted\", 104: \"Connection reset by peer\", 105: \"No buffer space available\", 106: \"Socket is already connected\", 107: \"Socket is not connected\", 108: \"Can't send after socket shutdown\", 109: \"Too many references\", 110: \"Connection timed out\", 111: \"Connection refused\", 112: \"Host is down\", 113: \"Host is unreachable\", 114: \"Socket already connected\", 115: \"Connection already in progress\", 116: \"Stale file handle\",\n\t\t122: \"Quota exceeded\", 123: \"No medium (in tape drive)\", 125: \"Operation canceled\", 130: \"Previous owner died\", 131: \"State not recoverable\"\n\t}; function ub( a, b ) { for ( var c = 0, d = a.length - 1; 0 <= d; d-- ) { var e = a[ d ]; \".\" === e ? a.splice( d, 1 ) : \"..\" === e ? ( a.splice( d, 1 ), c++ ) : c && ( a.splice( d, 1 ), c-- ) } if ( b ) for ( ; c; c-- )a.unshift( \"..\" ); return a } function vb( a ) { var b = \"/\" === a.charAt( 0 ), c = \"/\" === a.substr( -1 ); ( a = ub( a.split( \"/\" ).filter( function( a ) { return !!a } ), !b ).join( \"/\" ) ) || b || ( a = \".\" ); a && c && ( a += \"/\" ); return ( b ? \"/\" : \"\" ) + a }\n\tfunction wb( a ) { var b = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec( a ).slice( 1 ); a = b[ 0 ]; b = b[ 1 ]; if ( !a && !b ) return \".\"; b && ( b = b.substr( 0, b.length - 1 ) ); return a + b } function xb( a ) { if ( \"/\" === a ) return \"/\"; var b = a.lastIndexOf( \"/\" ); return -1 === b ? a : a.substr( b + 1 ) } function yb() { var a = Array.prototype.slice.call( arguments, 0 ); return vb( a.join( \"/\" ) ) } function K( a, b ) { return vb( a + \"/\" + b ) }\n\tfunction zb() { for ( var a = \"\", b = !1, c = arguments.length - 1; -1 <= c && !b; c-- ) { b = 0 <= c ? arguments[ c ] : \"/\"; if ( \"string\" !== typeof b ) throw new TypeError( \"Arguments to path.resolve must be strings\" ); if ( !b ) return \"\"; a = b + \"/\" + a; b = \"/\" === b.charAt( 0 ) } a = ub( a.split( \"/\" ).filter( function( a ) { return !!a } ), !b ).join( \"/\" ); return ( b ? \"/\" : \"\" ) + a || \".\" } var Ab = []; function Bb( a, b ) { Ab[ a ] = { input: [], output: [], N: b }; Cb( a, Db ) }\n\tvar Db = {\n\t\topen: function( a ) { var b = Ab[ a.node.rdev ]; if ( !b ) throw new N( J.ha ); a.tty = b; a.seekable = !1 }, close: function( a ) { a.tty.N.flush( a.tty ) }, flush: function( a ) { a.tty.N.flush( a.tty ) }, read: function( a, b, c, d ) { if ( !a.tty || !a.tty.N.Oa ) throw new N( J.Ba ); for ( var e = 0, f = 0; f < d; f++ ) { try { var g = a.tty.N.Oa( a.tty ) } catch ( h ) { throw new N( J.D ); } if ( void 0 === g && 0 === e ) throw new N( J.wa ); if ( null === g || void 0 === g ) break; e++; b[ c + f ] = g } e && ( a.node.timestamp = Date.now() ); return e }, write: function( a, b, c, d )\n\t\t{\n\t\t\tif ( !a.tty || !a.tty.N.qa ) throw new N( J.Ba );\n\t\t\tfor ( var e = 0; e < d; e++ )try { a.tty.N.qa( a.tty, b[ c + e ] ) } catch ( f ) { throw new N( J.D ); } d && ( a.node.timestamp = Date.now() ); return e\n\t\t}\n\t}, Eb = {\n\t\tOa: function( a )\n\t\t{\n\t\t\tif ( !a.input.length )\n\t\t\t{\n\t\t\t\tvar b = null; if ( p ) { var c = new Buffer( 256 ), d = 0, e = process.stdin.fd; if ( \"win32\" != process.platform ) { var f = !1; try { e = fs.openSync( \"/dev/stdin\", \"r\" ), f = !0 } catch ( g ) { } } try { d = fs.readSync( e, c, 0, 256, null ) } catch ( g ) { if ( -1 != g.toString().indexOf( \"EOF\" ) ) d = 0; else throw g; } f && fs.closeSync( e ); 0 < d ? b = c.slice( 0, d ).toString( \"utf-8\" ) : b = null } else \"undefined\" != typeof window &&\n\t\t\t\t\t\"function\" == typeof window.prompt ? ( b = window.prompt( \"Input: \" ), null !== b && ( b += \"\\n\" ) ) : \"function\" == typeof readline && ( b = readline(), null !== b && ( b += \"\\n\" ) ); if ( !b ) return null; a.input = O( b, !0 )\n\t\t\t} return a.input.shift()\n\t\t}, qa: function( a, b ) { null === b || 10 === b ? ( Module.print( Ba( a.output, 0 ) ), a.output = [] ) : 0 != b && a.output.push( b ) }, flush: function( a ) { a.output && 0 < a.output.length && ( Module.print( Ba( a.output, 0 ) ), a.output = [] ) }\n\t}, Fb = {\n\t\tqa: function( a, b ) { null === b || 10 === b ? ( Module.printErr( Ba( a.output, 0 ) ), a.output = [] ) : 0 != b && a.output.push( b ) },\n\t\tflush: function( a ) { a.output && 0 < a.output.length && ( Module.printErr( Ba( a.output, 0 ) ), a.output = [] ) }\n\t}, P = {\n\t\tu: null, m: function() { return P.createNode( null, \"/\", 16895, 0 ) }, createNode: function( a, b, c, d )\n\t\t{\n\t\t\tif ( 24576 === ( c & 61440 ) || 4096 === ( c & 61440 ) ) throw new N( J.F ); P.u || ( P.u = {\n\t\t\t\tdir: { node: { v: P.c.v, l: P.c.l, lookup: P.c.lookup, S: P.c.S, rename: P.c.rename, unlink: P.c.unlink, rmdir: P.c.rmdir, readdir: P.c.readdir, symlink: P.c.symlink }, stream: { B: P.f.B } }, file: {\n\t\t\t\t\tnode: { v: P.c.v, l: P.c.l }, stream: {\n\t\t\t\t\t\tB: P.f.B, read: P.f.read, write: P.f.write, Ea: P.f.Ea,\n\t\t\t\t\t\tRa: P.f.Ra, $: P.f.$\n\t\t\t\t\t}\n\t\t\t\t}, link: { node: { v: P.c.v, l: P.c.l, readlink: P.c.readlink }, stream: {} }, Ha: { node: { v: P.c.v, l: P.c.l }, stream: Gb }\n\t\t\t} ); c = Hb( a, b, c, d ); Q( c.mode ) ? ( c.c = P.u.dir.node, c.f = P.u.dir.stream, c.b = {} ) : 32768 === ( c.mode & 61440 ) ? ( c.c = P.u.file.node, c.f = P.u.file.stream, c.g = 0, c.b = null ) : 40960 === ( c.mode & 61440 ) ? ( c.c = P.u.link.node, c.f = P.u.link.stream ) : 8192 === ( c.mode & 61440 ) && ( c.c = P.u.Ha.node, c.f = P.u.Ha.stream ); c.timestamp = Date.now(); a && ( a.b[ b ] = c ); return c\n\t\t}, fb: function( a )\n\t\t{\n\t\t\tif ( a.b && a.b.subarray )\n\t\t\t{\n\t\t\t\tfor ( var b = [], c = 0; c < a.g; ++c )b.push( a.b[ c ] );\n\t\t\t\treturn b\n\t\t\t} return a.b\n\t\t}, Nd: function( a ) { return a.b ? a.b.subarray ? a.b.subarray( 0, a.g ) : new Uint8Array( a.b ) : new Uint8Array }, Ja: function( a, b ) { a.b && a.b.subarray && b > a.b.length && ( a.b = P.fb( a ), a.g = a.b.length ); if ( !a.b || a.b.subarray ) { var c = a.b ? a.b.length : 0; c >= b || ( b = Math.max( b, c * ( 1048576 > c ? 2 : 1.125 ) | 0 ), 0 != c && ( b = Math.max( b, 256 ) ), c = a.b, a.b = new Uint8Array( b ), 0 < a.g && a.b.set( c.subarray( 0, a.g ), 0 ) ) } else for ( !a.b && 0 < b && ( a.b = [] ); a.b.length < b; )a.b.push( 0 ) }, sb: function( a, b )\n\t\t{\n\t\t\tif ( a.g != b ) if ( 0 == b ) a.b = null, a.g = 0; else\n\t\t\t{\n\t\t\t\tif ( !a.b || a.b.subarray )\n\t\t\t\t{\n\t\t\t\t\tvar c =\n\t\t\t\t\t\ta.b; a.b = new Uint8Array( new ArrayBuffer( b ) ); c && a.b.set( c.subarray( 0, Math.min( b, a.g ) ) )\n\t\t\t\t} else if ( a.b || ( a.b = [] ), a.b.length > b ) a.b.length = b; else for ( ; a.b.length < b; )a.b.push( 0 ); a.g = b\n\t\t\t}\n\t\t}, c: {\n\t\t\tv: function( a )\n\t\t\t{\n\t\t\t\tvar b = {}; b.dev = 8192 === ( a.mode & 61440 ) ? a.id : 1; b.ino = a.id; b.mode = a.mode; b.nlink = 1; b.uid = 0; b.gid = 0; b.rdev = a.rdev; Q( a.mode ) ? b.size = 4096 : 32768 === ( a.mode & 61440 ) ? b.size = a.g : 40960 === ( a.mode & 61440 ) ? b.size = a.link.length : b.size = 0; b.atime = new Date( a.timestamp ); b.mtime = new Date( a.timestamp ); b.ctime = new Date( a.timestamp );\n\t\t\t\tb.H = 4096; b.blocks = Math.ceil( b.size / b.H ); return b\n\t\t\t}, l: function( a, b ) { void 0 !== b.mode && ( a.mode = b.mode ); void 0 !== b.timestamp && ( a.timestamp = b.timestamp ); void 0 !== b.size && P.sb( a, b.size ) }, lookup: function() { throw Ib[ J.A ]; }, S: function( a, b, c, d ) { return P.createNode( a, b, c, d ) }, rename: function( a, b, c ) { if ( Q( a.mode ) ) { try { var d = Jb( b, c ) } catch ( f ) { } if ( d ) for ( var e in d.b ) throw new N( J.Aa ); } delete a.parent.b[ a.name ]; a.name = c; b.b[ c ] = a; a.parent = b }, unlink: function( a, b ) { delete a.b[ b ] }, rmdir: function( a, b )\n\t\t\t{\n\t\t\t\tvar c = Jb( a, b ), d; for ( d in c.b ) throw new N( J.Aa );\n\t\t\t\tdelete a.b[ b ]\n\t\t\t}, readdir: function( a ) { var b = [ \".\", \"..\" ], c; for ( c in a.b ) a.b.hasOwnProperty( c ) && b.push( c ); return b }, symlink: function( a, b, c ) { a = P.createNode( a, b, 41471, 0 ); a.link = c; return a }, readlink: function( a ) { if ( 40960 !== ( a.mode & 61440 ) ) throw new N( J.i ); return a.link }\n\t\t}, f: {\n\t\t\tread: function( a, b, c, d, e ) { var f = a.node.b; if ( e >= a.node.g ) return 0; a = Math.min( a.node.g - e, d ); assert( 0 <= a ); if ( 8 < a && f.subarray ) b.set( f.subarray( e, e + a ), c ); else for ( d = 0; d < a; d++ )b[ c + d ] = f[ e + d ]; return a }, write: function( a, b, c, d, e, f )\n\t\t\t{\n\t\t\t\tif ( !d ) return 0; a =\n\t\t\t\t\ta.node; a.timestamp = Date.now(); if ( b.subarray && ( !a.b || a.b.subarray ) ) { if ( f ) return a.b = b.subarray( c, c + d ), a.g = d; if ( 0 === a.g && 0 === e ) return a.b = new Uint8Array( b.subarray( c, c + d ) ), a.g = d; if ( e + d <= a.g ) return a.b.set( b.subarray( c, c + d ), e ), d } P.Ja( a, e + d ); if ( a.b.subarray && b.subarray ) a.b.set( b.subarray( c, c + d ), e ); else for ( f = 0; f < d; f++ )a.b[ e + f ] = b[ c + f ]; a.g = Math.max( a.g, e + d ); return d\n\t\t\t}, B: function( a, b, c ) { 1 === c ? b += a.position : 2 === c && 32768 === ( a.node.mode & 61440 ) && ( b += a.node.g ); if ( 0 > b ) throw new N( J.i ); return b }, Ea: function( a, b,\n\t\t\t\tc ) { P.Ja( a.node, b + c ); a.node.g = Math.max( a.node.g, b + c ) }, Ra: function( a, b, c, d, e, f, g ) { if ( 32768 !== ( a.node.mode & 61440 ) ) throw new N( J.ha ); c = a.node.b; if ( g & 2 || c.buffer !== b && c.buffer !== b.buffer ) { if ( 0 < e || e + d < a.node.g ) c.subarray ? c = c.subarray( e, e + d ) : c = Array.prototype.slice.call( c, e, e + d ); a = !0; d = F( d ); if ( !d ) throw new N( J.Wa ); b.set( c, d ) } else a = !1, d = c.byteOffset; return { ob: d, $a: a } }, $: function( a, b, c, d, e ) { if ( 32768 !== ( a.node.mode & 61440 ) ) throw new N( J.ha ); if ( e & 2 ) return 0; P.f.write( a, b, 0, d, c, !1 ); return 0 }\n\t\t}\n\t}, R = {\n\t\tZ: !1, wb: function()\n\t\t{\n\t\tR.Z =\n\t\t\t!!process.platform.match( /^win/ )\n\t\t}, m: function( a ) { assert( p ); return R.createNode( null, \"/\", R.Ma( a.pa.root ), 0 ) }, createNode: function( a, b, c ) { if ( !Q( c ) && 32768 !== ( c & 61440 ) && 40960 !== ( c & 61440 ) ) throw new N( J.i ); a = Hb( a, b, c ); a.c = R.c; a.f = R.f; return a }, Ma: function( a ) { try { var b = fs.lstatSync( a ); R.Z && ( b.mode = b.mode | ( b.mode & 146 ) >> 1 ) } catch ( c ) { if ( !c.code ) throw c; throw new N( J[ c.code ] ); } return b.mode }, o: function( a )\n\t\t{\n\t\t\tfor ( var b = []; a.parent !== a; )b.push( a.name ), a = a.parent; b.push( a.m.pa.root ); b.reverse(); return yb.apply( null,\n\t\t\t\tb )\n\t\t}, Ka: { 0: \"r\", 1: \"r+\", 2: \"r+\", 64: \"r\", 65: \"r+\", 66: \"r+\", 129: \"rx+\", 193: \"rx+\", 514: \"w+\", 577: \"w\", 578: \"w+\", 705: \"wx\", 706: \"wx+\", 1024: \"a\", 1025: \"a\", 1026: \"a+\", 1089: \"a\", 1090: \"a+\", 1153: \"ax\", 1154: \"ax+\", 1217: \"ax\", 1218: \"ax+\", 4096: \"rs\", 4098: \"rs+\" }, eb: function( a ) { a &= -2656257; if ( a in R.Ka ) return R.Ka[ a ]; throw new N( J.i ); }, c: {\n\t\t\tv: function( a )\n\t\t\t{\n\t\t\t\ta = R.o( a ); try { var b = fs.lstatSync( a ) } catch ( c ) { if ( !c.code ) throw c; throw new N( J[ c.code ] ); } R.Z && !b.H && ( b.H = 4096 ); R.Z && !b.blocks && ( b.blocks = ( b.size + b.H - 1 ) / b.H | 0 ); return {\n\t\t\t\t\tdev: b.dev, ino: b.ino,\n\t\t\t\t\tmode: b.mode, nlink: b.nlink, uid: b.uid, gid: b.gid, rdev: b.rdev, size: b.size, atime: b.atime, mtime: b.mtime, ctime: b.ctime, H: b.H, blocks: b.blocks\n\t\t\t\t}\n\t\t\t}, l: function( a, b ) { var c = R.o( a ); try { void 0 !== b.mode && ( fs.chmodSync( c, b.mode ), a.mode = b.mode ), void 0 !== b.size && fs.truncateSync( c, b.size ) } catch ( d ) { if ( !d.code ) throw d; throw new N( J[ d.code ] ); } }, lookup: function( a, b ) { var c = K( R.o( a ), b ); c = R.Ma( c ); return R.createNode( a, b, c ) }, S: function( a, b, c, d )\n\t\t\t{\n\t\t\t\ta = R.createNode( a, b, c, d ); b = R.o( a ); try\n\t\t\t\t{\n\t\t\t\t\tQ( a.mode ) ? fs.mkdirSync( b, a.mode ) : fs.writeFileSync( b,\n\t\t\t\t\t\t\"\", { mode: a.mode } )\n\t\t\t\t} catch ( e ) { if ( !e.code ) throw e; throw new N( J[ e.code ] ); } return a\n\t\t\t}, rename: function( a, b, c ) { a = R.o( a ); b = K( R.o( b ), c ); try { fs.renameSync( a, b ) } catch ( d ) { if ( !d.code ) throw d; throw new N( J[ d.code ] ); } }, unlink: function( a, b ) { a = K( R.o( a ), b ); try { fs.unlinkSync( a ) } catch ( c ) { if ( !c.code ) throw c; throw new N( J[ c.code ] ); } }, rmdir: function( a, b ) { a = K( R.o( a ), b ); try { fs.rmdirSync( a ) } catch ( c ) { if ( !c.code ) throw c; throw new N( J[ c.code ] ); } }, readdir: function( a )\n\t\t\t{\n\t\t\t\ta = R.o( a ); try { return fs.readdirSync( a ) } catch ( b )\n\t\t\t\t{\n\t\t\t\t\tif ( !b.code ) throw b;\n\t\t\t\t\tthrow new N( J[ b.code ] );\n\t\t\t\t}\n\t\t\t}, symlink: function( a, b, c ) { a = K( R.o( a ), b ); try { fs.symlinkSync( c, a ) } catch ( d ) { if ( !d.code ) throw d; throw new N( J[ d.code ] ); } }, readlink: function( a ) { var b = R.o( a ); try { return b = fs.readlinkSync( b ), b = Kb.relative( Kb.resolve( a.m.pa.root ), b ) } catch ( c ) { if ( !c.code ) throw c; throw new N( J[ c.code ] ); } }\n\t\t}, f: {\n\t\t\topen: function( a ) { var b = R.o( a.node ); try { 32768 === ( a.node.mode & 61440 ) && ( a.U = fs.openSync( b, R.eb( a.flags ) ) ) } catch ( c ) { if ( !c.code ) throw c; throw new N( J[ c.code ] ); } }, close: function( a )\n\t\t\t{\n\t\t\t\ttry\n\t\t\t\t{\n\t\t\t\t32768 === ( a.node.mode &\n\t\t\t\t\t61440 ) && a.U && fs.closeSync( a.U )\n\t\t\t\t} catch ( b ) { if ( !b.code ) throw b; throw new N( J[ b.code ] ); }\n\t\t\t}, read: function( a, b, c, d, e ) { if ( 0 === d ) return 0; var f = new Buffer( d ); try { var g = fs.readSync( a.U, f, 0, d, e ) } catch ( h ) { throw new N( J[ h.code ] ); } if ( 0 < g ) for ( a = 0; a < g; a++ )b[ c + a ] = f[ a ]; return g }, write: function( a, b, c, d, e ) { b = new Buffer( b.subarray( c, c + d ) ); try { var f = fs.writeSync( a.U, b, 0, d, e ) } catch ( g ) { throw new N( J[ g.code ] ); } return f }, B: function( a, b, c )\n\t\t\t{\n\t\t\t\tif ( 1 === c ) b += a.position; else if ( 2 === c && 32768 === ( a.node.mode & 61440 ) ) try { b += fs.fstatSync( a.U ).size } catch ( d )\n\t\t\t\t{\n\t\t\t\t\tthrow new N( J[ d.code ] );\n\t\t\t\t} if ( 0 > b ) throw new N( J.i ); return b\n\t\t\t}\n\t\t}\n\t}; w += 16; w += 16; w += 16; var Lb = null, Mb = [ null ], S = [], Nb = 1, T = null, Ob = !0, Pb = {}, N = null, Ib = {};\n\tfunction U( a, b ) { a = zb( \"/\", a ); b = b || {}; if ( !a ) return { path: \"\", node: null }; var c = { La: !0, ra: 0 }, d; for ( d in c ) void 0 === b[ d ] && ( b[ d ] = c[ d ] ); if ( 8 < b.ra ) throw new N( J.ga ); a = ub( a.split( \"/\" ).filter( function( a ) { return !!a } ), !1 ); var e = Lb; c = \"/\"; for ( d = 0; d < a.length; d++ ) { var f = d === a.length - 1; if ( f && b.parent ) break; e = Jb( e, a[ d ] ); c = K( c, a[ d ] ); e.T && ( !f || f && b.La ) && ( e = e.T.root ); if ( !f || b.la ) for ( f = 0; 40960 === ( e.mode & 61440 ); )if ( e = Qb( c ), c = zb( wb( c ), e ), e = U( c, { ra: b.ra } ).node, 40 < f++ ) throw new N( J.ga ); } return { path: c, node: e } }\n\tfunction Rb( a ) { for ( var b; ; ) { if ( a === a.parent ) return a = a.m.Sa, b ? \"/\" !== a[ a.length - 1 ] ? a + \"/\" + b : a + b : a; b = b ? a.name + \"/\" + b : a.name; a = a.parent } } function Sb( a, b ) { for ( var c = 0, d = 0; d < b.length; d++ )c = ( c << 5 ) - c + b.charCodeAt( d ) | 0; return ( a + c >>> 0 ) % T.length } function Tb( a ) { var b = Sb( a.parent.id, a.name ); a.M = T[ b ]; T[ b ] = a } function Jb( a, b ) { var c; if ( c = ( c = Ub( a, \"x\" ) ) ? c : a.c.lookup ? 0 : J.ea ) throw new N( c, a ); for ( c = T[ Sb( a.id, b ) ]; c; c = c.M ) { var d = c.name; if ( c.parent.id === a.id && d === b ) return c } return a.c.lookup( a, b ) }\n\tfunction Hb( a, b, c, d )\n\t{\n\t\tVb || ( Vb = function( a, b, c, d ) { a || ( a = this ); this.parent = a; this.m = a.m; this.T = null; this.id = Nb++; this.name = b; this.mode = c; this.c = {}; this.f = {}; this.rdev = d }, Vb.prototype = {}, Object.defineProperties( Vb.prototype, {\n\t\t\tread: { get: function() { return 365 === ( this.mode & 365 ) }, set: function( a ) { a ? this.mode |= 365 : this.mode &= -366 } }, write: { get: function() { return 146 === ( this.mode & 146 ) }, set: function( a ) { a ? this.mode |= 146 : this.mode &= -147 } }, mb: { get: function() { return Q( this.mode ) } }, lb: {\n\t\t\t\tget: function()\n\t\t\t\t{\n\t\t\t\t\treturn 8192 === ( this.mode &\n\t\t\t\t\t\t61440 )\n\t\t\t\t}\n\t\t\t}\n\t\t} ) ); a = new Vb( a, b, c, d ); Tb( a ); return a\n\t} function Q( a ) { return 16384 === ( a & 61440 ) } var Wb = { r: 0, rs: 1052672, \"r+\": 2, w: 577, wx: 705, xw: 705, \"w+\": 578, \"wx+\": 706, \"xw+\": 706, a: 1089, ax: 1217, xa: 1217, \"a+\": 1090, \"ax+\": 1218, \"xa+\": 1218 }; function Xb( a ) { var b = [ \"r\", \"w\", \"rw\" ][ a & 3 ]; a & 512 && ( b += \"w\" ); return b } function Ub( a, b ) { if ( Ob ) return 0; if ( -1 === b.indexOf( \"r\" ) || a.mode & 292 ) { if ( -1 !== b.indexOf( \"w\" ) && !( a.mode & 146 ) || -1 !== b.indexOf( \"x\" ) && !( a.mode & 73 ) ) return J.ea } else return J.ea; return 0 }\n\tfunction Yb( a, b ) { try { return Jb( a, b ), J.ya } catch ( c ) { } return Ub( a, \"wx\" ) } function Zb() { var a = 4096; for ( var b = 0; b <= a; b++ )if ( !S[ b ] ) return b; throw new N( J.Va ); } function $b( a ) { ac || ( ac = function() { }, ac.prototype = {}, Object.defineProperties( ac.prototype, { object: { get: function() { return this.node }, set: function( a ) { this.node = a } } } ) ); var b = new ac, c; for ( c in a ) b[ c ] = a[ c ]; a = b; b = Zb(); a.fd = b; return S[ b ] = a } var Gb = { open: function( a ) { a.f = Mb[ a.node.rdev ].f; a.f.open && a.f.open( a ) }, B: function() { throw new N( J.W ); } };\n\tfunction Cb( a, b ) { Mb[ a ] = { f: b } } function bc( a, b ) { var c = \"/\" === b, d = !b; if ( c && Lb ) throw new N( J.fa ); if ( !c && !d ) { var e = U( b, { La: !1 } ); b = e.path; e = e.node; if ( e.T ) throw new N( J.fa ); if ( !Q( e.mode ) ) throw new N( J.za ); } b = { type: a, pa: {}, Sa: b, nb: [] }; a = a.m( b ); a.m = b; b.root = a; c ? Lb = a : e && ( e.T = b, e.m && e.m.nb.push( b ) ) } function cc( a, b, c ) { var d = U( a, { parent: !0 } ).node; a = xb( a ); if ( !a || \".\" === a || \"..\" === a ) throw new N( J.i ); var e = Yb( d, a ); if ( e ) throw new N( e ); if ( !d.c.S ) throw new N( J.F ); return d.c.S( d, a, b, c ) }\n\tfunction V( a, b ) { return cc( a, ( void 0 !== b ? b : 511 ) & 1023 | 16384, 0 ) } function dc( a, b, c ) { \"undefined\" === typeof c && ( c = b, b = 438 ); return cc( a, b | 8192, c ) } function ec( a, b ) { if ( !zb( a ) ) throw new N( J.A ); var c = U( b, { parent: !0 } ).node; if ( !c ) throw new N( J.A ); b = xb( b ); var d = Yb( c, b ); if ( d ) throw new N( d ); if ( !c.c.symlink ) throw new N( J.F ); return c.c.symlink( c, b, a ) } function Qb( a ) { a = U( a ).node; if ( !a ) throw new N( J.A ); if ( !a.c.readlink ) throw new N( J.i ); return zb( Rb( a.parent ), a.c.readlink( a ) ) }\n\tfunction fc( a, b ) { var c; \"string\" === typeof a ? c = U( a, { la: !0 } ).node : c = a; if ( !c.c.l ) throw new N( J.F ); c.c.l( c, { mode: b & 4095 | c.mode & -4096, timestamp: Date.now() } ) }\n\tfunction hc( a, b )\n\t{\n\t\tif ( \"\" === a ) throw new N( J.A ); if ( \"string\" === typeof b ) { var c = Wb[ b ]; if ( \"undefined\" === typeof c ) throw Error( \"Unknown file open mode: \" + b ); b = c } var d = b & 64 ? ( \"undefined\" === typeof d ? 438 : d ) & 4095 | 32768 : 0; if ( \"object\" === typeof a ) var e = a; else { a = vb( a ); try { e = U( a, { la: !( b & 131072 ) } ).node } catch ( g ) { } } c = !1; if ( b & 64 ) if ( e ) { if ( b & 128 ) throw new N( J.ya ); } else e = cc( a, d, 0 ), c = !0; if ( !e ) throw new N( J.A ); 8192 === ( e.mode & 61440 ) && ( b &= -513 ); if ( b & 65536 && !Q( e.mode ) ) throw new N( J.za ); if ( !c && ( d = e ? 40960 === ( e.mode & 61440 ) ? J.ga :\n\t\t\tQ( e.mode ) && ( \"r\" !== Xb( b ) || b & 512 ) ? J.P : Ub( e, Xb( b ) ) : J.A ) ) throw new N( d ); if ( b & 512 ) { d = e; var f; \"string\" === typeof d ? f = U( d, { la: !0 } ).node : f = d; if ( !f.c.l ) throw new N( J.F ); if ( Q( f.mode ) ) throw new N( J.P ); if ( 32768 !== ( f.mode & 61440 ) ) throw new N( J.i ); if ( d = Ub( f, \"w\" ) ) throw new N( d ); f.c.l( f, { size: 0, timestamp: Date.now() } ) } b &= -641; e = $b( { node: e, path: Rb( e ), flags: b, seekable: !0, position: 0, f: e.f, Cb: [], error: !1 } ); e.f.open && e.f.open( e ); !Module.logReadFiles || b & 1 || ( ic || ( ic = {} ), a in ic || ( ic[ a ] = 1, Module.printErr( \"read file: \" + a ) ) );\n\t\ttry { Pb.onOpenFile && ( f = 0, 1 !== ( b & 2097155 ) && ( f |= 1 ), 0 !== ( b & 2097155 ) && ( f |= 2 ), Pb.onOpenFile( a, f ) ) } catch ( g ) { console.log( \"FS.trackingDelegate['onOpenFile']('\" + a + \"', flags) threw an exception: \" + g.message ) } return e\n\t} function jc( a ) { a.na && ( a.na = null ); try { a.f.close && a.f.close( a ) } catch ( b ) { throw b; } finally { S[ a.fd ] = null } } function kc( a, b, c ) { if ( !a.seekable || !a.f.B ) throw new N( J.W ); a.position = a.f.B( a, b, c ); a.Cb = [] }\n\tfunction lc( a, b, c, d, e, f ) { if ( 0 > d || 0 > e ) throw new N( J.i ); if ( 0 === ( a.flags & 2097155 ) ) throw new N( J.V ); if ( Q( a.node.mode ) ) throw new N( J.P ); if ( !a.f.write ) throw new N( J.i ); a.flags & 1024 && kc( a, 0, 2 ); var g = !0; if ( \"undefined\" === typeof e ) e = a.position, g = !1; else if ( !a.seekable ) throw new N( J.W ); b = a.f.write( a, b, c, d, e, f ); g || ( a.position += b ); try { if ( a.path && Pb.onWriteToFile ) Pb.onWriteToFile( a.path ) } catch ( h ) { console.log( \"FS.trackingDelegate['onWriteToFile']('\" + path + \"') threw an exception: \" + h.message ) } return b }\n\tfunction mc() { N || ( N = function( a, b ) { this.node = b; this.vb = function( a ) { this.I = a; for ( var b in J ) if ( J[ b ] === a ) { this.code = b; break } }; this.vb( a ); this.message = tb[ a ] }, N.prototype = Error(), N.prototype.constructor = N, [ J.A ].forEach( function( a ) { Ib[ a ] = new N( a ); Ib[ a ].stack = \"\" } ) ) } var nc; function oc( a, b ) { var c = 0; a && ( c |= 365 ); b && ( c |= 146 ); return c } function pc( a, b, c, d ) { a = K( \"string\" === typeof a ? a : Rb( a ), b ); c = oc( c, d ); return cc( a, ( void 0 !== c ? c : 438 ) & 4095 | 32768, 0 ) }\n\tfunction qc( a, b, c, d, e, f ) { a = b ? K( \"string\" === typeof a ? a : Rb( a ), b ) : a; d = oc( d, e ); e = cc( a, ( void 0 !== d ? d : 438 ) & 4095 | 32768, 0 ); if ( c ) { if ( \"string\" === typeof c ) { a = Array( c.length ); b = 0; for ( var g = c.length; b < g; ++b )a[ b ] = c.charCodeAt( b ); c = a } fc( e, d | 146 ); a = hc( e, \"w\" ); lc( a, c, 0, c.length, 0, f ); jc( a ); fc( e, d ) } return e }\n\tfunction W( a, b, c, d )\n\t{\n\t\ta = K( \"string\" === typeof a ? a : Rb( a ), b ); b = oc( !!c, !!d ); W.Qa || ( W.Qa = 64 ); var e = W.Qa++ << 8 | 0; Cb( e, {\n\t\t\topen: function( a ) { a.seekable = !1 }, close: function() { d && d.buffer && d.buffer.length && d( 10 ) }, read: function( a, b, d, e ) { for ( var f = 0, g = 0; g < e; g++ ) { try { var h = c() } catch ( ia ) { throw new N( J.D ); } if ( void 0 === h && 0 === f ) throw new N( J.wa ); if ( null === h || void 0 === h ) break; f++; b[ d + g ] = h } f && ( a.node.timestamp = Date.now() ); return f }, write: function( a, b, c, e )\n\t\t\t{\n\t\t\t\tfor ( var f = 0; f < e; f++ )try { d( b[ c + f ] ) } catch ( t ) { throw new N( J.D ); } e && ( a.node.timestamp =\n\t\t\t\t\tDate.now() ); return f\n\t\t\t}\n\t\t} ); return dc( a, b, e )\n\t}\n\tfunction rc( a ) { if ( a.lb || a.mb || a.link || a.b ) return !0; var b = !0; if ( \"undefined\" !== typeof XMLHttpRequest ) throw Error( \"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\" ); if ( Module.read ) try { a.b = O( Module.read( a.url ), !0 ), a.g = a.b.length } catch ( c ) { b = !1 } else throw Error( \"Cannot load without read() or XMLHttpRequest.\" ); b || sb( J.D ); return b } var FS = {}, Vb, ac, ic, sc = {}, tc = 0;\n\tfunction X() { tc += 4; return x[ tc - 4 >> 2 ] } function uc() { var a = S[ X() ]; if ( !a ) throw new N( J.V ); return a } function Y() { B() } function vc() { return p || \"undefined\" !== typeof dateNow || ( l || m ) && self.performance && self.performance.now }\n\tfunction wc( a, b )\n\t{\n\t\txc = a; yc = b; if ( !zc ) return 1; if ( 0 == a ) Ac = function() { var a = Math.max( 0, Bc + b - Y() ) | 0; setTimeout( Cc, a ) }, Dc = \"timeout\"; else if ( 1 == a ) Ac = function() { Ec( Cc ) }, Dc = \"rAF\"; else if ( 2 == a )\n\t\t{\n\t\t\tif ( \"undefined\" === typeof setImmediate )\n\t\t\t{\n\t\t\t\tvar c = []; addEventListener( \"message\", function( a ) { if ( \"setimmediate\" === a.data || \"setimmediate\" === a.data.target ) a.stopPropagation(), c.shift()() }, !0 ); setImmediate = function( a )\n\t\t\t\t{\n\t\t\t\t\tc.push( a ); m ? ( void 0 === Module.setImmediates && ( Module.setImmediates = [] ), Module.setImmediates.push( a ), postMessage( { target: \"setimmediate\" } ) ) :\n\t\t\t\t\t\tpostMessage( \"setimmediate\", \"*\" )\n\t\t\t\t}\n\t\t\t} Ac = function() { setImmediate( Cc ) }; Dc = \"immediate\"\n\t\t} return 0\n\t}\n\tfunction Fc( a, b, c, d, e )\n\t{\n\tModule.noExitRuntime = !0; assert( !zc, \"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\" ); zc = a; Gc = d; var f = \"undefined\" !== typeof d ? function() { Module.dynCall_vi( a, d ) } : function() { Module.dynCall_v( a ) }; var g = Hc; Cc = function()\n\t{\n\t\tif ( !A ) if ( 0 < Ic.length )\n\t\t{\n\t\t\tvar a = Date.now(), b = Ic.shift(); b.R( b.X ); if ( Jc )\n\t\t\t{\n\t\t\t\tvar c = Jc, d = 0 == c % 1 ? c - 1 : Math.floor( c ); Jc = b.Gd ? d : ( 8 * c + ( d + .5 ) ) /\n\t\t\t\t\t9\n\t\t\t} console.log( 'main loop blocker \"' + b.name + '\" took ' + ( Date.now() - a ) + \" ms\" ); Module.setStatus && ( a = Module.statusMessage || \"Please wait...\", b = Jc, c = Kc.Jd, b ? b < c ? Module.setStatus( a + \" (\" + ( c - b ) + \"/\" + c + \")\" ) : Module.setStatus( a ) : Module.setStatus( \"\" ) ); g < Hc || setTimeout( Cc, 0 )\n\t\t} else if ( !( g < Hc ) ) if ( Lc = Lc + 1 | 0, 1 == xc && 1 < yc && 0 != Lc % yc ) Ac(); else\n\t\t{\n\t\t0 == xc && ( Bc = Y() ); \"timeout\" === Dc && Module.ja && ( Module.printErr( \"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\" ),\n\t\t\tDc = \"\" ); a: if ( !( A || Module.preMainLoop && !1 === Module.preMainLoop() ) ) { try { f() } catch ( v ) { if ( v instanceof fa ) break a; v && \"object\" === typeof v && v.stack && Module.printErr( \"exception thrown: \" + [ v, v.stack ] ); throw v; } Module.postMainLoop && Module.postMainLoop() } g < Hc || ( \"object\" === typeof SDL && SDL.audio && SDL.audio.pb && SDL.audio.pb(), Ac() )\n\t\t}\n\t}; e || ( b && 0 < b ? wc( 0, 1E3 / b ) : wc( 1, 1 ), Ac() ); if ( c ) throw \"SimulateInfiniteLoop\";\n\t} var Ac = null, Dc = \"\", Hc = 0, zc = null, Gc = 0, xc = 0, yc = 0, Lc = 0, Ic = [], Kc = {}, Bc, Cc, Jc, Mc = !1, Nc = !1, Oc = [];\n\tfunction Pc()\n\t{\n\t\tfunction a() { Nc = document.pointerLockElement === Module.canvas || document.mozPointerLockElement === Module.canvas || document.webkitPointerLockElement === Module.canvas || document.msPointerLockElement === Module.canvas } Module.preloadPlugins || ( Module.preloadPlugins = [] ); if ( !Qc )\n\t\t{\n\t\t\tQc = !0; try { Rc = !0 } catch ( c ) { Rc = !1, console.log( \"warning: no blob constructor, cannot create blobs with mimetypes\" ) } Sc = \"undefined\" != typeof MozBlobBuilder ? MozBlobBuilder : \"undefined\" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : Rc ?\n\t\t\t\tnull : console.log( \"warning: no BlobBuilder\" ); Tc = \"undefined\" != typeof window ? window.URL ? window.URL : window.webkitURL : void 0; Module.Ta || \"undefined\" !== typeof Tc || ( console.log( \"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\" ), Module.Ta = !0 ); Module.preloadPlugins.push( {\n\t\t\t\t\tcanHandle: function( a ) { return !Module.Ta && /\\.(jpg|jpeg|png|bmp)$/i.test( a ) }, handle: function( a, b, e, f )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar c = null; if ( Rc ) try\n\t\t\t\t\t\t{\n\t\t\t\t\t\tc = new Blob( [ a ], { type: Uc( b ) } ), c.size !== a.length && ( c = new Blob( [ ( new Uint8Array( a ) ).buffer ],\n\t\t\t\t\t\t\t{ type: Uc( b ) } ) )\n\t\t\t\t\t\t} catch ( r ) { u.K( \"Blob constructor present but fails: \" + r + \"; falling back to blob builder\" ) } c || ( c = new Sc, c.append( ( new Uint8Array( a ) ).buffer ), c = c.getBlob() ); var d = Tc.createObjectURL( c ), n = new Image; n.onload = function() { assert( n.complete, \"Image \" + b + \" could not be decoded\" ); var c = document.createElement( \"canvas\" ); c.width = n.width; c.height = n.height; c.getContext( \"2d\" ).drawImage( n, 0, 0 ); Module.preloadedImages[ b ] = c; Tc.revokeObjectURL( d ); e && e( a ) }; n.onerror = function()\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconsole.log( \"Image \" + d + \" could not be decoded\" );\n\t\t\t\t\t\t\tf && f()\n\t\t\t\t\t\t}; n.src = d\n\t\t\t\t\t}\n\t\t\t\t} ); Module.preloadPlugins.push( {\n\t\t\t\t\tcanHandle: function( a ) { return !Module.Ud && a.substr( -4 ) in { \".ogg\": 1, \".wav\": 1, \".mp3\": 1 } }, handle: function( a, b, e, f )\n\t\t\t\t\t{\n\t\t\t\t\t\tfunction c( c ) { n || ( n = !0, Module.preloadedAudios[ b ] = c, e && e( a ) ) } function d() { n || ( n = !0, Module.preloadedAudios[ b ] = new Audio, f && f() ) } var n = !1; if ( Rc )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttry { var r = new Blob( [ a ], { type: Uc( b ) } ) } catch ( v ) { return d() } r = Tc.createObjectURL( r ); var t = new Audio; t.addEventListener( \"canplaythrough\", function() { c( t ) }, !1 ); t.onerror = function()\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tif ( !n )\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tconsole.log( \"warning: browser could not fully decode audio \" +\n\t\t\t\t\t\t\t\t\t\tb + \", trying slower base64 approach\" ); for ( var d = \"\", e = 0, f = 0, g = 0; g < a.length; g++ )for ( e = e << 8 | a[ g ], f += 8; 6 <= f; ) { var h = e >> f - 6 & 63; f -= 6; d += \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"[ h ] } 2 == f ? ( d += \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"[ ( e & 3 ) << 4 ], d += \"==\" ) : 4 == f && ( d += \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"[ ( e & 15 ) << 2 ], d += \"=\" ); t.src = \"data:audio/x-\" + b.substr( -3 ) + \";base64,\" + d; c( t )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}; t.src = r; Vc( function() { c( t ) } )\n\t\t\t\t\t\t} else return d()\n\t\t\t\t\t}\n\t\t\t\t} ); var b = Module.canvas;\n\t\t\tb && ( b.requestPointerLock = b.requestPointerLock || b.mozRequestPointerLock || b.webkitRequestPointerLock || b.msRequestPointerLock || function() { }, b.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock || document.msExitPointerLock || function() { }, b.exitPointerLock = b.exitPointerLock.bind( document ), document.addEventListener( \"pointerlockchange\", a, !1 ), document.addEventListener( \"mozpointerlockchange\", a, !1 ), document.addEventListener( \"webkitpointerlockchange\", a, !1 ), document.addEventListener( \"mspointerlockchange\",\n\t\t\t\ta, !1 ), Module.elementPointerLock && b.addEventListener( \"click\", function( a ) { !Nc && Module.canvas.requestPointerLock && ( Module.canvas.requestPointerLock(), a.preventDefault() ) }, !1 ) )\n\t\t}\n\t}\n\tfunction Wc( a, b, c, d ) { if ( b && Module.ja && a == Module.canvas ) return Module.ja; if ( b ) { var e = { antialias: !1, alpha: !1 }; if ( d ) for ( var f in d ) e[ f ] = d[ f ]; if ( e = GL.createContext( a, e ) ) var g = GL.getContext( e ).GLctx } else g = a.getContext( \"2d\" ); if ( !g ) return null; c && ( b || assert( \"undefined\" === typeof GLctx, \"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\" ), Module.ja = g, b && GL.Sd( e ), Module.Xd = b, Oc.forEach( function( a ) { a() } ), Pc() ); return g } var Xc = !1, Yc = void 0, Zc = void 0;\n\tfunction ad( a, b, c )\n\t{\n\t\tfunction d()\n\t\t{\n\t\t\tMc = !1; var a = e.parentNode; ( document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement ) === a ? ( e.exitFullscreen = document.exitFullscreen || document.cancelFullScreen || document.mozCancelFullScreen || document.msExitFullscreen || document.webkitCancelFullScreen || function() { }, e.exitFullscreen = e.exitFullscreen.bind( document ), Yc && e.requestPointerLock(), Mc = !0, Zc && ( \"undefined\" != typeof SDL &&\n\t\t\t\t( x[ SDL.screen + 0 * u.G >> 2 ] = Ma[ SDL.screen + 0 * u.G >> 2 ] | 8388608 ), bd() ) ) : ( a.parentNode.insertBefore( e, a ), a.parentNode.removeChild( a ), Zc && ( \"undefined\" != typeof SDL && ( x[ SDL.screen + 0 * u.G >> 2 ] = Ma[ SDL.screen + 0 * u.G >> 2 ] & -8388609 ), bd() ) ); if ( Module.onFullScreen ) Module.onFullScreen( Mc ); if ( Module.onFullscreen ) Module.onFullscreen( Mc ); cd( e )\n\t\t} Yc = a; Zc = b; dd = c; \"undefined\" === typeof Yc && ( Yc = !0 ); \"undefined\" === typeof Zc && ( Zc = !1 ); \"undefined\" === typeof dd && ( dd = null ); var e = Module.canvas; Xc || ( Xc = !0, document.addEventListener( \"fullscreenchange\",\n\t\t\td, !1 ), document.addEventListener( \"mozfullscreenchange\", d, !1 ), document.addEventListener( \"webkitfullscreenchange\", d, !1 ), document.addEventListener( \"MSFullscreenChange\", d, !1 ) ); var f = document.createElement( \"div\" ); e.parentNode.insertBefore( f, e ); f.appendChild( e ); f.requestFullscreen = f.requestFullscreen || f.mozRequestFullScreen || f.msRequestFullscreen || ( f.webkitRequestFullscreen ? function() { f.webkitRequestFullscreen( Element.ALLOW_KEYBOARD_INPUT ) } : null ) || ( f.webkitRequestFullScreen ? function() { f.webkitRequestFullScreen( Element.ALLOW_KEYBOARD_INPUT ) } :\n\t\t\t\tnull ); c ? f.requestFullscreen( { Yd: c } ) : f.requestFullscreen()\n\t} function ed( a, b, c ) { Module.printErr( \"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\" ); ed = function( a, b, c ) { return ad( a, b, c ) }; return ad( a, b, c ) } var fd = 0; function gd( a ) { var b = Date.now(); if ( 0 === fd ) fd = b + 1E3 / 60; else for ( ; b + 2 >= fd; )fd += 1E3 / 60; setTimeout( a, Math.max( fd - b, 0 ) ) }\n\tfunction Ec( a ) { \"undefined\" === typeof window ? gd( a ) : ( window.requestAnimationFrame || ( window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || gd ), window.requestAnimationFrame( a ) ) } function Vc( a ) { Module.noExitRuntime = !0; setTimeout( function() { A || a() }, 1E4 ) }\n\tfunction Uc( a ) { return { jpg: \"image/jpeg\", jpeg: \"image/jpeg\", png: \"image/png\", bmp: \"image/bmp\", ogg: \"audio/ogg\", wav: \"audio/wav\", mp3: \"audio/mpeg\" }[ a.substr( a.lastIndexOf( \".\" ) + 1 ) ] } function hd( a, b, c ) { var d = \"al \" + a; Module.readAsync( a, function( c ) { assert( c, 'Loading data file \"' + a + '\" failed (no arrayBuffer).' ); b( new Uint8Array( c ) ); d && hb() }, function() { if ( c ) c(); else throw 'Loading data file \"' + a + '\" failed.'; } ); d && gb() } var id = []; function bd() { var a = Module.canvas; id.forEach( function( b ) { b( a.width, a.height ) } ) }\n\tfunction cd( a, b, c )\n\t{\n\t\tb && c ? ( a.Db = b, a.ib = c ) : ( b = a.Db, c = a.ib ); var d = b, e = c; Module.forcedAspectRatio && 0 < Module.forcedAspectRatio && ( d / e < Module.forcedAspectRatio ? d = Math.round( e * Module.forcedAspectRatio ) : e = Math.round( d / Module.forcedAspectRatio ) ); if ( ( document.fullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || document.webkitFullscreenElement || document.webkitCurrentFullScreenElement ) === a.parentNode && \"undefined\" != typeof screen )\n\t\t{\n\t\t\tvar f = Math.min( screen.width / d, screen.height / e ); d = Math.round( d *\n\t\t\t\tf ); e = Math.round( e * f )\n\t\t} Zc ? ( a.width != d && ( a.width = d ), a.height != e && ( a.height = e ), \"undefined\" != typeof a.style && ( a.style.removeProperty( \"width\" ), a.style.removeProperty( \"height\" ) ) ) : ( a.width != b && ( a.width = b ), a.height != c && ( a.height = c ), \"undefined\" != typeof a.style && ( d != b || e != c ? ( a.style.setProperty( \"width\", d + \"px\", \"important\" ), a.style.setProperty( \"height\", e + \"px\", \"important\" ) ) : ( a.style.removeProperty( \"width\" ), a.style.removeProperty( \"height\" ) ) ) )\n\t} var Qc, Rc, Sc, Tc, dd; function jd( a ) { Module.exit( a ) } var kd = w; w += 16;\n\tfunction ld( a ) { if ( ld.cb ) { var b = x[ kd >> 2 ]; var c = x[ b >> 2 ] } else ld.cb = !0, Z.USER = Z.LOGNAME = \"web_user\", Z.PATH = \"/\", Z.PWD = \"/\", Z.HOME = \"/home/web_user\", Z.LANG = \"C.UTF-8\", Z._ = Module.thisProgram, c = E( 1024, \"i8\", 2 ), b = E( 256, \"i8*\", 2 ), x[ b >> 2 ] = c, x[ kd >> 2 ] = b; var d = [], e = 0, f; for ( f in a ) if ( \"string\" === typeof a[ f ] ) { var g = f + \"=\" + a[ f ]; d.push( g ); e += g.length } if ( 1024 < e ) throw Error( \"Environment size exceeded TOTAL_ENV_SIZE!\" ); for ( a = 0; a < d.length; a++ )g = d[ a ], za( g, c ), x[ b + 4 * a >> 2 ] = c, c += g.length + 1; x[ b + 4 * d.length >> 2 ] = 0 } var Z = {};\n\tfunction md( a ) { if ( 0 === a ) return 0; a = C( a ); if ( !Z.hasOwnProperty( a ) ) return 0; md.s && Fa( md.s ); md.s = E( O( Z[ a ] ), \"i8\", 0 ); return md.s }\n\tvar nd = E( [ 8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0,\n\t\t1, 0, 3, 0, 1, 0, 2, 0, 1, 0 ], \"i8\", 2 ); function od( a ) { a |= 0; var b = D[ nd + ( a & 255 ) >> 0 ] | 0; if ( 8 > ( b | 0 ) ) return b | 0; b = D[ nd + ( a >> 8 & 255 ) >> 0 ] | 0; if ( 8 > ( b | 0 ) ) return b + 8 | 0; b = D[ nd + ( a >> 16 & 255 ) >> 0 ] | 0; return 8 > ( b | 0 ) ? b + 16 | 0 : ( D[ nd + ( a >>> 24 ) >> 0 ] | 0 ) + 24 | 0 } var pd = {}, qd = 1; function rd( a, b ) { rd.s || ( rd.s = {} ); a in rd.s || ( Module.dynCall_v( b ), rd.s[ a ] = 1 ) } function sd( a ) { return 0 === a % 4 && ( 0 !== a % 100 || 0 === a % 400 ) } function td( a, b ) { for ( var c = 0, d = 0; d <= b; c += a[ d++ ] ); return c }\n\tvar ud = [ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ], vd = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; function wd( a, b ) { for ( a = new Date( a.getTime() ); 0 < b; ) { var c = a.getMonth(), d = ( sd( a.getFullYear() ) ? ud : vd )[ c ]; if ( b > d - a.getDate() ) b -= d - a.getDate() + 1, a.setDate( 1 ), 11 > c ? a.setMonth( c + 1 ) : ( a.setMonth( 0 ), a.setFullYear( a.getFullYear() + 1 ) ); else { a.setDate( a.getDate() + b ); break } } return a }\n\tfunction xd( a, b, c, d )\n\t{\n\t\tfunction e( a, b, c ) { for ( a = \"number\" === typeof a ? a.toString() : a || \"\"; a.length < b; )a = c[ 0 ] + a; return a } function f( a, b ) { return e( a, b, \"0\" ) } function g( a, b ) { function c( a ) { return 0 > a ? -1 : 0 < a ? 1 : 0 } var d; 0 === ( d = c( a.getFullYear() - b.getFullYear() ) ) && 0 === ( d = c( a.getMonth() - b.getMonth() ) ) && ( d = c( a.getDate() - b.getDate() ) ); return d } function h( a )\n\t\t{\n\t\t\tswitch ( a.getDay() )\n\t\t\t{\n\t\t\t\tcase 0: return new Date( a.getFullYear() - 1, 11, 29 ); case 1: return a; case 2: return new Date( a.getFullYear(), 0, 3 ); case 3: return new Date( a.getFullYear(),\n\t\t\t\t\t0, 2 ); case 4: return new Date( a.getFullYear(), 0, 1 ); case 5: return new Date( a.getFullYear() - 1, 11, 31 ); case 6: return new Date( a.getFullYear() - 1, 11, 30 )\n\t\t\t}\n\t\t} function n( a ) { a = wd( new Date( a.j + 1900, 0, 1 ), a.da ); var b = h( new Date( a.getFullYear() + 1, 0, 4 ) ); return 0 >= g( h( new Date( a.getFullYear(), 0, 4 ) ), a ) ? 0 >= g( b, a ) ? a.getFullYear() + 1 : a.getFullYear() : a.getFullYear() - 1 } var r = x[ d + 40 >> 2 ]; d = {\n\t\t\tzb: x[ d >> 2 ], yb: x[ d + 4 >> 2 ], ba: x[ d + 8 >> 2 ], J: x[ d + 12 >> 2 ], C: x[ d + 16 >> 2 ], j: x[ d + 20 >> 2 ], Ua: x[ d + 24 >> 2 ], da: x[ d + 28 >> 2 ], Wd: x[ d + 32 >> 2 ], xb: x[ d + 36 >> 2 ], Ab: r ?\n\t\t\t\tC( r ) : \"\"\n\t\t}; c = C( c ); r = { \"%c\": \"%a %b %d %H:%M:%S %Y\", \"%D\": \"%m/%d/%y\", \"%F\": \"%Y-%m-%d\", \"%h\": \"%b\", \"%r\": \"%I:%M:%S %p\", \"%R\": \"%H:%M\", \"%T\": \"%H:%M:%S\", \"%x\": \"%m/%d/%y\", \"%X\": \"%H:%M:%S\" }; for ( var t in r ) c = c.replace( new RegExp( t, \"g\" ), r[ t ] ); var v = \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split( \" \" ), ia = \"January February March April May June July August September October November December\".split( \" \" ); r = {\n\t\t\t\"%a\": function( a ) { return v[ a.Ua ].substring( 0, 3 ) }, \"%A\": function( a ) { return v[ a.Ua ] }, \"%b\": function( a )\n\t\t\t{\n\t\t\t\treturn ia[ a.C ].substring( 0,\n\t\t\t\t\t3 )\n\t\t\t}, \"%B\": function( a ) { return ia[ a.C ] }, \"%C\": function( a ) { return f( ( a.j + 1900 ) / 100 | 0, 2 ) }, \"%d\": function( a ) { return f( a.J, 2 ) }, \"%e\": function( a ) { return e( a.J, 2, \" \" ) }, \"%g\": function( a ) { return n( a ).toString().substring( 2 ) }, \"%G\": function( a ) { return n( a ) }, \"%H\": function( a ) { return f( a.ba, 2 ) }, \"%I\": function( a ) { a = a.ba; 0 == a ? a = 12 : 12 < a && ( a -= 12 ); return f( a, 2 ) }, \"%j\": function( a ) { return f( a.J + td( sd( a.j + 1900 ) ? ud : vd, a.C - 1 ), 3 ) }, \"%m\": function( a ) { return f( a.C + 1, 2 ) }, \"%M\": function( a ) { return f( a.yb, 2 ) }, \"%n\": function() { return \"\\n\" }, \"%p\": function( a )\n\t\t\t{\n\t\t\t\treturn 0 <=\n\t\t\t\t\ta.ba && 12 > a.ba ? \"AM\" : \"PM\"\n\t\t\t}, \"%S\": function( a ) { return f( a.zb, 2 ) }, \"%t\": function() { return \"\\t\" }, \"%u\": function( a ) { return ( new Date( a.j + 1900, a.C + 1, a.J, 0, 0, 0, 0 ) ).getDay() || 7 }, \"%U\": function( a ) { var b = new Date( a.j + 1900, 0, 1 ), c = 0 === b.getDay() ? b : wd( b, 7 - b.getDay() ); a = new Date( a.j + 1900, a.C, a.J ); return 0 > g( c, a ) ? f( Math.ceil( ( 31 - c.getDate() + ( td( sd( a.getFullYear() ) ? ud : vd, a.getMonth() - 1 ) - 31 ) + a.getDate() ) / 7 ), 2 ) : 0 === g( c, b ) ? \"01\" : \"00\" }, \"%V\": function( a )\n\t\t\t{\n\t\t\t\tvar b = h( new Date( a.j + 1900, 0, 4 ) ), c = h( new Date( a.j + 1901, 0, 4 ) ), d = wd( new Date( a.j +\n\t\t\t\t\t1900, 0, 1 ), a.da ); return 0 > g( d, b ) ? \"53\" : 0 >= g( c, d ) ? \"01\" : f( Math.ceil( ( b.getFullYear() < a.j + 1900 ? a.da + 32 - b.getDate() : a.da + 1 - b.getDate() ) / 7 ), 2 )\n\t\t\t}, \"%w\": function( a ) { return ( new Date( a.j + 1900, a.C + 1, a.J, 0, 0, 0, 0 ) ).getDay() }, \"%W\": function( a ) { var b = new Date( a.j, 0, 1 ), c = 1 === b.getDay() ? b : wd( b, 0 === b.getDay() ? 1 : 7 - b.getDay() + 1 ); a = new Date( a.j + 1900, a.C, a.J ); return 0 > g( c, a ) ? f( Math.ceil( ( 31 - c.getDate() + ( td( sd( a.getFullYear() ) ? ud : vd, a.getMonth() - 1 ) - 31 ) + a.getDate() ) / 7 ), 2 ) : 0 === g( c, b ) ? \"01\" : \"00\" }, \"%y\": function( a ) { return ( a.j + 1900 ).toString().substring( 2 ) },\n\t\t\t\"%Y\": function( a ) { return a.j + 1900 }, \"%z\": function( a ) { a = a.xb; var b = 0 <= a; a = Math.abs( a ) / 60; return ( b ? \"+\" : \"-\" ) + String( \"0000\" + ( a / 60 * 100 + a % 60 ) ).slice( -4 ) }, \"%Z\": function( a ) { return a.Ab }, \"%%\": function() { return \"%\" }\n\t\t}; for ( t in r ) 0 <= c.indexOf( t ) && ( c = c.replace( new RegExp( t, \"g\" ), r[ t ]( d ) ) ); t = O( c, !1 ); if ( t.length > b ) return 0; ma( t, a ); return t.length - 1\n\t} mc(); T = Array( 4096 ); bc( P, \"/\" ); V( \"/tmp\" ); V( \"/home\" ); V( \"/home/web_user\" );\n\t( function() { V( \"/dev\" ); Cb( 259, { read: function() { return 0 }, write: function( a, b, e, f ) { return f } } ); dc( \"/dev/null\", 259 ); Bb( 1280, Eb ); Bb( 1536, Fb ); dc( \"/dev/tty\", 1280 ); dc( \"/dev/tty1\", 1536 ); if ( \"undefined\" !== typeof crypto ) { var a = new Uint8Array( 1 ); var b = function() { crypto.getRandomValues( a ); return a[ 0 ] } } else b = p ? function() { return require( \"crypto\" ).randomBytes( 1 )[ 0 ] } : function() { return 256 * Math.random() | 0 }; W( \"/dev\", \"random\", b ); W( \"/dev\", \"urandom\", b ); V( \"/dev/shm\" ); V( \"/dev/shm/tmp\" ) } )(); V( \"/proc\" ); V( \"/proc/self\" ); V( \"/proc/self/fd\" );\n\tbc( { m: function() { var a = Hb( \"/proc/self\", \"fd\", 16895, 73 ); a.c = { lookup: function( a, c ) { var b = S[ +c ]; if ( !b ) throw new N( J.V ); a = { parent: null, m: { Sa: \"fake\" }, c: { readlink: function() { return b.path } } }; return a.parent = a } }; return a } }, \"/proc/self/fd\" );\n\tXa.unshift( function()\n\t{\n\t\tif ( !Module.noFSInit && !nc )\n\t\t{\n\t\t\tassert( !nc, \"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\" ); nc = !0; mc(); Module.stdin = Module.stdin; Module.stdout = Module.stdout; Module.stderr = Module.stderr; Module.stdin ? W( \"/dev\", \"stdin\", Module.stdin ) : ec( \"/dev/tty\", \"/dev/stdin\" ); Module.stdout ? W( \"/dev\", \"stdout\", null, Module.stdout ) : ec( \"/dev/tty\", \"/dev/stdout\" ); Module.stderr ? W( \"/dev\",\n\t\t\t\t\"stderr\", null, Module.stderr ) : ec( \"/dev/tty1\", \"/dev/stderr\" ); var a = hc( \"/dev/stdin\", \"r\" ); assert( 0 === a.fd, \"invalid handle for stdin (\" + a.fd + \")\" ); a = hc( \"/dev/stdout\", \"w\" ); assert( 1 === a.fd, \"invalid handle for stdout (\" + a.fd + \")\" ); a = hc( \"/dev/stderr\", \"w\" ); assert( 2 === a.fd, \"invalid handle for stderr (\" + a.fd + \")\" )\n\t\t}\n\t} ); Ya.push( function() { Ob = !1 } ); Za.push( function() { nc = !1; var a = Module._fflush; a && a( 0 ); for ( a = 0; a < S.length; a++ ) { var b = S[ a ]; b && jc( b ) } } );\n\tModule.FS_createFolder = function( a, b, c, d ) { a = K( \"string\" === typeof a ? a : Rb( a ), b ); return V( a, oc( c, d ) ) }; Module.FS_createPath = function( a, b ) { a = \"string\" === typeof a ? a : Rb( a ); for ( b = b.split( \"/\" ).reverse(); b.length; ) { var c = b.pop(); if ( c ) { var d = K( a, c ); try { V( d ) } catch ( e ) { } a = d } } return d }; Module.FS_createDataFile = qc;\n\tModule.FS_createPreloadedFile = function( a, b, c, d, e, f, g, h, n, r ) { function t( c ) { function t( c ) { r && r(); h || qc( a, b, c, d, e, n ); f && f(); hb() } var L = !1; Module.preloadPlugins.forEach( function( a ) { !L && a.canHandle( v ) && ( a.handle( c, v, t, function() { g && g(); hb() } ), L = !0 ) } ); L || t( c ) } Pc(); var v = b ? zb( K( a, b ) ) : a; gb(); \"string\" == typeof c ? hd( c, function( a ) { t( a ) }, g ) : t( c ) };\n\tModule.FS_createLazyFile = function( a, b, c, d, e )\n\t{\n\t\tfunction f() { this.oa = !1; this.Y = [] } f.prototype.get = function( a ) { if ( !( a > this.length - 1 || 0 > a ) ) { var b = a % this.chunkSize; return this.Pa( a / this.chunkSize | 0 )[ b ] } }; f.prototype.ub = function( a ) { this.Pa = a }; f.prototype.Fa = function()\n\t\t{\n\t\t\tvar a = new XMLHttpRequest; a.open( \"HEAD\", c, !1 ); a.send( null ); if ( !( 200 <= a.status && 300 > a.status || 304 === a.status ) ) throw Error( \"Couldn't load \" + c + \". Status: \" + a.status ); var b = Number( a.getResponseHeader( \"Content-length\" ) ), d, e = ( d = a.getResponseHeader( \"Accept-Ranges\" ) ) &&\n\t\t\t\t\"bytes\" === d; a = ( d = a.getResponseHeader( \"Content-Encoding\" ) ) && \"gzip\" === d; var f = 1048576; e || ( f = b ); var g = this; g.ub( function( a )\n\t\t\t\t{\n\t\t\t\t\tvar d = a * f, e = ( a + 1 ) * f - 1; e = Math.min( e, b - 1 ); if ( \"undefined\" === typeof g.Y[ a ] )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar h = g.Y; if ( d > e ) throw Error( \"invalid range (\" + d + \", \" + e + \") or no bytes requested!\" ); if ( e > b - 1 ) throw Error( \"only \" + b + \" bytes available! programmer error!\" ); var n = new XMLHttpRequest; n.open( \"GET\", c, !1 ); b !== f && n.setRequestHeader( \"Range\", \"bytes=\" + d + \"-\" + e ); \"undefined\" != typeof Uint8Array && ( n.responseType = \"arraybuffer\" );\n\t\t\t\t\t\tn.overrideMimeType && n.overrideMimeType( \"text/plain; charset=x-user-defined\" ); n.send( null ); if ( !( 200 <= n.status && 300 > n.status || 304 === n.status ) ) throw Error( \"Couldn't load \" + c + \". Status: \" + n.status ); d = void 0 !== n.response ? new Uint8Array( n.response || [] ) : O( n.responseText || \"\", !0 ); h[ a ] = d\n\t\t\t\t\t} if ( \"undefined\" === typeof g.Y[ a ] ) throw Error( \"doXHR failed!\" ); return g.Y[ a ]\n\t\t\t\t} ); if ( a || !b ) f = b = 1, f = b = this.Pa( 0 ).length, console.log( \"LazyFiles on gzip forces download of the whole file when length is accessed\" ); this.Ya = b; this.Xa =\n\t\t\t\t\tf; this.oa = !0\n\t\t}; if ( \"undefined\" !== typeof XMLHttpRequest ) { if ( !m ) throw \"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\"; var g = new f; Object.defineProperties( g, { length: { get: function() { this.oa || this.Fa(); return this.Ya } }, chunkSize: { get: function() { this.oa || this.Fa(); return this.Xa } } } ); var h = void 0 } else h = c, g = void 0; var n = pc( a, b, d, e ); g ? n.b = g : h && ( n.b = null, n.url = h ); Object.defineProperties( n, { g: { get: function() { return this.b.length } } } ); var r = {};\n\t\tObject.keys( n.f ).forEach( function( a ) { var b = n.f[ a ]; r[ a ] = function() { if ( !rc( n ) ) throw new N( J.D ); return b.apply( null, arguments ) } } ); r.read = function( a, b, c, d, e ) { if ( !rc( n ) ) throw new N( J.D ); a = a.node.b; if ( e >= a.length ) return 0; d = Math.min( a.length - e, d ); assert( 0 <= d ); if ( a.slice ) for ( var f = 0; f < d; f++ )b[ c + f ] = a[ e + f ]; else for ( f = 0; f < d; f++ )b[ c + f ] = a.get( e + f ); return d }; n.f = r; return n\n\t}; Module.FS_createLink = function( a, b, c ) { a = K( \"string\" === typeof a ? a : Rb( a ), b ); return ec( c, a ) }; Module.FS_createDevice = W;\n\tModule.FS_unlink = function( a )\n\t{\n\t\tvar b = U( a, { parent: !0 } ).node, c = xb( a ), d = Jb( b, c ); a: { try { var e = Jb( b, c ) } catch ( g ) { e = g.I; break a } var f = Ub( b, \"wx\" ); e = f ? f : Q( e.mode ) ? J.P : 0 } if ( e ) throw new N( e ); if ( !b.c.unlink ) throw new N( J.F ); if ( d.T ) throw new N( J.fa ); try { Pb.willDeletePath && Pb.willDeletePath( a ) } catch ( g ) { console.log( \"FS.trackingDelegate['willDeletePath']('\" + a + \"') threw an exception: \" + g.message ) } b.c.unlink( b, c ); b = Sb( d.parent.id, d.name ); if ( T[ b ] === d ) T[ b ] = d.M; else for ( b = T[ b ]; b; ) { if ( b.M === d ) { b.M = d.M; break } b = b.M } try { if ( Pb.onDeletePath ) Pb.onDeletePath( a ) } catch ( g )\n\t\t{\n\t\t\tconsole.log( \"FS.trackingDelegate['onDeletePath']('\" +\n\t\t\t\ta + \"') threw an exception: \" + g.message )\n\t\t}\n\t}; Xa.unshift( function() { } ); Za.push( function() { } ); if ( p ) { var fs = require( \"fs\" ), Kb = require( \"path\" ); R.wb() } p ? Y = function() { var a = process.hrtime(); return 1E3 * a[ 0 ] + a[ 1 ] / 1E6 } : \"undefined\" !== typeof dateNow ? Y = dateNow : \"object\" === typeof self && self.performance && \"function\" === typeof self.performance.now ? Y = function() { return self.performance.now() } : \"object\" === typeof performance && \"function\" === typeof performance.now ? Y = function() { return performance.now() } : Y = Date.now;\n\tModule.requestFullScreen = function( a, b, c ) { Module.printErr( \"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\" ); Module.requestFullScreen = Module.requestFullscreen; ed( a, b, c ) }; Module.requestFullscreen = function( a, b, c ) { ad( a, b, c ) }; Module.requestAnimationFrame = function( a ) { Ec( a ) }; Module.setCanvasSize = function( a, b, c ) { cd( Module.canvas, a, b ); c || bd() }; Module.pauseMainLoop = function() { Ac = null; Hc++ };\n\tModule.resumeMainLoop = function() { Hc++; var a = xc, b = yc, c = zc; zc = null; Fc( c, 0, !1, Gc, !0 ); wc( a, b ); Ac() }; Module.getUserMedia = function() { window.getUserMedia || ( window.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia ); window.getUserMedia( void 0 ) }; Module.createContext = function( a, b, c, d ) { return Wc( a, b, c, d ) }; ld( Z ); y = E( 1, \"i32\", 2 ); Pa = q = u.Da( w ); Qa = Pa + Ua; Ra = u.Da( Qa ); x[ y >> 2 ] = Ra; xa = !0; function O( a, b, c ) { c = Array( 0 < c ? c : Da( a ) + 1 ); a = Ca( a, c, 0, c.length ); b && ( c.length = a ); return c } Module.intArrayFromString = O;\n\tModule.intArrayToString = function( a ) { for ( var b = [], c = 0; c < a.length; c++ ) { var d = a[ c ]; 255 < d && ( d &= 255 ); b.push( String.fromCharCode( d ) ) } return b.join( \"\" ) }; Module.wasmTableSize = 772; Module.wasmMaxTableSize = 772; Module.ab = { Math: Math, Int8Array: Int8Array, Int16Array: Int16Array, Int32Array: Int32Array, Uint8Array: Uint8Array, Uint16Array: Uint16Array, Uint32Array: Uint32Array, Float32Array: Float32Array, Float64Array: Float64Array, NaN: NaN, Infinity: Infinity, byteLength: Ta };\n\tModule.bb = {\n\t\tabort: B, assert: assert, enlargeMemory: ha, getTotalMemory: function() { return z }, abortOnCannotGrowMemory: function() { B( \"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \" + z + \", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \" ) }, invoke_ii: function( a, b )\n\t\t{\n\t\t\ttry { return Module.dynCall_ii( a, b ) } catch ( c )\n\t\t\t{\n\t\t\t\tif ( \"number\" !==\n\t\t\t\t\ttypeof c && \"longjmp\" !== c ) throw c; Module.setThrew( 1, 0 )\n\t\t\t}\n\t\t}, jsCall_ii: function( a, b ) { return u.h[ a ]( b ) }, invoke_iii: function( a, b, c ) { try { return Module.dynCall_iii( a, b, c ) } catch ( d ) { if ( \"number\" !== typeof d && \"longjmp\" !== d ) throw d; Module.setThrew( 1, 0 ) } }, jsCall_iii: function( a, b, c ) { return u.h[ a ]( b, c ) }, invoke_iiii: function( a, b, c, d ) { try { return Module.dynCall_iiii( a, b, c, d ) } catch ( e ) { if ( \"number\" !== typeof e && \"longjmp\" !== e ) throw e; Module.setThrew( 1, 0 ) } }, jsCall_iiii: function( a, b, c, d ) { return u.h[ a ]( b, c, d ) }, invoke_iiiii: function( a,\n\t\t\tb, c, d, e ) { try { return Module.dynCall_iiiii( a, b, c, d, e ) } catch ( f ) { if ( \"number\" !== typeof f && \"longjmp\" !== f ) throw f; Module.setThrew( 1, 0 ) } }, jsCall_iiiii: function( a, b, c, d, e ) { return u.h[ a ]( b, c, d, e ) }, invoke_iiiiid: function( a, b, c, d, e, f ) { try { return Module.dynCall_iiiiid( a, b, c, d, e, f ) } catch ( g ) { if ( \"number\" !== typeof g && \"longjmp\" !== g ) throw g; Module.setThrew( 1, 0 ) } }, jsCall_iiiiid: function( a, b, c, d, e, f ) { return u.h[ a ]( b, c, d, e, f ) }, invoke_iiiiii: function( a, b, c, d, e, f )\n\t\t\t{\n\t\t\t\ttry { return Module.dynCall_iiiiii( a, b, c, d, e, f ) } catch ( g )\n\t\t\t\t{\n\t\t\t\t\tif ( \"number\" !==\n\t\t\t\t\t\ttypeof g && \"longjmp\" !== g ) throw g; Module.setThrew( 1, 0 )\n\t\t\t\t}\n\t\t\t}, jsCall_iiiiii: function( a, b, c, d, e, f ) { return u.h[ a ]( b, c, d, e, f ) }, invoke_iiiiiid: function( a, b, c, d, e, f, g ) { try { return Module.dynCall_iiiiiid( a, b, c, d, e, f, g ) } catch ( h ) { if ( \"number\" !== typeof h && \"longjmp\" !== h ) throw h; Module.setThrew( 1, 0 ) } }, jsCall_iiiiiid: function( a, b, c, d, e, f, g ) { return u.h[ a ]( b, c, d, e, f, g ) }, invoke_iiiiiii: function( a, b, c, d, e, f, g )\n\t\t\t{\n\t\t\t\ttry { return Module.dynCall_iiiiiii( a, b, c, d, e, f, g ) } catch ( h )\n\t\t\t\t{\n\t\t\t\t\tif ( \"number\" !== typeof h && \"longjmp\" !== h ) throw h; Module.setThrew( 1,\n\t\t\t\t\t\t0 )\n\t\t\t\t}\n\t\t\t}, jsCall_iiiiiii: function( a, b, c, d, e, f, g ) { return u.h[ a ]( b, c, d, e, f, g ) }, invoke_iiiiiiii: function( a, b, c, d, e, f, g, h ) { try { return Module.dynCall_iiiiiiii( a, b, c, d, e, f, g, h ) } catch ( n ) { if ( \"number\" !== typeof n && \"longjmp\" !== n ) throw n; Module.setThrew( 1, 0 ) } }, jsCall_iiiiiiii: function( a, b, c, d, e, f, g, h ) { return u.h[ a ]( b, c, d, e, f, g, h ) }, invoke_iiiiiiiii: function( a, b, c, d, e, f, g, h, n ) { try { return Module.dynCall_iiiiiiiii( a, b, c, d, e, f, g, h, n ) } catch ( r ) { if ( \"number\" !== typeof r && \"longjmp\" !== r ) throw r; Module.setThrew( 1, 0 ) } }, jsCall_iiiiiiiii: function( a,\n\t\t\t\tb, c, d, e, f, g, h, n ) { return u.h[ a ]( b, c, d, e, f, g, h, n ) }, invoke_iiiiij: function( a, b, c, d, e, f, g ) { try { return Module.dynCall_iiiiij( a, b, c, d, e, f, g ) } catch ( h ) { if ( \"number\" !== typeof h && \"longjmp\" !== h ) throw h; Module.setThrew( 1, 0 ) } }, jsCall_iiiiij: function( a, b, c, d, e, f ) { return u.h[ a ]( b, c, d, e, f ) }, invoke_v: function( a ) { try { Module.dynCall_v( a ) } catch ( b ) { if ( \"number\" !== typeof b && \"longjmp\" !== b ) throw b; Module.setThrew( 1, 0 ) } }, jsCall_v: function( a ) { u.h[ a ]() }, invoke_vi: function( a, b )\n\t\t\t\t{\n\t\t\t\t\ttry { Module.dynCall_vi( a, b ) } catch ( c )\n\t\t\t\t\t{\n\t\t\t\t\t\tif ( \"number\" !==\n\t\t\t\t\t\t\ttypeof c && \"longjmp\" !== c ) throw c; Module.setThrew( 1, 0 )\n\t\t\t\t\t}\n\t\t\t\t}, jsCall_vi: function( a, b ) { u.h[ a ]( b ) }, invoke_vii: function( a, b, c ) { try { Module.dynCall_vii( a, b, c ) } catch ( d ) { if ( \"number\" !== typeof d && \"longjmp\" !== d ) throw d; Module.setThrew( 1, 0 ) } }, jsCall_vii: function( a, b, c ) { u.h[ a ]( b, c ) }, invoke_viii: function( a, b, c, d ) { try { Module.dynCall_viii( a, b, c, d ) } catch ( e ) { if ( \"number\" !== typeof e && \"longjmp\" !== e ) throw e; Module.setThrew( 1, 0 ) } }, jsCall_viii: function( a, b, c, d ) { u.h[ a ]( b, c, d ) }, invoke_viiii: function( a, b, c, d, e )\n\t\t\t\t{\n\t\t\t\t\ttry\n\t\t\t\t\t{\n\t\t\t\t\t\tModule.dynCall_viiii( a,\n\t\t\t\t\t\t\tb, c, d, e )\n\t\t\t\t\t} catch ( f ) { if ( \"number\" !== typeof f && \"longjmp\" !== f ) throw f; Module.setThrew( 1, 0 ) }\n\t\t\t\t}, jsCall_viiii: function( a, b, c, d, e ) { u.h[ a ]( b, c, d, e ) }, invoke_viiiii: function( a, b, c, d, e, f ) { try { Module.dynCall_viiiii( a, b, c, d, e, f ) } catch ( g ) { if ( \"number\" !== typeof g && \"longjmp\" !== g ) throw g; Module.setThrew( 1, 0 ) } }, jsCall_viiiii: function( a, b, c, d, e, f ) { u.h[ a ]( b, c, d, e, f ) }, invoke_viiiiii: function( a, b, c, d, e, f, g ) { try { Module.dynCall_viiiiii( a, b, c, d, e, f, g ) } catch ( h ) { if ( \"number\" !== typeof h && \"longjmp\" !== h ) throw h; Module.setThrew( 1, 0 ) } },\n\t\tjsCall_viiiiii: function( a, b, c, d, e, f, g ) { u.h[ a ]( b, c, d, e, f, g ) }, invoke_viijii: function( a, b, c, d, e, f, g ) { try { Module.dynCall_viijii( a, b, c, d, e, f, g ) } catch ( h ) { if ( \"number\" !== typeof h && \"longjmp\" !== h ) throw h; Module.setThrew( 1, 0 ) } }, jsCall_viijii: function( a, b, c, d, e, f ) { u.h[ a ]( b, c, d, e, f ) }, __ZSt18uncaught_exceptionv: nb, ___assert_fail: function( a, b, c, d ) { A = !0; throw \"Assertion failed: \" + C( a ) + \", at: \" + [ b ? C( b ) : \"unknown filename\", c, d ? C( d ) : \"unknown function\" ] + \" at \" + Ga(); }, ___buildEnvironment: ld, ___cxa_allocate_exception: function( a ) { return F( a ) },\n\t\t___cxa_begin_catch: function( a ) { var b = qb[ a ]; b && !b.Ga && ( b.Ga = !0, nb.s-- ); b && ( b.tb = !1 ); pb.push( a ); a: { if ( a && !qb[ a ] ) for ( var c in qb ) if ( qb[ c ].Ca === a ) { b = c; break a } b = a } b && qb[ b ].qb++; return a }, ___cxa_find_matching_catch: rb, ___cxa_throw: function( a, b, c ) { qb[ a ] = { ob: a, Ca: a, type: b, Hd: c, qb: 0, Ga: !1, tb: !1 }; ob = a; \"uncaught_exception\" in nb ? nb.s++ : nb.s = 1; throw a + \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\"; },\n\t\t___gxx_personality_v0: function() { }, ___lock: function() { }, ___map_file: function() { sb( J.F ); return -1 }, ___resumeException: function( a ) { ob || ( ob = a ); throw a + \" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.\"; }, ___setErrNo: sb, ___syscall140: function( a, b )\n\t\t{\n\t\t\ttc = b; try { var c = uc(); X(); var d = X(), e = X(), f = X(); kc( c, d, f ); x[ e >> 2 ] = c.position; c.na && 0 === d && 0 === f && ( c.na = null ); return 0 } catch ( g )\n\t\t\t{\n\t\t\t\treturn \"undefined\" !== typeof FS &&\n\t\t\t\t\tg instanceof N || B( g ), -g.I\n\t\t\t}\n\t\t}, ___syscall145: function( a, b )\n\t\t{\n\t\t\ttc = b; try { var c = uc(), d = X(); a: { var e = X(); for ( b = a = 0; b < e; b++ ) { var f = x[ d + ( 8 * b + 4 ) >> 2 ], g = c, h = x[ d + 8 * b >> 2 ], n = f, r = void 0, t = D; if ( 0 > n || 0 > r ) throw new N( J.i ); if ( 1 === ( g.flags & 2097155 ) ) throw new N( J.V ); if ( Q( g.node.mode ) ) throw new N( J.P ); if ( !g.f.read ) throw new N( J.i ); var v = !0; if ( \"undefined\" === typeof r ) r = g.position, v = !1; else if ( !g.seekable ) throw new N( J.W ); var ia = g.f.read( g, t, h, n, r ); v || ( g.position += ia ); var H = ia; if ( 0 > H ) { var L = -1; break a } a += H; if ( H < f ) break } L = a } return L } catch ( M )\n\t\t\t{\n\t\t\t\treturn \"undefined\" !==\n\t\t\t\t\ttypeof FS && M instanceof N || B( M ), -M.I\n\t\t\t}\n\t\t}, ___syscall146: function( a, b ) { tc = b; try { var c = uc(), d = X(); a: { var e = X(); for ( b = a = 0; b < e; b++ ) { var f = lc( c, D, x[ d + 8 * b >> 2 ], x[ d + ( 8 * b + 4 ) >> 2 ], void 0 ); if ( 0 > f ) { var g = -1; break a } a += f } g = a } return g } catch ( h ) { return \"undefined\" !== typeof FS && h instanceof N || B( h ), -h.I } }, ___syscall54: function( a, b )\n\t\t{\n\t\t\ttc = b; try\n\t\t\t{\n\t\t\t\tvar c = uc(), d = X(); switch ( d )\n\t\t\t\t{\n\t\t\t\t\tcase 21505: return c.tty ? 0 : -J.L; case 21506: return c.tty ? 0 : -J.L; case 21519: if ( !c.tty ) return -J.L; var e = X(); return x[ e >> 2 ] = 0; case 21520: return c.tty ? -J.i : -J.L;\n\t\t\t\t\tcase 21531: a = e = X(); if ( !c.f.kb ) throw new N( J.L ); return c.f.kb( c, d, a ); case 21523: return c.tty ? 0 : -J.L; default: B( \"bad ioctl syscall \" + d )\n\t\t\t\t}\n\t\t\t} catch ( f ) { return \"undefined\" !== typeof FS && f instanceof N || B( f ), -f.I }\n\t\t}, ___syscall6: function( a, b ) { tc = b; try { var c = uc(); jc( c ); return 0 } catch ( d ) { return \"undefined\" !== typeof FS && d instanceof N || B( d ), -d.I } }, ___syscall91: function( a, b )\n\t\t{\n\t\t\ttc = b; try\n\t\t\t{\n\t\t\t\tvar c = X(), d = X(), e = sc[ c ]; if ( !e ) return 0; if ( d === e.Qd )\n\t\t\t\t{\n\t\t\t\t\tvar f = S[ e.fd ], g = e.flags, h = new Uint8Array( G.subarray( c, c + d ) ); f && f.f.$ && f.f.$( f, h, 0,\n\t\t\t\t\t\td, g ); sc[ c ] = null; e.$a && Fa( e.Td )\n\t\t\t\t} return 0\n\t\t\t} catch ( n ) { return \"undefined\" !== typeof FS && n instanceof N || B( n ), -n.I }\n\t\t}, ___unlock: function() { }, __addDays: wd, __arraySum: td, __exit: jd, __isLeapYear: sd, _abort: function() { Module.abort() }, _clock_gettime: function( a, b ) { if ( 0 === a ) a = Date.now(); else if ( 1 === a && vc() ) a = Y(); else return sb( J.i ), -1; x[ b >> 2 ] = a / 1E3 | 0; x[ b + 4 >> 2 ] = a % 1E3 * 1E6 | 0; return 0 }, _emscripten_force_exit: function( a ) { Module.noExitRuntime = !1; Module.exit( a ) }, _emscripten_get_now: Y, _emscripten_get_now_is_monotonic: vc, _emscripten_memcpy_big: function( a,\n\t\t\tb, c ) { G.set( G.subarray( b, b + c ), a ); return a }, _emscripten_run_script: function( a ) { eval( C( a ) ) }, _emscripten_set_main_loop: Fc, _emscripten_set_main_loop_timing: wc, _exit: function( a ) { jd( a ) }, _getenv: md, _llvm_cttz_i32: od, _llvm_cttz_i64: function( a, b ) { a = od( a ); 32 == a && ( a += od( b ) ); return ( u.O( 0 ), a ) | 0 }, _pthread_cond_signal: function() { return 0 }, _pthread_cond_wait: function() { return 0 }, _pthread_getspecific: function( a ) { return pd[ a ] || 0 }, _pthread_key_create: function( a ) { if ( 0 == a ) return J.i; x[ a >> 2 ] = qd; pd[ qd ] = 0; qd++; return 0 },\n\t\t_pthread_once: rd, _pthread_setspecific: function( a, b ) { if ( !( a in pd ) ) return J.i; pd[ a ] = b; return 0 }, _strftime: xd, _strftime_l: function( a, b, c, d ) { return xd( a, b, c, d ) }, _usleep: function( a ) { a /= 1E3; if ( ( l || m ) && self.performance && self.performance.now ) for ( var b = self.performance.now(); self.performance.now() - b < a; ); else for ( b = Date.now(); Date.now() - b < a; ); return 0 }, DYNAMICTOP_PTR: y, tempDoublePtr: mb, ABORT: A, STACKTOP: q, STACK_MAX: Qa, cttz_i8: nd\n\t}; var yd = Module.asm( Module.ab, Module.bb, buffer ); Module.asm = yd;\n\tvar ib = Module.__GLOBAL__I_000101 = function() { return Module.asm.__GLOBAL__I_000101.apply( null, arguments ) }, jb = Module.__GLOBAL__sub_I_eval_cpp = function() { return Module.asm.__GLOBAL__sub_I_eval_cpp.apply( null, arguments ) }, lb = Module.__GLOBAL__sub_I_iostream_cpp = function() { return Module.asm.__GLOBAL__sub_I_iostream_cpp.apply( null, arguments ) }, kb = Module.__GLOBAL__sub_I_uci_cpp = function() { return Module.asm.__GLOBAL__sub_I_uci_cpp.apply( null, arguments ) };\n\tModule.___cxa_can_catch = function() { return Module.asm.___cxa_can_catch.apply( null, arguments ) }; Module.___cxa_is_pointer_type = function() { return Module.asm.___cxa_is_pointer_type.apply( null, arguments ) }; Module.___errno_location = function() { return Module.asm.___errno_location.apply( null, arguments ) }; Module._emscripten_get_global_libc = function() { return Module.asm._emscripten_get_global_libc.apply( null, arguments ) };\n\tvar Sa = Module._emscripten_replace_memory = function() { return Module.asm._emscripten_replace_memory.apply( null, arguments ) }, Fa = Module._free = function() { return Module.asm._free.apply( null, arguments ) }; Module._llvm_bswap_i32 = function() { return Module.asm._llvm_bswap_i32.apply( null, arguments ) }; Module._llvm_ctlz_i64 = function() { return Module.asm._llvm_ctlz_i64.apply( null, arguments ) }; Module._llvm_ctpop_i64 = function() { return Module.asm._llvm_ctpop_i64.apply( null, arguments ) };\n\tModule._main = function() { return Module.asm._main.apply( null, arguments ) }; var F = Module._malloc = function() { return Module.asm._malloc.apply( null, arguments ) }; Module._memcpy = function() { return Module.asm._memcpy.apply( null, arguments ) }; Module._memmove = function() { return Module.asm._memmove.apply( null, arguments ) }; Module._memset = function() { return Module.asm._memset.apply( null, arguments ) }; Module._oncommand = function() { return Module.asm._oncommand.apply( null, arguments ) };\n\tModule._pthread_cond_broadcast = function() { return Module.asm._pthread_cond_broadcast.apply( null, arguments ) }; Module._pthread_mutex_lock = function() { return Module.asm._pthread_mutex_lock.apply( null, arguments ) }; Module._pthread_mutex_unlock = function() { return Module.asm._pthread_mutex_unlock.apply( null, arguments ) }; Module._sbrk = function() { return Module.asm._sbrk.apply( null, arguments ) }; Module.establishStackSpace = function() { return Module.asm.establishStackSpace.apply( null, arguments ) };\n\tModule.getTempRet0 = function() { return Module.asm.getTempRet0.apply( null, arguments ) }; Module.runPostSets = function() { return Module.asm.runPostSets.apply( null, arguments ) }; Module.setTempRet0 = function() { return Module.asm.setTempRet0.apply( null, arguments ) }; Module.setThrew = function() { return Module.asm.setThrew.apply( null, arguments ) }; Module.stackAlloc = function() { return Module.asm.stackAlloc.apply( null, arguments ) }; Module.stackRestore = function() { return Module.asm.stackRestore.apply( null, arguments ) };\n\tModule.stackSave = function() { return Module.asm.stackSave.apply( null, arguments ) }; Module.dynCall_ii = function() { return Module.asm.dynCall_ii.apply( null, arguments ) }; Module.dynCall_iii = function() { return Module.asm.dynCall_iii.apply( null, arguments ) }; Module.dynCall_iiii = function() { return Module.asm.dynCall_iiii.apply( null, arguments ) }; Module.dynCall_iiiii = function() { return Module.asm.dynCall_iiiii.apply( null, arguments ) }; Module.dynCall_iiiiid = function() { return Module.asm.dynCall_iiiiid.apply( null, arguments ) };\n\tModule.dynCall_iiiiii = function() { return Module.asm.dynCall_iiiiii.apply( null, arguments ) }; Module.dynCall_iiiiiid = function() { return Module.asm.dynCall_iiiiiid.apply( null, arguments ) }; Module.dynCall_iiiiiii = function() { return Module.asm.dynCall_iiiiiii.apply( null, arguments ) }; Module.dynCall_iiiiiiii = function() { return Module.asm.dynCall_iiiiiiii.apply( null, arguments ) }; Module.dynCall_iiiiiiiii = function() { return Module.asm.dynCall_iiiiiiiii.apply( null, arguments ) };\n\tModule.dynCall_iiiiij = function() { return Module.asm.dynCall_iiiiij.apply( null, arguments ) }; Module.dynCall_v = function() { return Module.asm.dynCall_v.apply( null, arguments ) }; Module.dynCall_vi = function() { return Module.asm.dynCall_vi.apply( null, arguments ) }; Module.dynCall_vii = function() { return Module.asm.dynCall_vii.apply( null, arguments ) }; Module.dynCall_viii = function() { return Module.asm.dynCall_viii.apply( null, arguments ) }; Module.dynCall_viiii = function() { return Module.asm.dynCall_viiii.apply( null, arguments ) };\n\tModule.dynCall_viiiii = function() { return Module.asm.dynCall_viiiii.apply( null, arguments ) }; Module.dynCall_viiiiii = function() { return Module.asm.dynCall_viiiiii.apply( null, arguments ) }; Module.dynCall_viijii = function() { return Module.asm.dynCall_viijii.apply( null, arguments ) }; u.aa = Module.stackAlloc; u.ua = Module.stackSave; u.ta = Module.stackRestore; u.Id = Module.establishStackSpace; u.O = Module.setTempRet0; u.hb = Module.getTempRet0; Module.asm = yd;\n\tif ( I ) if ( \"function\" === typeof Module.locateFile ? I = Module.locateFile( I ) : Module.memoryInitializerPrefixURL && ( I = Module.memoryInitializerPrefixURL + I ), p || ba ) { var zd = Module.readBinary( I ); G.set( zd, u.ia ) } else\n\t{\n\t\tvar Bd = function() { Module.readAsync( I, Ad, function() { throw \"could not load memory initializer \" + I; } ) }; gb(); var Ad = function( a ) { a.byteLength && ( a = new Uint8Array( a ) ); G.set( a, u.ia ); Module.memoryInitializerRequest && delete Module.memoryInitializerRequest.response; hb() }; if ( Module.memoryInitializerRequest )\n\t\t{\n\t\t\tvar Cd =\n\t\t\t\tfunction() { var a = Module.memoryInitializerRequest, b = a.response; 200 !== a.status && 0 !== a.status ? ( console.warn( \"a problem seems to have happened with Module.memoryInitializerRequest, status: \" + a.status + \", retrying \" + I ), Bd() ) : Ad( b ) }; Module.memoryInitializerRequest.response ? setTimeout( Cd, 0 ) : Module.memoryInitializerRequest.addEventListener( \"load\", Cd )\n\t\t} else Bd()\n\t} function fa( a ) { this.name = \"ExitStatus\"; this.message = \"Program terminated with exit(\" + a + \")\"; this.status = a } fa.prototype = Error();\n\tfa.prototype.constructor = fa; var Dd = null; fb = function Ed() { Module.calledRun || Fd(); Module.calledRun || ( fb = Ed ) };\n\tModule.callMain = Module.Fd = function( a ) { function b() { for ( var a = 0; 3 > a; a++ )d.push( 0 ) } a = a || []; ya || ( ya = !0, Va( Xa ) ); var c = a.length + 1, d = [ E( O( Module.thisProgram ), \"i8\", 0 ) ]; b(); for ( var e = 0; e < c - 1; e += 1 )d.push( E( O( a[ e ] ), \"i8\", 0 ) ), b(); d.push( 0 ); d = E( d, \"i32\", 0 ); try { var f = Module._main( c, d, 0 ); Gd( f, !0 ) } catch ( g ) { g instanceof fa || ( \"SimulateInfiniteLoop\" == g ? Module.noExitRuntime = !0 : ( ( a = g ) && \"object\" === typeof g && g.stack && ( a = [ g, g.stack ] ), Module.printErr( \"exception thrown: \" + a ), Module.quit( 1, g ) ) ) } finally { } };\n\tfunction Fd( a )\n\t{\n\t\tfunction b() { if ( !Module.calledRun && ( Module.calledRun = !0, !A ) ) { ya || ( ya = !0, Va( Xa ) ); Va( Ya ); if ( Module.onRuntimeInitialized ) Module.onRuntimeInitialized(); Module._main && Hd && Module.callMain( a ); if ( Module.postRun ) for ( \"function\" == typeof Module.postRun && ( Module.postRun = [ Module.postRun ] ); Module.postRun.length; )bb( Module.postRun.shift() ); Va( $a ) } } a = a || Module.arguments; null === Dd && ( Dd = Date.now() ); if ( !( 0 < db ) )\n\t\t{\n\t\t\tif ( Module.preRun ) for ( \"function\" == typeof Module.preRun && ( Module.preRun = [ Module.preRun ] ); Module.preRun.length; )ab( Module.preRun.shift() );\n\t\t\tVa( Wa ); 0 < db || Module.calledRun || ( Module.setStatus ? ( Module.setStatus( \"Running...\" ), setTimeout( function() { setTimeout( function() { Module.setStatus( \"\" ) }, 1 ); b() }, 1 ) ) : b() )\n\t\t}\n\t} Module.run = Module.run = Fd; function Gd( a, b ) { if ( !b || !Module.noExitRuntime ) { if ( !Module.noExitRuntime && ( A = !0, q = void 0, Va( Za ), Module.onExit ) ) Module.onExit( a ); p && process.exit( a ); Module.quit( a, new fa( a ) ) } } Module.exit = Module.exit = Gd; var Id = [];\n\tfunction B( a ) { if ( Module.onAbort ) Module.onAbort( a ); void 0 !== a ? ( Module.print( a ), Module.printErr( a ), a = JSON.stringify( a ) ) : a = \"\"; A = !0; var b = \"abort(\" + a + \") at \" + Ga() + \"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\"; Id && Id.forEach( function( c ) { b = c( b, a ) } ); throw b; } Module.abort = Module.abort = B; if ( Module.preInit ) for ( \"function\" == typeof Module.preInit && ( Module.preInit = [ Module.preInit ] ); 0 < Module.preInit.length; )Module.preInit.pop()(); var Hd = !0;\n\tModule.noInitialRun && ( Hd = !1 ); Module.noExitRuntime = !0; Fd();\n\n}\n\nlet code = engWorkerCode.toString();\ncode = code.substring( code.indexOf( \"{\" ) + 1, code.lastIndexOf( \"}\" ) );\n\nconst blob = new Blob( [ code ], { type: \"application/javascript\" } );\nexport var fritzWorkerScript = URL.createObjectURL( blob );\n\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchFieldContainer\":\"CBSearchBar_searchFieldContainer__2dnuZ\",\"searchField\":\"CBSearchBar_searchField__2VLEB\",\"label\":\"CBSearchBar_label__28tUQ\",\"autoCompleteContainer\":\"CBSearchBar_autoCompleteContainer__2hNek\",\"autoCompleteEntry\":\"CBSearchBar_autoCompleteEntry__LHzUm\",\"selected\":\"CBSearchBar_selected__17WEw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"gameInfoModule\":\"CBGameInfoModule_gameInfoModule__2hLl4\",\"gameInfoPadding\":\"CBGameInfoModule_gameInfoPadding__yXR-J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBHorizontalSpacer_base__1r4b4\"};","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAB3RJTUUH4QsGEDgET6PX2AAAAAlwSFlzAAALEwAACxMBAJqcGAAAAARnQU1BAACxjwv8YQUAAAonSURBVHjazZdZUJvXFceVPLTThz51OtO+ZDKdyaSumza1m9iZxk7jNXaSpk5iJ17iLWYzq9kRCCHAAoTAgEBGMkgCxCaBkIQQIMDsi1iNIYkhGLM4mM2xHadxgoF/z70E7MTOMn3qnTkj6ZtP9/zu/yz3XoHg/2FERUX9qEVERAh8fHwEIpFIYLfbn5udnZUBGCL7GivjHtknU1NTUpvNtl4oFAp8fX35+z81908ChISECORy+ZNtbW375ufnbbMzs/P9/f2LFfaK5bx8/VLmBdUC+ySw5cv9lxcJbm5uds7S0tLyL6lU+kRoaOj/BsDow8PDBfX19Tvv3LnTOzg4iIRkGV532YenTmzE016b8HzwNmwK243donfxnN8rEHzwDF45thupGWm4cuUK6H+dFy9efJUp8kNqPBaAOZbJZE9OTk6eu379OoqKipBbqIfeVoSTCi8YG0xoH3SibaAdjZea4H0hAKYmC5wfd8FYb8Iu8Tt4/sQWxCXGY/rGNMbGxhLi4+N5KH8SgDlPT0//1e3btys6OpxY984LyLHko6enD919PfDO9sfVz0axOpaWlxCsD8X4zAT/PTY9jsOpJ3Ey3RNvSN7Hq0deQ3d3Nyh8ZbSoX3wf4jsATKaEhIQnbt26ZaupqcG6w5vxtuwoihxGdHR0ot3pRM/Hvbj3zb01gOXlZVyfv772bPTGKFzU7jit9oGL0gtHkl2xnuZpaGhgEKY4qVQQGRn5eAC2epI9yUmOmPNjqR44qnCBoa4ETmcXGpuaMTLyYPWPG2Mz1+Cr94F/bgC8sv3gdt6bz7P+0GZSsRfXrl2ThoWFPQrAspUSZvuNqRvYengXJ3elFbiqPVBKMXd2dKGpuQWffjryowDjs2MIMQZAaAhBoD4Q3pozHILNt+PoXszMzKC6uvrl1ergg0nPSubO7TtdUlkc3oh6Hy4ZXvDK8oN3jjfMLWYegp8DMDE3AWFpCMRl4Qg3hq5AkBIuSm+8HvUe5ClJrDpayB/3ywdrGk1NTW8OXRnC88e3UKZ7wkO9ImNgkT+KmgvQ09eHltY2ODu7MDAwiMsDA9/aIPovD+BS/2VMTEyi92ovIstEiLaIEWUWQUgQbJ7Tal98SIm54fhWXB25ynJiF/PLB6tTaiBlaUoF3pQc5NL7kHTBhcGINAlpwghoG7To7OtCS0sbmltauTFFGhqb0OHsxMT1SVT2VkFaHoezVinE+kiE5AUinEIRZgiFr9YfrhSKN0gF1QUVpqeni4KDg1cALBbLs3NzczNvue2nhHGHh2pl9UzCKL4aCaKt0WjpbUVraztXgjlnn6Oj13D//n0sLC5A4VAi3paI+PIEBEtDsdt9G/5x6u84kXyUz+d5wY/Pv9/zEKuIzwwGw1McgDI/cnDwo8UX3LaTTCuxD8oPgqhUCIk5EjGWaCTa5ejodXKnbPUDgx/hyy+/fNAPlpaQ25QPWUUSZDY5QuLDsMdzJ/5y6BlsctmAf4vegnumJ05Rbr3ouo11yoXR0dEzHID+31PtcCxvDXyd1y6TP6QoGGJTOKLNUYi1xCCtWoHO3gcheNj56ih1WgjgHBIrkjnALrdtWLf/KQ6w8cRfsfHYBrzquQMbPV4BtfjlxcXF+lWAaYPRiF0Rb/M4sXiFFbNMjqDVSwggFqo6Nbp6utcA7t59FKD6Ui2FIJlMjjMxgTiVeBK+ai94ZrrjSMJBHIo7jJMUAuan1GRaZkWzCjDDdrQ9kfs5gJ9uBSDqW4AYUkDXkIOu7h8HaBtyQl2vhaGtBNqiHGRfzEac/SzE5ghElAjhT0npnulDm9c7DAAPA9wwlhixM/xbBXTfVUBCVtBciM6u7rUceBzA8NgIyh1VyDeYoMkrRL6xBBXNlcioSUMQlTNbmFumN3YK98FUxhUYXwVor62tXd4S8CAHQlkOlK3kQIw1BuWdNt6OGUAjVcDdu3fXHNPeQW26EelKJXL1+cjS5eKcUo0YWQrEsXKYHeXIqE6He5YnX+AW/71obGxcXlhYqOYAtF0Gf/LxJ/dfdN3Os/ThKogwhcHaYUXvpT6+8r5L/WsJ+MUXX1BYumC1mhGfEI91f1wPTy8vaHN0yM7VIzlDjaj4JASESVBkLkGqVYEjaaew2XUHhoeHF4aGhjw4ANXj0/Nz81Pvnj6IoykP+gDrYlEWEVqp/lnsWe0PDQ/jP199hQ7qiEUGA0wmkrnChsrKaijSM+Du7gGNNhsFRcXQ5OYjr8BA3ykkukJU1tUgtVSJfW4HcPPmzXG9Xv87DhAUFCRgnUmVpcZe8XvUCb15GAILApBadQ6dtEoWf9ZyHXX1UKg0UF7IBssbm80KOzmvqq6Do6YeVVXV/JnFYobdXkkbD3vewM1ud6ChuZG6ZwPo/Khjfvnw8/NjO+EOagzYcGzr2l7gqaXTT4uRmsYwqmrqIJWnIEwSh8S088jKyUNJ6QpAJTl1OOpRXlENQ0kpSkiV8nILKVPB4Sqrasgc9L2Kg01NfcZ3ROb34d1QQLthQ4oiFa+J9vNkdFWfhq5WB7VGBxefQPiFihApTYSMAFSaHB4Cm80Cs8UKbW4BMi5oSfY8/txsMXE4DmG3o4IZhcpiKUNzc9P94uLiP68psHoeoBc3US4s7T3+Fg4lncLxdDdk2tSIlcbDzScAviEihEfHQZqsgEKtgYZUSM9UISYhGbHyVJ50DCw3v4CUMMJsNpESZg7JzErfTWWlpJSNKfBeQEDAd09E7KQyMjIiGqBt9rmDL+FA0gkoLSpI4xKQlJxMjhIREC7hmS0hC4qQkCqREBKUhCBkqeeRlpkNtTaXQxQZimEsLaGmU8qN5UwBHXBLyswM4MAjAOysFhMTI6CdMa+9vR1/2P83iHSxqG28yJPLbLUgPOYsd+obEsHNOygcAcIoyFOVEIpjCUKJ1MwsZGbrKBx65BBIXkEhtxzqEapsLSqqa74pKCh4lt05HjkVs1MrnV6fIIhc2iGx/cgeJOnT0NLeSisoQbRMDp/gcHgFCeEVIITsnAIGm4mO46UoKCmERCpHQkoGD0eaKhvKLC3OEwwzBf+tQ1uHUxsbGysQi8WPvxcwCKYENYuwm/M376ekp+Lc+VRo9YXwDBbyVScplDBUlEFjz0GgLgyH0z5EXLEchvIyiAkiWnaOg7CKYcbyJl2tZc7rVSrVr1eP5z94M2LhYIlJd70Ntz6/5bhGJdrT2wsdQWTn5CJeLce70R/gpZDd+GfIm3jZbw/+dPwlRCVGU3fspU5YAGlS2lrCWioqP6dGJk1PV/ySnb5/9t2QJaZEIhGwuqVbkubevXtj4+Pj39AZctlitSxRci1Zy61Lba1ty3TW+5pOOqOTkxOZjpqaA3TGENbU1p2lhnRIp9P9XkyL+v4V7WfdjpkaZ86cEfj7+wtoot/SPfEkgbD99FO2o7FP+m2k6jmm0Wh+w97zp/fDSEG2gKDAQMEPXVL/C/lm8ir1IFfkAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4wMFCxkkhyzrRgAAB4tJREFUWMPFlntsU9cdx7/nPnx9r99JbOyYmDgh5MH7lVCyktJR2CiTtpWtKt20TuumVZo61k3aqpZNrNK2bupUCls1qV1HqxXKQxpr1zawwFogCdDSMCCAKTSQYIfEiRM/Yt/XOfvDSQgbBIOE9pWudHSkc+7n/H7f89UB/s8iY4OfPf0MMpkMRFHgU6m0TVVVQRBE0+Gw56729Vly2ZwIAIIgUL9/ippMJsVkMilYrbLp90/J9PfHjerqKvx8w7O3BSCMDXK5HHieh6bpvnlz5z7lKfLUZTKZ3nPnItu/tvahB4uLiqYDYNlsNtPa1r6nfvGihtC0aVWDg4PR9vYjv5s5sy4yODBw2xUYB2CMgRAC0zSdDqdjRSgUmheLxQY0TesPhUJfWrhgfgUARKOx3IcHD6l+v/9zTcvurejs7LzS2tq2FWARytidA0wEYQAIIVAUxdXUtOzbPp/XTUi+W3a7zbJq5QNrSksD9nwTSX4No3fkgf8CuHYCxhicTqdQV1frC5WVjc+7XC6uqWlZ0cRVpmlSm82Gz7ou3zYANzb44x82wx8oBQMYR8j4PG5RVUKIbd6CBaEfPvkkNj733J1XIKdq4Aj45ua9DwwMDIRBCDDajsmUS/S5LUM9v+rr6zNLfb7djDE61q6CAcYMGIv1PpI83vzLbCbj0IJBSBYLEokEdF27rhJ5jwC8IKL73ClYWl8LnxC0LXMfeoK+/MLzu8f2K0SEMYahRAIWu6uhbesLO7i9vw+9flFAOtyIR7+xDj6fD5ReMxhjDKIoAoxh185dOHv6NOZoEayukKAv/8H5xkefWKtnMv+22WwFQXAA4PZ45M7DLT/h214PtcYM7LtM0XboMGLRGDiOG9+IEAKP243ammq4XE7sb9mP0qlliJYuxSe9KnBsZ1Vn+6H1NptNLLQFXDqVRDJnNCSOvrNypL8Hb12ywGSALMtwOBxgo3dblmVUhMtRU1MNl8sFp9MFt8sNRZbRsLQRnbbZMOKXED/eskYF5miqWhjAihlB9Jw7uUrsance7hfQlyMAGKxWKxSbAsYYOI5DOFyOQCAAQcj7VlEUuD1uSFYrPG4X6hpX4GzGCr77E293JHJ/y7tvj8NPCtAeS8nD3efnccMxdAxdiwVFUWC1yuOlF4XrI8NqleD1eaEoCiySBbV1dUjYQuCHo0hc6Zr/xa+s5QuqAACHPtzv11UV/TkOZNRoit0GSbLc9BSiKCIYDMJut0GSrCgpKYbkLQPVctDTiQAAqVAAAYyKlDEYLH+9GBicTkfe7TcRz/OorKyE3eEYb5dVsYMyBkZNARNC7lYAWSJaU4LAQ+YZdMOEoRuw2ezg+ZtXkRCC8nA5FFmGZJXy3tDS4AURvKQkAWiFAAgAUtaSqV1Z2bGkyqOidGEj3E47amfW3XJxeXk5ZFlGSUkJDJNCSkYBmwdKSSBCCNEKMaHQeuCfRiBcc/hCyfSH6z3HycCsOqz8wiqYpnlLFweDpQgGSwEAB/e3wK9eQbZssTGzsuaywVg5gB7GmDFZIHEN996HcEV4L6ld3lXnAWJHmhGN9RYcpQAwMJjAmfffxBynhlzsItf6xqan+/6++QCNd/0YgH2yg3B8/npFypau2apNq2fLuQj27fwrBhPDk3pgTMlUGnv+vAWzkx+BgmAgepkLndnhFdteK0//48WNelfHSwDKmKHdsKIcIQSUUsyorX3ZvfJ7zcVTw7hn6EPseXUzTp7qhGGa4Hn+fypimhSnO8/iL795FlNO7oDCmTh8RcecgIyQRwJAoJ35QMq8/dvH1BPNb4BwDe+MPl4migD5e59MpiA7HLUfvbv7TyPNW+5Vr5xDy5AbySmzUVYzBw1LlsDrLYGqauiN9uBCx1GQ84cwT4qDhRYYg765muXjt5RlAYCy0Z0ZAErBuXyQGx+5IC368gbO5t4JYNwX48dijGE4PQK7Xak41XZw49V/bf+q9eJBZTiRwMU0QdyUYfIWyByFT9QQchAoxX5oVfcNTbv/669Yaa6M/u0XDztzvWACn9+aMcBkYKYJIlohLViTkBvXbeK95S8CGL4OYAxiFF652h9/8FJH+7fSkaP16Pu0iM8M8jB1wCLDtPt0BKr73DX1B8OzF73qcTkOmOpIg36yeYt6bNt8OtwNEA5gADMomG6C6SbAAMuMezR52WO7xMpFzzBD67qh1Sf0SckZdMZAPD4rPRifamqqLMpKylHk7SouLjolcriI0cBh2SEQ2V2jf9b+a/XjbWvM6AmBUQYYFFQzwVQDTDMBRiEEqmFbvX6bWLXkO8KNACYYbgRAx+g3qRhjAGNnxfCSxzmn96fayV3f188fcLBsFhwASimYSQGTgxm/DJqKewHwBeV1ISKEgHAcAAzwxZUbrPWP/0hauK6bcxYBPEB4DoQjADUhhGabwrS572Xe25QuPG1uQ6MtJDC1Jv3T/c/njry52OiJEDqigXMGoaxev0+a9flvgrGrd+P/4xBUGwFjbLp+6dj21PantOFXvktzHe9/wBibRbOp/GP4rhHgOjN76FBsHaOmhS+augum3g1evK24v2v6D7PbT0VM9SG0AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTAzLTA1VDEwOjI1OjM2KzAxOjAwe7SA/wAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOS0wMy0wNVQxMDoyNTozNiswMTowMArpOEMAAAAASUVORK5CYII=\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"boardModule\":\"CBBoardModule_boardModule__1HHss\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"grid\":\"CBChessBoard_grid__1ypSW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base\":\"CBRibbon_base__vV25w\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"CBNotationBar_container__56OVY\"};","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApEAYAAAD48Ny1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAl2cEFnAAAAKQAAACkAcTd2HAAAAAZiS0dE////////CVj33AAAAAlwSFlzAAAASAAAAEgARslrPgAACJFJREFUaN7tWmdwFGUYvr07ihxlKEEgIMUgJYBCFBCRCeBIL1IHhIhSpQkYwUEQHIqggHSNE6UJUqRMCCJFULoQguKA1IgSEqpIaLlk79Yf37M47+Oul0AuCsP+ee799tu9b5/v7bsOR84eLqDT8fDI1uEh+Rr4vKpQe5rO57W5j0ZyGWClAPMe2IOJGgpi34e8L8BGtIJCTwLGY3xJFjfkfj20P6T8ZGuFb4OwIvHyvHMM8EW6UWHc70fI7YCFMH4G8is2ruR+P1xlpdx0mkLDUHhxtsLoRQrzHKLrQYSzphx/F/L8/rRxy/DjLLDcA2L6zq+kXO+WJNLnlvKhCIXValjfb0BLOd/EmVvpfysC8X/uSMgm8c/fZ5qr7ZVyhRUKvSslERnXpXwDmtoIGlpMR6yqS9d9JOWXyCU4F+JHeVpXGvjrjIEwWrj7/8bkWlrfeoWnXpYE+N9QqD8hx69WVrjhS5o/DvJY4H6F18fDsk8o3Fld4dhaCsMj2WQA2DjttwDBLvdVEVgAOz9dnv70iCRGrwP5LTl+HBp8ZiKZNDTMuAKECzGeU7jyssIEc94Sef0Bn8IXvLTseSB2KT1P/v/Kx3qIyPHydMx58pUDQSgWGt1Ezl9wloivBhkPbLSQ5yOOyutDuykcDVdwKb+cH9dUYanK5DoH03Ply21C8YfOC3J4yFT5AJklpfzTd9iHEgrHIF269jNpZHHgOZj6QXl+RSgIHYU/Jt/p+Uzh5LKURTRS2HADEcoaWjC3ojWlHTU2K7wNH2TUgybOIt8HTU3fQsSZGuy3jtp3cA8QUdz4QeEObEjTpdbrfRb3vYCKSU9V2GwgEdqdLnwkWAxip1yTyScmkWnChNLhuyYgTemyDpoaDaLxQP72RNgNoM+aUD0K1yFhNz6R55etQTaQKNcZBotJXoXsAhVX7UukKEOtg1bOHdh5raIc3k35X2qswvq0w51QmRjTiaB3bDTSSzKClh8+2egKYlOwQZfk/ET43hAy1br75LxfekNP3qPnTZKxIAds2Sw5aBiJ79FhcmGte1nfJv5N0qzVAUyZMYPkTJJNTftVji/fZr2eEeTTp88nU69FQeieE3vsiHZVDledIBeSMECebwnT6dgWmrqXfGaqDSHQTJ2CTCxcQGNopm8TXdcJeBHXd6CEnkrRPOlY9345r05xUpgGlCZl+yBn67ol5blxcgGXTyOqQvO8RLTxcRY17yZMNV2Oj2mOdfRTeGsUbUyG3BgfVVgH4FrcX8jnaNdFzlvtsQmuEdlNj0iFnQekXH8kFlqNCEAQMdAV8qFC8cE0DLdNUCFNNODrdDLltggq4WSS/mTIcaThGPeR62nXiSoyVGgHaeMiQomHrqYqZzNPdOyiAgDpRmIjSrhR2xooDfXhFE3TKQoHSHP8lFCfHCTXMTWSfC001dDpfrAg/YwcX5tm/dhDouW8OcdJv5D4O4pntTFbxFoT51NNrLeihadnM3iwJiIx9y2T55u/rrD0Rpj0OLo+v026ZMpl5Hga8t3HwuXzPY4Cwmf6dJSuhYtSqenJIpHOZDncltIK/XtgYQoadibLyJpjuoLG8I3DKY2BCzlCrsS/M4sbhQpM3yXHo+KsadgeJuc189lEc1tfuZ58BxLfwxT99HDr4BBQ47hfuV3W4kY5Kimhibvn0XX1rE04UNqkj5DjS7zWNIym0nYqZSOuZLLgf8QYelnVphJpAHyeF+OLUDv/XpDm7bF5IFPzUAP7aQMSYFL9R1JTg4KLjrTKSMue6/BTsDuGBDwP5Y+R5+S8HdXItDtY1/h/ayBFqQkNrBfWd5act7UYNSvi6TokyDqlKycRtNqgTaZRtpB3MfqbdD9/xbv0xRFSvg0LLE/vlkLhujLMtK6ZwkLUf9XsanF3aSmPTZZ/fHqaPD/tKSLQa1MbbyaT+hxpalMibgtZBGmcH07e2HmXROL+/oVyvEECJS3Q1KQUOa/KMEqHStiZNjUjulB0vIoadW5PhSnUwB2NJsL6dtYPMj+KFlIFpkUaXmA0fOQg8o03bWrwrKJZ8dD17b+x5mNfbzkvkmKIy65k1MjmS8Cpn+9DmkelWzw54x2aPL/NTDMQFDRougtdFg3piwvROo7e8fhaBIj6WcXbIJII6nHRmo8ta+S8zieJyMWBGrY75XC3U2Sq3aS8EET2/YBMESVhve3kQjqCwBlAuJRV3I6rRURcv0sCqZukN5HjvaKs6dh4Us7rR00b1+1AFY1peo9KuQV82gEU+YkIEslJ1gtftIb+GAvTyLkvXUwaP9im6+O/RyLNNOgZOf7qCWs6vl4u50XTKw53+UCJOb2u1FC7OkJA8EZ5viYI24T0Zjk2pGRD2hj6MiP2WyKQSz1fDhFIbTfOg3tXtSGyupw3vgrRFJbV/iN1hl24kYZ80mFGseM2PhdBxzVOjke7iEDzHc1pm0TeyGEiKxORug2R9OXIFPp2yR2S3W4Qt9oRfBzhss3kRP7lCpHynfysvsIrseRLtwSZQCaSCo0+4218JKVtMyjdcbuzS6TdwTcwP8OD73Ctk6fHUfTNtGsyGEEmkjSyTxHrx9tEXa6Z1Pl3ZQTrnY55TCEZUf0wPYDvT5mWBI1AjtqUdbxW1PoxtpUiIhfkMpHaMVLUD1Gj16GaG69h/dNzCfEJTGZ3SVCHy9bPsZuaIzNLEpE3gkykk2rS+jXIJ66XJVvQNZHae376dGYpgl80fOUYaFryCjlvNlc23mAT2UPKtWEil1HipcBEUtEYTp2VSzgHiJdwKTEKb6CiykTTxotPuFMroLmBl2aTYojImGD7yBAy9ZkKPUiEPaihPXjp5OmZy9geiMorP96r5wWB+eCCCmCdBbHOvBPpOWs6gnxwNA+TrzAeHnebd5oVgfnR1fn7BM1OON5FOSb/ewX48Ljn4y8r00l3GwZcawAAAFp6VFh0Q29tbWVudAAAaN5zSSxJtVIIKU3VUTAyU3AsTVcwMjCwUDAwsTIytzI1UAhwCeFyLC3JyC+yUnAtykxWcElV8C3NS1GwSU1MccisyEzM00vOz7XjAgDinRUbSp25qAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"engineModule\":\"CBEngineModule_engineModule__kd1_C\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchModule\":\"CBSearchModule_searchModule__3eHZ6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filter\":\"CBSearchFilterContainer_filter__JSHWg\",\"filterHint\":\"CBSearchFilterContainer_filterHint__3YwKK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bookModule\":\"CBBookModule_bookModule__26_x-\"};","var map = {\n\t\"./ar/Chess.ar.js\": [\n\t\t257,\n\t\t9,\n\t\t8\n\t],\n\t\"./ar/Playchess.ar.js\": [\n\t\t258,\n\t\t9,\n\t\t9\n\t],\n\t\"./ar/Training.ar.js\": [\n\t\t259,\n\t\t9,\n\t\t10\n\t],\n\t\"./br/Chess.br.js\": [\n\t\t260,\n\t\t9,\n\t\t11\n\t],\n\t\"./br/Playchess.br.js\": [\n\t\t261,\n\t\t9,\n\t\t12\n\t],\n\t\"./br/Training.br.js\": [\n\t\t262,\n\t\t9,\n\t\t13\n\t],\n\t\"./cat/Chess.cat.js\": [\n\t\t263,\n\t\t9,\n\t\t14\n\t],\n\t\"./cat/Playchess.cat.js\": [\n\t\t264,\n\t\t9,\n\t\t15\n\t],\n\t\"./cat/Training.cat.js\": [\n\t\t265,\n\t\t9,\n\t\t16\n\t],\n\t\"./cs/Chess.cs.js\": [\n\t\t266,\n\t\t9,\n\t\t17\n\t],\n\t\"./cs/Playchess.cs.js\": [\n\t\t267,\n\t\t9,\n\t\t18\n\t],\n\t\"./cs/Training.cs.js\": [\n\t\t268,\n\t\t9,\n\t\t19\n\t],\n\t\"./de/Chess.de.js\": [\n\t\t269,\n\t\t9,\n\t\t20\n\t],\n\t\"./de/MyMoves.de.js\": [\n\t\t270,\n\t\t9,\n\t\t21\n\t],\n\t\"./de/Playchess.de.js\": [\n\t\t271,\n\t\t9,\n\t\t22\n\t],\n\t\"./el/Chess.el.js\": [\n\t\t272,\n\t\t9,\n\t\t23\n\t],\n\t\"./el/Playchess.el.js\": [\n\t\t273,\n\t\t9,\n\t\t24\n\t],\n\t\"./el/Training.el.js\": [\n\t\t274,\n\t\t9,\n\t\t25\n\t],\n\t\"./en/Chess.en.js\": [\n\t\t54,\n\t\t9\n\t],\n\t\"./en/MyMoves.en.js\": [\n\t\t275,\n\t\t9,\n\t\t26\n\t],\n\t\"./en/Playchess.en.js\": [\n\t\t276,\n\t\t9,\n\t\t27\n\t],\n\t\"./en/openings.en.js\": [\n\t\t277,\n\t\t9,\n\t\t28\n\t],\n\t\"./es/Chess.es.js\": [\n\t\t278,\n\t\t9,\n\t\t29\n\t],\n\t\"./es/MyMoves.es.js\": [\n\t\t279,\n\t\t9,\n\t\t30\n\t],\n\t\"./es/Playchess.es.js\": [\n\t\t280,\n\t\t9,\n\t\t31\n\t],\n\t\"./fa/Chess.fa.js\": [\n\t\t281,\n\t\t9,\n\t\t32\n\t],\n\t\"./fa/Playchess.fa.js\": [\n\t\t282,\n\t\t9,\n\t\t33\n\t],\n\t\"./fa/Training.fa.js\": [\n\t\t283,\n\t\t9,\n\t\t34\n\t],\n\t\"./fr/Chess.fr.js\": [\n\t\t284,\n\t\t9,\n\t\t35\n\t],\n\t\"./fr/Playchess.fr.js\": [\n\t\t285,\n\t\t9,\n\t\t36\n\t],\n\t\"./fr/Training.fr.js\": [\n\t\t286,\n\t\t9,\n\t\t37\n\t],\n\t\"./ga/Chess.ga.js\": [\n\t\t287,\n\t\t9,\n\t\t38\n\t],\n\t\"./ga/Playchess.ga.js\": [\n\t\t288,\n\t\t9,\n\t\t39\n\t],\n\t\"./ga/Training.ga.js\": [\n\t\t289,\n\t\t9,\n\t\t40\n\t],\n\t\"./he/Chess.he.js\": [\n\t\t290,\n\t\t9,\n\t\t41\n\t],\n\t\"./he/Fritz.he.js\": [\n\t\t291,\n\t\t9,\n\t\t42\n\t],\n\t\"./he/Playchess.he.js\": [\n\t\t292,\n\t\t9,\n\t\t43\n\t],\n\t\"./he/Training.he.js\": [\n\t\t293,\n\t\t9,\n\t\t44\n\t],\n\t\"./hi/Chess.hi.js\": [\n\t\t294,\n\t\t9,\n\t\t45\n\t],\n\t\"./hi/Playchess.hi.js\": [\n\t\t295,\n\t\t9,\n\t\t46\n\t],\n\t\"./hi/Training.hi.js\": [\n\t\t296,\n\t\t9,\n\t\t47\n\t],\n\t\"./hr/Chess.hr.js\": [\n\t\t297,\n\t\t9,\n\t\t48\n\t],\n\t\"./hr/Playchess.hr.js\": [\n\t\t298,\n\t\t9,\n\t\t49\n\t],\n\t\"./hr/Training.hr.js\": [\n\t\t299,\n\t\t9,\n\t\t50\n\t],\n\t\"./it/Chess.it.js\": [\n\t\t300,\n\t\t9,\n\t\t51\n\t],\n\t\"./it/Notation.it.js\": [\n\t\t301,\n\t\t7,\n\t\t52\n\t],\n\t\"./it/Playchess.it.js\": [\n\t\t302,\n\t\t9,\n\t\t53\n\t],\n\t\"./it/Training.it.js\": [\n\t\t303,\n\t\t9,\n\t\t54\n\t],\n\t\"./lt/Chess.lt.js\": [\n\t\t304,\n\t\t9,\n\t\t55\n\t],\n\t\"./lt/Playchess.lt.js\": [\n\t\t305,\n\t\t9,\n\t\t56\n\t],\n\t\"./lt/Training.lt.js\": [\n\t\t306,\n\t\t9,\n\t\t57\n\t],\n\t\"./nl/Chess.nl.js\": [\n\t\t307,\n\t\t9,\n\t\t58\n\t],\n\t\"./nl/Fritz.nl.js\": [\n\t\t308,\n\t\t9,\n\t\t59\n\t],\n\t\"./nl/MyMoves.nl.js\": [\n\t\t309,\n\t\t9,\n\t\t60\n\t],\n\t\"./nl/Notation.nl.js\": [\n\t\t310,\n\t\t7,\n\t\t61\n\t],\n\t\"./nl/Playchess.nl.js\": [\n\t\t311,\n\t\t9,\n\t\t62\n\t],\n\t\"./nl/Training.nl.js\": [\n\t\t312,\n\t\t9,\n\t\t63\n\t],\n\t\"./no/Chess.no.js\": [\n\t\t313,\n\t\t9,\n\t\t64\n\t],\n\t\"./no/Fritz.no.js\": [\n\t\t314,\n\t\t9,\n\t\t65\n\t],\n\t\"./no/Notation.no.js\": [\n\t\t315,\n\t\t7,\n\t\t66\n\t],\n\t\"./no/Playchess.no.js\": [\n\t\t316,\n\t\t9,\n\t\t67\n\t],\n\t\"./no/Training.no.js\": [\n\t\t317,\n\t\t9,\n\t\t68\n\t],\n\t\"./no/openings.no.js\": [\n\t\t318,\n\t\t9,\n\t\t69\n\t],\n\t\"./pl/Chess.pl.js\": [\n\t\t319,\n\t\t9,\n\t\t70\n\t],\n\t\"./pl/Notation.pl.js\": [\n\t\t320,\n\t\t7,\n\t\t71\n\t],\n\t\"./pl/Playchess.pl.js\": [\n\t\t321,\n\t\t9,\n\t\t72\n\t],\n\t\"./pl/Training.pl.js\": [\n\t\t322,\n\t\t9,\n\t\t73\n\t],\n\t\"./ro/Chess.ro.js\": [\n\t\t323,\n\t\t9,\n\t\t74\n\t],\n\t\"./ro/Notation.ro.js\": [\n\t\t324,\n\t\t7,\n\t\t75\n\t],\n\t\"./ro/Playchess.ro.js\": [\n\t\t325,\n\t\t9,\n\t\t76\n\t],\n\t\"./ro/Training.ro.js\": [\n\t\t326,\n\t\t9,\n\t\t77\n\t],\n\t\"./ru/Chess.ru.js\": [\n\t\t327,\n\t\t9,\n\t\t78\n\t],\n\t\"./ru/Fritz.ru.js\": [\n\t\t328,\n\t\t9,\n\t\t79\n\t],\n\t\"./ru/Notation.ru.js\": [\n\t\t329,\n\t\t7,\n\t\t80\n\t],\n\t\"./ru/Playchess.ru.js\": [\n\t\t330,\n\t\t9,\n\t\t81\n\t],\n\t\"./ru/Training.ru.js\": [\n\t\t331,\n\t\t9,\n\t\t82\n\t],\n\t\"./ru/openings.ru.js\": [\n\t\t332,\n\t\t9,\n\t\t83\n\t],\n\t\"./slo/Chess.slo.js\": [\n\t\t333,\n\t\t9,\n\t\t84\n\t],\n\t\"./slo/Playchess.slo.js\": [\n\t\t334,\n\t\t9,\n\t\t85\n\t],\n\t\"./slo/Training.slo.js\": [\n\t\t335,\n\t\t9,\n\t\t86\n\t],\n\t\"./sr/Chess.sr.js\": [\n\t\t336,\n\t\t9,\n\t\t87\n\t],\n\t\"./sr/Playchess.sr.js\": [\n\t\t337,\n\t\t9,\n\t\t88\n\t],\n\t\"./sr/Training.sr.js\": [\n\t\t338,\n\t\t9,\n\t\t89\n\t],\n\t\"./tr/Chess.tr.js\": [\n\t\t339,\n\t\t9,\n\t\t90\n\t],\n\t\"./tr/Playchess.tr.js\": [\n\t\t340,\n\t\t9,\n\t\t91\n\t],\n\t\"./tr/Training.tr.js\": [\n\t\t341,\n\t\t9,\n\t\t92\n\t],\n\t\"./uk/Chess.uk.js\": [\n\t\t342,\n\t\t9,\n\t\t93\n\t],\n\t\"./uk/Playchess.uk.js\": [\n\t\t343,\n\t\t9,\n\t\t94\n\t],\n\t\"./uk/Training.uk.js\": [\n\t\t344,\n\t\t9,\n\t\t95\n\t],\n\t\"./vi/Chess.vi.js\": [\n\t\t345,\n\t\t9,\n\t\t96\n\t],\n\t\"./vi/Playchess.vi.js\": [\n\t\t346,\n\t\t9,\n\t\t97\n\t],\n\t\"./vi/Training.vi.js\": [\n\t\t347,\n\t\t9,\n\t\t98\n\t],\n\t\"./zh/Chess.zh.js\": [\n\t\t348,\n\t\t9,\n\t\t99\n\t],\n\t\"./zh/Notation.zh.js\": [\n\t\t349,\n\t\t7,\n\t\t100\n\t],\n\t\"./zh/Playchess.zh.js\": [\n\t\t350,\n\t\t9,\n\t\t101\n\t],\n\t\"./zh/Training.zh.js\": [\n\t\t351,\n\t\t9,\n\t\t102\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(2).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, ids[1])\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 170;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./ClassicWood.module.css\": [\n\t\t352,\n\t\t3\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 171;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./CrystalsPieces.module.css\": [\n\t\t353,\n\t\t4\n\t],\n\t\"./FritzPieces.module.css\": [\n\t\t354,\n\t\t5\n\t],\n\t\"./OldstylePieces.module.css\": [\n\t\t355,\n\t\t6\n\t],\n\t\"./UscfPieces.module.css\": [\n\t\t356,\n\t\t7\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 172;\nmodule.exports = webpackAsyncContext;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","// ES 6 MW: Feb 27, 2020\r\n\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil'\r\n\r\nexport class HashTable\r\n{\r\n constructor( _funcHash, _funcEq )\r\n {\r\n if ( _funcHash )\r\n this.funcHash = _funcHash;\r\n\r\n if ( _funcEq )\r\n this.funcEq = _funcEq;\r\n\r\n this.impl = {};\r\n };\r\n\r\n impl = {};\r\n\r\n funcHash ( _obj )\r\n {\r\n return ObjUtil.hashCode( _obj );\r\n };\r\n\r\n funcEq ( _obj1, _obj2 )\r\n {\r\n return _obj1 === _obj2;\r\n };\r\n\r\n getItem ( _key )\r\n {\r\n var hashKey = this.funcHash( _key );\r\n var arrPairs = this.impl[ hashKey ];\r\n if ( !arrPairs )\r\n return undefined;\r\n\r\n var funcFilter =\r\n function( _pair )\r\n {\r\n return this.funcEq( _pair.key, _key );\r\n }.bind( this );\r\n\r\n\r\n var matches = arrPairs.filter( funcFilter );\r\n if ( matches != null && matches.length > 0 )\r\n return matches[ 0 ].value;\r\n\r\n return undefined;\r\n };\r\n\r\n setItem ( _key, _value )\r\n {\r\n var hashKey = this.funcHash( _key );\r\n var arrPairs = this.impl[ hashKey ];\r\n if ( !arrPairs )\r\n {\r\n arrPairs = [];\r\n this.impl[ hashKey ] = arrPairs;\r\n };\r\n\r\n for ( var inx = 0, len = arrPairs.length; inx < len; ++inx )\r\n {\r\n var pair = arrPairs[ inx ];\r\n if ( this.funcEq( pair.key, _key ) )\r\n {\r\n pair.value = _value;\r\n return;\r\n }\r\n };\r\n\r\n var newPair = { key: _key, value: _value };\r\n arrPairs.push( newPair );\r\n };\r\n\r\n removeItem ( _key )\r\n {\r\n var hashKey = this.funcHash( _key );\r\n var arrPairs = this.impl[ hashKey ];\r\n if ( !arrPairs )\r\n return;\r\n\r\n var funcFilter =\r\n function( _pair )\r\n {\r\n return !this.funcEq( _pair.key, _key );\r\n }.bind( this );\r\n\r\n\r\n var arrNewPairs = arrPairs.filter( funcFilter );\r\n this.impl[ hashKey ] = arrNewPairs;\r\n\r\n return undefined;\r\n };\r\n\r\n clear ()\r\n {\r\n this.impl = {};\r\n };\r\n}","// ST 2011\r\n// ES 6 MW: Feb 27, 2020\r\n\r\n//Не засираем объект, блджадь!\r\n\r\nimport { HashTable } from 'common/Patterns/HashTable'\r\n\r\nexport class ObjUtil\r\n{\r\n static clone = function( _src, _hash )\r\n {\r\n if ( !_hash )\r\n {\r\n _hash = new HashTable();\r\n }\r\n\r\n var there = _hash.getItem( _src );\r\n if ( there )\r\n {\r\n return there;\r\n }\r\n\r\n var clone = null;\r\n\r\n if ( _src.clone )\r\n {\r\n clone = _src.clone( _hash );\r\n }\r\n else\r\n {\r\n if ( ObjUtil.isArray( _src ) )\r\n {\r\n clone = [];\r\n }\r\n else\r\n clone = new _src.constructor();\r\n\r\n //DAVOR!!!\r\n _hash.setItem( _src, clone );\r\n\r\n ObjUtil.copyTo( _src, clone, false, _hash );\r\n\r\n\r\n }\r\n _hash.setItem( _src, clone );\r\n\r\n\r\n return clone;\r\n };\r\n\r\n static clone2 = function( _src )\r\n {\r\n return ObjUtil.copyTo2( _src, new _src.constructor() );\r\n };\r\n\r\n\r\n // Sehr schnell wegen nativer Impl von JSON im Browser:\r\n static cloneNoFunc = function( _src )\r\n {\r\n\r\n var str = JSON.stringify( _src );\r\n\r\n return JSON.parse( str );\r\n // return JSON.parse( JSON.stringify( _src ) );\r\n }\r\n\r\n static copyTo = function( _src, _dst, _onlyMissing, _hash )\r\n {\r\n //Array?\r\n\r\n for ( var prop in _src )\r\n {\r\n if ( _onlyMissing && prop in _dst )\r\n continue;\r\n\r\n var val = _src[ prop ];\r\n\r\n var copy = val;\r\n if ( val != null && typeof ( val ) === 'object' )\r\n copy = ObjUtil.clone( val, _hash );\r\n\r\n _dst[ prop ] = copy;\r\n }\r\n\r\n //IE8- - wir alle hassen ihn!\r\n if ( _src.toString !== _dst.toString )\r\n _dst.toString = _src.toString;\r\n return _dst;\r\n };\r\n static copyTo2 = function( _src, _dst )\r\n {\r\n for ( var prop in _src )\r\n {\r\n var val = _src[ prop ];\r\n\r\n var copy = val;\r\n if ( val != null && typeof ( val ) === 'object' )\r\n copy = ObjUtil.clone2( val );\r\n\r\n _dst[ prop ] = copy;\r\n }\r\n\r\n return _dst;\r\n };\r\n\r\n\r\n static _CMP( _val1, _val2 )\r\n {\r\n if ( ( _val1 === undefined ) !== ( _val2 === undefined ) )\r\n return false;\r\n\r\n if ( ( _val1 === undefined ) && ( _val2 === undefined ) )\r\n return true;\r\n\r\n if ( ( _val1 === null ) !== ( _val2 === null ) )\r\n return false;\r\n\r\n if ( ( _val1 === null ) && ( _val2 === null ) )\r\n return true;\r\n\r\n var typ1 = typeof ( _val1 );\r\n var typ2 = typeof ( _val2 );\r\n\r\n if ( ( typ1 === \"object\" ) !== ( typ2 === \"object\" ) )\r\n return false;\r\n\r\n if ( ( typ1 === \"object\" ) && ( typ2 === \"object\" ) )\r\n return ObjUtil.equals( _val1, _val2 );\r\n\r\n return _val1 === _val2;\r\n\r\n }\r\n\r\n static equals = function( _obj1, _obj2 )\r\n {\r\n if ( _obj1.equals )\r\n return _obj1.equals( _obj2 );\r\n for ( var prop in _obj1 )\r\n {\r\n var valMy = _obj1[ prop ];\r\n var valHis = _obj2[ prop ];\r\n\r\n if ( !ObjUtil._CMP( valMy, valHis ) )\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n static isEmpty = function( _obj )\r\n {\r\n return !Object.keys( _obj ).length;\r\n };\r\n\r\n static isFunction = function( _obj )\r\n {\r\n return !!( _obj && _obj.constructor && _obj.call && _obj.apply );\r\n };\r\n\r\n static isArray = function( _arr )\r\n {\r\n return Object.prototype.toString.call( _arr ) === '[object Array]';\r\n };\r\n\r\n static hashCode = function( _obj )\r\n {\r\n if ( _obj.hashCode )\r\n return _obj.hashCode();\r\n if ( typeof ( _obj ) === 'object' )\r\n return StringHash( _obj );\r\n return djb2( _obj.toString() );\r\n }\r\n\r\n static mixObject( me, mix )\r\n {\r\n for ( var m in mix )\r\n {\r\n if ( mix.hasOwnProperty( m ) )\r\n me[ m ] = mix[ m ];\r\n };\r\n }\r\n}\r\n\r\nfunction djb2( _str )\r\n{\r\n var hash = 5381;\r\n\r\n for ( var inx = 0; inx < _str.length; ++inx )\r\n {\r\n let c = _str.charCodeAt( inx ) & 0xFF;\r\n hash = 0xFFFFFFFF & ( ( ( hash << 5 ) + hash ) + c ); /* hash * 33 + c */\r\n }\r\n\r\n return hash;\r\n}\r\n\r\nfunction StringHash( _obj )\r\n{\r\n\r\n var str = typeof ( _obj ) + _obj.constructor.toString();\r\n return djb2( str );\r\n}\r\n\r\nexport function EnumToString( _enumType, _val )\r\n{\r\n for ( var inx in _enumType )\r\n {\r\n if ( _enumType[ inx ] === _val )\r\n return inx;\r\n }\r\n return \"\";\r\n};\r\n\r\nexport function Mixin( me, mix )\r\n{\r\n\tfor ( var m in mix )\r\n\t{\r\n\t\tif ( mix.hasOwnProperty( m ) )\r\n\t\t\tme.prototype[m] = mix[m];\r\n\t};\r\n};\r\n\r\n// NH2020 Added this, can mixin multiple classes. Code from here:\r\n// https://blog.bitsrc.io/understanding-mixins-in-javascript-de5d3e02b466\r\nexport function classMixin (cls, ...src)\r\n{\r\n for (let _cl of src) \r\n {\r\n for (var key of Object.getOwnPropertyNames(_cl.prototype)) \r\n {\r\n cls.prototype[key] = _cl.prototype[key];\r\n //console.log(\"KEY: \" + key);\r\n }\r\n }\r\n}\r\n\r\n// function StringToEnum( _enumType, _val )\r\n// {\r\n// if ( _val in _enumType )\r\n// return _enumType[ _val ];\r\n// return undefined;\r\n// };\r\n\r\n// function StringToEnumFlags( _enumType, _val )\r\n// {\r\n// var arrParts = _val.split( '|' );\r\n// var res = 0;\r\n// for ( var inx = 0, len = arrParts.length; inx < len; ++inx )\r\n// {\r\n// var strVal = arrParts[ inx ];\r\n// var val = StringToEnum( _enumType, strVal );\r\n// if ( val )\r\n// res |= val;\r\n// }\r\n// return res;\r\n// };\r\n\r\n// function evalObj( _obj )\r\n// {\r\n// var res = {};\r\n// for ( var prop in _obj )\r\n// {\r\n// var val = _obj[ prop ];\r\n// res[ prop ] = val;\r\n\r\n// if ( typeof ( val ) !== \"string\" )\r\n// continue;\r\n// if ( val.indexOf( \"{\" ) < 0 )\r\n// continue;\r\n\r\n// res[ prop ] = eval( \"(\" + val + \")\" );\r\n// }\r\n\r\n// return res;\r\n// };\r\n\r\nexport function minusToCamel( _str )\r\n{\r\n for ( var inx = _str.indexOf( \"-\" );\r\n inx >= 0;\r\n inx = _str.indexOf( \"-\" ) )\r\n {\r\n var pre = _str.substring( 0, inx );\r\n var post = _str.substring( inx + 1 );\r\n if ( post.length > 0 )\r\n {\r\n post = post.charAt( 0 ).toUpperCase() +\r\n ( ( post.length > 1 ) ? post.substring( 1 ) : \"\" );\r\n }\r\n\r\n _str = pre + post;\r\n }\r\n\r\n return _str;\r\n}","// ST 2011\r\n\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nexport class StringBuilder\r\n{\r\n\t//[Zeile, [Zeile, [Zeile, [Zeile]]]]\r\n\r\n\tconstructor ()\r\n\t{\r\n\t\tthis.sp = null;\r\n\t\tthis.ep = null;\r\n\t\tthis.l = 0;\r\n\t\tthis.accum = '';\r\n\t\tthis.MAX_LEN = 2800;\r\n\t}\r\n\r\n// \"#IFDEBUG\"\r\n// \tthis.debugStr = '';\r\n// \"#ENDIF\"\r\n\r\n\t\r\n\r\n\tappendFormat ( )\r\n\t{\r\n\t\tvar str = String.formatEx.apply( \"\", arguments );\r\n\t\tthis.append( str );\r\n\t};\r\n\r\n\tappend ( what )\r\n\t{\r\n\t\t// \"#IFDEBUG\"\r\n\t\t// this.debugStr += what;\r\n\t\t// \"#ENDIF\"\r\n\r\n\t\tthis.accum += what;\r\n\t\tif ( this.accum.length > this.MAX_LEN )\r\n\t\t{\r\n\t\t\tif ( this.sp === null )\r\n\t\t\t{\r\n\t\t\t\tthis.ep = [];\r\n\t\t\t\tthis.sp = this.ep;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar oep = this.ep;\r\n\t\t\t\tthis.ep = [];\r\n\t\t\t\toep[1] = this.ep;\r\n\t\t\t}\r\n\t\t\tthis.ep[0] = this.accum;\r\n\t\t\tthis.accum = '';\r\n\t\t\t++this.l;\r\n\t\t}\r\n\t}\r\n\r\n\ttoString ()\r\n\t{\r\n\t\tif ( this.l === 0 ) \r\n\t\treturn this.accum;\r\n\r\n\t\twhile ( this.l > 1 )\r\n\t\t{\r\n\t\t\tvar ptr = this.sp;\r\n\t\t\tvar nsp = [];\r\n\t\t\tvar nep = nsp;\r\n\t\t\tvar nl = 0;\r\n\r\n\t\t\twhile ( typeof ( ptr ) != 'undefined' )\r\n\t\t\t{\r\n\t\t\t\tif ( typeof ( nep[0] ) == 'undefined' )\r\n\t\t\t\t{\r\n\t\t\t\t\tnep[0] = ptr[0];\r\n\t\t\t\t\t++nl;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( typeof ( ptr[0] ) != 'undefined' ) nep[0] += ptr[0];\r\n\t\t\t\t\tnep[1] = [];\r\n\t\t\t\t\tnep = nep[1];\r\n\t\t\t\t}\r\n\t\t\t\tptr = ptr[1];\r\n\t\t\t}\r\n\t\t\tthis.sp = nsp;\r\n\t\t\tthis.ep = nep;\r\n\t\t\tthis.l = nl;\r\n\t\t}\r\n\t\treturn this.sp[0] + this.accum;\r\n\t};\r\n}","// ES 6 MW: Feb 27, 2020\r\n\r\n/* eslint-disable eqeqeq */\r\n\r\n// NH2020I Eine Datei, in der einige Schachlogiken definiert sind.\r\n// Es gibt zB ein Objekt Pieces, in dem definiert wird, welcher Figur, welcher int Wert zugeordnet wird\r\n// Oder auch: definition der Squares des Brettes, Castle Rights etc.\r\n\r\nexport var Side =\r\n{\r\n\tNONE: -1,\r\n\tWHITE: 0,\r\n\tBLACK: 1,\r\n\r\n\tSIDE_OFFSET: 3\r\n};\r\n\r\nSide.SIDE_MASK = 8;\r\n\r\nSide.other = function (_sd)\r\n{\r\n\treturn _sd ^ Side.BLACK;\r\n};\r\n\r\nSide.fromString = function (_str)\r\n{\r\n\treturn _str === \"w\" ? Side.WHITE : Side.BLACK;\r\n};\r\n\r\nSide.toString = function (_sd)\r\n{\r\n\treturn _sd === Side.WHITE ? \"w\" : \"b\";\r\n};\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport var Piece = {\r\n\tNONE: 0,\r\n\tKING: 1,\r\n\tQUEEN: 2,\r\n\tKNIGHT: 3,\r\n\tBISHOP: 4,\r\n\tROOK: 5,\r\n\tPAWN: 6,\r\n\r\n\tW_KING: 1,\r\n\tW_QUEEN: 2,\r\n\tW_KNIGHT: 3,\r\n\tW_BISHOP: 4,\r\n\tW_ROOK: 5,\r\n\tW_PAWN: 6,\r\n\r\n\tB_KING: 9,\r\n\tB_QUEEN: 10,\r\n\tB_KNIGHT: 11,\r\n\tB_BISHOP: 12,\r\n\tB_ROOK: 13,\r\n\tB_PAWN: 14,\r\n\r\n\tCOLOUR: 8,\r\n\tWHITE: 0,\r\n\tBLACK: 8,\r\n\r\n\tJOKER: 7\r\n};\r\n\r\nPiece.PIECE_MASK = 7;\r\nPiece.SIDE_MASK = 8;\r\n\r\nPiece.nominal = function (_pc)\r\n{\r\n\treturn _pc & Piece.PIECE_MASK;\r\n};\r\n\r\nPiece.side = function (_pc)\r\n{\r\n\treturn (_pc & Side.SIDE_MASK) / 8;\r\n};\r\n\r\nPiece.changeSide = function (_pc)\r\n{\r\n\treturn _pc ^ Side.SIDE_MASK;\r\n};\r\n\r\nPiece.make = function (_pc, _sd)\r\n{\r\n\treturn _pc | _sd * 8;\r\n};\r\n\r\nPiece.g_arrPieces =\r\n\t[ \" \",\r\n\t\t\"K\", \"Q\", \"N\", \"B\", \"R\", \"P\",\r\n\t\t\" \", \" \",\r\n\t\t\"k\", \"q\", \"n\", \"b\", \"r\", \"p\" ];\r\n\r\nPiece.toString = function (_pc)\r\n{\r\n\treturn Piece.g_arrPieces[ _pc ];\r\n};\r\n\r\nPiece.fromString = function (_ch)\r\n{\r\n\tvar inx = Piece.g_arrPieces.indexOf(_ch);\r\n\tif (inx < 0)\r\n\t\treturn Piece.NONE;\r\n\treturn inx;\r\n};\r\n\r\n// Piece.getNameAccusative = function (_pc) {\r\n// \tswitch (_pc) {\r\n// \t\tcase Piece.KING:\r\n// \t\t\treturn lm.KING_ACC;\r\n// \t\tcase Piece.QUEEN:\r\n// \t\t\treturn lm.QUEEN_ACC;\r\n// \t\tcase Piece.KNIGHT:\r\n// \t\t\treturn lm.KNIGHT_ACC;\r\n// \t\tcase Piece.BISHOP:\r\n// \t\t\treturn lm.BISHOP_ACC;\r\n// \t\tcase Piece.ROOK:\r\n// \t\t\treturn lm.ROOK_ACC;\r\n// \t\tcase Piece.PAWN:\r\n// \t\t\treturn lm.PAWN_ACC;\r\n// \t}\r\n// };\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport var CastleRights = {\r\n\tNONE: 0,\r\n\tW_000: 1,\r\n\tW_00: 2,\r\n\tB_000: 4,\r\n\tB_00: 8\r\n};\r\n\r\nCastleRights.W_ALL = CastleRights.W_00 | CastleRights.W_000;\r\nCastleRights.B_ALL = CastleRights.B_00 | CastleRights.B_000;\r\nCastleRights.ALL = CastleRights.W_ALL | CastleRights.B_ALL;\r\n\r\nCastleRights.toString = function (_cr)\r\n{\r\n\tif (_cr === CastleRights.NONE)\r\n\t\treturn \"-\";\r\n\tvar res = \"\";\r\n\tif (_cr & CastleRights.W_00)\r\n\t\tres += \"K\";\r\n\tif (_cr & CastleRights.W_000)\r\n\t\tres += \"Q\";\r\n\tif (_cr & CastleRights.B_00)\r\n\t\tres += \"k\";\r\n\tif (_cr & CastleRights.B_000)\r\n\t\tres += \"q\";\r\n\treturn res;\r\n}\r\n\r\nCastleRights.fromString = function (_str)\r\n{\r\n\tvar res = CastleRights.NONE;\r\n\t// var it = new StringIterator(_str);\r\n\r\n\t// for (var ch = it.Next();\r\n\t// \tch !== 0;\r\n\t// \tch = it.Next()) {\r\n\t// \tswitch (ch) {\r\n\t// \t\tcase 'K':\r\n\t// \t\t\tres |= CastleRights.W_00;\r\n\t// \t\t\tbreak;\r\n\t// \t\tcase 'Q':\r\n\t// \t\t\tres |= CastleRights.W_000;\r\n\t// \t\t\tbreak;\r\n\t// \t\tcase 'k':\r\n\t// \t\t\tres |= CastleRights.B_00;\r\n\t// \t\t\tbreak;\r\n\t// \t\tcase 'q':\r\n\t// \t\t\tres |= CastleRights.B_000;\r\n\t// \t\t\tbreak;\r\n\t// \t}\r\n\t// }\r\n\r\n\treturn res;\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport var Square = {\r\n\tROW_OFFSET: 0,\r\n\tROW_MASK: 7,\r\n\tCOL_OFFSET: 3,\r\n\tCOL_MASK: 7 << 3,\r\n\r\n\tA1: 0, A2: 1, A3: 2, A4: 3, A5: 4, A6: 5, A7: 6, A8: 7,\r\n\tB1: 8 + 0, B2: 8 + 1, B3: 8 + 2, B4: 8 + 3, B5: 8 + 4, B6: 8 + 5, B7: 8 + 6, B8: 8 + 7,\r\n\tC1: 16 + 0, C2: 16 + 1, C3: 16 + 2, C4: 16 + 3, C5: 16 + 4, C6: 16 + 5, C7: 16 + 6, C8: 16 + 7,\r\n\tD1: 24 + 0, D2: 24 + 1, D3: 24 + 2, D4: 24 + 3, D5: 24 + 4, D6: 24 + 5, D7: 24 + 6, D8: 24 + 7,\r\n\r\n\tE1: 32 + 0, E2: 32 + 1, E3: 32 + 2, E4: 32 + 3, E5: 32 + 4, E6: 32 + 5, E7: 32 + 6, E8: 32 + 7,\r\n\tF1: 40 + 0, F2: 40 + 1, F3: 40 + 2, F4: 40 + 3, F5: 40 + 4, F6: 40 + 5, F7: 40 + 6, F8: 40 + 7,\r\n\tG1: 48 + 0, G2: 48 + 1, G3: 48 + 2, G4: 48 + 3, G5: 48 + 4, G6: 48 + 5, G7: 48 + 6, G8: 48 + 7,\r\n\tH1: 56 + 0, H2: 56 + 1, H3: 56 + 2, H4: 56 + 3, H5: 56 + 4, H6: 56 + 5, H7: 56 + 6, H8: 56 + 7,\r\n\r\n\tC_A: 0, C_B: 1, C_C: 2, C_D: 3, C_E: 4, C_F: 5, C_G: 6, C_H: 7,\r\n\tR_1: 0, R_2: 1, R_3: 2, R_4: 3, R_5: 4, R_6: 5, R_7: 6, R_8: 7\r\n};\r\n\r\nSquare.g_arrSquareStrs = [\r\n\t\"a1\", \"a2\", \"a3\", \"a4\", \"a5\", \"a6\", \"a7\", \"a8\",\r\n\t\"b1\", \"b2\", \"b3\", \"b4\", \"b5\", \"b6\", \"b7\", \"b8\",\r\n\t\"c1\", \"c2\", \"c3\", \"c4\", \"c5\", \"c6\", \"c7\", \"c8\",\r\n\t\"d1\", \"d2\", \"d3\", \"d4\", \"d5\", \"d6\", \"d7\", \"d8\",\r\n\t\"e1\", \"e2\", \"e3\", \"e4\", \"e5\", \"e6\", \"e7\", \"e8\",\r\n\t\"f1\", \"f2\", \"f3\", \"f4\", \"f5\", \"f6\", \"f7\", \"f8\",\r\n\t\"g1\", \"g2\", \"g3\", \"g4\", \"g5\", \"g6\", \"g7\", \"g8\",\r\n\t\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"h7\", \"h8\"\r\n];\r\n\r\n// NH2021\r\nSquare.Names = Square.g_arrSquareStrs;\r\n\r\nSquare.toString = function (n)\r\n{\r\n\treturn this.g_arrSquareStrs[ n ];\r\n};\r\n\r\nSquare.getStr = Square.toString;\r\n\r\nSquare.getStrXY = function (x, y)\r\n{\r\n\treturn Square.getStr(Square.get64(x, y));\r\n};\r\n\r\nSquare.colToString = function (_col)\r\n{\r\n\treturn String.fromCharCode(\"a\".charCodeAt() + _col);\r\n}\r\n\r\nSquare.rowToString = function (_row)\r\n{\r\n\treturn _row + 1;\r\n}\r\n\r\nSquare.colFromString = function (_str)\r\n{\r\n\treturn _str.charCodeAt(0) - \"a\".charCodeAt();\r\n}\r\n\r\nSquare.rowFromString = function (_str)\r\n{\r\n\treturn _str.charCodeAt(0) - \"1\".charCodeAt();\r\n}\r\n\r\nSquare.fromString = function (_str)\r\n{\r\n\tif (!_str || _str.length !== 2)\r\n\t\treturn undefined;\r\n\tvar c = Square.colFromString(_str.charAt(0));\r\n\tvar r = Square.rowFromString(_str.charAt(1));\r\n\r\n\treturn Square.I(c, r);\r\n};\r\n\r\nSquare.R = function (_inx)\r\n{\r\n\treturn (_inx & Square.ROW_MASK) >> Square.ROW_OFFSET;\r\n};\r\n\r\nSquare.C = function (_inx)\r\n{\r\n\treturn (_inx & Square.COL_MASK) >> Square.COL_OFFSET;\r\n};\r\n\r\nSquare.F = function (_inx)\r\n{\r\n\treturn (_inx & Square.COL_MASK) >> Square.COL_OFFSET;\r\n};\r\n\r\nSquare.getRank = Square.R;\r\n\r\nSquare.getFile = Square.C;\r\n\r\nSquare.DIST = function (_fld1, _fld2)\r\n{\r\n\tvar dr = Square.R(_fld1) - Square.R(_fld2);\r\n\tvar dc = Square.C(_fld1) - Square.C(_fld2);\r\n\treturn Math.sqrt(dr * dr + dc * dc);\r\n};\r\n\r\nSquare.I = function (_col, _row)\r\n{\r\n\treturn _col * 8 + _row;\r\n};\r\n\r\n// NH2021\r\nSquare.getTranslate = function (squareIndex, squareSize, whiteIsBottom)\r\n{\r\n\tif (squareIndex === -1)\r\n\t\treturn undefined;\r\n\telse if (whiteIsBottom)\r\n\t\treturn {x: Square.C(squareIndex) * squareSize, y: -Square.R(squareIndex) * squareSize};\r\n\telse\r\n\t\treturn {x: (7 - Square.C(squareIndex)) * squareSize, y: (-7 + Square.R(squareIndex)) * squareSize};\r\n}\r\n\r\nSquare.getArrowTranslate = function (squareIndex, whiteIsBottom)\r\n{\r\n\tif (squareIndex === -1)\r\n\t\treturn undefined;\r\n\telse if (whiteIsBottom)\r\n\t\treturn {x: Square.C(squareIndex) * 100, y: -Square.R(squareIndex) * 100}\r\n\telse\r\n\t\treturn {x: (7 - Square.C(squareIndex)) * 100, y: (-7 + Square.R(squareIndex)) * 100};\r\n}\r\n\r\n// a clearer naming of Square.I( col, row ) below\r\nSquare.get64 = Square.I;\r\n\r\nSquare.isLegal = function (_col, _row)\r\n{\r\n\treturn _col <= Square.C_H &&\r\n\t\t_col >= Square.C_A &&\r\n\t\t_row <= Square.R_8 &&\r\n\t\t_row >= Square.R_1;\r\n};\r\n\r\nSquare.isDark = function (_inx)\r\n{\r\n\tvar col = Square.C(_inx);\r\n\tvar row = Square.R(_inx);\r\n\treturn !((col + row) % 2);\r\n};\r\n\r\nSquare.isLight = function (_inx)\r\n{\r\n\treturn !Square.isDark(_inx);\r\n};\r\n\r\nSquare.isCenterFile = function (s)\r\n{\r\n\treturn Square.F(s) == Square.C_D || Square.F(s) == Square.C_E;\r\n};\r\n\r\nSquare.isCenterRank = function (s)\r\n{\r\n\treturn Square.R(s) == Square.R_4 || Square.R(s) == Square.R_5;\r\n};\r\n\r\nSquare.isCenterSquare = function (_s)\r\n{\r\n\treturn Square.isCenterFile(_s) && Square.isCenterRank(_s);\r\n};\r\n\r\nSquare.getDist = function (a, b)\r\n{\r\n\tvar dFile = Square.getFile(a) - Square.getFile(b);\r\n\tvar dRank = Square.getRank(a) - Square.getRank(b);\r\n\treturn Math.sqrt(dFile * dFile + dRank * dRank);\r\n};\r\n\r\nSquare.getFileDist = function (a, b)\r\n{\r\n\treturn Square.getFile(a) - Square.getFile(b);\r\n};\r\n\r\nSquare.getPromRow = function (_sd)\r\n{\r\n\treturn _sd === Side.WHITE ? Square.R_8 : Square.R_1;\r\n};\r\n\r\n","// ES 6 MW: Feb 27, 2020\r\n\r\nexport class strUtil\r\n{\r\n\tstatic encodeUTF8( s )\r\n\t{\r\n\t\treturn unescape( encodeURIComponent( s ) );\r\n\t};\r\n\r\n\tstatic decodeUTF8( s )\r\n\t{\r\n\t\t//\treturn decodeURIComponent( escape( s ) );\r\n\t\t//\treturn decodeURIComponent( encodeURI( s ) ); // escape is deprecated\r\n\t\treturn strUtil.utf8ArrayToStr( s );\r\n\t};\r\n\r\n\tstatic test()\r\n\t{\r\n\t\tvar str = \"Rhône\";\r\n\t\tvar u8 = strUtil.encodeUTF8( str );\r\n\t\treturn strUtil.mayBeUtf8( u8 );\r\n\t};\r\n\r\n\tstatic utf8ArrayToStr = function( array )\r\n\t{\r\n\t\t//Hatten wir doch eine UTF8 Konverting. Achso, wo?\r\n\t\tvar out, i, len, c;\r\n\t\tvar char2, char3;\r\n\r\n\t\tout = \"\";\r\n\t\tlen = array.length;\r\n\t\ti = 0;\r\n\t\twhile ( i < len )\r\n\t\t{\r\n\t\t\tc = array[ i++ ].charCodeAt( 0 );\r\n\r\n\t\t\tswitch ( c >> 4 )\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:\r\n\t\t\t\t\t// 0xxxxxxx\r\n\t\t\t\t\tout += String.fromCharCode( c );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 12: case 13:\r\n\t\t\t\t\t// 110x xxxx 10xx xxxx\r\n\t\t\t\t\tif ( i < len )\t// ß am Ende eines Strings\r\n\t\t\t\t\t\tchar2 = array[ i++ ].charCodeAt( 0 );\r\n\t\t\t\t\tout += String.fromCharCode( ( ( c & 0x1F ) << 6 ) | ( char2 & 0x3F ) );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 14:\r\n\t\t\t\t\t// 1110 xxxx 10xx xxxx 10xx xxxx\r\n\t\t\t\t\tif ( i < len )\r\n\t\t\t\t\t\tchar2 = array[ i++ ].charCodeAt( 0 );\r\n\t\t\t\t\tif ( i < len )\r\n\t\t\t\t\t\tchar3 = array[ i++ ].charCodeAt( 0 );\r\n\t\t\t\t\tout += String.fromCharCode( ( ( c & 0x0F ) << 12 ) |\r\n\t\t\t\t\t\t( ( char2 & 0x3F ) << 6 ) |\r\n\t\t\t\t\t\t( ( char3 & 0x3F ) << 0 ) );\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn out;\r\n\t};\r\n\r\n\t// from SV String \r\n\tstatic mayBeUtf8 = function( str )\r\n\t{\r\n\t\tvar bUtf8 = false; // bAnsi = false;\r\n\t\tfor ( var i = 0; i < str.length && !bUtf8; i++ )\r\n\t\t{\r\n\t\t\tvar c = str.charCodeAt( i );\r\n\t\t\tif ( c & 0x80 )\r\n\t\t\t{\r\n\t\t\t\tif ( 0xC2 <= c && c <= 0xDF && 0x80 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0xBF )\r\n\t\t\t\t{\r\n\t\t\t\t\ti += 2;\r\n\t\t\t\t\tbUtf8 = true;\r\n\t\t\t\t}\r\n\t\t\t\telse if ( ( c == 0xE0 && 0xA0 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0xBF && 0x80 <= str.charCodeAt( i + 2 ) && str.charCodeAt( i + 2 ) <= 0xBF )\r\n\t\t\t\t\t|| ( ( ( 0xE1 <= c && c <= 0xEC ) || c == 0xEE || c == 0xEF )\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0xBF\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 2 ) && str.charCodeAt( i + 2 ) <= 0xBF\r\n\t\t\t\t\t)\r\n\t\t\t\t\t|| ( c == 0xED\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0x9F\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 2 ) && str.charCodeAt( i + 2 ) <= 0xBF\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t{\r\n\t\t\t\t\ti += 3;\r\n\t\t\t\t\tbUtf8 = true;\r\n\t\t\t\t}\r\n\t\t\t\telse if ( ( c == 0xF0\r\n\t\t\t\t\t&& 0x90 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0xBF\r\n\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 2 ) && str.charCodeAt( i + 2 ) <= 0xBF\r\n\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 3 ) && str.charCodeAt( i + 3 ) <= 0xBF\r\n\t\t\t\t)\r\n\t\t\t\t\t|| ( 0xF1 <= c && c <= 0xF3\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0xBF\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 2 ) && str.charCodeAt( i + 2 ) <= 0xBF\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 3 ) && str.charCodeAt( i + 3 ) <= 0xBF\r\n\t\t\t\t\t)\r\n\t\t\t\t\t|| ( c == 0xF4\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 1 ) && str.charCodeAt( i + 1 ) <= 0x8F\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 2 ) && str.charCodeAt( i + 2 ) <= 0xBF\r\n\t\t\t\t\t\t&& 0x80 <= str.charCodeAt( i + 3 ) && str.charCodeAt( i + 3 ) <= 0xBF\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t{\r\n\t\t\t\t\ti += 4;\r\n\t\t\t\t\tbUtf8 = true;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t//\tbAnsi = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn bUtf8;\r\n\t};\r\n\r\n\tstatic hasASCIIgreater127 = function( str )\r\n\t{\r\n\t\tfor ( var i = 0; i < str.length; i++ )\r\n\t\t{\r\n\t\t\tvar c = str.charCodeAt( i );\r\n\t\t\tif ( c & 0x80 )\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\r\n\tstatic codeURLParameter = function( s )\r\n\t{\r\n\t\treturn strUtil.base64.encode( s );\r\n\t};\r\n\r\n\tstatic decodeURLParameter = function( s )\r\n\t{\r\n\t\treturn strUtil.base64.decode( s );\r\n\t};\r\n\r\n\tstatic base64 = {\r\n\r\n\t\tbase64s: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",\r\n\r\n\t\tencode( decStr )\r\n\t\t{\r\n\t\t\tif ( typeof btoa === 'function' )\r\n\t\t\t{\r\n\t\t\t\treturn btoa( decStr );\r\n\t\t\t}\r\n\t\t\tvar base64s = this.base64s;\r\n\t\t\tvar bits;\r\n\t\t\tvar dual;\r\n\t\t\tvar i = 0;\r\n\t\t\tvar encOut = \"\";\r\n\t\t\twhile ( decStr.length >= i + 3 )\r\n\t\t\t{\r\n\t\t\t\tbits = ( decStr.charCodeAt( i++ ) & 0xff ) << 16 | ( decStr.charCodeAt( i++ ) & 0xff ) << 8 | decStr.charCodeAt( i++ ) & 0xff;\r\n\t\t\t\tencOut += base64s.charAt( ( bits & 0x00fc0000 ) >> 18 ) + base64s.charAt( ( bits & 0x0003f000 ) >> 12 ) + base64s.charAt( ( bits & 0x00000fc0 ) >> 6 ) + base64s.charAt( ( bits & 0x0000003f ) );\r\n\t\t\t}\r\n\t\t\tif ( decStr.length - i > 0 && decStr.length - i < 3 )\r\n\t\t\t{\r\n\t\t\t\tdual = Boolean( decStr.length - i - 1 );\r\n\t\t\t\tbits = ( ( decStr.charCodeAt( i++ ) & 0xff ) << 16 ) | ( dual ? ( decStr.charCodeAt( i ) & 0xff ) << 8 : 0 );\r\n\t\t\t\tencOut += base64s.charAt( ( bits & 0x00fc0000 ) >> 18 ) + base64s.charAt( ( bits & 0x0003f000 ) >> 12 ) + ( dual ? base64s.charAt( ( bits & 0x00000fc0 ) >> 6 ) : '=' ) + '=';\r\n\t\t\t}\r\n\t\t\treturn ( encOut );\r\n\t\t},\r\n\r\n\t\tdecode( encStr )\r\n\t\t{\r\n\t\t\tif ( typeof atob === 'function' )\r\n\t\t\t{\r\n\t\t\t\treturn atob( encStr );\r\n\t\t\t}\r\n\t\t\tvar base64s = this.base64s;\r\n\t\t\tvar bits;\r\n\t\t\tvar decOut = \"\";\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( i = 0; i < encStr.length; i += 4 )\r\n\t\t\t{\r\n\t\t\t\tbits = ( base64s.indexOf( encStr.charAt( i ) ) & 0xff ) << 18 | ( base64s.indexOf( encStr.charAt( i + 1 ) ) & 0xff ) << 12 | ( base64s.indexOf( encStr.charAt( i + 2 ) ) & 0xff ) << 6 | base64s.indexOf( encStr.charAt( i + 3 ) ) & 0xff;\r\n\t\t\t\tdecOut += String.fromCharCode( ( bits & 0xff0000 ) >> 16, ( bits & 0xff00 ) >> 8, bits & 0xff );\r\n\t\t\t}\r\n\t\t\tif ( encStr.charCodeAt( i - 2 ) === 61 )\r\n\t\t\t{\r\n\t\t\t\treturn ( decOut.substring( 0, decOut.length - 2 ) );\r\n\t\t\t}\r\n\t\t\tif ( encStr.charCodeAt( i - 1 ) === 61 )\r\n\t\t\t{\r\n\t\t\t\treturn ( decOut.substring( 0, decOut.length - 1 ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn ( decOut );\r\n\t\t},\r\n\r\n\t\tdecodeToBinary( base64 )\r\n\t\t{\r\n\t\t\tthis.lookup = new Uint8Array( 256 );\r\n\t\t\tfor ( var i = 0; i < this.base64s.length; i++ )\r\n\t\t\t{\r\n\t\t\t\tthis.lookup[ this.base64s.charCodeAt( i ) ] = i;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tvar bufferLength = base64.length * 0.75,\r\n\t\t\t\tlen = base64.length, i, p = 0,\r\n\t\t\t\tencoded1, encoded2, encoded3, encoded4;\r\n\r\n\t\t\tif ( base64[ base64.length - 1 ] === \"=\" )\r\n\t\t\t{\r\n\t\t\t\tbufferLength--;\r\n\t\t\t\tif ( base64[ base64.length - 2 ] === \"=\" )\r\n\t\t\t\t{\r\n\t\t\t\t\tbufferLength--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar arraybuffer = new ArrayBuffer( bufferLength ),\r\n\t\t\t\tbytes = new Uint8Array( arraybuffer );\r\n\r\n\t\t\tfor ( i = 0; i < len; i += 4 )\r\n\t\t\t{\r\n\t\t\t\tencoded1 = this.lookup[ base64.charCodeAt( i ) ];\r\n\t\t\t\tencoded2 = this.lookup[ base64.charCodeAt( i + 1 ) ];\r\n\t\t\t\tencoded3 = this.lookup[ base64.charCodeAt( i + 2 ) ];\r\n\t\t\t\tencoded4 = this.lookup[ base64.charCodeAt( i + 3 ) ];\r\n\r\n\t\t\t\tbytes[ p++ ] = ( encoded1 << 2 ) | ( encoded2 >> 4 );\r\n\t\t\t\tbytes[ p++ ] = ( ( encoded2 & 15 ) << 4 ) | ( encoded3 >> 2 );\r\n\t\t\t\tbytes[ p++ ] = ( ( encoded3 & 3 ) << 6 ) | ( encoded4 & 63 );\r\n\t\t\t}\r\n\r\n\t\t\treturn arraybuffer;\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tstatic getURLParam = function( paramName )\r\n\t{\r\n\t\t// paramName = paramName.replace(/[\\[]/,\"\\\\\\[\").replace(/[\\]]/,\"\\\\\\]\");\r\n\t\tparamName = paramName.replace( /[\\[]/, \"\\\\[\" ).replace( /[\\]]/, \"\\\\]\" );\r\n\r\n\t\tvar regexS = \"[\\\\?&]\" + paramName + \"=([^]*)\";\r\n\t\tvar regex = new RegExp( regexS );\r\n\t\tvar results = regex.exec( window.location.href );\r\n\r\n\t\tif ( results === null )\r\n\t\t{\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\t// remove trailing /\r\n\t\tvar ret = results[ 1 ];\r\n\t\tif ( ret.length && ret.charAt( ret.length - 1 ) == '/' )\r\n\t\t\tret = ret.slice( 0, ret.length - 1 );\r\n\r\n\t\treturn ret;\r\n\t};\r\n\r\n\tstatic shortenURL = function( url )\r\n\t{\r\n\t\tif ( url )\r\n\t\t{\r\n\t\t\tvar shortURL = url.toLowerCase();\r\n\t\t\tshortURL.replace( //g, \")\" );\r\n\t\t\tif ( shortURL && shortURL.length > 15 )\r\n\t\t\t{\r\n\t\t\t\tif ( url.search( \"http://\" ) != -1 )\r\n\t\t\t\t{\r\n\t\t\t\t\tshortURL = shortURL.slice( 7 );\r\n\t\t\t\t}\r\n\t\t\t\tif ( url.search( \"https://\" ) != -1 )\r\n\t\t\t\t{\r\n\t\t\t\t\tshortURL = shortURL.slice( 8 );\r\n\t\t\t\t}\r\n\t\t\t\tvar nFirstSlash = shortURL.indexOf( '/' );\r\n\t\t\t\tif ( nFirstSlash > 0 )\r\n\t\t\t\t\tshortURL = shortURL.slice( 0, nFirstSlash );\r\n\t\t\t}\r\n\t\t\treturn shortURL;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t};\r\n\r\n\tstatic trimQuotes = function( str )\r\n\t{\r\n\t\tvar ret = str;\r\n\r\n\t\tret = ret.replace( \"%22\", \"\\\"\" );\r\n\t\t//\tret = ret.replace( \"%22\", \"\\\"\" );\r\n\t\tret = ret.replace( \"%27\", \"'\" );\r\n\t\t//\tret = ret.replace( \"%27\", \"'\" );\r\n\r\n\t\tif ( ret.charAt( 0 ) == '\"' || ret.charAt( 0 ) == \"'\" )\r\n\t\t\tret = ret.slice( 1, ret.length - 1 );\r\n\r\n\t\treturn ret;\r\n\t};\r\n\r\n\tstatic escapeHtmlEntities = function( text )\r\n\t{\r\n\t\treturn text.replace( /[\\u00A0-\\u2666<>\\&]/g,\r\n\t\t\tfunction( c )\r\n\t\t\t{\r\n\t\t\t\treturn '' + c.charCodeAt( 0 ) + ';';\r\n\t\t\t} );\r\n\t};\r\n\r\nstatic htmlEncode = function( text )\r\n{\r\n\treturn text.replace( /[\\u00A0-\\u2666<>\\&]/g,\r\n\t\tfunction( c )\r\n\t\t{\r\n\t\t\treturn '' + c.charCodeAt( 0 ) + ';';\r\n\t\t} );\r\n};\r\n\r\nstatic htmlDecode = function( str )\r\n{\r\n\treturn str.replace( /(\\d+);/g, function( match, dec )\r\n\t{\r\n\t\treturn String.fromCharCode( dec );\r\n\t} );\r\n};\r\n\r\nstatic tryConvertCyrillicAscii = function( str )\r\n{\r\n\tvar cnt8BitAscii = 0;\r\n\tvar ret = \"\";\r\n\tfor ( var i = 0; i < str.length; i++ )\r\n\t{\r\n\t\tvar c = str.charCodeAt( i );\r\n\t\tif ( c > 255 )\r\n\t\t\treturn str;\r\n\t\tif ( c > 127 )\r\n\t\t\tcnt8BitAscii++;\r\n\t\tvar cy = this.conv1252[ c ];\r\n\t\tret += String.fromCharCode( cy );\r\n\t}\r\n\tif ( cnt8BitAscii > 0.7 * str.length )\r\n\t\treturn ret;\r\n\treturn str;\r\n};\r\n\r\nstatic conv1252 = [\r\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r\n\t0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,\r\n\t0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,\r\n\t0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,\r\n\t0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,\r\n\t0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,\r\n\t0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,\r\n\t0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,\r\n\t0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,\r\n\t0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,\r\n\t0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,\r\n\t0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,\r\n\t0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x0402,\r\n\t0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC,\r\n\t0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F, 0x0452,\r\n\t0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 0x2122,\r\n\t0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, 0x00A0, 0x040E,\r\n\t0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9,\r\n\t0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407, 0x00B0, 0x00B1,\r\n\t0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7, 0x0451, 0x2116,\r\n\t0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, 0x0410, 0x0411,\r\n\t0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419,\r\n\t0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421,\r\n\t0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429,\r\n\t0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431,\r\n\t0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439,\r\n\t0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441,\r\n\t0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,\r\n\t0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F ];\r\n\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////18.01.2013\r\n// Byte Formats\r\n\r\nexport function byteswap_ushort( nSwap )\r\n{\r\n\tvar aBuf = new ArrayBuffer( 2 );\r\n\tvar aView = new DataView( aBuf );\r\n\taView.setUInt16( 0, nSwap );\r\n\tvar a = aView.GetUint8();\r\n\taView.SetUint8( 0, aView.GetUint8( 1 ) );\r\n\taView.SetUint8( 1, a );\r\n\treturn aView.GetUint16( 0 );\r\n}\r\n\r\nexport function byteswap_ulong( nSwap )\r\n{\r\n\tvar aBuf = new ArrayBuffer( 4 );\r\n\tvar aView = new DataView( aBuf );\r\n\taView.setUInt32( 0, nSwap );\r\n\tvar aBuf2 = new ArrayBuffer( 4 );\r\n\tvar aView2 = new DataView( aBuf2 );\r\n\tfor ( var i = 0; i < 4; i++ )\r\n\t\taView2.setUint8( i, aView.getUint8( 3 - i ) );\r\n\r\n\treturn aView2.GetUint32( 0 );\r\n}\r\n\r\nexport function byteswap_uint64( nSwap )\r\n{\r\n\tvar aBuf = new ArrayBuffer( 8 );\r\n\tvar aView = new DataView( aBuf );\r\n\taView.setUInt64( 0, nSwap );\r\n\tvar aBuf2 = new ArrayBuffer( 8 );\r\n\tvar aView2 = new DataView( aBuf2 );\r\n\tfor ( var i = 0; i < 8; i++ )\r\n\t\taView2.setUint8( i, aView.getUint8( 7 - i ) );\r\n\r\n\treturn aView2.GetUint64( 0 );\r\n}\r\n\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////\r\n// Num, Integer\r\n\r\nexport function idiv( _a, _b )\r\n{\r\n\treturn ( _a - ( _a % _b ) ) / _b;\r\n};\r\n\r\nexport function isNumber( _str )\r\n{\r\n\treturn !isNaN( parseInt( _str, 10 ) );\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////////////////\r\n// Flags:\r\n\r\nexport function setFlag( obj, bits, boolVal )\r\n{\r\n\tif ( typeof ( bits ) != \"number\" )\r\n\t\tthrow ( Error( \"setFlag: number expected for bits\" ) );\r\n\tif ( obj.flags === undefined )\r\n\t\tobj.flags = 0;\r\n\tif ( boolVal )\r\n\t\tobj.flags = obj.flags | bits;\r\n\telse\r\n\t\tobj.flags = obj.flags & ~bits\r\n};\r\n\r\nexport function isFlag( flags, bits )\r\n{\r\n\treturn ( flags & bits ) !== 0;\r\n};\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////\r\n// Time\r\n\r\nexport class TimeTools\r\n{\r\n\tstatic getCBTimeOfCentiSecs( centiSecs )\r\n\t{\r\n\t\tvar jsTime = new Date( centiSecs * 10 );\r\n\t\tvar cbTime = ( jsTime.getUTCHours() << 24 )\r\n\t\t\t| ( jsTime.getUTCMinutes() << 16 )\r\n\t\t\t| ( jsTime.getUTCSeconds() << 8 )\r\n\t\t\t| ( jsTime.getUTCMilliseconds() / 10);\r\n\r\n\t\treturn cbTime;\r\n\t};\r\n}\r\n","// ST 2011\r\n// \"use strict\";\r\n\r\nexport class CBDate\r\n{\r\n constructor ( _year, _month, _day )\r\n {\r\n // NH2020 Rewritten with if else\r\n // Removed the D.prototype.year etc. fields from outside the function\r\n\r\n if ( _year )\r\n this.year = _year;\r\n else \r\n this.year = 0;\r\n\r\n if ( _month )\r\n this.month = _month;\r\n else\r\n this.month = 0\r\n\r\n if ( _day )\r\n this.day = _day;\r\n else\r\n this.day = 0\r\n };\r\n\r\n // NH2020\r\n // D.prototype.year = 0;\r\n // D.prototype.month = 0;\r\n // D.prototype.day = 0;\r\n\r\n toString ()\r\n {\r\n return String.formatEx( \"{day}.{month}.{year}\", this );\r\n };\r\n\r\n static g_regexPGN = /(?:(\\d{4})|\\?{4})\\.(?:(\\d{2})|\\?{2})\\.(?:(\\d{2})|\\?{2})/;\r\n\r\n static fromPGNString ( _str )\r\n {\r\n var match = CBDate.g_regexPGN.exec( _str );\r\n if ( match )\r\n {\r\n return new CBDate ( Number( match[1] ), Number( match[2] ), Number( match[3] ) );\r\n }\r\n return new CBDate ();\r\n };\r\n\r\n constructFromNum ( date )\r\n {\r\n this.year = date >> 9;\r\n this.month = ( date >> 5 ) & 0x0f;\r\n this.day = date & 0x1f;\r\n };\r\n\r\n setToday ()\r\n {\r\n var date = new Date();\t// js date\r\n\r\n this.year = date.getFullYear();\r\n this.month = date.getMonth() + 1;\r\n this.day = date.getDate();\r\n\r\n };\r\n\r\n static today ()\t//static\r\n {\r\n var d = new CBDate();\r\n d.setToday();\r\n return d;\r\n };\r\n\r\n getNum ()\r\n {\r\n return ( this.year << 9 ) | ( this.month << 5 ) | this.day;\r\n };\r\n\r\n fromDataBuf ( buf )\r\n {\r\n var num = buf.readInt32();\r\n this.constructFromNum( num );\r\n };\r\n\r\n toDataBuf ( buf )\r\n {\r\n var num = ( this.year << 9 ) | ( this.month << 5 ) | this.day;\r\n buf.writeInt32( num );\r\n };\r\n\r\n toLocaleString ()\r\n {\r\n //Nun ja...\r\n //\t\tvar format = Localization.getObject( DateFormats );\r\n //KEEP IT SIMPLE, STUPID!!!\r\n var res = \"\";\r\n if ( this.year )\r\n {\r\n var res = this.year.toString();\r\n if ( this.month )\r\n {\r\n res = this.month.toString() + \".\" + res;\r\n if ( this.month < 10 )\r\n res = \"0\" + res;\r\n if ( this.day )\r\n {\r\n res = this.day.toString() + \".\" + res;\r\n if ( this.day < 10 )\r\n res = \"0\" + res;\r\n }\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n toPGNString ()\r\n {\r\n var res = \"\";\r\n if ( this.year )\r\n {\r\n res = this.year.toString();\r\n if ( this.month )\r\n {\r\n var month = this.month.toString();\r\n if ( this.month < 10 )\r\n month = \"0\" + month;\r\n res += \".\" + month;\r\n }\r\n else\r\n res += \".??\";\r\n if ( this.day )\r\n {\r\n var day = this.day.toString();\r\n if ( this.day < 10 )\r\n day = \"0\" + day;\r\n res += \".\" + day;\r\n }\r\n else\r\n res += \".??\";\r\n }\r\n return res;\r\n };\r\n\r\n getDay ()\r\n {\r\n return this.day;\r\n };\r\n\r\n setDay ( _day )\r\n {\r\n this.day = _day;\r\n };\r\n\r\n getMonth ()\r\n {\r\n return this.month;\r\n };\r\n\r\n setMonth ( _month )\r\n {\r\n this.month = _month;\r\n };\r\n\r\n getYear ()\r\n {\r\n return this.year;\r\n };\r\n\r\n setYear ( _year )\r\n {\r\n this.year = _year;\r\n };\r\n\r\n static getThisYear ()\r\n {\r\n var d = new CBDate();\r\n d.setToday();\r\n\r\n return d.getYear();\r\n };\r\n\r\n\r\n static getShortDateString ( _date )\r\n {\r\n var d = _date.getDate().toString();\r\n var m = ( _date.getMonth() + 1 ).toString();\r\n var y = _date.getFullYear();\r\n\r\n //var format = Localization.getObject( DateFormats );\r\n\r\n //return String.formatEx( format.short, { d: d, m: m, y: y } );\r\n alert( \"notimpl\" );\r\n return y + m + d;\r\n }\r\n\r\n}\r\n\r\n//var DateFormats = {};\r\n//DateFormats.invariant = { short: \"{d}.{m}.{y}\" };\r\n//DateFormats.en = { short: \"{d}.{m}.{y}\" };\r\n//DateFormats.en_us = { short: \"{d}.{m}.{y}\" };","// ES 6 MW: March 1, 2020\r\n\r\nexport class Time\r\n{\r\n constructor(timeAsInt) \r\n {\r\n this.time = timeAsInt || 0;\r\n\t};\r\n}\r\n\r\n\r\n///////////////////////////////////////////////////////////////////\r\n// needs to be compatible with CBDateAndTime in C++\r\n\r\nexport class DateAndTime\r\n{\r\n constructor ()\r\n {\r\n this.timeVal = 0;\r\n };\r\n\r\n toDataBuf( buf )\r\n {\r\n buf.writeInt64( this.timeVal );\r\n };\r\n\r\n fromDataBuf( buf )\r\n {\r\n buf.readInt64( this.timeVal );\r\n };\r\n}\r\n","/* jb 05.4.13 */\r\n//TS 1.9.2014 - Static?\r\n// ES6 1.3.2020 mw\r\n\r\nexport var BinToString = {\r\n\tStringToByteArray: function(pBuf, rStr)\r\n\t{\r\n\t\tvar BASECHAR = 64;\r\n\r\n\t\tvar nByte = 0, nBit = 0;\r\n\t\tvar cByte = 0; //\tone char buffer, trailing bits are not written to pBuf!\r\n\r\n\t\tfor (var nChar = 0; nChar < rStr.length; nChar++)\r\n\t\t{\r\n\t\t\tvar c = rStr[nChar].charCodeAt(0);\r\n\t\t\tif ((c < BASECHAR - 1) || (c > BASECHAR - 1 + 0x3f))\r\n\t\t\t\treturn 1;\r\n\t\t\tc -= (BASECHAR - 1);\r\n\t\t\tif (nBit <= 2)\r\n\t\t\t{\r\n\t\t\t\tcByte |= (c << (2 - nBit)); //\tmay leave trailing bits!\r\n\t\t\t\tnBit += 6;\r\n\t\t\t\tif (nBit >= 8)\r\n\t\t\t\t{\r\n\t\t\t\t\tnBit -= 8;\r\n\t\t\t\t\tpBuf[nByte++] = cByte & 0xff;\r\n\t\t\t\t\tcByte = 0;\r\n\t\t\t\t}\r\n\t\t\t} else\r\n\t\t\t{\r\n\t\t\t\tnBit -= 2;\r\n\t\t\t\tcByte |= (c >> nBit);\r\n\t\t\t\tpBuf[nByte++] = cByte & 0xff;\r\n\t\t\t\tcByte = (c << (8 - nBit)); //\tmay leave trailing bits!\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nByte;\r\n\t},\r\n\r\n\r\n\tByteArrayToString: function(pBuf, nBufLen)\r\n\t{\r\n\t\tvar BASECHAR = 64;\r\n\r\n\t\tvar rStr = \"\";\r\n\t\tif (nBufLen > 0)\r\n\t\t{\r\n\t\t\tvar encode = [];\r\n\t\t\tvar pEncode = 0;\r\n\t\t\tvar nByte = 0, nBit = 0;\r\n\r\n\t\t\twhile (nByte < nBufLen)\r\n\t\t\t{\r\n\t\t\t\tif (nBit <= 2)\r\n\t\t\t\t{\r\n\t\t\t\t\tencode[pEncode++] = (BASECHAR - 1 + ((pBuf[nByte] >> (2 - nBit)) & 0x3f)) & 255;\r\n\t\t\t\t\tnBit += 6;\r\n\t\t\t\t\tif (nBit >= 8)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnByte++;\r\n\t\t\t\t\t\tnBit -= 8;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else\r\n\t\t\t\t{\r\n\t\t\t\t\tnBit -= 2;\r\n\t\t\t\t\tencode[pEncode] = (((pBuf[nByte] << nBit) & 0x3f)) & 255;\r\n\t\t\t\t\tnByte++;\r\n\t\t\t\t\tif (nByte < nBufLen)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tencode[pEncode] |= (((pBuf[nByte] >> (8 - nBit)) & 0x3f)) & 255;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tnBit = 0;\r\n\t\t\t\t\tencode[pEncode++] += BASECHAR - 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tencode[pEncode] = 0;\r\n\r\n\r\n\t\t\tfor (var n = 0; n < pEncode; n++)\r\n\t\t\t\trStr += String.fromCharCode(encode[n]);\r\n\t\t} else\r\n\t\t\trStr = (\"\");\r\n\t\treturn rStr;\r\n\t},\r\n\r\n\tByteArrayToBase64: function(_data)\r\n\t{\r\n\t\tvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n\t\tvar output = \"\";\r\n\t\tvar chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n\t\tvar i = 0;\r\n\t\twhile (i < _data.length)\r\n\t\t{\r\n\t\t\tchr1 = _data[i++];\r\n\t\t\tchr2 = _data[i++];\r\n\t\t\tchr3 = _data[i++];\r\n\t\t\tenc1 = chr1 >> 2;\r\n\t\t\tenc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n\t\t\tenc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n\t\t\tenc4 = chr3 & 63;\r\n\t\t\tif (isNaN(chr2))\r\n\t\t\t{\r\n\t\t\t\tenc3 = enc4 = 64;\r\n\t\t\t} else if (isNaN(chr3))\r\n\t\t\t{\r\n\t\t\t\tenc4 = 64;\r\n\t\t\t}\r\n\t\t\toutput = output +\r\n\t\t\t\tKEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\r\n\t\t\t\tKEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t},\r\n\r\n\tByteArrayToDataURI: function(_data, _mime)\r\n\t{\r\n\t\tvar output = this.ByteArrayToBase64(_data);\r\n\t\treturn 'data:'+_mime + ';charset=utf-8;base64,' + output;\r\n\t}\r\n};\r\n","export class CBDebug\r\n{\r\n static assert = function (_cond, _msg)\r\n {\r\n };\r\n \r\n static call = function (_ctx, _func)\r\n {\r\n };\r\n \r\n static profile = function (_name)\r\n {\r\n };\r\n \r\n static profileEnd = function ()\r\n {\r\n };\r\n \r\n};\r\n\r\nexport function ASSERT(x)\r\n{\r\n \r\n};\r\n","/* mw 18.2.2013 */\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nimport { strUtil } from 'common/Tools/Tools'\r\nimport { CBDate } from \"common/Tools/CBDate\";\r\nimport { Time } from 'common/Tools/Time'\r\nimport {BinToString} from 'common/Container/BinToString'\r\nimport { CBDebug } from \"common/Tools/Debug/debug_util\";\r\n\r\n//// Constructor:\r\nexport class DataBuffer\r\n{\r\n constructor()\r\n {\r\n this.nPos = 0;\r\n this.nSize = 0;\r\n this.buffer = new ArrayBuffer( 188 );\r\n this.viewBuf = new DataView( this.buffer );\r\n\r\n this.nSizeMarker = [];\r\n this.nMarkedSize = [];\r\n\r\n };\r\n\r\n // Public:\r\n clear()\r\n {\r\n this.nPos = 0;\r\n this.nSize = 0;\r\n this.nSizeMarker = [];\r\n this.nMarkedSize = [];\r\n };\r\n\r\n rewind()\r\n {\r\n this.nPos = 0;\r\n this.nSizeMarker = [];\r\n this.nMarkedSize = [];\r\n }\r\n\r\n getPos()\r\n {\r\n return this.nPos;\r\n }\r\n\r\n // warning implementation incomplete due to swapBytes in this.viewBuf\r\n setPos( nNewPos )\r\n {\r\n if ( nNewPos <= this.nSize && nNewPos <= this.buffer.byteLength )\r\n {\r\n this.nPos = nNewPos;\r\n }\r\n else\r\n throw ( Error(\"Error: SetPos exceeds DataBuffer size\" ));\r\n }\r\n\r\n\r\n // getLogicalSize in C++\r\n getSize()\r\n {\r\n return this.nSize;\r\n }\r\n\r\n setSize( n )\r\n {\r\n if ( n >= this.buffer.byteLength )\r\n throw (Error( \"DBuf setSize illegal\" ));\r\n this.nSize = n;\r\n }\r\n\r\n getWriteSize()\r\n {\r\n return this.nSize + 4;\r\n }\r\n\r\n // NH2020 Added this. Important!\r\n getCheckSum16 ()\r\n {\r\n var sum = 0;\r\n\r\n// console.log( \"getCheck: \")\r\n for ( var i = 0; i < this.nSize; i++ )\r\n {\r\n sum += ( this.viewBuf.getUint8( i ) + i );\r\n // console.log( \"check: \" + sum );\r\n }\r\n var check = Math.abs( sum % 0x7fff );\r\n // console.log( \"Check Result = \" + check );\r\n return check;\r\n };\r\n\r\n writeToDataView( dataView, nFirstPos )\r\n {\r\n dataView.setInt32( nFirstPos, this.nSize );\r\n this._swapBytes( dataView, nFirstPos, 4 ); // little endian required\r\n nFirstPos += 4;\r\n for ( var i = 0; i < this.nSize; i++ )\r\n {\r\n dataView.setUint8( i + nFirstPos, this.viewBuf.getUint8( i ) );\r\n }\r\n return this.nSize + 4; // NH2020 Added this. Important!\r\n };\r\n\r\n readFromDataView( dataView, nFirstPos )\r\n {\r\n this._swapBytes( dataView, nFirstPos, 4 ); // little endian required\r\n var nSize = dataView.getInt32( nFirstPos );\r\n if ( nSize < 350000 && nSize >= 0 )\r\n {\r\n this._checkAlloc( nSize );\r\n nFirstPos += 4;\r\n for ( var i = 0; i < nSize; i++ )\r\n {\r\n var uint8 = dataView.getUint8( i + nFirstPos );\r\n this.viewBuf.setUint8( i, uint8 );\r\n }\r\n this._incSize( nSize );\r\n }\r\n //\"#IFDEBUG\"\r\n // if ( nSize >= 350000 || nSize < 0 )\r\n // Log.Log( \"Cannot Read DBuf from View, size=\" + nSize, \"LogError\" );\r\n //\"#ENDIF\"\r\n };\r\n\r\n writeString( strUnicode )\r\n {\r\n var strUTF8 = strUtil.encodeUTF8( strUnicode );\r\n this.writeUTFString( strUTF8 );\r\n //this._checkAlloc( strUTF8.length + 4 );\r\n //this.writeInt32( strUTF8.length );\r\n //for ( var i = 0; i < strUTF8.length; i++ ) {\r\n //\tvar n = strUTF8.charCodeAt( i );\r\n //\tthis.viewBuf.setUint8( this.nPos + i, n );\r\n //}\r\n //this._incSize( strUTF8.length );\r\n };\r\n\r\n writeUTFString( strUTF8 ) // same as writeASCIIString \r\n {\r\n this._checkAlloc( strUTF8.length + 4 );\r\n this.writeInt32( strUTF8.length );\r\n for ( var i = 0; i < strUTF8.length; i++ )\r\n {\r\n var n = strUTF8.charCodeAt( i );\r\n this.viewBuf.setUint8( this.nPos + i, n );\r\n }\r\n this._incSize( strUTF8.length );\r\n };\r\n\r\n readString( nMaxLen )\r\n {\r\n var strUnicode;\r\n var nLen = this.readInt32();\r\n if ( nLen <= nMaxLen && nLen < 250000 )\r\n {\r\n var strUTF8 = \"\";\r\n for ( var i = 0; i < nLen; i++ )\r\n {\r\n var n = this.viewBuf.getUint8( this.nPos + i );\r\n // efficient in modern browsers due to optimization (see http://jsperf.com/)\r\n strUTF8 += String.fromCharCode( n );\r\n }\r\n strUnicode = strUtil.decodeUTF8( strUTF8 );\r\n this.nPos += nLen;\r\n }\r\n else\r\n throw ( new Error( \"Data Error: Read String\" ) );\r\n\r\n return strUnicode;\r\n };\r\n\r\n writeASCIIString( str )\r\n {\r\n this._checkAlloc( str.length + 4 );\r\n this.writeInt32( str.length );\r\n for ( var i = 0; i < str.length; i++ )\r\n {\r\n var n = str.charCodeAt( i );\r\n this.viewBuf.setUint8( this.nPos + i, n );\r\n }\r\n this._incSize( str.length );\r\n };\r\n\r\n readASCIIString( nMaxLen )\r\n {\r\n var strASCII = \"\";\r\n var nLen = this.readInt32();\r\n if ( nLen <= nMaxLen && nLen < 250000 )\r\n {\r\n for ( var i = 0; i < nLen; i++ )\r\n {\r\n var n = this.viewBuf.getUint8( this.nPos + i )\r\n strASCII += String.fromCharCode( n );\r\n }\r\n this.nPos += nLen;\r\n }\r\n else\r\n throw ( new Error( String.f( \"Data Error: Read String, Len={0}, maxLen={1}\", nLen, nMaxLen ) ) );\r\n\r\n return strASCII;\r\n };\r\n\r\n writeByteLenASCIIString( str )\r\n {\r\n this._checkAlloc( str.length + 2 );\r\n this.writeUint8( str.length + 1 );\r\n for ( var i = 0; i < str.length; i++ )\r\n {\r\n var n = str.charCodeAt( i );\r\n this.viewBuf.setUint8( this.nPos + i, n );\r\n }\r\n this.viewBuf.setUint8( this.nPos + str.length, 0 );\r\n\r\n this._incSize( str.length + 1 );\r\n };\r\n\r\n readByteLenASCIIString( nMaxLen )\r\n {\r\n var strASCII = \"\";\r\n var nLen = this.readUint8();\r\n if ( nLen > 0 )\r\n nLen -= 1;\t// ignore trailing zero\r\n if ( nLen < 1000 )\r\n {\r\n for ( var i = 0; i < nLen; i++ )\r\n {\r\n var n = this.viewBuf.getUint8( this.nPos + i )\r\n strASCII += String.fromCharCode( n );\r\n }\r\n if ( nLen <= nMaxLen )\r\n this.nPos += nLen + 1;\r\n else\r\n {\r\n throw ( new Error( String.f( \"Data Error: Read ByteLenString, len={0}, maxLen={1}\", nLen, nMaxLen ) ) );\r\n }\r\n }\r\n else\r\n throw ( new Error( String.f( \"Data Error: Read ByteLenString > 1000, len={0}\", nLen ) ) );\r\n\r\n return strASCII;\r\n };\r\n\r\n readSizedString( len )\r\n {\r\n var strASCII = \"\";\r\n if ( len < 250000 )\r\n {\r\n for ( var i = 0; i < len; i++ )\r\n {\r\n var n = this.viewBuf.getUint8( this.nPos + i );\r\n // efficient in modern browsers due to optimization (see http://jsperf.com/)\r\n strASCII += String.fromCharCode( n );\r\n }\r\n this.nPos += len;\r\n }\r\n else\r\n throw ( new Error( \"Data Error: Read SizedString, max=\" + len ) );\r\n\r\n return strASCII;\r\n };\r\n\r\n\r\n // used in annotations, no string length written (it is calculated from anno len)\r\n writeSizedString( str )\r\n {\r\n var len = str.length;\r\n this._checkAlloc( len );\r\n for ( var i = 0; i < len; i++ )\r\n {\r\n var n = str.charCodeAt( i );\r\n this.viewBuf.setUint8( this.nPos + i, n );\r\n }\r\n this._incSize( len );\r\n };\r\n\r\n readSizedUTF8String( len )\r\n {\r\n\r\n var strUnicode;\r\n if ( len < 250000 )\r\n {\r\n var strUTF8 = \"\";\r\n for ( var i = 0; i < len; i++ )\r\n {\r\n var n = this.viewBuf.getUint8( this.nPos + i );\r\n // efficient in modern browsers due to optimization (see http://jsperf.com/)\r\n strUTF8 += String.fromCharCode( n );\r\n }\r\n strUnicode = strUtil.decodeUTF8( strUTF8 );\r\n this.nPos += len;\r\n }\r\n else\r\n throw ( new Error( \"Data Error: Read UTF8String, len=\" + len ) );\r\n\r\n return strUnicode;\r\n\r\n };\r\n\r\n readByteArray( len )\r\n {\r\n var arr = [];\r\n for ( var i = 0; i < len && this.nPos + i < this.nSize; i++ )\r\n {\r\n arr.push( this.viewBuf.getUint8( this.nPos + i ) );\r\n }\r\n\r\n this.nPos += len;\r\n\r\n return arr;\r\n };\r\n\r\n writeByteArray( arr, len )\r\n {\r\n for ( var i = 0; i < arr.length && i < len; i++ )\r\n {\r\n this.writeByte( arr[ i ] );\r\n }\r\n };\r\n\r\n writeDataBuffer( buf )\r\n {\r\n this.writeInt32( buf.getSize() );\r\n this._checkAlloc( buf.getSize() );\r\n\r\n for ( var i = 0; i < buf.getSize(); i++ )\r\n {\r\n this.viewBuf.setUint8( this.nPos + i, buf.viewBuf.getUint8( i ) );\r\n }\r\n this._incSize( buf.getSize() );\r\n };\r\n\r\n readDataBuffer()\r\n {\r\n var buf = new DataBuffer();\r\n\r\n var size = this.readInt32();\r\n buf._checkAlloc( size );\r\n for ( var i = 0; i < size; i++ )\r\n {\r\n buf.viewBuf.setUint8( i, this.viewBuf.getUint8( this.nPos + i ) );\r\n }\r\n this.nPos += size;\r\n buf._incSize( size );\r\n buf.nPos = 0;\t// return in rewound state\r\n\r\n return buf;\r\n };\r\n\r\n writeData( buf )\r\n {\r\n this._checkAlloc( buf.getSize() );\r\n\r\n for ( var i = 0; i < buf.getSize(); i++ )\r\n {\r\n this.viewBuf.setUint8( this.nPos + i, buf.viewBuf.getUint8( i ) );\r\n }\r\n this._incSize( buf.getSize() );\r\n };\r\n\r\n\r\n writeBool( b )\r\n {\r\n if ( b === undefined )\r\n {\r\n throw ( Error( \"writeBool, value undefined\" ) );\r\n }\r\n\r\n this._checkAlloc( 1 );\r\n if ( b )\r\n this.viewBuf.setUint8( this.nPos, 1 );\r\n else\r\n this.viewBuf.setUint8( this.nPos, 0 );\r\n this._incSize( 1 );\r\n };\r\n\r\n readBool()\r\n {\r\n let b = this.viewBuf.getUint8( this.nPos );\r\n this.nPos += 1;\r\n return b !== 0;\r\n };\r\n\r\n writeUint8( nUint8 )\r\n {\r\n if ( nUint8 === undefined )\r\n {\r\n throw ( Error( \"writeUint8, value undefined\" ) );\r\n }\r\n\r\n this._checkAlloc( 1 );\r\n this.viewBuf.setUint8( this.nPos, nUint8 );\r\n this._incSize( 1 );\r\n };\r\n\r\n readUint8()\r\n {\r\n var nRet = this.viewBuf.getUint8( this.nPos );\r\n this.nPos += 1;\r\n return nRet;\r\n }\r\n\r\n readByte = this.readUint8;\r\n writeByte = this.writeUint8;\r\n\r\n writeInt16( nInt16 )\r\n {\r\n if ( nInt16 === undefined )\r\n {\r\n throw ( Error( \"writeInt16, value undefined\" ) );\r\n }\r\n\r\n this._checkAlloc( 2 );\r\n this.viewBuf.setInt16( this.nPos, nInt16 );\r\n this._swapBytes( this.viewBuf, this.nPos, 2 );\r\n this._incSize( 2 );\r\n }\r\n\r\n readInt16()\r\n {\r\n var nRet = 0;\r\n if ( this.nPos <= this.viewBuf.byteLength - 2 )\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 2 );\r\n nRet = this.viewBuf.getInt16( this.nPos );\r\n this._swapBytes( this.viewBuf, this.nPos, 2 );\t// leave buffer intact because of setPos/getPos\r\n this.nPos += 2;\r\n }\r\n return nRet;\r\n };\r\n\r\n readShort = this.readInt16;\r\n writeShort = this.writeInt16;\r\n\r\n writeUint16( nUint16 )\r\n {\r\n if ( nUint16 === undefined )\r\n {\r\n throw ( Error( \"writeUint16, value undefined\" ) );\r\n }\r\n\r\n this._checkAlloc( 2 );\r\n this.viewBuf.setUint16( this.nPos, nUint16 );\r\n this._swapBytes( this.viewBuf, this.nPos, 2 );\r\n this._incSize( 2 );\r\n };\r\n\r\n readUint16()\r\n {\r\n var nRet = 0;\r\n if ( this.nPos <= this.viewBuf.byteLength - 2 )\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 2 );\r\n nRet = this.viewBuf.getUint16( this.nPos );\r\n this._swapBytes( this.viewBuf, this.nPos, 2 );\t// leave buffer intact because of setPos/getPos\r\n this.nPos += 2;\r\n }\r\n return nRet;\r\n };\r\n\r\n writeInt32( nInt32 )\r\n {\r\n if ( nInt32 === undefined )\r\n {\r\n throw ( Error( \"writeInt32, value undefined\" ) );\r\n }\r\n this._checkAlloc( 4 );\r\n this.viewBuf.setInt32( this.nPos, nInt32 );\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n this._incSize( 4 );\r\n };\r\n\r\n writeFakeInt64( nInt32 )\r\n {\r\n this.writeInt32( nInt32 );\r\n this.writeInt32( 0 );\t// if protocol requires 64Bit int\r\n };\r\n\r\n readFakeInt64()\r\n {\r\n var nRet = this.readInt32();\r\n this.readInt32(); // must be zero!\r\n return nRet;\r\n };\r\n\r\n readInt32()\r\n {\r\n var nRet = 0;\r\n if ( this.nPos <= this.viewBuf.byteLength - 4 )\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n nRet = this.viewBuf.getInt32( this.nPos );\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\t// leave buffer intact because of setPos/getPos\r\n this.nPos += 4;\r\n }\r\n return nRet;\r\n };\r\n\r\n writeInt = this.writeInt32;\r\n readInt = this.readInt32;\r\n\r\n writeUint32( nUint32 )\r\n {\r\n this._checkAlloc( 4 );\r\n this.viewBuf.setUint32( this.nPos, nUint32 );\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n this._incSize( 4 );\r\n };\r\n\r\n readUint32()\r\n {\r\n var nRet = 0;\r\n if ( this.nPos <= this.viewBuf.byteLength - 4 )\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n nRet = this.viewBuf.getUint32( this.nPos );\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\t// leave buffer intact because of setPos/getPos\r\n this.nPos += 4;\r\n }\r\n return nRet;\r\n };\r\n\r\n writeCBDate( aDate )\r\n {\r\n var nDate = ( aDate.getYear() << 9 ) | ( aDate.getMonth() << 5 ) | aDate.getDay();\r\n this.writeUint32( nDate );\r\n };\r\n\r\n readCBDate()\r\n {\r\n // NH2020 assuming CBDate\r\n var aDate = new CBDate();\r\n var dateAsInt = this.readUint32();\r\n aDate.setYear( dateAsInt >> 9 );\r\n aDate.setMonth( ( dateAsInt >> 5 ) & 0x0f );\r\n aDate.setDay( dateAsInt & 0x1f );\r\n return aDate;\r\n };\r\n\r\n readCBTime()\r\n {\r\n var timeAsInt = this.readUint32();\r\n var aTime = new Time( timeAsInt );\r\n return aTime;\r\n };\r\n\r\n writeInt64( nInt64 )\r\n {\r\n if ( nInt64 === undefined )\r\n {\r\n throw ( Error( \"writeInt64, value undefined\" ) );\r\n }\r\n\r\n var higherPart = Math.floor( nInt64 / 4294967296.0 );\r\n var lowerPart = nInt64 - higherPart;\r\n this.writeInt32( lowerPart );\r\n this.writeInt32( higherPart );\r\n };\r\n\r\n readUint64()\r\n {\r\n if ( this.nPos <= this.viewBuf.byteLength - 8 )\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 8 );\r\n var nRetHigh = this.viewBuf.getUint32( this.nPos );\r\n this.nPos += 4;\r\n var nRetLow = this.viewBuf.getUint32( this.nPos );\r\n this.nPos += 4;\r\n return ( nRetHigh * 4294967296.0 ) + nRetLow;\r\n }\r\n else\r\n return 0;\r\n };\r\n\r\n readInt64()\r\n {\r\n if ( this.nPos <= this.viewBuf.byteLength - 8 )\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 8 );\t\t// now in BE format.\r\n var nRetHigh = this.viewBuf.getInt32( this.nPos );\r\n this.nPos += 4;\r\n var nRetLow = this.viewBuf.getUint32( this.nPos );\r\n this.nPos += 4;\r\n return ( nRetHigh * 4294967296.0 ) + nRetLow;\r\n }\r\n else\r\n return 0;\r\n };\r\n\r\n writeFloat32( float32 )\r\n {\r\n this._checkAlloc( 4 );\r\n this.viewBuf.setFloat32( this.nPos, float32 );\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n this._incSize( 4 );\r\n };\r\n\r\n readFloat32()\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n var nRet = this.viewBuf.getFloat32( this.nPos );\r\n this.nPos += 4;\r\n return nRet;\r\n };\r\n\r\n writeFloat64( float64 )\r\n {\r\n this._checkAlloc( 8 );\r\n this.viewBuf.setFloat64( this.nPos, float64 );\r\n this._swapBytes( this.viewBuf, this.nPos, 8 );\r\n this._incSize( 8 );\r\n };\r\n\r\n readFloat64()\r\n {\r\n this._swapBytes( this.viewBuf, this.nPos, 8 );\r\n var nRet = this.viewBuf.getFloat64( this.nPos );\r\n this.nPos += 8;\r\n return nRet;\r\n };\r\n\r\n exportAsCompressedString()\r\n {\r\n var nSize = this.getSize();\r\n\r\n var strOut = \"\";\r\n\r\n var vecByte = [];\r\n for ( var i = 0; i < nSize; i++ )\r\n {\r\n var n = this.viewBuf.getUint8( i );\r\n vecByte[ i ] = n;\r\n }\r\n\r\n strOut = BinToString.ByteArrayToString( vecByte, nSize );\r\n return strOut;\r\n }\r\n\r\n\r\n constructFromString( strText, bCompressed )\r\n {\r\n this.clear();\r\n\r\n if ( bCompressed )\r\n {\r\n var aMsg = [];\r\n\r\n var nLen = BinToString.StringToByteArray( aMsg, strText );\r\n if ( nLen > 0 )\r\n {\r\n for ( var n = 0; n < nLen; n++ )\r\n {\r\n this.writeByte( aMsg[ n ] );\r\n }\r\n }\r\n }\r\n else\r\n {\r\n var nSize = 0;\r\n if ( strText.length > 10 )\r\n {\r\n nSize = parseInt( strText.substr( 0, 10 ), 10 );\r\n }\r\n if ( nSize < 0 )\r\n nSize = 0;\r\n for ( var x = 0; x < nSize; x++ )\r\n {\r\n var strElement = strText.substr( 10 + x * 2, 2 );\r\n var bElement = parseInt( strElement, 16 );\r\n this.writeByte( bElement );\r\n }\r\n }\r\n }\r\n\r\n constructFromBase64( strText )\r\n {\r\n this.clear();\r\n\r\n // var buffer = null;\r\n var value = strUtil.base64.decodeToBinary( strText );\r\n var view = new Uint8Array( value );\r\n for ( var i = 0; i < value.byteLength; i++ )\r\n {\r\n this.writeByte( view[ i ] );\r\n }\r\n\r\n this.writeByteArray( value, value.byteLength );\r\n\r\n this.rewind();\r\n };\r\n\r\n readBEInt32()\r\n {\r\n var v1 = this.readUint8();\r\n var v2 = this.readUint8();\r\n var v3 = this.readUint8();\r\n var v4 = this.readUint8();\r\n\r\n return ( v1 << 24 ) | (v2 << 16 )| (v3 << 8) | v4;\r\n };\r\n\r\n writeBEInt32( nInt32 )\r\n {\r\n if ( nInt32 === undefined )\r\n {\r\n throw ( Error( \"writeInt32, value undefined\" ) );\r\n }\r\n this._checkAlloc( 4 );\r\n this.viewBuf.setInt32( this.nPos, nInt32 );\r\n // this._swapBytes( this.viewBuf, this.nPos, 4 );\r\n this._incSize( 4 );\r\n };\r\n\r\n\r\n readBEInt24()\r\n {\r\n var v1 = this.readUint8();\r\n var v2 = this.readUint8();\r\n var v3 = this.readUint8();\r\n\r\n return (v1 << 16) | (v2 << 8 )| v3;\r\n };\r\n\r\n readBEInt16()\r\n {\r\n var v1 = this.readUint8();\r\n var v2 = this.readUint8();\r\n\r\n return v1 * 256 + v2;\r\n\r\n // TODO: more efficient.\r\n //var nRet = this.viewBuf.getUint16( this.nPos );\r\n //this.nPos += 2;\r\n //return nRet;\r\n };\r\n\r\n writeBEInt24( n )\r\n {\r\n var v1 = n >> 16,\r\n v2 = n >> 8,\r\n v3 = n & 255;\r\n this.writeUint8( v1 );\r\n this.writeUint8( v2 );\r\n this.writeUint8( v3 );\r\n };\r\n\r\n writeBEInt16( n )\r\n {\r\n var v1 = n >> 8,\r\n v2 = n & 255;\r\n this.writeUint8( v1 );\r\n this.writeUint8( v2 );\r\n };\r\n\r\n writeArray( arr )\r\n {\r\n var len = arr.length;\r\n this.writeInt32( len );\r\n\r\n for ( var inx = 0; inx < len; ++inx )\r\n {\r\n arr[ inx ].write( this );\r\n }\r\n };\r\n\r\n writeArrayShort( arr )\r\n {\r\n var len = arr.length;\r\n this.writeInt16( len );\r\n\r\n for ( var inx = 0; inx < len; ++inx )\r\n {\r\n arr[ inx ].write( this );\r\n }\r\n };\r\n\r\n readArray( arr, fnRdr )\r\n {\r\n var len = this.readInt32();\r\n\r\n if ( len > 65534 )\r\n CBDebug.assert( len < 65535 );\r\n\r\n arr.length = len;\r\n for ( var inx = 0; inx < len; ++inx )\r\n {\r\n var obj = fnRdr( this );\r\n arr[ inx ] = obj;\r\n }\r\n };\r\n\r\n readArrayShort( arr, fnRdr )\r\n {\r\n var len = this.readInt16();\r\n\r\n arr.length = len;\r\n for ( var inx = 0; inx < len; ++inx )\r\n {\r\n var obj = fnRdr( this );\r\n arr[ inx ] = obj;\r\n }\r\n };\r\n\r\n beginSizedWrite()\r\n {\r\n this.nSizeMarker.push( this.getPos() );\r\n this.writeInt32( 0 );\r\n };\r\n\r\n endSizedWrite()\r\n {\r\n var nCurrPos = this.getPos();\r\n if ( this.nSizeMarker.length > 0 )\r\n {\r\n this.setPos( this.nSizeMarker[ this.nSizeMarker.length - 1 ] );\r\n var keepSize = this.nSize; // size has already been incremented in beginSizedWrite\r\n this.writeInt32( nCurrPos - this.nSizeMarker[ this.nSizeMarker.length - 1 ] - 4 );\r\n this.nSize = keepSize;\r\n this.setPos( nCurrPos );\r\n this.nSizeMarker.pop();\r\n }\r\n else\r\n throw Error( \"DB::EndWrite\" );\r\n };\r\n\r\n beginSizedRead()\r\n {\r\n this.nSizeMarker.push( this.getPos() );\r\n this.nMarkedSize.push( this.readInt32() );\r\n };\r\n\r\n endSizedRead()\r\n {\r\n if ( this.nSizeMarker.length > 0 && this.nMarkedSize.length > 0 )\r\n {\r\n var nSizeRead = this.getPos() - this.nSizeMarker[ this.nSizeMarker.length - 1 ] - 4;\r\n this.skip( this.nMarkedSize[ this.nMarkedSize.length - 1 ] - nSizeRead );\r\n this.nSizeMarker.pop();\r\n this.nMarkedSize.pop();\r\n }\r\n else\r\n throw Error( \"DB::EndRead\" );\r\n };\r\n\r\n skipSizedRead()\r\n {\r\n var len = this.readInt32();\r\n this.skip( len );\r\n };\r\n\r\n skip( n )\r\n {\r\n if ( this.nPos + n <= this.nSize )\r\n {\r\n this.nPos += n;\r\n }\r\n //else\r\n // throw ( Error( \"DB::Skip\" ) );\r\n };\r\n\r\n writeAtPrevPos( nPrevPos, fnWrite )\r\n {\r\n var savePos = this.getPos();\r\n this.setPos( nPrevPos );\r\n fnWrite();\r\n this.setPos( savePos );\r\n };\r\n\r\n\r\n //// Protected: //////////////////////////////////////////////////////////////////////////\r\n\r\n _checkAlloc( nNew )\r\n {\r\n if ( this.nPos + nNew >= this.buffer.byteLength || this.nSize + nNew >= this.buffer.byteLength )\r\n {\r\n var maxS = Math.max( this.nPos, this.nSize );\r\n\r\n var nNewBufSize = Math.floor( ( ( ( maxS + nNew ) * 3 ) / 16. ) + 1 ) * 8; // 3/2 of old size, rounded to be divisible by 8\r\n if ( nNewBufSize < nNew + maxS )\r\n throw new Error( \"DataBuffer Size\" );\r\n var newBuffer = new ArrayBuffer( nNewBufSize );\r\n var viewNew = new DataView( newBuffer );\r\n // copy in 4 byte chunks:\r\n for ( var i = 0; i < this.buffer.byteLength / 4; i++ )\r\n viewNew.setUint32( i * 4, this.viewBuf.getUint32( i * 4 ) );\r\n this.buffer = newBuffer;\r\n this.viewBuf = viewNew;\r\n //\tLog.Log( \"NewBufSize=\" + this.buffer.byteLength );\r\n }\r\n }\r\n\r\n _incSize( nLen )\r\n {\r\n if ( this.nPos + nLen >= this.buffer.byteLength )\r\n {\r\n // \"#IFDEBUG\"\r\n // alert( \"DBuf._incSize: \" + this.nSize + \", \" + nLen );\r\n // \"#ENDIF\"\r\n throw new Error( \"DataBuffer overrun\" );\r\n }\r\n this.nPos += nLen;\r\n this.nSize += nLen;\r\n if ( this.nSize >= this.buffer.byteLength )\r\n {\r\n throw new Error( \"DataBuffer Size Limit exc.\" );\r\n }\r\n }\r\n\r\n // All numbers are little endian in C++ DataBuffer:\r\n _swapBytes( view, nStart, nLen )\r\n {\r\n var bufSwap = [];\r\n for ( let i = 0; i < nLen; i++ )\r\n bufSwap.push( view.getUint8( nStart + i ) );\r\n\r\n for ( let i = 0; i < nLen; i++ )\r\n view.setUint8( nStart + i, bufSwap[ nLen - i - 1 ] );\r\n }\r\n\r\n}\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////17.01.2013\r\n\r\n// function testDataBuffers( nArraySize )\r\n// {\r\n// var buf1 = new DataBuffer();\r\n// buf1.writeString( \"Максим Горький\" );\r\n// var bool1 = true;\r\n// var bool2 = false;\r\n\r\n// buf1.writeInt32( nArraySize );\r\n// for ( var i = 0; i < nArraySize; i++ )\r\n// buf1.writeInt32( i );\r\n// buf1.writeInt32( nArraySize );\r\n// for ( var i = 0; i < nArraySize; i++ )\r\n// buf1.writeUint32( i * i );\r\n// buf1.writeBool( bool1 );\r\n// buf1.writeBool( bool2 );\r\n\r\n// // Read: \r\n// buf1.rewind();\r\n// var str = buf1.readString( 200 );\r\n// if ( str != \"Максим Горький\" )\r\n// return false;\r\n// textOut( str );\r\n// var nLenRead = buf1.readInt32();\r\n// for ( var i = 0; i < nLenRead; i++ )\r\n// if ( buf1.readInt32() != i )\r\n// return false;\r\n// nLenRead = buf1.readInt32();\r\n// for ( var i = 0; i < nLenRead; i++ )\r\n// if ( buf1.readUint32() != i * i )\r\n// return false;\r\n\r\n// if ( buf1.readBool() != bool1 )\r\n// return false;\r\n// if ( buf1.readBool() != bool2 )\r\n// return false;\r\n\r\n// var buf3 = new DataBuffer();\r\n// buf3.beginSizedWrite();\r\n// buf3.writeInt32( 0xaaaa );\r\n// buf3.beginSizedWrite();\r\n// buf3.writeInt32( 0x23 );\r\n// buf3.beginSizedWrite();\r\n// buf3.writeInt32( 0x5555 );\r\n// buf3.endSizedWrite();\r\n// buf3.endSizedWrite();\r\n// var fTest = 12.34567;\r\n// buf3.writeFloat32( fTest );\r\n// buf3.writeFloat64( fTest );\r\n// buf3.endSizedWrite();\r\n// buf3.rewind();\r\n\r\n// buf3.beginSizedRead();\r\n// if ( buf3.readInt32() != 0xaaaa )\r\n// return false;\r\n// buf3.beginSizedRead();\r\n// if ( buf3.readInt32() != 0x23 )\r\n// return false;\r\n// buf3.beginSizedRead();\r\n// if ( buf3.readInt32() != 0x5555 )\r\n// return false;\r\n// buf3.endSizedRead();\r\n// buf3.endSizedRead();\r\n// var fl32 = buf3.readFloat32();\r\n// textOut( fl32 );\r\n// var fl64 = buf3.readFloat64();\r\n// textOut( fl64 );\r\n// if ( fl64 != fTest )\r\n// return false;\r\n// buf3.endSizedRead();\r\n\r\n// var buf4 = new DataBuffer();\r\n// var arrBuf = new ArrayBuffer( 300 );\r\n// var view = new DataView( arrBuf );\r\n// view.setUint32( 0, 250 );\r\n// buf4._swapBytes( view, 0, 4 );\r\n// for ( var i = 4; i < 250; i++ )\r\n// view.setUint8( i, i );\r\n// buf4.readFromDataView( view, 0 );\r\n\r\n// return true;\r\n// }\r\n\r\n/////////////////////////////////////////////////////////////\r\n\r\nexport function createReadFactory( _func )\r\n{\r\n return function( _buf )\r\n {\r\n var res = new _func();\r\n res.read( _buf );\r\n return res;\r\n }\r\n}\r\n\r\nexport function createReadFactory2( _func )\r\n{\r\n return function( _buf )\r\n {\r\n var res = new _func();\r\n res.read2( _buf );\r\n return res;\r\n }\r\n}\r\n\r\n","// mw 27.3.2013\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nexport var Language = {\r\n\r\n\tENG: 0,\r\n\tDEU: 1, GER: 1,\r\n\tFRA: 2,\r\n\tESP: 3,\r\n\tITA: 4,\r\n\tNED: 5,\r\n\tPOR: 6,\r\n\tDEF: 7,\r\n\tSLO: 8,\r\n\tSWE: 9,\r\n\tBAS: 10,\r\n\tSVK: 11,\r\n\tPOL: 12,\r\n\tCZE: 13,\r\n\tCAT: 14,\r\n\tTRK: 15,\r\n\tMGY: 16,\r\n\tRUS: 17,\r\n\tGRK: 18,\r\n\tROM: 19,\r\n\tCHN: 20,\r\n\tUN: 21,\r\n\tNOR: 22,\r\n\tHEB: 23,\r\n\tUKR: 24,\r\n\tVIE: 25,\r\n\tARA: 26,\r\n\tSER: 27,\r\n\tLIT: 28,\r\n\tBRA: 29,\t// brasilian portuguese\r\n\tFAR: 30,\t// Farsi LTR\r\n\tCRO: 31,\r\n\tGAL: 32,\t// Gaelic (Irish)\r\n\tHIN: 33,\t// Hindi\r\n\r\n\tgetStrUserLanguage: function ()\r\n\t{\r\n\t\t// only newest chrome/firefox:\r\n\t\tif ( navigator.languages !== undefined && navigator.languages.length )\r\n\t\t{\r\n\t\t\treturn navigator.languages[0];\r\n\t\t}\r\n\r\n\t\tif ( navigator.language !== undefined )\r\n\t\t\treturn navigator.language;\r\n\t\tif ( navigator.userLanguage !== undefined )\t// IE\r\n\t\t\treturn navigator.userLanguage;\r\n\r\n\t\treturn \"en-en\";\r\n\t},\r\n\r\n\t\r\n\tgetStrUserLanguageTwoChars: function()\r\n\t{\r\n\t var ln = this.getStrUserLanguage();\r\n\t return ln.slice( 0, 2 );\r\n\t},\r\n\r\n\t// ne map wird mal gebraucht.\r\n\tgetUserLanguageId: function ()\r\n\t{\r\n\t\tvar lang = Language.getStrUserLanguage();\r\n\r\n //\"#IFDEBUG\"\r\n //lang = \"de-DE\";\r\n //\"#ENDIF\"\r\n\t\treturn this.getLanguageIdOfParam( lang );\r\n\t},\r\n\r\n\tgetLanguageIdOfParam: function( param )\r\n\t{\r\n\t\tif ( param.indexOf( \"de\" ) > -1 )\r\n\t\t\treturn this.DEU;\r\n\t\tif ( param.indexOf( \"es\" ) > -1 )\r\n\t\t\treturn this.ESP;\r\n\t\tif ( param.indexOf( \"nl\" ) > -1 )\r\n\t\t\treturn this.NED;\r\n\t\tif ( param.indexOf( \"fr\" ) > -1 )\r\n\t\t\treturn this.FRA;\r\n\t\tif ( param.indexOf( \"it\" ) > -1 )\r\n\t\t\treturn this.ITA;\r\n\t\tif ( param.indexOf( \"sl\" ) > -1 )\r\n\t\t\treturn this.SLO;\r\n\t\tif ( param.indexOf( \"sv\" ) > -1 )\r\n\t\t\treturn this.SWE;\r\n\t\tif ( param.indexOf( \"ro\" ) > -1 )\r\n\t\t\treturn this.ROM;\r\n\t\tif ( param.indexOf( \"zh\" ) > -1 )\r\n\t\t\treturn this.CHN;\r\n\t\tif ( param.indexOf( \"ru\" ) > -1 )\r\n\t\t\treturn this.RUS;\r\n\t\tif ( param.indexOf( \"no\" ) > -1 )\r\n\t\t\treturn this.NOR;\r\n\t\tif ( param.indexOf( \"pl\" ) > -1 )\r\n\t\t\treturn this.POL;\r\n\t\tif ( param.indexOf( \"he\" ) > -1 )\r\n\t\t\treturn this.HEB;\r\n\t\tif ( param.indexOf( \"ca\" ) > -1 )\r\n\t\t\treturn this.CAT;\r\n\t\tif ( param.indexOf( \"tr\" ) > -1 )\r\n\t\t\treturn this.TRK;\r\n\t\tif ( param.indexOf( \"sl\" ) > -1 )\r\n\t\t\treturn this.SLO;\r\n\t\tif ( param.indexOf( \"el\" ) > -1 )\r\n\t\t\treturn this.GRK;\r\n\t\tif ( param.indexOf( \"uk\" ) > -1 )\r\n\t\t\treturn this.UKR;\r\n\t\tif ( param.indexOf( \"vi\" ) > -1 )\r\n\t\t\treturn this.VIE;\r\n\t\tif ( param.indexOf( \"ar\" ) > -1 )\r\n\t\t\treturn this.ARA;\r\n\t\tif ( param.indexOf( \"sr\" ) > -1 )\r\n\t\t\treturn this.SER;\r\n\t\tif ( param.indexOf( \"lt\" ) > -1 )\r\n\t\t\treturn this.LIT;\r\n\t\tif ( param.indexOf( \"pt-br\" ) > -1 )\r\n\t\t\treturn this.BRA;\r\n\t\tif ( param.indexOf( \"pt\" ) > -1 )\r\n\t\t\treturn this.BRA;\t// this.POR\r\n\t\tif ( param.indexOf( \"fa\" ) > -1 )\r\n\t\t\treturn this.FAR;\r\n\t\tif ( param.indexOf( \"ga\" ) > -1 )\r\n\t\t\treturn this.GAL;\r\n\t\tif ( param.indexOf( \"hr\" ) > -1 )\r\n\t\t\treturn this.CRO;\r\n\t\tif ( param.indexOf( \"hi\" ) > -1 )\r\n\t\t\treturn this.HIN;\r\n\t\tif ( param.indexOf( \"cs\" ) > -1 )\r\n\t\t\treturn this.CZE;\r\n\r\n\t\treturn this.ENG;\r\n\t},\r\n\r\n\tgetParamOfLanguageId: function( id )\r\n\t{\r\n\t\tswitch( id )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\tcase Language.ENG:\r\n\t\t\t\treturn \"en\";\r\n\t\t\tcase Language.DEU:\r\n\t\t\t\treturn \"de\";\r\n\t\t\tcase Language.ESP:\r\n\t\t\t\treturn \"es\";\r\n\t\t\tcase Language.NED:\r\n\t\t\t\treturn \"nl\";\r\n\t\t\tcase Language.FRA:\r\n\t\t\t\treturn \"fr\";\r\n\t\t\tcase Language.ITA:\r\n\t\t\t\treturn \"it\";\r\n\t\t\tcase Language.POR:\r\n\t\t\t\treturn \"pt\";\r\n\t\t\tcase Language.SLO:\r\n\t\t\t\treturn \"sl\";\r\n\t\t\tcase Language.SWE:\r\n\t\t\t\treturn \"sv\";\r\n\t\t\tcase Language.ROM:\r\n\t\t\t\treturn \"ro\";\r\n\t\t\tcase Language.CHN:\r\n\t\t\t\treturn \"zh\";\r\n\t\t\tcase Language.RUS:\r\n\t\t\t\treturn \"ru\";\r\n\t\t\tcase Language.NOR:\r\n\t\t\t\treturn \"no\";\r\n\t\t\tcase Language.POL:\r\n\t\t\t\treturn \"pl\";\r\n\t\t\tcase Language.HEB:\r\n\t\t\t\treturn \"he\";\r\n\t\t\tcase Language.CAT:\r\n\t\t\t\treturn \"ca\";\r\n\t\t\tcase Language.TRK:\r\n\t\t\t\treturn \"tr\";\r\n\t\t\tcase Language.GRK:\r\n\t\t\t\treturn \"el\";\r\n\t\t\tcase Language.UKR:\r\n\t\t\t\treturn \"uk\";\r\n\t\t\tcase Language.VIE:\r\n\t\t\t\treturn \"vi\";\r\n\t\t\tcase Language.ARA:\r\n\t\t\t\treturn \"ar\";\r\n\t\t\tcase Language.SER:\r\n\t\t\t\treturn \"sr\";\r\n\t\t\tcase Language.LIT:\r\n\t\t\t\treturn \"lt\";\r\n\t\t\tcase Language.BRA:\r\n\t\t\t\treturn \"pt\";\r\n\t\t\tcase Language.FAR:\r\n\t\t\t\treturn \"fa\";\r\n\t\t\tcase Language.CRO:\r\n\t\t\t\treturn \"hr\";\r\n\t\t\tcase Language.GAL:\r\n\t\t\t\treturn \"ga\";\r\n\t\t\tcase Language.HIN:\r\n\t\t\t\treturn \"hi\";\r\n\t\t\tcase Language.CZE:\r\n\t\t\t\treturn \"cs\";\r\n\t\t}\r\n\t},\r\n\r\n\tgetHelpParamOfLanguageId: function( langId )\r\n\t{\r\n\t\tswitch ( langId )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\tcase Language.ENG:\r\n\t\t\t\treturn \"en\";\r\n\t\t\tcase Language.DEU:\r\n\t\t\t\treturn \"de\";\r\n\t\t\tcase Language.ESP:\r\n\t\t\t\treturn \"es\";\r\n\t\t\tcase Language.FRA:\r\n\t\t\t\treturn \"fr\";\r\n\t\t\tcase Language.NED:\r\n\t\t\t\treturn \"nl\";\r\n\t\t\tcase Language.ITA:\r\n\t\t\t\treturn \"it\";\r\n\t\t}\r\n\t},\r\n\r\n\tgetRibbonFlagName: function ( langId )\r\n\t{\r\n\t\tswitch ( langId )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\tcase Language.ENG:\r\n\t\t\t\tif ( this.getStrUserLanguage() === \"en-us\" )\r\n\t\t\t\t\treturn \"us\";\r\n\t\t\t\telse\r\n\t\t\t\t\treturn \"gb\";\r\n\t\t\tcase Language.DEU:\r\n\t\t\t\tif ( this.getStrUserLanguage() === \"de-at\" )\r\n\t\t\t\t\treturn \"at\";\r\n\t\t\t\telse\r\n\t\t\t\t\treturn \"de\";\r\n\t\t\tcase Language.ESP:\r\n\t\t\t\treturn \"es\";\r\n\t\t\tcase Language.NED:\r\n\t\t\t\treturn \"nl\";\r\n\t\t\tcase Language.ROM:\r\n\t\t\t\treturn \"ro\";\r\n\t\t\tcase Language.CHN:\r\n\t\t\t\tswitch ( this.getStrUserLanguage() )\r\n\t\t\t\t{\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\tcase \"zh-cn\":\r\n\t\t\t\t\t\treturn \"cn\";\r\n\t\t\t\t\tcase \"zh-tw\":\r\n\t\t\t\t\t\treturn \"tw\";\r\n\t\t\t\t\tcase \"zh-sg\":\r\n\t\t\t\t\t\treturn \"si\";\r\n\t\t\t\t\tcase \"zh-hk\":\r\n\t\t\t\t\t\treturn \"hk\";\r\n\t\t\t\t}\r\n\t\t\tcase Language.FRA:\r\n\t\t\t\treturn \"fr\";\r\n\t\t\tcase Language.RUS:\r\n\t\t\t\treturn \"ru\";\r\n\t\t\tcase Language.NOR:\r\n\t\t\t\treturn \"no\";\r\n\t\t\tcase Language.ITA:\r\n\t\t\t\treturn \"it\";\r\n\t\t\tcase Language.POL:\r\n\t\t\t\treturn \"pl\";\r\n\t\t\tcase Language.UN:\r\n\t\t\t\treturn \"_United_Nations\";\r\n\t\t\tcase Language.HEB:\r\n\t\t\t\treturn \"il\";\r\n\t\t\tcase Language.CAT:\r\n\t\t\t\treturn \"_Catalonia\";\r\n\t\t\tcase Language.TRK:\r\n\t\t\t\treturn \"tr\";\r\n\t\t\tcase Language.SLO:\r\n\t\t\t\treturn \"si\";\t// sl is Sierra Leone\r\n\t\t\tcase Language.GRK:\r\n\t\t\t\treturn \"gr\";\r\n\t\t\tcase Language.UKR:\r\n\t\t\t\treturn \"ua\";\r\n\t\t\tcase Language.VIE:\r\n\t\t\t\treturn \"vn\";\t\t// vi is virgin islands\r\n\t\t\tcase Language.ARA:\r\n\t\t\t\treturn \"sa\";\r\n\t\t\tcase Language.SER:\r\n\t\t\t\treturn \"rs\";\r\n\t\t\tcase Language.LIT:\r\n\t\t\t\treturn \"lt\";\r\n\t\t\tcase Language.BRA:\r\n\t\t\t\t//if ( this.getStrUserLanguage() == \"pt-br\" )\r\n\t\t\t\t//\treturn \"br\";\r\n\t\t\t\t//else\r\n\t\t\t\t//\treturn \"pt\";\r\n\t\t\t\treturn \"br\";\r\n\t\t\tcase Language.FAR:\r\n\t\t\t\treturn \"ir\";\r\n\t\t\tcase Language.CRO:\r\n\t\t\t\treturn \"hr\";\r\n\t\t\tcase Language.GAL:\r\n\t\t\t\treturn \"ie\";\r\n\t\t\tcase Language.HIN:\r\n\t\t\t\treturn \"in\";\r\n\t\t\tcase Language.CZE:\r\n\t\t\t\treturn \"cz\";\r\n\t\t}\r\n\t}\r\n};\r\n\r\n//TODO solve above in enum\r\n\r\nLanguage.getInternalName = function ( lid )\r\n{\r\n\tswitch ( lid )\r\n\t{\r\n\t\tdefault:\r\n\t\tcase Language.ENG:\r\n\t\t\treturn \"ENG\";\r\n\t\tcase Language.DEU:\r\n\t\tcase Language.GER:\r\n\t\t\treturn \"GER\";\r\n\t\tcase Language.ESP:\r\n\t\t\treturn \"ESP\";\r\n\t\tcase Language.NED:\r\n\t\t\treturn \"NED\";\r\n\t\tcase Language.ROM:\r\n\t\t\treturn \"ROM\";\r\n\t\tcase Language.CHN:\r\n\t\t\treturn \"CHN\";\r\n\t\tcase Language.FRA:\r\n\t\t\treturn \"FRA\";\r\n\t\tcase Language.RUS:\r\n\t\t\treturn \"RUS\";\r\n\t\tcase Language.NOR:\r\n\t\t\treturn \"NOR\";\r\n\t\tcase Language.POL:\r\n\t\t\treturn \"POL\";\r\n\t\tcase Language.ITA:\r\n\t\t\treturn \"ITA\";\r\n\t\tcase Language.HEB:\r\n\t\t\treturn \"HEB\";\r\n\t\tcase Language.CAT:\r\n\t\t\treturn \"CAT\";\r\n\t\tcase Language.TRK:\r\n\t\t\treturn \"TRK\";\r\n\t\tcase Language.SLO:\r\n\t\t\treturn \"SLO\";\r\n\t\tcase Language.UN:\t// Convention\r\n\t\t\treturn \"UN\";\r\n\t\tcase Language.GRK:\r\n\t\t\treturn \"EL\";\r\n\t\tcase Language.UKR:\r\n\t\t\treturn \"UKR\";\r\n\t\tcase Language.VIE:\r\n\t\t\treturn \"VIE\";\r\n\t\tcase Language.ARA:\r\n\t\t\treturn \"ARA\";\r\n\t\tcase Language.SER:\r\n\t\t\treturn \"SER\";\r\n\t\tcase Language.LIT:\r\n\t\t\treturn \"LIT\";\r\n\t\tcase Language.BRA:\r\n\t\t\treturn \"BRA\";\r\n\t\tcase Language.FAR:\r\n\t\t\treturn \"FAR\";\r\n\t\tcase Language.CRO:\r\n\t\t\treturn \"CRO\";\r\n\t\tcase Language.GAL:\r\n\t\t\treturn \"GAL\";\r\n\t\tcase Language.HIN:\r\n\t\t\treturn \"HIN\";\r\n\t\tcase Language.CZE:\r\n\t\t\treturn \"CZE\";\r\n\t}\r\n};\r\n\r\nLanguage.getNativeLangName = function ( lid )\r\n{\r\n\tswitch ( lid )\r\n\t{\r\n\t\tdefault:\r\n\t\tcase Language.ENG:\r\n\t\t\treturn \"English\";\r\n\t\tcase Language.DEU:\r\n\t\t\treturn \"Deutsch\";\r\n\t\tcase Language.ESP:\r\n\t\t\treturn \"Español\";\r\n\t\tcase Language.NED:\r\n\t\t\treturn \"Nederlands\";\r\n\t\tcase Language.ROM:\r\n\t\t\treturn \"Român\";\r\n\t\tcase Language.CHN:\r\n\t\t\treturn \"中文\";\r\n\t\tcase Language.FRA:\r\n\t\t\treturn \"Français\";\r\n\t\tcase Language.RUS:\r\n\t\t\treturn \"Русский\";\r\n\t\tcase Language.NOR:\r\n\t\t\treturn \"Norsk\";\r\n\t\tcase Language.POL:\r\n\t\t\treturn \"Polski\";\r\n\t\tcase Language.ITA:\r\n\t\t\treturn \"Italiano\";\r\n\t\tcase Language.HEB:\r\n\t\t\treturn \"עברית\";\r\n\t\tcase Language.CAT:\r\n\t\t\treturn \"Català\";\r\n\t\tcase Language.TRK:\r\n\t\t\treturn \"Türkçe\";\r\n\t\tcase Language.SLO:\r\n\t\t\treturn \"Slovenski\";\r\n\t\tcase Language.GRK:\r\n\t\t\treturn \"Ελληνικά\"\r\n\t\tcase Language.UKR:\r\n\t\t\treturn \"Українська\";\r\n\t\tcase Language.VIE:\r\n\t\t\treturn \"Tiếng Việt\";\r\n\t\tcase Language.ARA:\r\n\t\t\treturn \"العربية\";\r\n\t\tcase Language.SER:\r\n\t\t\treturn \"Srbski\";\r\n\t\tcase Language.LIT:\r\n\t\t\treturn \"Lietuvių\";\r\n\t\tcase Language.BRA:\r\n\t\t\treturn \"Português\";\r\n\t\tcase Language.FAR:\r\n\t\t\treturn \"فارسی\"\r\n\t\tcase Language.CRO:\r\n\t\t\treturn \"Hrvatski\";\r\n\t\tcase Language.GAL:\r\n\t\t\treturn \"Gaeilge\";\r\n\t\tcase Language.HIN:\r\n\t\t\treturn \"हिन्दी\";\r\n\t\tcase Language.CZE:\r\n\t\t\treturn \"Čeština\";\r\n\t}\r\n};\r\n\r\nLanguage.getNativeLangNames = function ( lids )\r\n{\r\n\tvar ret = [];\r\n\tlids.forEach( function ( lid )\r\n\t{\r\n\t\tret.push( this.getNativeLangName( lid ) );\r\n\r\n\t}.bind( this ) );\r\n\treturn ret;\r\n};\r\n\r\nLanguage.getFlagNames = function ( lids )\r\n{\r\n\tvar ret = [];\r\n\tlids.forEach( function ( lid )\r\n\t{\r\n\t\tret.push( this.getRibbonFlagName( lid ) );\r\n\t}.bind( this ) );\r\n\r\n\treturn ret;\r\n};\r\n\r\n/*\r\naf\tAfrikaans\tsq\tAlbanian\r\nar-sa\tArabic (Saudi Arabia)\tar-iq\tArabic (Iraq)\r\nar-eg\tArabic (Egypt)\tar-ly\tArabic (Libya)\r\nar-dz\tArabic (Algeria)\tar-ma\tArabic (Morocco)\r\nar-tn\tArabic (Tunisia)\tar-om\tArabic (Oman)\r\nar-ye\tArabic (Yemen)\tar-sy\tArabic (Syria)\r\nar-jo\tArabic (Jordan)\tar-lb\tArabic (Lebanon)\r\nar-kw\tArabic (Kuwait)\tar-ae\tArabic (U.A.E.)\r\nar-bh\tArabic (Bahrain)\tar-qa\tArabic (Qatar)\r\neu\tBasque (Basque)\tbg\tBulgarian\r\nbe\tBelarusian\tca\tCatalan\r\nzh-tw\tChinese (Taiwan)\tzh-cn\tChinese (PRC)\r\nzh-hk\tChinese (Hong Kong SAR)\tzh-sg\tChinese (Singapore)\r\nhr\tCroatian\tcs\tCzech\r\nda\tDanish\tnl\tDutch (Standard)\r\nnl-be\tDutch (Belgium)\ten\tEnglish\r\nen-us\tEnglish (United States)\ten-gb\tEnglish (United Kingdom)\r\nen-au\tEnglish (Australia)\ten-ca\tEnglish (Canada)\r\nen-nz\tEnglish (New Zealand)\ten-ie\tEnglish (Ireland)\r\nen-za\tEnglish (South Africa)\ten-jm\tEnglish (Jamaica)\r\nen\tEnglish (Caribbean)\ten-bz\tEnglish (Belize)\r\nen-tt\tEnglish (Trinidad)\tet\tEstonian\r\nfo\tFaeroese\t\r\nfa\tFarsi\r\nfi\tFinnish\tfr\tFrench (Standard)\r\nfr-be\tFrench (Belgium)\tfr-ca\tFrench (Canada)\r\nfr-ch\tFrench (Switzerland)\tfr-lu\tFrench (Luxembourg)\r\ngd\tGaelic (Scotland)\t\r\nga\tIrish\r\nde\tGerman (Standard)\tde-ch\tGerman (Switzerland)\r\nde-at\tGerman (Austria)\tde-lu\tGerman (Luxembourg)\r\nde-li\tGerman (Liechtenstein)\t\r\nel\tGreek\r\nhe\tHebrew\thi\tHindi\r\nhu\tHungarian\t\r\nis\tIcelandic\r\nid\tIndonesian\t\r\nit\tItalian (Standard)\r\nit-ch\tItalian (Switzerland)\tja\tJapanese\r\nko\tKorean\tko\tKorean (Johab)\r\nlv\tLatvian\tlt\tLithuanian\r\nmk\tMacedonian (FYROM)\tms\tMalaysian\r\nmt\tMaltese\tno\tNorwegian (Bokmal)\r\nno\tNorwegian (Nynorsk)\tpl\tPolish\r\npt-br\tPortuguese (Brazil)\tpt\tPortuguese (Portugal)\r\nrm\tRhaeto-Romanic\tro\tRomanian\r\nro-mo\tRomanian (Republic of Moldova)\tru\tRussian\r\nru-mo\tRussian (Republic of Moldova)\tsz\tSami (Lappish)\r\nsr\tSerbian (Cyrillic)\tsr\tSerbian (Latin)\r\nsk\tSlovak\tsl\tSlovenian\r\nsb\tSorbian\tes\tSpanish (Spain)\r\nes-mx\tSpanish (Mexico)\tes-gt\tSpanish (Guatemala)\r\nes-cr\tSpanish (Costa Rica)\tes-pa\tSpanish (Panama)\r\nes-do\tSpanish (Dominican Republic)\tes-ve\tSpanish (Venezuela)\r\nes-co\tSpanish (Colombia)\tes-pe\tSpanish (Peru)\r\nes-ar\tSpanish (Argentina)\tes-ec\tSpanish (Ecuador)\r\nes-cl\tSpanish (Chile)\tes-uy\tSpanish (Uruguay)\r\nes-py\tSpanish (Paraguay)\tes-bo\tSpanish (Bolivia)\r\nes-sv\tSpanish (El Salvador)\tes-hn\tSpanish (Honduras)\r\nes-ni\tSpanish (Nicaragua)\tes-pr\tSpanish (Puerto Rico)\r\nsx\tSutu\tsv\tSwedish\r\nsv-fi\tSwedish (Finland)\tth\tThai\r\nts\tTsonga\ttn\tTswana\r\ntr\tTurkish\tuk\tUkrainian\r\nur\tUrdu\tve\tVenda\r\nvi\tVietnamese\txh\tXhosa\r\nji\tYiddish\tzu\tZulu\r\n*/\r\n\r\n\r\n\r\n/*\r\nWish List:\r\n\r\n* ar\tArabic (Saudi Arabia)\r\nbg\tBulgarian\r\nbe\tBelarusian\t\r\n* ca\tCatalan\r\n* zh-cn\tChinese (PRC)\r\nhr\tCroatian\t\r\ncs\tCzech\r\nda\tDanish\t\r\net\tEstonian\r\nfi\tFinnish\t\r\n* fr\tFrench (Standard)\r\n* de\tGerman (Standard)\r\n* el\tGreek\r\n*he\tHebrew\t\r\nhi\tHindi\r\nhu\tHungarian\t\r\nis\tIcelandic\r\nid\tIndonesian\t\r\n*it\tItalian (Standard)\r\nja\tJapanese\r\nko\tKorean\t\r\nlv\tLatvian\t\r\n* lt\tLithuanian\r\nmk\tMacedonian (FYROM)\t\r\nms\tMalaysian\r\n* nl\tDutch (Standard)\r\n* no\tNorwegian\r\n(*) pl\tPolish\r\npt\tPortuguese (Portugal)\r\n* ro\tRomanian\r\n* ru\tRussian\r\n* sr\tSerbian (Cyrillic)\t\r\nsk\tSlovak\t\r\n* sl\tSlovenian\r\n* es\tSpanish (Spain)\r\nsv\tSwedish\r\nth\tThai\r\n*tr\tTurkish\t\r\n*uk\tUkrainian\r\n*vi\tVietnamese\r\n\r\n*/\r\n\r\n/*\r\nSchachlich wichtig, ausstehend:\r\n\r\n* ar\tArabic\t\r\nbg\tBulgarian\r\ncs\tCzech\r\nda\tDanish\t\r\nfi\tFinnish\t\r\nhi\tHindi\r\nhu\tHungarian\t\r\nid\tIndonesian\t\r\npt\tPortuguese (Brasil)\r\n*sr\tSerbian (Cyrillic)\t\r\nsk\tSlovak\t\r\nsv\tSwedish\r\n\r\n*/\r\n\r\n\r\n","// ES 6 MW: Feb 27, 2020\r\n\r\nimport { strUtil } from 'common/Tools/Tools'\r\nimport { Square } from 'common/Chess/Logic/Chess'\r\nimport { createReadFactory } from 'common/Container/DataBuffer'\r\nimport { Language } from 'common/Tools/Language'\r\nimport { TimeTools } from 'common/Tools/Tools'\r\nimport { Move } from 'common/Chess/Logic/Move'\r\nimport { DataBuffer } from 'common/Container/DataBuffer'\r\n\r\nexport var AnnoType = {\r\n\tPOSTTEXT: 2,\r\n\tSYMBOL: 3,\r\n\tSQUARE_LIST: 4,\r\n\tARROW_LIST: 5,\r\n\tDIAGRAM: 6,\r\n\tTIME: 7,\r\n\tDATE: 8,\r\n\tTRAINING: 9,\r\n\t//\tgap for 6 additional annotypes with big flag\r\n\r\n\tBIGMAX: 16,\r\n\tAUDIO: 16, \t\t//\t16\t\t//\tno big flag necessary\r\n\tPICTURE: 17, \t\t//\t17\r\n\tVIDEO: 18, \t\t//\t18\r\n\tGAME_QUOTATION: 19, \t\t//\t19\t\t//\tembedded game format\r\n\tPAWN_STRUCT: 20,\t\t\t//\t20\t\t//\tUCHAR colour/both (white/black/both)\r\n\tPIECE_PATH: 21,\t\t\t\t//\t21\t\t//\tUCHAR square, or squarelist!\r\n\tMIDDLEGAME_CLASS: 22,\t\t//\t22\t\t//\tLONG, to be specified\r\n\tENDGAME_CLASS: 23,\t\t\t//\t23\t\t//\tLONG, to be specified\r\n\tCRITICAL_POS: 24,\t\t\t//\t24\t\t//\tUCHAR, to be specified\r\n\tCORR: 25,\t\t\t\t\t\t//\t25\r\n\tSTREAM: 26,\t\t\t\t\t// 26\t\t// ab Fritz8 Texte mit Link auf WMV Dateien\r\n\t// für CB8 zum anlegen; \r\n\t//\tim Moment nur interne Verwendung in Texten, setzt im Header AA_STREAM (02.03.2005)\r\n\tCHESS_VARIANT: 27,\t\t\t//\t27\t\t//\tab Fritz 9 für andere Schachvarianten\r\n\r\n\t//\tgap for 4 additional annotypes reflected in header\r\n\r\n\tMAX: 32,\r\n\tCAPTION: 32,\t\t\t// 32\r\n\tFRITZ_EVAL: 33,\t\t\t\t// 33\r\n\tMOVE_MEDAL: 34,\t\t\t\t//\t34\t\t//\tULONG, medal for single move, only USHORT used now\r\n\tCOLOR: 35,\t\t\t\t\t//\t35\r\n\tTIME_CONTROL: 36,\t\t\t//\t36\t\t//\tused in Fritz 7 to store the time control\r\n\tSYNC: 37,\t\t\t\t\t\t//\t37\t\t//\tsnychronization stream/board\r\n\tEVAL_PROFILE: 38,\r\n\t//\tgap for 90 additional internal annotypes\r\n\r\n\r\n\t//\tinterne Verwendung\r\n\tAUDIO_STREAM: 127,\t\t\t// 127\t// ab CB9 Texte mit Link auf WMA Dateien;\r\n\t//\tim Moment nur interne Verwendung in Texten, setzt im Header AA_STREAM (02.03.2005)\r\n\r\n\tGENERIC: 0x7f,\r\n\tANNO_BITS: 0x7f,\r\n\tPRE_BIT: 0x80,\r\n\r\n\ttoString:\r\n\t\tfunction( n )\r\n\t\t{\r\n\t\t\tfor ( var attr in this )\r\n\t\t\t{\r\n\t\t\t\tif ( this[ attr ] === n )\r\n\t\t\t\t\treturn \"AnnoType: \" + attr;\r\n\t\t\t}\r\n\t\t\treturn \"Unknown AnnoType: \" + n;\r\n\t\t}\r\n};\r\n\r\nexport var AnnoMarkType =\r\n{\r\n\tNONE: 0,\r\n\tGOOD: 1,\r\n\tBAD: 2,\r\n\tVERY_GOOD: 3,\r\n\tVERY_BAD: 4,\r\n\tINTERESTING: 5,\r\n\tDUBIOUS: 6,\r\n\tONLY_MOVE: 8,\r\n\tZUGZWANG: 22,\r\n\tMYMOVE: 165,\r\n\tIMPORTANT: 166,\r\n\tWHITE: 167,\r\n\tBLACK: 168,\r\n\tBOTH: 169,\r\n};\r\n\r\nexport var AnnoEvalType =\r\n{\r\n\tNONE: 0,\r\n\r\n\tEQUAL: 11,\r\n\tUNCLEAR: 13,\r\n\tBLACK_SLIGHTLY_BETTER: 15,\r\n\tBLACK_BETTER: 17,\r\n\tBLACK_WINS: 19,\r\n\r\n\tWHITE_WINS: 18,\r\n\tWHITE_BETTER: 16,\r\n\tWHITE_SLIGHTLY_BETTER: 14,\r\n\r\n\tCOMPENSATION: 44,\r\n\tCOUNTERPLAY: 132,\r\n\tINITIATIVE: 36,\r\n\tATTACK: 40,\r\n\tZEITNOT: 138,\r\n\tDEVELOPMENT: 32,\r\n\tNOVELTY: 146,\r\n};\r\n\r\nexport var TextType =\r\n{\r\n\tTT_ANSI: 0,\r\n\tTT_RTF: 1,\r\n\tTT_HTML: 2,\r\n\tTT_TOKEN: 3,\r\n\tTT_JSON: 4\r\n};\r\n\r\nAnnoType.PRETEXT = AnnoType.PRE_BIT | AnnoType.POSTTEXT;\r\nAnnoType.PRE_SQUARE_LIST = AnnoType.PRE_BIT | AnnoType.SQUARE_LIST;\r\nAnnoType.PRE_ARROW_LIST = AnnoType.PRE_BIT | AnnoType.ARROW_LIST;\r\n\r\nexport var Medal =\r\n{\r\n\tBESTGAME: 0x0001,\r\n\tTOURN_DECISIVE: 0x0002,\r\n\tSAMPLE_OPENING: 0x0004,\r\n\tIMPORTANT_NOVELTY: 0x0008,\r\n\tPAWNSTRUCTURE: 0x0010,\r\n\tSTRATEGY: 0x0020,\r\n\tTACTICS: 0x0040,\r\n\tATTACK: 0x0080,\r\n\tDEFENSE: 0x0100,\r\n\tSACRIFICE: 0x0200,\r\n\tMATERIAL: 0x0400,\r\n\tPIECEPLAY: 0x0800,\r\n\tENDGAME: 0x1000,\r\n\tTACTICAL_BLUNDER: 0x2000,\r\n\tSTRATEGICAL_BLUNDER: 0x4000,\r\n\tUSER: 0x8000\r\n};\r\n\r\nexport var AnnoFactory = {};\r\n\r\nAnnoFactory.factory = function( _type )\r\n{\r\n\tif ( _type in this )\r\n\t{\r\n\t\tvar func = this[ _type ];\r\n\t\treturn new func();\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport class AnnoRec\r\n{\r\n\tstatic readHeader( _buf )\r\n\t{\r\n\t\treturn {\r\n\t\t\tinxMv: _buf.readBEInt24(),\r\n\t\t\ttype: _buf.readByte(),\r\n\t\t\tlen: _buf.readBEInt16()\r\n\t\t};\r\n\t}\r\n\r\n\tstatic writeHeader( buf, inxMv, type, len )\r\n\t{\r\n\t\tbuf.writeBEInt24( inxMv );\r\n\t\tbuf.writeByte( type );\r\n\t\tbuf.writeBEInt16( len );\r\n\t};\r\n\r\n\tstatic ANNO_HEAD_SIZE = 6;\r\n}\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// TextAnno\r\n\r\nexport class TextAnno \r\n{\r\n\tconstructor( _str )\r\n\t{\r\n\t\tthis.textType = TextType.TT_ANSI;\r\n\r\n\t\tif ( _str )\r\n\t\t\tthis.m_str = _str;\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.m_str = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\t//TextAnno.prototype = new AnnoRec();\r\n\r\n\tgetString()\r\n\t{\r\n\t\treturn this.m_str;\r\n\t}\r\n\r\n\tsetString( _str )\r\n\t{\r\n\t\tthis.m_str = _str;\r\n\t}\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn this.m_str;\r\n\t};\r\n\r\n\taddText( str )\r\n\t{\r\n\t\tthis.m_str += str;\r\n\t};\r\n\r\n\twrite( buf, type )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + 2 + this.m_str.length;\r\n\t\tbuf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( buf, 0, type /*AnnoType.POSTTEXT*/, len );\r\n\t\tbuf.writeByte( this.textType || TextType.TT_ANSI ); // TT_ANSI\r\n\t\tbuf.writeByte( 0 );\t// LID_DEF\r\n\t\tbuf.writeSizedString( this.m_str );\r\n\t};\r\n\r\n\tread( _annoLen, _buf )\r\n\t{\r\n\t\tthis.textType = _buf.readByte();\r\n\t\t_buf.readByte();\r\n\t\tthis.m_str = _buf.readSizedString( _annoLen - 2 );\r\n\t\tif ( strUtil.mayBeUtf8( this.m_str ) )\r\n\t\t{\r\n\t\t\tthis.m_str = strUtil.decodeUTF8( this.m_str );\r\n\t\t}\r\n\t};\r\n}\r\n\r\nAnnoFactory[ AnnoType.POSTTEXT ] = TextAnno;\r\nAnnoFactory[ AnnoType.PRETEXT ] = TextAnno;\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// SymbolsAnno\r\n\r\nexport class SymbolsAnno extends Array\r\n{\r\n\ttoString()\r\n\t{\r\n\t\treturn \"syms\";\r\n\t};\r\n\r\n\tisExclusiveMark( s )\r\n\t{\r\n\t\treturn s >= 1 && s <= 6;\r\n\t}\r\n\r\n\tisExclusiveEval = function( s )\r\n\t{\r\n\t\treturn ( s >= 11 && s <= 19 ) || s === 44;\t// 44 is unclear\r\n\t}\r\n\r\n\taddSymbol( symbol )\r\n\t{\r\n\t\tfor ( var i = 0; i < this.length; i++ )\r\n\t\t{\r\n\t\t\tif ( ( this.isExclusiveMark( this[ i ] ) && this.isExclusiveMark( symbol ) )\r\n\t\t\t\t|| ( this.isExclusiveEval( this[ i ] ) && this.isExclusiveEval( symbol ) ) )\t// convention: add same symbol means removing it:\r\n\t\t\t{\r\n\t\t\t\tif ( symbol !== this[ i ] )\r\n\t\t\t\t\tthis.push( symbol );\r\n\t\t\t\tthis.splice( i, 1 );\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor ( let i = 0; i < this.length; i++ )\r\n\t\t{\r\n\t\t\tif ( symbol === this[ i ] )\r\n\t\t\t{\r\n\t\t\t\tthis.splice( i, 1 );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.push( symbol );\r\n\t};\r\n\r\n\thasExclusiveEval( symbol )\r\n\t{\r\n\t\tfor ( var i = 0; i < this.length; i++ )\r\n\t\t{\r\n\t\t\tif ( symbol === this[ i ] && this.isExclusiveEval( symbol ) )\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tgetEval()\r\n\t{\r\n\t\tfor ( var i = 0; i < this.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this.isExclusiveEval( this[ i ] ) )\r\n\t\t\t\treturn this[ i ];\r\n\t\t}\r\n\t\treturn 0;\r\n\t};\r\n\r\n\tremoveMyMoveMark()\r\n\t{\r\n\t\tfor ( var i = 0; i < this.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this[ i ] === AnnoMarkType.MYMOVE )\r\n\t\t\t{\r\n\t\t\t\tthis.splice( i, 1 );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t//var cnt = 0;\r\n\t\t//for ( var i in this )\r\n\t\t//{\r\n\t\t//\tif ( this.hasOwnProperty( i ) )\r\n\t\t//\t\tcnt++;\r\n\t\t//}\r\n\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + this.length;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.SYMBOL, len );\r\n\r\n\t\tfor ( var i = 0; i < this.length; i++ )\r\n\t\t{\r\n\t\t\t_buf.writeByte( this[ i ] );\r\n\t\t}\r\n\t};\r\n\r\n\tread( length, _buf )\r\n\t{\r\n\t\t//this.length = _buf.readByte();\r\n\t\tfor ( var inx = 0, len = length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tthis.push( _buf.readByte() );\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAnnoFactory[ AnnoType.SYMBOL ] = SymbolsAnno;\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// ColSq, ColArrow Anno\r\n\r\nexport var BoardColor = {\r\n\tNONE: 0,\r\n\tGREEN: 1,\r\n\tYELLOW: 2,\r\n\tRED: 3,\r\n\r\n\tTRANSYELLOW: 4\r\n}\r\n\r\nBoardColor.fromChar = function( _ch )\r\n{\r\n\tswitch ( _ch )\r\n\t{\r\n\t\tcase 'R':\r\n\t\t\treturn BoardColor.RED;\r\n\t\tcase 'Y':\r\n\t\t\treturn BoardColor.YELLOW;\r\n\t\tcase 'G':\r\n\t\t\treturn BoardColor.GREEN;\r\n\t\tdefault:\r\n\t\t\treturn BoardColor.NONE;\r\n\t}\r\n}\r\n\r\nBoardColor.fromString = function( _str )\r\n{\r\n\tswitch ( _str )\r\n\t{\r\n\t\tcase 'R':\r\n\t\tcase 'LR':\r\n\t\t\treturn BoardColor.RED;\r\n\t\tcase 'Y':\r\n\t\t\treturn BoardColor.YELLOW;\r\n\t\tcase 'LG':\r\n\t\tcase 'G':\r\n\t\t\treturn BoardColor.GREEN;\r\n\t\tdefault:\r\n\t\t\treturn BoardColor.GREEN;\r\n\t\t//\treturn BoardColor.NONE;\r\n\t}\r\n}\r\n\r\nBoardColor.toChar = function( _col )\r\n{\r\n\tswitch ( _col )\r\n\t{\r\n\t\tdefault:\r\n\t\t\treturn 'X';\r\n\t\tcase BoardColor.RED:\r\n\t\t\treturn 'R';\r\n\t\tcase BoardColor.YELLOW:\r\n\t\t\treturn 'Y';\r\n\t\tcase BoardColor.GREEN:\r\n\t\t\treturn 'G';\r\n\t}\r\n}\r\n\r\nexport class ColSq\r\n{\r\n\tconstructor( _fld, _col )\r\n\t{\r\n\t\tthis.field = _fld;\r\n\t\tthis.color = _col;\r\n\t}\r\n\r\n\tstatic STRING_LEN = 3;\r\n\r\n\tinit( _strVal )\r\n\t{\r\n\t\tthis.color = BoardColor.GREEN;\r\n\t\tthis.field = Square.A1;\r\n\r\n\t\tif ( _strVal.length === 4 )\r\n\t\t{\r\n\t\t\tthis.color = BoardColor.fromString( _strVal.substring( 0, 2 ) );\r\n\t\t\tthis.field = Square.fromString( _strVal.substring( 2, 4 ) );\r\n\t\t}\r\n\t\telse if ( _strVal.length === 3 )\r\n\t\t{\r\n\t\t\tthis.color = BoardColor.fromChar( _strVal[ 0 ] );\r\n\t\t\tthis.field = Square.fromString( _strVal.substring( 1 ) );\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tstatic readFactory = createReadFactory( ColSq );\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.color = _buf.readByte();\r\n\t\tthis.field = _buf.readByte();\r\n\t\tthis.color--;\r\n\t\tthis.field--;\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByte( this.color + 1 );\r\n\t\t_buf.writeByte( this.field + 1 );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn BoardColor.toChar( this.color ) + Square.toString( this.field );\r\n\t};\r\n\r\n\tgetColour()\r\n\t{\r\n\t\t// just the frames: ... less transparent:\r\n\t\tswitch ( this.color )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'black';\r\n\t\t\tcase BoardColor.GREEN:\r\n\t\t\t\treturn 'hsla( 120, 65%, 50%, 0.75 )';\r\n\t\t\tcase BoardColor.YELLOW:\r\n\t\t\t\treturn 'hsla( 60, 65%, 50%, 0.8 )';\r\n\t\t\tcase BoardColor.RED:\r\n\t\t\t\treturn 'hsla( 0, 65%, 50%, 0.75 )';\r\n\t\t}\r\n\r\n\t\t// old technique: whole square\r\n\t\t//switch ( this.color )\r\n\t\t//{\r\n\t\t//\tcase 1 /*HC_GREEN*/:\r\n\t\t//\t\treturn 'rgba( 10, 255, 10, 0.6 )';\r\n\t\t//\tcase 2 /* HC_YELLOW*/:\r\n\t\t//\t\treturn 'rgba( 255, 255, 10, 0.6 )';\r\n\t\t//\tcase 3 /* HC_RED*/:\r\n\t\t//\t\treturn 'rgba( 255, 10, 10, 0.6 )';\r\n\r\n\t\t//}\r\n\t}\r\n}\r\n\r\nexport class ColSqAnno extends Array\r\n{\r\n\tread( length, _buf )\r\n\t{\r\n\t\tfor ( var n = 0; n < length / 2; n++ )\r\n\t\t{\r\n\t\t\tvar aSq = new ColSq( 0, 0 )\r\n\t\t\taSq.read( _buf );\r\n\t\t\tthis.push( aSq );\r\n\t\t}\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + this.length * 2;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.SQUARE_LIST, len );\r\n\r\n\t\tfor ( var n = 0; n < this.length; n++ )\r\n\t\t{\r\n\t\t\tthis[ n ].write( _buf );\r\n\t\t}\r\n\t};\r\n\r\n\ttoString( _sep )\r\n\t{\r\n\t\tif ( !_sep )\r\n\t\t\t_sep = ',';\r\n\t\treturn this.join( _sep );\r\n\t};\r\n}\r\n\r\nAnnoFactory[ AnnoType.SQUARE_LIST ] = ColSqAnno;\r\n\r\nexport class ColArrow\r\n{\r\n\tconstructor( _from, _to, _col )\r\n\t{\r\n\t\tthis.from = _from;\r\n\t\tthis.to = _to;\r\n\t\tthis.color = _col;\r\n\t};\r\n\r\n\tstatic STRING_LEN = 5;\r\n\r\n\tinit( _strVal )\r\n\t{\r\n\t\tthis.from = Square.fromString( _strVal.substring( 1, 3 ) );\r\n\t\tthis.to = Square.fromString( _strVal.substring( 3, 5 ) );\r\n\t\tthis.color = BoardColor.fromChar( _strVal[ 0 ] );\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( ColArrow );\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.color = _buf.readByte();\r\n\t\tthis.from = _buf.readByte();\r\n\t\tthis.to = _buf.readByte();\r\n\t\tthis.color--;\r\n\t\tthis.from--;\r\n\t\tthis.to--;\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByte( this.color + 1 );\r\n\t\t_buf.writeByte( this.from + 1 );\r\n\t\t_buf.writeByte( this.to + 1 );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn BoardColor.toChar( this.color );/* + 5Field.toString( this.from ) + Field.toString( this.to )*/\r\n\t};\r\n\r\n\tgetColour()\r\n\t{\r\n\t\tswitch ( this.color )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'black';\r\n\t\t\tcase BoardColor.GREEN:\r\n\t\t\t\treturn 'hsla( 120, 70%, 50%, 0.90 )';\r\n\t\t\tcase BoardColor.YELLOW:\r\n\t\t\t\treturn 'hsla( 50, 75%, 65%, 0.90 )';\r\n\t\t\tcase BoardColor.RED:\r\n\t\t\t\treturn 'hsla( 1, 85%, 45%, 0.90 )';\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class ColArrowAnno extends Array\r\n{\r\n\tread( length, _buf )\r\n\t{\r\n\t\tfor ( var n = 0; n < length / 3; n++ )\r\n\t\t{\r\n\t\t\tvar anArrow = new ColArrow();\r\n\t\t\tanArrow.read( _buf );\r\n\t\t\tthis.push( anArrow );\r\n\t\t}\r\n\t}\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + this.length * 3;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.ARROW_LIST, len );\r\n\r\n\t\tfor ( var n = 0; n < this.length; n++ )\r\n\t\t{\r\n\t\t\tthis[ n ].write( _buf );\r\n\t\t}\r\n\t}\r\n\r\n\ttoString( _sep )\r\n\t{\r\n\t\tif ( !_sep )\r\n\t\t\t_sep = ',';\r\n\t\treturn this.join( _sep );\r\n\t}\r\n}\r\n\r\nAnnoFactory[ AnnoType.ARROW_LIST ] = ColArrowAnno;\r\nAnnoFactory[ AnnoType.DIAGRAM ] = TextAnno;\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// EvalAnno\r\n\r\nexport class EvalAnno\r\n{\r\n\tconstructor( _eval, _depth )\r\n\t{\r\n\t\tthis.eval = 0.0;\r\n\t\tthis.depth = 0;\r\n\r\n\t\tif ( _eval )\r\n\t\t\tthis.eval = _eval;\r\n\t\tif ( _depth )\r\n\t\t\tthis.depth = _depth;\r\n\t}\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn this.eval + \"/\" + this.depth;\r\n\t}\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\tthis.eval = buf.readInt16();\r\n\t\tthis.type = buf.readInt16();\r\n\t\tthis.depth = buf.readInt16();\r\n\t}\r\n}\r\n\r\nAnnoFactory[ AnnoType.FRITZ_EVAL ] = EvalAnno;\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// TimeAnno\r\n\r\nexport class TimeAnno\r\n{\r\n\tconstructor( time )\r\n\t{\r\n\t\tthis.time = time || 0;\r\n\t}\r\n\r\n\tgetString()\r\n\t{\r\n\t\tvar h = this.time >> 24,\r\n\t\t\tm = ( this.time >> 16 ) & 0xff,\r\n\t\t\ts = ( this.time >> 8 ) & 0xff,\r\n\t\t\tcs = this.time & 0xff;\r\n\r\n\t\tvar str = \"\";\r\n\t\tif ( h > 0 )\r\n\t\t\tstr = h + \":\";\r\n\t\tif ( m > 0 )\r\n\t\t{\r\n\t\t\tif ( m < 10 && str.length > 0 )\r\n\t\t\t\tstr += \"0\";\r\n\t\t\tstr += m + \":\";\r\n\t\t}\r\n\t\tif ( s < 10 && str.length > 0 )\r\n\t\t\tstr += \"0\";\r\n\t\tif ( m == 0 && h === 0 && s < 10 )\r\n\t\t{\r\n\t\t\tstr += s;\r\n\t\t\tvar centis = Math.floor( cs / 10 );\r\n\t\t\tif ( centis > 0 )\r\n\t\t\t\tstr += \".\" + centis;\r\n\t\t} else\r\n\t\t{\r\n\t\t\tvar secs = Math.round( s + cs / 50 );\r\n\t\t\tif ( secs === 60 )\r\n\t\t\t\tsecs = 59;\r\n\t\t\tstr += secs;\r\n\t\t}\r\n\t\treturn str;\r\n\t};\r\n\r\n\tfromCentiSecs( centiSecs )\r\n\t{\r\n\t\tthis.time = TimeTools.getCBTimeOfCentiSecs( centiSecs );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"Time: \" + Math.round( this.getTimeIn100th() / 100 ) + \"s\";\r\n\t};\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\tthis.time = buf.readBEInt32();\r\n\t\t//\tLOG( \"TimeAnno=\" + this.getTimeIn100th() );\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + 4;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.TIME, len );\r\n\t\t_buf.writeBEInt32( this.time );\r\n\t};\r\n\r\n\tgetTimeIn100th()\r\n\t{\r\n\t\tvar h = this.time >> 24,\r\n\t\t\tm = ( this.time >> 16 ) & 0xff,\r\n\t\t\ts = ( this.time >> 8 ) & 0xff,\r\n\t\t\tcs = this.time & 0xff;\r\n\r\n\t\t//\tLOG( \"TimeAnno, h=\" + h + \", m=\" + m + \", s=\" + s );\r\n\t\treturn 360000 * h\r\n\t\t\t+ 6000 * m\r\n\t\t\t+ 100 * s\r\n\t\t\t+ cs;\r\n\t}\r\n}\r\n\r\nAnnoFactory[ AnnoType.TIME ] = TimeAnno;\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// TimeControlAnno\r\n\r\nexport class TimeControlAnno\r\n{\r\n\ttoString()\r\n\t{\r\n\t\treturn \"TC=NOTIMPL\";\r\n\t};\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\tfor ( var n = 0; n < len; n++ )\r\n\t\t{\r\n\t\t\tbuf.readByte();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nAnnoFactory[ AnnoType.TIME_CONTROL ] = TimeControlAnno;\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// SyncAnno\r\n\r\nexport class SyncAnno\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.data = [];\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"Sync\";\r\n\t};\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\tfor ( var n = 0; n < len; n++ )\r\n\t\t{\r\n\t\t\tthis.data[ n ] = buf.readByte();\r\n\t\t}\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + 4;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.SYNC, len );\r\n\r\n\t\t//_buf.writeByte( this.data.length );\r\n\t\tfor ( let inx = 0, len = this.data.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\t_buf.writeByte( this.data[ inx ] );\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nAnnoFactory[ AnnoType.SYNC ] = SyncAnno;\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////\r\n// MoveMedalAnno\r\n\r\nexport class MoveMedalAnno\r\n{\r\n\tconstructor( val )\r\n\t{\r\n\t\tthis.medal = val;\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"Medal-\" + this.medal;\r\n\t};\r\n\r\n\tgetString()\r\n\t{\r\n\t\treturn this.toString();\r\n\t};\r\n\r\n\tgetOneMedal()\r\n\t{\r\n\t\tif ( this.medal & Medal.SACRIFICE )\r\n\t\t{\r\n\t\t\treturn Medal.SACRIFICE;\r\n\t\t}\r\n\t\tif ( this.medal & Medal.ENDGAME )\r\n\t\t{\r\n\t\t\treturn Medal.ENDGAME;\r\n\t\t}\r\n\t\tif ( this.medal & Medal.STRATEGY )\r\n\t\t{\r\n\t\t\treturn Medal.STRATEGY;\r\n\t\t}\r\n\t\tif ( this.medal & Medal.TACTICAL_BLUNDER )\r\n\t\t{\r\n\t\t\treturn Medal.TACTICAL_BLUNDER;\r\n\t\t}\r\n\t\treturn this.medal;\r\n\t};\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\tthis.medal = buf.readUint32();\r\n\t}\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + 4;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.MOVE_MEDAL, len );\r\n\t\t_buf.writeUint32( this.medal );\r\n\t}\r\n}\r\n\r\nAnnoFactory[ AnnoType.MOVE_MEDAL ] = MoveMedalAnno;\r\n\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////\r\n// EvalProfileAnno\r\n\r\nexport class EvalProfileAnno\r\n{\r\n\tconstructor( first, last, evalArr )\r\n\t{\r\n\t\tthis.first = first || 0;\r\n\t\tthis.last = last || 0;\r\n\t\tthis.evalArr = evalArr || [];\r\n\t\tthis.min = 32767;\r\n\t\tthis.max = -32767;\r\n\r\n\t\tthis.detMinMax();\r\n\t};\r\n\r\n\tstatic EV_INVALID = 32767;\r\n\r\n\tdetMinMax()\r\n\t{\r\n\t\tfor ( var i = 0; i < this.evalArr.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this.evalArr[ i ] !== EvalProfileAnno.EV_INVALID )\r\n\t\t\t{\r\n\t\t\t\tif ( this.evalArr[ i ] > this.max )\r\n\t\t\t\t\tthis.max = this.evalArr[ i ];\r\n\t\t\t\tif ( this.evalArr[ i ] < this.min )\r\n\t\t\t\t\tthis.min = this.evalArr[ i ];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\trange()\r\n\t{\r\n\t\treturn Math.max( 1, this.max - this.min );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"MoveMedal\";\r\n\t};\r\n\r\n\tisValid()\r\n\t{\r\n\t\treturn this.last > this.first;\r\n\t};\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\tthis.evalArr = [];\r\n\t\tthis.first = 0;\r\n\t\tthis.last = 0;\r\n\r\n\t\tvar n = buf.readBEInt16();\r\n\t\tif ( n < 600 )\r\n\t\t{\r\n\t\t\tfor ( var i = 0; i < n; i++ )\r\n\t\t\t{\r\n\t\t\t\tvar arrbuf = new ArrayBuffer( 4 );\r\n\t\t\t\tvar view = new DataView( arrbuf );\r\n\t\t\t\tview.setInt8( 0, buf.readByte() );\r\n\t\t\t\tview.setInt8( 1, buf.readByte() );\r\n\t\t\t\tview.setInt8( 2, buf.readByte() );\r\n\t\t\t\tview.setInt8( 3, buf.readByte() );\r\n\r\n\t\t\t\tvar ev = view.getInt16( 2 );\r\n\t\t\t\t/*var depth = */ view.getInt8( 1 );\r\n\t\t\t\tvar type = view.getInt8( 0 );\r\n\r\n\t\t\t\tif ( type === -1 )\r\n\t\t\t\t\tthis.evalArr.push( EvalProfileAnno.EV_INVALID );\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( type === 1 )\t// mate\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( ev < 0 )\r\n\t\t\t\t\t\t\tev = -30000 + ev;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tev = 30000 - ev;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.evalArr.push( ev );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.last = n - 1;\r\n\t\t}\r\n\t\tthis.detMinMax();\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( EvalProfileAnno );\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar len = AnnoRec.ANNO_HEAD_SIZE + 2 + this.evalArr.length * 4;\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.EVAL_PROFILE, len );\r\n\r\n\t\t//_buf.writeBEInt16( this.last );\r\n\t\t_buf.writeBEInt16( this.evalArr.length );\r\n\t\tfor ( var e = 0; e < this.evalArr.length; e++ )\r\n\t\t{\r\n\t\t\tvar arrbuf = new ArrayBuffer( 4 );\r\n\t\t\tvar view = new DataView( arrbuf );\r\n\t\t\tif ( this.evalArr[ e ] === EvalProfileAnno.EV_INVALID )\r\n\t\t\t{\r\n\t\t\t\tview.setInt8( 0, 255 ); // type\r\n\t\t\t\tview.setInt16( 2, 0 ); // ev\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tview.setInt8( 0, 0 ); // type\r\n\t\t\t\tview.setInt16( 2, this.evalArr[ e ] );\r\n\t\t\t}\r\n\t\t\tview.setInt8( 1, 0 ); // depth\r\n\r\n\t\t\t_buf.writeBEInt32( view.getInt32( 0 ) );\r\n\t\t}\r\n\t};\r\n}\r\n\r\nAnnoFactory[ AnnoType.EVAL_PROFILE ] = EvalProfileAnno;\r\n\r\n\r\n////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class TrainingAnno\r\n{\r\n\tconstructor( correctMove )\r\n\t{\r\n\t\tthis.move = correctMove;\r\n\t\tthis.solved = false;\r\n\t\tthis.nHelpClicked = 0;\r\n\t\tthis.texts = {};\r\n\t\tthis.texts[ \"en\" ] = {\r\n\t\t\tquestion: \"\",\r\n\t\t\thelp: \"\"\r\n\t\t}\r\n\t};\r\n\r\n\tstatic lns = [ \"en\", \"de\", \"es\", \"it\" ];\r\n\tstatic lIds = [ Language.ENG, Language.DEU, Language.ESP, Language.ITA ];\t// ginge auch Language.getLanguageIdOfParam()\r\n\r\n\tgetQuestion( ln )\r\n\t{\r\n\t\tif ( this.texts[ ln ] )\r\n\t\t\treturn this.texts[ ln ].question;\r\n\t\tfor ( var l = 0; l < TrainingAnno.lns.length; l++ )\r\n\t\t\tif ( this.texts[ TrainingAnno.lns[ l ] ] )\r\n\t\t\t\treturn this.texts[ TrainingAnno.lns[ l ] ].question;\r\n\t};\r\n\r\n\tgetHelp( ln )\r\n\t{\r\n\t\tif ( this.texts[ ln ] )\r\n\t\t\treturn this.texts[ ln ].help;\r\n\r\n\t\tfor ( var l = 0; l < TrainingAnno.lns.length; l++ )\r\n\t\t\tif ( this.texts[ TrainingAnno.lns[ l ] ] )\r\n\t\t\t\treturn this.texts[ TrainingAnno.lns[ l ] ].help;\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"Training\";\r\n\t};\r\n\r\n\tdecodeLocals( buf )\r\n\t{\r\n\t\t/*var seconds = */ buf.readUint32();\r\n\t\t/*var maxPoints = */ buf.readUint16();\r\n\r\n\t\tvar nQuestions = buf.readUint16();\r\n\t\tfor ( var i = 0; i < nQuestions && i < 10; i++ )\r\n\t\t{\r\n\t\t\tvar q = this.decodeString( buf );\r\n\t\t\tvar ln = q.ln;\r\n\t\t\tif ( ln )\r\n\t\t\t{\r\n\t\t\t\tif ( !this.texts[ ln ] )\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.texts[ ln ] = {};\r\n\t\t\t\t}\r\n\t\t\t\tthis.texts[ ln ].question = q.str;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nDefaultWrong = buf.readUint16();\r\n\t\tfor ( let i = 0; i < nDefaultWrong && i < 10; i++ )\r\n\t\t{\r\n\t\t\tthis.decodeString( buf );\r\n\t\t}\r\n\t\tvar nHelp1 = buf.readUint16();\r\n\t\tfor ( let i = 0; i < nHelp1 && i < 10; i++ )\r\n\t\t{\r\n\t\t\tlet q = this.decodeString( buf );\r\n\t\t\tlet ln = q.ln;\r\n\t\t\tif ( ln )\r\n\t\t\t{\r\n\t\t\t\tif ( !this.texts[ ln ] )\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.texts[ ln ] = {};\r\n\t\t\t\t}\r\n\t\t\t\tthis.texts[ ln ].help = q.str;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nHelp2 = buf.readUint16();\r\n\t\tfor ( let i = 0; i < nHelp2 && i < 10; i++ )\r\n\t\t{\r\n\t\t\tthis.decodeString( buf );\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treadMoveInputItem( buf )\r\n\t{\r\n\t /*var totLen = */ buf.readUint16();\r\n\t\tthis.decodeLocals( buf );\r\n\t\tvar nMoves = buf.readByte();\r\n\t\tfor ( var i = 0; i < nMoves && i < 60; i++ )\r\n\t\t{\r\n\t\t\tvar from = buf.readByte();\r\n\t\t\tvar to = buf.readByte();\r\n\t\t\tvar prom = buf.readByte();\r\n\t\t\t/*var points =*/ buf.readByte();\r\n\t\t\tvar nFeedback = buf.readUint16();\r\n\t\t\tif ( i === 0 )\r\n\t\t\t{\r\n\t\t\t\tthis.move = new Move( from, to, prom );\r\n\t\t\t}\r\n\t\t\tfor ( var n = 0; n < nFeedback; n++ )\r\n\t\t\t{\r\n\t\t\t\tthis.decodeString( buf );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treadMultipleChoiceItem( buf )\r\n\t{\r\n\t\t/*var totLen = */ buf.readUint16();\r\n\t\tthis.decodeLocals( buf );\r\n\t\tvar nAnswers = buf.readByte();\r\n\t\tfor ( var i = 0; i < nAnswers && i < 60; i++ )\r\n\t\t{\r\n\t\t\t// var pts = buf.readByte();\r\n\t\t\tvar nStrings = buf.readUint16();\r\n\t\t\tfor ( var n = 0; n < nStrings; n++ )\r\n\t\t\t{\r\n\t\t\t\tthis.decodeString( buf );\r\n\r\n\t\t\t}\r\n\t\t\tnStrings = buf.readUint16();\r\n\t\t\tfor ( var n = 0; n < nStrings; n++ )\r\n\t\t\t{\r\n\t\t\t\tthis.decodeString( buf );\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tread( len, buf )\r\n\t{\r\n\t\t/*var nMax =*/ buf.readUint16();\r\n\t\tvar type = buf.readByte();\r\n\t\tswitch ( type )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\t\tthis.readMoveInputItem( buf );\r\n\t\t\t\tbreak;\r\n\t\t\tcase 2:\r\n\t\t\t\tthis.readMultipleChoiceItem( buf );\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar trBuf = new DataBuffer();\r\n\r\n\t\t// TrainingDescriptor:\r\n\t\ttrBuf.writeUint16( 1 ); // nMax!?\r\n\t\ttrBuf.writeByte( 1 );\t\t// training type TTI_MOVE_INPUT\r\n\r\n\t\t// MoveInputItem from here\r\n\t\tvar lenPos = trBuf.getPos();\r\n\t\ttrBuf.writeUint16( 0 );\t// len place holder\r\n\r\n\t\t// question and help:\r\n\t\ttrBuf.writeUint32( 300 );\t// seconds\r\n\t\ttrBuf.writeUint16( 0 );\t// max points\r\n\t\tvar nStringsPos = trBuf.getPos();\r\n\t\ttrBuf.writeUint16( 0 );\t// nStrings place holder\r\n\t\tvar nQuestions = 0;\r\n\r\n\t\tfor ( var l = 0; l < TrainingAnno.lns.length; l++ )\r\n\t\t{\r\n\t\t\tif ( this.texts[ TrainingAnno.lns[ l ] ] )\r\n\t\t\t{\r\n\t\t\t\tif ( this.texts[ TrainingAnno.lns[ l ] ].question )\r\n\t\t\t\t{\r\n\t\t\t\t\tnQuestions = this.encodeString( this.texts[ TrainingAnno.lns[ l ] ].question, trBuf, nQuestions, TrainingAnno.lIds[ l ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\ttrBuf.writeAtPrevPos( nStringsPos, function()\r\n\t\t{\r\n\t\t\ttrBuf.writeUint16( nQuestions );\r\n\t\t} );\r\n\r\n\t\ttrBuf.writeUint16( 0 );\t// no defaultWrong1\r\n\r\n\r\n\t\tvar nHelp1 = 0;\r\n\t\tvar nHelpPos = trBuf.getPos();\r\n\t\ttrBuf.writeUint16( 0 );\t// nStrings place holder\r\n\t\tfor ( var l = 0; l < TrainingAnno.lns.length; l++ )\r\n\t\t{\r\n\t\t\tif ( this.texts[ TrainingAnno.lns[ l ] ] )\r\n\t\t\t{\r\n\t\t\t\tif ( this.texts[ TrainingAnno.lns[ l ] ].help )\r\n\t\t\t\t{\r\n\t\t\t\t\tnHelp1 = this.encodeString( this.texts[ TrainingAnno.lns[ l ] ].help, trBuf, nHelp1, TrainingAnno.lIds[ l ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrBuf.writeAtPrevPos( nHelpPos, function()\r\n\t\t{\r\n\t\t\ttrBuf.writeUint16( nHelp1 );\r\n\t\t} );\r\n\r\n\t\ttrBuf.writeUint16( 0 );\t// no help2\r\n\r\n\t\t// just one move with points and no feedback strings:\r\n\t\ttrBuf.writeByte( 1 ); // one move\r\n\t\ttrBuf.writeByte( this.move.from );\r\n\t\ttrBuf.writeByte( this.move.to );\r\n\t\ttrBuf.writeByte( this.move.prom );\r\n\t\ttrBuf.writeByte( 5 );\t// points\r\n\t\ttrBuf.writeUint16( 0 );\t// feedback strings\r\n\r\n\t\tvar nSize = trBuf.getPos();\r\n\t\ttrBuf.writeAtPrevPos( lenPos, function()\r\n\t\t{\r\n\t\t\ttrBuf.writeUint16( nSize );\r\n\t\t} );\r\n\r\n\t\tlet len = AnnoRec.ANNO_HEAD_SIZE + trBuf.getSize();\r\n\t\t_buf.writeUint16( len );\r\n\t\tAnnoRec.writeHeader( _buf, 0, AnnoType.TRAINING, len );\r\n\t\t_buf.writeData( trBuf );\r\n\t}\r\n\r\n\tdecodeString( buf )\r\n\t{\r\n\t\t/*let type = */ buf.readByte();\r\n\t\tlet lid = buf.readByte();\r\n\t\tlet len = buf.readUint16();\r\n\t\tlet str = buf.readSizedString( len );\r\n\t\tif ( strUtil.mayBeUtf8( str ) )\r\n\t\t{\r\n\t\t\tstr = strUtil.decodeUTF8( str );\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tln: Language.getParamOfLanguageId( lid ),\r\n\t\t\tstr: str\r\n\t\t}\r\n\t}\r\n\r\n\tencodeString( str, buf, _nStrings, lId )\r\n\t{\r\n\t\tlet nStrings = _nStrings;\r\n\r\n\t\tif ( str )\r\n\t\t{\r\n\t\t\tbuf.writeByte( lId );\r\n\t\t\tbuf.writeByte( 0 /*TI_TEXT*/ );\r\n\t\t\tbuf.writeUint16( str.length );\r\n\t\t\tbuf.writeSizedString( str );\r\n\t\t\tnStrings++;\r\n\t\t}\r\n\r\n\t\treturn nStrings;\r\n\t};\r\n}\r\n\r\nAnnoFactory[ AnnoType.TRAINING ] = TrainingAnno;\r\n\r\n\r\n","// ES 6 MW: Feb 27, 2020\r\n\r\nimport \r\n{\r\n\tAnnoType, AnnoRec, AnnoFactory,\r\n\tTextAnno, SymbolsAnno\r\n\r\n} from 'common/Chess/Format/AnnoTypes'\r\n\r\nexport class Annotation \r\n{\r\n\tstatic DIAG_CHAR = '[#]';\r\n\r\n\ttoString()\r\n\t{\r\n\t\tvar strRet = \"\";\r\n\t\tfor ( var i in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( i ) )\r\n\t\t\t\tstrRet += this[ i ].toString();\r\n\t\t}\r\n\t\treturn strRet;\r\n\t};\r\n\r\n\t_read( _buf, _cntAnnos )\r\n\t{\r\n\t\tfor ( var inx = 0; inx < _cntAnnos; ++inx )\r\n\t\t{\r\n\t\t\t/*var annoLen = */_buf.readShort();\r\n\r\n\t\t\tvar hdr = AnnoRec.readHeader( _buf );\r\n\r\n\t\t\t// CBDebug.assert( hdr.len === annoLen, \"LEN OK\" );\r\n\r\n\t\t\thdr.len -= AnnoRec.ANNO_HEAD_SIZE;\r\n\r\n\t\t\tvar anno = AnnoFactory.factory( hdr.type );\r\n\r\n\t\t\tif ( !anno )\r\n\t\t\t{\r\n\t\t\t\t_buf.skip( hdr.len );\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tanno.read( hdr.len, _buf );\r\n\r\n\t\t\tthis.setItem( hdr.type, anno );\r\n\t\t}\r\n\t\treturn this;\r\n\t};\r\n\r\n\t_read2( _buf, _cntAnnos )\r\n\t{\r\n\t\tthis._read( _buf, _cntAnnos );\r\n\t\treturn this;\r\n\t};\r\n\r\n\twrite( buf )\r\n\t{\r\n\t\t/// BUFFER.\r\n\t\tvar cnt = 0;\r\n\t\tfor ( var i in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( i ) )\r\n\t\t\t{\r\n\t\t\t\tcnt++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbuf.writeShort( cnt );\r\n\r\n\t\tfor ( let i in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( i ) )\r\n\t\t\t{\r\n\t\t\t\tthis[ i ].write( buf, i );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\twrite2( buf )\r\n\t{\r\n\t\tvar annoTypes = [];\r\n\t\tfor ( var i in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( i ) )\r\n\t\t\t{\r\n\t\t\t\tannoTypes.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar lengthPos = buf.getPos();\r\n\t\tbuf.writeByte( 0 /*annoTypes.length*/ );\t// maybe we cannot write every type. e.g. FritzEval\r\n\t\tvar cnt = 0;\r\n\t\tfor ( let i = 0; i < annoTypes.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this[ annoTypes[ i ] ].write )\r\n\t\t\t{\r\n\t\t\t\tthis[ annoTypes[ i ] ].write( buf, annoTypes[ i ] );\r\n\t\t\t\tcnt++;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// \"#IFDEBUG\"\r\n\t\t\t\t// \tLog.Log( \"Cannot write annotation, sorry: type=\" + annoTypes[i], \"LogError\", \"game\" );\r\n\t\t\t\t// \"#ENDIF\"\r\n\t\t\t\t//\tthrow ( \"Not savEvad\" );\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar pos = buf.getPos();\r\n\t\tbuf.setPos( lengthPos );\r\n\t\tbuf.writeByte( cnt );\r\n\t\tbuf.setPos( pos );\r\n\t};\r\n\r\n\tstatic write( _buf, _annos )\r\n\t{\r\n\t\t/// BUFFER.\r\n\t\t/// Annotations.\r\n\t\tif ( !_annos )\r\n\t\t\t_buf.writeShort( 0 );\r\n\t\telse\r\n\t\t\t_annos.write( _buf );\r\n\t};\r\n\r\n\tstatic write2( _buf, _annos )\r\n\t{\r\n\t\tif ( !_annos )\r\n\t\t\t_buf.writeByte( 0 );\r\n\t\telse\r\n\t\t\t_annos.write2( _buf );\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\t/// BUFFER.\r\n\t\tvar cntAnnos = _buf.readShort();\r\n\t\tthis._read( _buf, cntAnnos );\r\n\t};\r\n\r\n\tread2( _buf )\r\n\t{\r\n\t\t/// BUFFER.\r\n\t\tvar cntAnnos = _buf.readByte();\r\n\t\tif ( cntAnnos )\r\n\t\t\tthis._read2( _buf, cntAnnos );\r\n\t};\r\n\r\n\tfromDataBuf = this.read;\r\n\ttoDataBuf = this.write;\r\n\r\n\tstatic readFactory( _buf )\r\n\t{\r\n\t\t/// BUFFER.\r\n\t\tvar cntAnnos = _buf.readShort();\r\n\t\tif ( !cntAnnos )\r\n\t\t\treturn null;\r\n\t\tvar anno = new Annotation();\r\n\t\treturn anno._read( _buf, cntAnnos );\r\n\t};\r\n\r\n\tstatic readFactory2( _buf )\r\n\t{\r\n\t\t/// BUFFER.\r\n\t\tvar cntAnnos = _buf.readUint8();\r\n\t\tif ( !cntAnnos )\r\n\t\t\treturn null;\r\n\t\tvar anno = new Annotation();\r\n\t\treturn anno._read2( _buf, cntAnnos );\r\n\t};\r\n\r\n\r\n\tempty()\r\n\t{\r\n\t\tfor ( var t in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( t ) )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\tcount()\r\n\t{\r\n\t\tvar cnt = 0;\r\n\t\tfor ( var t in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( t ) )\r\n\t\t\t\tcnt++;\r\n\t\t}\r\n\t\treturn cnt;\r\n\t};\r\n\r\n\tsetItem( _type, _anno )\r\n\t{\r\n\t\tthis[ _type ] = _anno;\r\n\t};\r\n\r\n\thasItem( _type )\r\n\t{\r\n\t\treturn !!this[ _type ];\r\n\t};\r\n\r\n\tgetItem( _type )\r\n\t{\r\n\t\treturn this[ _type ];\r\n\t};\r\n\r\n\tdeleteItem( type )\r\n\t{\r\n\t\tdelete this[ type ];\r\n\t};\r\n\r\n\taddPreText( text )\r\n\t{\r\n\t\t// add not implemented yet!\r\n\t\tthis[ AnnoType.PRETEXT ] = new TextAnno( text );\r\n\t};\r\n\r\n\taddPostText( text )\r\n\t{\r\n\t\t// add not implemented yet!\r\n\t\tif ( this[ AnnoType.POSTTEXT ] && this[ AnnoType.POSTTEXT ].m_str.length )\r\n\t\t\tthis[ AnnoType.POSTTEXT ].addText( \" \" + text );\r\n\t\telse\r\n\t\t\tthis[ AnnoType.POSTTEXT ] = new TextAnno( text );\r\n\t};\r\n\r\n\thasDiagram()\r\n\t{\r\n\t\tif ( this[ AnnoType.POSTTEXT ] && this[ AnnoType.POSTTEXT ].m_str.length )\r\n\t\t{\r\n\t\t\treturn this[ AnnoType.POSTTEXT ].m_str.search( \"[#]\" ) !== -1;\r\n\t\t}\r\n\t};\r\n\r\n\ttoggleDiagram = function()\r\n\t{\r\n\t\tif ( this[ AnnoType.POSTTEXT ] && this[ AnnoType.POSTTEXT ].m_str.length )\r\n\t\t{\r\n\t\t\tif ( this[ AnnoType.POSTTEXT ].m_str.search( \"[#]\" ) !== -1 )\r\n\t\t\t{\r\n\t\t\t\tthis[ AnnoType.POSTTEXT ].m_str = this[ AnnoType.POSTTEXT ].m_str.replace( \"[#]\", \"\" );\r\n\t\t\t\tif ( !this[ AnnoType.POSTTEXT ].m_str.length )\r\n\t\t\t\t{\r\n\t\t\t\t\tdelete this[ AnnoType.POSTTEXT ];\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tthis[ AnnoType.POSTTEXT ].m_str += \"[#]\";\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis[ AnnoType.POSTTEXT ] = new TextAnno( \"[#]\" );\r\n\t\t}\r\n\t}\r\n\r\n\tremoveDiagram = function()\r\n\t{\r\n\t\tif ( this[ AnnoType.POSTTEXT ] && this[ AnnoType.POSTTEXT ].m_str.length )\r\n\t\t{\r\n\t\t}\r\n\t}\r\n\r\n\thasPreText()\r\n\t{\r\n\t\treturn this.hasItem( AnnoType.PRETEXT );\r\n\t};\r\n\r\n\tgetPreText()\r\n\t{\r\n\t\tif ( this.hasPreText() )\r\n\t\t{\r\n\t\t\treturn this[ AnnoType.PRETEXT ].getString();\r\n\t\t}\r\n\t};\r\n\r\n\tgetPostText()\r\n\t{\r\n\t\tif ( this.hasPostText() )\r\n\t\t{\r\n\t\t\treturn this[ AnnoType.POSTTEXT ].getString();\r\n\t\t}\r\n\t};\r\n\r\n\thasPostText()\r\n\t{\r\n\t\treturn this.hasItem( AnnoType.POSTTEXT );\r\n\t};\r\n\r\n\taddSymbol( symbol )\r\n\t{\r\n\t\tif ( !this[ AnnoType.SYMBOL ] )\r\n\t\t\tthis[ AnnoType.SYMBOL ] = new SymbolsAnno();\r\n\t\tthis[ AnnoType.SYMBOL ].addSymbol( symbol );\r\n\t};\r\n\r\n\thasSymbol()\r\n\t{\r\n\t\treturn this[ AnnoType.SYMBOL ] !== undefined;\r\n\t};\r\n\r\n\tgetSymbol()\r\n\t{\r\n\t\treturn this[ AnnoType.SYMBOL ];\r\n\t};\r\n\r\n\thasColSquares()\r\n\t{\r\n\t\treturn this.hasItem( AnnoType.SQUARE_LIST );\r\n\t};\r\n\r\n\thasArrows()\r\n\t{\r\n\t\treturn this.hasItem( AnnoType.ARROW_LIST );\r\n\t};\r\n\r\n\thasTraining()\r\n\t{\r\n\t\treturn this.hasItem( AnnoType.TRAINING );\r\n\t};\r\n\r\n\tgetTraining()\r\n\t{\r\n\t\treturn this[ AnnoType.TRAINING ];\r\n\t};\r\n\r\n\tsetTraining( t )\r\n\t{\r\n\t\tif ( t )\r\n\t\t\tthis[ AnnoType.TRAINING ] = t;\r\n\t\telse\r\n\t\t\tdelete this[ AnnoType.TRAINING ];\r\n\t};\r\n}\r\n\r\n","// ST 2011\r\n// ES 6 MW: Feb 27, 2020\r\n\r\n// \"#NOMINIFY=reduce\";\r\n\r\nimport { createReadFactory, createReadFactory2 } from 'common/Container/DataBuffer'\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil'\r\nimport { AnnoType} from 'common/Chess/Format/AnnoTypes'\r\nimport { Annotation } from 'common/Chess/Logic/Annotation'\r\nimport { Move } from 'common/Chess/Logic/Move'\r\n// import { Log } from 'common/Tools/Log'\r\n\r\n\r\nexport class MoveLine extends Array\r\n{\r\n\tconstructor( _parentLine, _inxMv )\r\n\t{\r\n\t\tsuper();\r\n\t\tthis.parent = null;\r\n\t\tthis.inxMvParent = 0;\r\n\r\n\t\tif ( _parentLine )\r\n\t\t{\r\n\t\t\tthis.parent = _parentLine;\r\n\t\t\tthis.inxMvParent = _inxMv;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//6.10.2015 Dank den smarten Cloner nicht mehr nötig.\r\n\t// mw, 4.5.2015 (stack overflow in ObjUtil.clone because of parent).\r\n\t//clone = function (_hash)\r\n\t//{\r\n\t//\tvar res = new CB.MoveLine();\r\n\r\n\t//\tfor ( var inx = 0, len = this.length; inx < len; ++inx )\r\n\t//\t{\r\n\t//\t\tif ( this[inx] )\r\n\t//\t\t\tres[inx] = ObjUtil.clone( this[inx], _hash );\r\n\t//\t}\r\n\r\n\t//\t_hash.setItem(this, res);\r\n\r\n\t//\treturn res;\r\n\t//};\r\n\r\n\tisMainLine()\r\n\t{\r\n\t\treturn !this.parent;\r\n\t};\r\n\r\n\tsetMainLine()\r\n\t{\r\n\t\tthis.parent = null;\r\n\t\tthis.inxMvParent = 0;\r\n\t};\r\n\r\n\tgetParentLine()\r\n\t{\r\n\t\treturn this.parent;\r\n\t};\r\n\r\n\tsetParentLine( _line )\r\n\t{\r\n\t\tthis.parent = _line;\r\n\t};\r\n\r\n\tgetParentMoveIndex()\r\n\t{\r\n\t\treturn this.inxMvParent;\r\n\t};\r\n\r\n\tsetParentMoveIndex( _inxMvParent )\r\n\t{\r\n\t\tthis.inxMvParent = _inxMvParent;\r\n\t};\r\n\r\n\tgetTreeMoveCount()\r\n\t{\r\n\t\treturn this.reduce( function( _cnt, _mv )\r\n\t\t{\r\n\t\t\treturn _cnt + _mv.getTreeMoveCount();\r\n\t\t}, 0 );\r\n\t};\r\n\r\n\tsetSubParentData( _rec )\r\n\t{\r\n\t\tthis.forEach( function( _mv, _inx )\r\n\t\t{\r\n\t\t\t_mv.setSubParentData( this, _inx, _rec );\r\n\t\t}.bind( this ) );\r\n\t};\r\n\r\n\tswapMoves( _inxMv, _lineReplacement )\r\n\t{\r\n\t\tvar cnt = this.length - _inxMv;\r\n\t\tvar args = [ _inxMv, cnt ];\r\n\r\n\t\tif ( _lineReplacement )\r\n\t\t{\r\n\t\t\tfor ( var inx = 0, len = _lineReplacement.length; inx < len; ++inx )\r\n\t\t\t\targs.push( _lineReplacement[ inx ] );\r\n\t\t}\r\n\r\n\t\tvar arrOld = this.splice.apply( this, args );\r\n\r\n\t\tthis.setSubParentData();\r\n\r\n\t\targs = [ 0, _lineReplacement.length ].concat( arrOld );\r\n\r\n\t\t_lineReplacement.splice.apply( _lineReplacement, args );\r\n\r\n\t\t_lineReplacement.setSubParentData();\r\n\t\t_lineReplacement.setParentLine( this );\r\n\r\n\t\treturn _lineReplacement;\r\n\t};\r\n\r\n\tselfTest( _pos, _lineParent, _inxParentMv )\r\n\t{\r\n\t\t// CBDebug.assert( this.inxMvParent === _inxParentMv );\r\n\t\t//CBDebug.assert( this.parent === _lineParent ); // tritt haufig auf beim kibitzen streams\r\n\r\n\t\t// CBDebug.assert( !_lineParent || ( this.getParentMove() != null && this.getParentMove().indexOfLine( this ) >= 0 ) );\r\n\r\n\t\tvar cur = ObjUtil.clone( _pos );\r\n\r\n\t\tfor ( var inx = 0, len = this.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar mv = this[ inx ];\r\n\r\n\t\t\t//\tCBDebug.assert( cur.isLegalMove( mv ), mv.toString() + \" illegal (assert)\" );\r\n\t\t\t//if ( !cur.isLegalMove( mv ) ) {\r\n\t\t\t//\tLog.Log( \"selfTest illegal: \" + mv, \"LogError\" );\r\n\t\t\t//}\r\n\r\n\t\t\tif ( mv.hasLines() )\r\n\t\t\t{\r\n\t\t\t\t// CBDebug.assert( !_lineParent || inx );\r\n\r\n\t\t\t\tvar subLines = mv.getSubLines();\r\n\t\t\t\tfor ( var inxLn = 0; inxLn < subLines.length; ++inxLn )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar line = subLines[ inxLn ];\r\n\r\n\t\t\t\t\tline.selfTest( ObjUtil.clone( cur ), this, inx );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcur.makeMove( mv );\r\n\t\t};\r\n\t};\r\n\r\n\tgetParentMove()\r\n\t{\r\n\t\tif ( !this.parent )\r\n\t\t\treturn null;\r\n\t\treturn this.parent[ this.inxMvParent ];\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn this.join( \" \" );\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( MoveLine );\r\n\tstatic readFactory2 = createReadFactory2( MoveLine );\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\t_buf.readArray( this, Move.readFactory );\r\n\t\tthis.setSubParentData();\r\n\t\tthis.shiftTrainingAnnosBack();\t//\tinternally, we have training annos on the move before the queried move\r\n\t};\r\n\r\n\tread2( _buf )\r\n\t{\r\n\t\tvar lineLen = _buf.readUint8();\r\n\t\tif ( lineLen & 0x80 )\r\n\t\t\tlineLen = ( ( ( lineLen << 8 ) | _buf.readUint8() ) & 0x7fff );\r\n\t\tif ( lineLen > 0 )\r\n\t\t{\r\n\t\t\tif ( lineLen > 0x800 )\r\n\t\t\t{\r\n\t\t\t\tlineLen = 0;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif ( lineLen > 0 )\r\n\t\t\t{\r\n\t\t\t\t//delete[] pLine;\r\n\t\t\t\t// var lineMax = ( lineLen + 3 ) & ~3;\r\n\t\t\t\tthis.length = lineLen;\r\n\t\t\t\tfor ( var n = 0; n < lineLen; n++ )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar aMove = new Move();\r\n\t\t\t\t\taMove.read2( _buf );\r\n\t\t\t\t\tthis[ n ] = aMove;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t/*\t for (var i = 0; i < lineLen; i++) {\r\n\t\t\t\t\t\t\t_buf.readArrayShort(this, CB.Move.readFactory2);\r\n\t\t\t\t\t\t\tif (!pLine[i].ReadFromDataBuffer2(rBuf, nVersion)) {\r\n\t\t\t\t\t\t\t\tpLine[i].Delete();\r\n\t\t\t\t\t\t\t\tlineLen = i;\r\n\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}*/\r\n\t\t} else\r\n\t\t\tif ( lineLen < 0 )\r\n\t\t\t{\r\n\t\t\t\tlineLen = 0;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\tthis.setSubParentData();\r\n\r\n\t\tthis.shiftTrainingAnnosBack();\t//\tinternally, we have training annos on the move before the queried move\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tthis.shiftTrainingAnnosFwd();\t//\tinternally, we have training annos on the move before the queried move\r\n\t\t_buf.writeArray( this );\r\n\t};\r\n\r\n\twrite2( _buf )\r\n\t{\r\n\t\tthis.shiftTrainingAnnosFwd();\t//\tinternally, we have training annos on the move before the queried move\r\n\r\n\t\tif ( this.length <= 0x800 )\r\n\t\t{\r\n\t\t\tif ( this.length & ~0x7f )\r\n\t\t\t{\r\n\t\t\t\t_buf.writeUint8( ( this.length << 8 ) | 0x80 );\r\n\t\t\t}\r\n\t\t\t_buf.writeUint8( this.length & 0xff );\r\n\t\t}\r\n\t\tfor ( var i = 0; i < this.length; i++ )\r\n\t\t\tthis[ i ].write2( _buf );\r\n\t};\r\n\r\n\thasLines()\r\n\t{\r\n\t\treturn this.some( function( _mv ) { return _mv.hasLines(); } );\r\n\t};\r\n\r\n\r\n\t// in JS, training annos are linked to the move before the solution move.\r\n\t// so convert, when reading/writing\r\n\t// if game comes from parsed PGN, they are already one move earlier than in C++\r\n\r\n\t// back for reading\r\n\tshiftTrainingAnnosBack()\r\n\t{\r\n\t\tfor ( var i = 1; i < this.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this[ i ].hasAnno() && this[ i ].getAnno().hasTraining() )\r\n\t\t\t{\r\n\t\t\t\tvar t = this[ i ].getAnno().getTraining();\r\n\t\t\t\tthis[ i ].getAnno().setTraining( null );\r\n\t\t\t\tthis[ i - 1 ].setAnnoItem( AnnoType.TRAINING, t );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// forward for writing\r\n\tshiftTrainingAnnosFwd()\r\n\t{\r\n\t\tfor ( var i = this.length - 2; i >= 0; i-- )\r\n\t\t{\r\n\t\t\tif ( this[ i ].hasAnno() && this[ i ].getAnno().hasTraining() )\r\n\t\t\t{\r\n\t\t\t\tvar t = this[ i ].getAnno().getTraining();\r\n\t\t\t\tthis[ i ].getAnno().setTraining( null );\r\n\t\t\t\tthis[ i + 1 ].setAnnoItem( AnnoType.TRAINING, t );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tisAnnotated()\r\n\t{\r\n\t\treturn this.some( function( _mv ) { return _mv.hasLines() || _mv.hasAnno(); } );\r\n\t};\r\n\r\n\t// not supported yet fully\r\n\tsetAnno( anno )\r\n\t{\r\n\t\tthis.anno = anno;\r\n\t};\r\n\r\n\tgetAnno( anno )\r\n\t{\r\n\t\treturn this.anno;\r\n\t};\r\n\r\n\tsetAnnoItem( type, val )\r\n\t{\r\n\t\tif ( !this.anno )\r\n\t\t\tthis.anno = new Annotation();\r\n\r\n\t\tthis.anno.setItem( type, val );\r\n\t};\r\n\r\n\thasAnno()\r\n\t{\r\n\t\treturn this.anno !== undefined;\r\n\t};\r\n\r\n\tunAnnotate()\r\n\t{\r\n\t\tthis.forEach( function( _mv ) { _mv.unAnnotate(); } );\r\n\t};\r\n\r\n\tforAllMoves( fn )\r\n\t{\r\n\t\t// Log.Log(\"Line, for all moves.\");\r\n\t\tthis.forEach( function( _mv ) { _mv.forAllMoves( fn ); } );\r\n\t};\r\n\r\n\tremoveLines()\r\n\t{\r\n\t\tthis.forEach( function( _mv ) { _mv.removeLines(); } );\r\n\t};\r\n}\r\n","// ES 6 MW: Feb 27, 2020\r\n\r\n// import Side from 'common/Chess/Logic/Chess'\r\n\r\nimport { Piece } from 'common/Chess/Logic/Chess'\r\nimport { Square } from 'common/Chess/Logic/Chess'\r\nimport { MoveLine } from './MoveLine';\r\n\r\nexport class Move\r\n{\r\n\tconstructor( _from, _to, _prom )\r\n\t{\r\n\t\tthis.from = 0;\r\n\t\tthis.to = 0;\r\n\t\tthis.prom = Piece.NONE;\r\n\r\n\t\tif ( _from )\r\n\t\t\tthis.from = _from;\r\n\r\n\t\tif ( _to )\r\n\t\t\tthis.to = _to;\r\n\r\n\t\tif ( _prom )\r\n\t\t\tthis.prom = _prom;\r\n\r\n\t\tthis.isACheck = false;\r\n\t\tthis.isAMate = false;\r\n\r\n\t\tthis.needCol = false;\r\n\t\tthis.needRow = false;\r\n\r\n\t\tthis.mvd = Piece.NONE;\r\n\t\tthis.vct = Piece.NONE;\r\n\r\n\t\tthis.shortCastling = false;\r\n\t\tthis.longCastling = false;\r\n\r\n\t\tthis.subLines = null;\r\n\t\tthis.annos = null;\r\n\t}\r\n\r\n\tstatic g_mvW00 = new Move( Square.E1, Square.G1 );\r\n\tstatic g_mvW000 = new Move( Square.E1, Square.C1 );\r\n\r\n\tstatic g_mvB00 = new Move( Square.E8, Square.G8 );\r\n\tstatic g_mvB000 = new Move( Square.E8, Square.C8 );\r\n\r\n\tget piece()\r\n\t{\r\n\t\treturn this.mvd;\r\n\t}\r\n\tset piece( p )\r\n\t{\r\n\t\tthis.mvd = p;\r\n\t}\r\n\r\n\tget capt()\r\n\t{\r\n\t\treturn this.vct;\r\n\t}\r\n\tset capt( c )\r\n\t{\r\n\t\tthis.vct = c;\r\n\t}\r\n\r\n\tisNullMove()\r\n\t{\r\n\t\treturn this.from === this.to && !( this.from );\r\n\t};\r\n\r\n\tisCastling()\r\n\t{\r\n\t\treturn this.isShortCastling()\r\n\t\t\t||\r\n\t\t\tthis.isLongCastling();\r\n\t};\r\n\r\n\tequals( _mv )\r\n\t{\r\n\t\treturn this.from === _mv.from &&\r\n\t\t\tthis.to === _mv.to &&\r\n\t\t\tthis.prom === _mv.prom;\r\n\t};\r\n\r\n\tisValid()\r\n\t{\r\n\t\treturn this.from !== this.to;\r\n\t}\r\n\r\n\t_isShortCastling()\r\n\t{\r\n\t\treturn ( this.equals( Move.g_mvW00 ) && this.mvd === Piece.W_KING )\r\n\t\t\t||\r\n\t\t\t( this.equals( Move.g_mvB00 ) && this.mvd === Piece.B_KING );\r\n\t};\r\n\r\n\tisShortCastling()\r\n\t{\r\n\t\treturn this.shortCastling;\r\n\t};\r\n\r\n\t_isLongCastling()\r\n\t{\r\n\t\treturn ( this.equals( Move.g_mvW000 ) && this.mvd === Piece.W_KING )\r\n\t\t\t||\r\n\t\t\t( this.equals( Move.g_mvB000 ) && this.mvd === Piece.B_KING );\r\n\t};\r\n\r\n\tisLongCastling()\r\n\t{\r\n\t\treturn this.longCastling;\r\n\t};\r\n\r\n\tsetIsCastling()\r\n\t{\r\n\t\tthis.shortCastling = this._isShortCastling();\r\n\t\tthis.longCastling = this._isLongCastling();\r\n\t};\r\n\r\n\r\n\tisCheck()\r\n\t{\r\n\t\treturn this.isACheck;\r\n\t};\r\n\r\n\tsetCheck( _val )\r\n\t{\r\n\t\tthis.isACheck = _val;\r\n\t};\r\n\r\n\tisMate()\r\n\t{\r\n\t\treturn this.isAMate;\r\n\t};\r\n\r\n\tsetMate( _val )\r\n\t{\r\n\t\tthis.isAMate = _val;\r\n\t};\r\n\r\n\tisTake()\r\n\t{\r\n\t\treturn this.vct !== Piece.NONE;\r\n\t};\r\n\r\n\r\n\tgetMoved()\r\n\t{\r\n\t\treturn this.mvd;\r\n\t};\r\n\r\n\tsetMoved( _val )\r\n\t{\r\n\t\tthis.mvd = _val;\r\n\t}\r\n\r\n\tgetVictim()\r\n\t{\r\n\t\treturn this.vct;\r\n\t};\r\n\r\n\tsetVictim( _val )\r\n\t{\r\n\t\tthis.vct = _val;\r\n\t};\r\n\r\n\tgetPiece()\r\n\t{\r\n\t\treturn this.mvd;\r\n\t}\r\n\r\n\tisProm()\r\n\t{\r\n\t\treturn this.prom !== Piece.NONE;\r\n\t};\r\n\r\n\tisPawn()\r\n\t{\r\n\t\treturn this.mvd && ( this.mvd & 7 ) === Piece.PAWN;\r\n\t};\r\n\r\n\tgetSide()\r\n\t{\r\n\t\treturn Piece.side( this.mvd );\r\n\t}\r\n\r\n\tisNeedCol()\r\n\t{\r\n\t\treturn this.needCol;\r\n\t};\r\n\r\n\tsetNeedCol( _val )\r\n\t{\r\n\t\tthis.needCol = _val;\r\n\t};\r\n\r\n\tisNeedRow()\r\n\t{\r\n\t\treturn this.needRow;\r\n\t};\r\n\r\n\tsetNeedRow( _val )\r\n\t{\r\n\t\tthis.needRow = _val;\r\n\t};\r\n\r\n\tgetTreeconstructorCount()\r\n\t{\r\n\t\tvar cnt = 1;\r\n\r\n\t\tif ( this.subLines )\r\n\t\t{\r\n\t\t\tcnt = this.subLines.reduce( function( _cnt, _ln )\r\n\t\t\t{\r\n\t\t\t\treturn _cnt + _ln.getTreeconstructorCount();\r\n\t\t\t}, cnt );\r\n\t\t}\r\n\r\n\t\treturn cnt;\r\n\t};\r\n\r\n\tindexOfLine( _line )\r\n\t{\r\n\t\tif ( this.subLines )\r\n\t\t\treturn this.subLines.indexOf( _line );\r\n\t\treturn -1;\r\n\t};\r\n\r\n\tfindLine( _mv )\r\n\t{\r\n\t\tif ( this.subLines )\r\n\t\t{\r\n\t\t\tfor ( var inx = 0; inx < this.subLines.length; ++inx )\r\n\t\t\t{\r\n\t\t\t\tvar line = this.subLines[ inx ];\r\n\t\t\t\tif ( line[ 0 ].equals( _mv ) )\r\n\t\t\t\t\treturn line;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\treconstructorLine( _line )\r\n\t{\r\n\t\tif ( this.subLines )\r\n\t\t{\r\n\t\t\tvar inx = this.subLines.indexOf( _line );\r\n\t\t\tif ( inx < 0 )\r\n\t\t\t\treturn;\r\n\t\t\tthis.subLines.splice( inx, 1 );\r\n\t\t}\r\n\t};\r\n\r\n\treconstructorLines()\r\n\t{\r\n\t\tthis.subLines = null;\r\n\t};\r\n\r\n\tgetLine( _inx )\r\n\t{\r\n\t\treturn this.subLines[ _inx ];\r\n\t};\r\n\r\n\tgetSubLines()\r\n\t{\r\n\t\treturn this.subLines;\r\n\t};\r\n\r\n\tgetSubLinesCount()\r\n\t{\r\n\t\tif ( !this.subLines )\r\n\t\t\treturn 0;\r\n\t\treturn this.subLines.length;\r\n\t};\r\n\r\n\thasLines()\r\n\t{\r\n\t\treturn this.subLines != null && this.subLines.length > 0;\r\n\t};\r\n\r\n\t// TODO!\r\n\t// newLine ( _parent, _inxMv )\r\n\t// {\r\n\t// \tif ( !this.subLines )\r\n\t// \t\tthis.subLines = [];\r\n\t// \tvar lineNew = new CB.mvLine( _parent, _inxMv );\r\n\t// \tthis.subLines.push( lineNew );\r\n\r\n\t// \treturn lineNew;\r\n\t// };\r\n\r\n\t// NH2020\r\n\tnewLine ( _parent, _inxMv )\r\n\t{\r\n\t\tif ( !this.subLines )\r\n\t\t\tthis.subLines = [];\r\n\t\tvar lineNew = new MoveLine( _parent, _inxMv );\r\n\t\tthis.subLines.push( lineNew );\r\n\r\n\t\treturn lineNew;\r\n\t};\r\n\r\n\taddLine( _line )\r\n\t{\r\n\t\tif ( !this.subLines )\r\n\t\t\tthis.subLines = [];\r\n\t\tthis.subLines.push( _line );\r\n\t}\r\n\r\n\tinsertLine( _inx, _line )\r\n\t{\r\n\t\tif ( !this.subLines )\r\n\t\t\tthis.subLines = [];\r\n\t\tthis.subLines.splice( _inx, 0, _line );\r\n\t}\r\n\r\n\tswapLines( _inx1, _inx2 )\r\n\t{\r\n\t\tif ( this.subLines )\r\n\t\t{\r\n\t\t\tvar tmp = this.subLines[ _inx1 ];\r\n\t\t\tthis.subLines[ _inx1 ] = this.subLines[ _inx2 ];\r\n\t\t\tthis.subLines[ _inx2 ] = tmp;\r\n\t\t}\r\n\t}\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tif ( this.prom )\r\n\t\t{\r\n\t\t\tvar from = this.from | 0x40;\r\n\t\t\tvar to = this.to | ( ( this.prom - Piece.QUEEN ) << 6 );\r\n\t\t\t_buf.writeByte( from );\r\n\t\t\t_buf.writeByte( to );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t_buf.writeByte( this.from );\r\n\t\t\t_buf.writeByte( this.to );\r\n\t\t}\r\n\r\n\t\t//Anno\r\n\t\tthis.writeAnnos( _buf );\r\n\t\t//SubLines\r\n\t\tthis.writeSubLines( _buf );\r\n\t};\r\n\r\n\t// added prom, mw 9.4.2015\r\n\twrite2( _buf )\r\n\t{\r\n\t\tif ( this.prom )\r\n\t\t{\r\n\t\t\tvar from = this.from | 0x40;\r\n\t\t\tvar to = this.to | ( ( this.prom - Piece.QUEEN ) << 6 );\r\n\t\t\t_buf.writeByte( from );\r\n\t\t\t_buf.writeByte( to );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t_buf.writeByte( this.from );\r\n\t\t\t_buf.writeByte( this.to );\r\n\t\t}\r\n\r\n\t\tvar nFlags = 0;\r\n\t\tif ( this.annos && this.annos.count() )\r\n\t\t\tnFlags |= 1;\r\n\t\tif ( this.getSubLinesCount() )\r\n\t\t\tnFlags |= 2;\r\n\r\n\t\t_buf.writeUint8( nFlags );\r\n\r\n\t\t//Anno \r\n\t\tif ( nFlags & 1 )\r\n\t\t{\r\n\t\t\tthis.writeAnnos2( _buf );\r\n\t\t}\r\n\t\t//SubLines\r\n\t\tif ( nFlags & 2 )\r\n\t\t{\r\n\t\t\tthis.writeSubLines2( _buf );\r\n\t\t}\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\r\n\t\tthis.from = _buf.readByte();\r\n\t\tthis.to = _buf.readByte();\r\n\r\n\t\tif ( ( this.from & 0xC0 ) == 0x40 )\r\n\t\t\tthis.prom = Piece.QUEEN + ( this.to >> 6 );\r\n\r\n\t\tthis.from &= 0x3F;\r\n\t\tthis.to &= 0x3F;\r\n\r\n\t\t//Anno\r\n\t\tthis.readAnnos( _buf );\r\n\t\t//SubLines\r\n\t\tthis.readSubLines( _buf );\r\n\t};\r\n\r\n\tread2( _buf )\r\n\t{\r\n\r\n\t\tthis.from = _buf.readByte();\r\n\t\tthis.to = _buf.readByte();\r\n\r\n\t\tif ( ( this.from & 0xC0 ) == 0x40 )\r\n\t\t\tthis.prom = Piece.QUEEN + ( this.to >> 6 );\r\n\r\n\t\t//if ( ( this.fr & 0xc0 ) || ( this.to & 0xc0 ) )\t// ????\r\n\t\t//\treturn false;\r\n\r\n\t\tthis.from &= 0x3F;\r\n\t\tthis.to &= 0x3F;\r\n\r\n\t\tvar nFlags = _buf.readByte();\r\n\r\n\t\tif ( nFlags & 1 )\r\n\t\t{\r\n\r\n\t\t\t//Anno\r\n\t\t\tthis.readAnnos2( _buf );\r\n\t\t}\r\n\r\n\t\tif ( nFlags & 2 )\r\n\t\t{\r\n\t\t\t//SubLines\r\n\t\t\tthis.readSubLines2( _buf );\r\n\t\t}\r\n\t};\r\n\r\n\r\n\t// \treadAnnos ( _buf )\r\n\t// \t{\r\n\t// \t\t/// BUFFER.\r\n\t// \t//\tthis.annos = CB.Annotation.readFactory( _buf );\r\n\t// \t};\r\n\r\n\t// \treadAnnos2 ( _buf )\r\n\t// \t{\r\n\t// \t\t/// BUFFER.\r\n\t// \t//\tthis.annos = CB.Annotation.readFactory2( _buf );\r\n\t// \t};\r\n\r\n\t// \twriteAnnos ( _buf )\r\n\t// \t{\r\n\t// \t//\tCB.Annotation.write( _buf, this.annos );\r\n\t// \t};\r\n\r\n\t// \twriteAnnos2 ( _buf )\r\n\t// \t{\r\n\t// \t//\tCB.Annotation.write2( _buf, this.annos );\r\n\t// \t};\r\n\r\n\t// \treadSubLines ( _buf )\r\n\t// \t{\r\n\t// \t\t/// BUFFER.\r\n\t// \t\t// var cntLines = _buf.readByte();\r\n\t// \t\t// if ( cntLines <= 127 )\r\n\t// \t\t// {\r\n\t// \t\t// \tthis.subLines = new Array( cntLines );\r\n\t// \t\t// \tfor ( var inx = 0; inx < cntLines; ++inx )\r\n\t// \t\t// \t{\r\n\t// \t\t// \t\tthis.subLines[inx] = CB.constructorLine.readFactory( _buf );\r\n\t// \t\t// \t}\r\n\t// \t\t// }\r\n\t// \t};\r\n\r\n\t// \treadSubLines2 ( _buf )\r\n\t// \t{\r\n\t// \t\t/// BUFFER.\r\n\t// \t\t// var cntLines = _buf.readByte();\r\n\t// \t\t// if ( cntLines <= 127 )\r\n\t// \t\t// {\r\n\t// \t\t// \tthis.subLines = new Array( cntLines );\r\n\t// \t\t// \tfor ( var inx = 0; inx < cntLines; ++inx )\r\n\t// \t\t// \t{\r\n\t// \t\t// \t\tthis.subLines[inx] = CB.constructorLine.readFactory2( _buf );\r\n\t// \t\t// \t}\r\n\t// \t\t// }\r\n\t// \t};\r\n\r\n\t// \twriteSubLines ( _buf )\r\n\t// \t{\r\n\t// \t\tvar cntLines = this.getSubLinesCount();\r\n\t// \t\t_buf.writeByte( cntLines );\r\n\t// \t\tif ( cntLines )\r\n\t// \t\t{\r\n\t// \t\t\tfor ( var inx = 0; inx < cntLines; ++inx )\r\n\t// \t\t\t\tthis.subLines[inx].write( _buf );\r\n\t// \t\t}\r\n\t// \t};\r\n\r\n\t// \twriteSubLines2 ( _buf )\r\n\t// \t{\r\n\t// \t\tvar cntLines = this.getSubLinesCount();\r\n\t// \t\t_buf.writeByte( cntLines );\r\n\t// \t\tif ( cntLines )\r\n\t// \t\t{\r\n\t// \t\t\tfor ( var inx = 0; inx < cntLines; ++inx )\r\n\t// \t\t\t\tthis.subLines[inx].write2( _buf );\r\n\t// \t\t}\r\n\t// \t};\r\n\r\n\t// \t// static readFactory = createReadFactory( Mv );\r\n\t// \t// static readFactory2 = createReadFactory2( Mv );\r\n\r\n\t// \tconstructorLinesTo ( _mvDst )\r\n\t// \t{\r\n\t// \t\t_mvDst.subLines = this.subLines;\r\n\t// \t\tthis.subLines = null;\r\n\t// \t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tvar str = Square.toString( this.from ) + Square.toString( this.to );\r\n\t\tif ( this.prom !== Piece.NONE )\r\n\t\t\tstr += Piece.toString( this.prom ).toLowerCase();\r\n\t\treturn str;\r\n\t};\r\n\r\n\tstatic g_regex = /^[a-h][1-8][a-h][1-8]([NBRQ])?$/i;\r\n\r\n\tstatic isValidString( _strMv )\r\n\t{\r\n\t\treturn this.g_regex.test( _strMv );\r\n\t};\r\n\r\n\tstatic fromString( _strMv )\r\n\t{\r\n\r\n\t\tvar strFrom = _strMv.substring( 0, 2 );\r\n\t\tvar strTo = _strMv.substring( 2, 4 );\r\n\r\n\t\tvar from = Square.fromString( strFrom );\r\n\t\tvar to = Square.fromString( strTo );\r\n\r\n\t\tvar prom = undefined;\r\n\r\n\t\tif ( _strMv.length > 4 )\r\n\t\t{\r\n\t\t\tvar strProm = _strMv.charAt( 4 );\r\n\t\t\tprom = Piece.nominal( Piece.fromString( strProm ) );\r\n\t\t}\r\n\r\n\t\treturn new Move( from, to, prom );\r\n\t};\r\n\r\n\ttoJSON()\r\n\t{\r\n\t\treturn {\r\n\t\t\tfrom: Square.toString( this.from ),\r\n\t\t\tto: Square.toString( this.to ),\r\n\t\t\tprom: [ \"\", \"\", \"Q\", \"N\", \"B\", \"R\", \"\", \"\" ][ this.prom % 8 ]\r\n\t\t};\r\n\t};\r\n\r\n\tfromJSON( json )\r\n\t{\r\n\t\tthis.from = Square.fromString( json.from );\r\n\t\tthis.to = Square.fromString( json.to );\r\n\t\tvar prom = \" KQNBR\".search( RegExp( json.prom, \"i\" ) );\r\n\t\tif ( prom > 0 )\r\n\t\t\tthis.prom = prom;\r\n\t\telse\r\n\t\t\tthis.prom = 0;\r\n\t\treturn {\r\n\t\t\tfrom: Square.toString( this.from ),\r\n\t\t\tto: Square.toString( this.to ),\r\n\t\t\tprom: [ \"\", \"\", \"Q\", \"N\", \"B\", \"R\", \"\", \"\" ][ this.prom % 8 ]\r\n\t\t};\r\n\t};\r\n\r\n\tsetSubParentData( _lineParent, _inx, _rec )\r\n\t{\r\n\t\tif ( this.subLines )\r\n\t\t{\r\n\t\t\tfor ( var inxLn = 0; inxLn < this.subLines.length; ++inxLn )\r\n\t\t\t{\r\n\t\t\t\tvar line = this.subLines[ inxLn ];\r\n\t\t\t\tline.setParentconstructorIndex( _inx );\r\n\t\t\t\tline.setParentLine( _lineParent );\r\n\r\n\t\t\t\tif ( _rec )\r\n\t\t\t\t{\r\n\t\t\t\t\tline.setSubParentData( true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tgetAnno()\r\n\t{\r\n\t\treturn this.annos;\r\n\t};\r\n\r\n\thasAnno()\r\n\t{\r\n\t\treturn this.annos != null;\r\n\t};\r\n\r\n\tsetAnnoItem( _type, _val )\r\n\t{\r\n\t\t// if ( !this.annos )\r\n\t\t// \tthis.annos = new CB.Annotation();\r\n\r\n\t\t// this.annos.setItem( _type, _val );\r\n\t};\r\n\r\n\tsetAnno( anno )\r\n\t{\r\n\t\tthis.annos = anno;\r\n\t};\r\n\r\n\tgetAnnoItem( _type )\r\n\t{\r\n\t\tif ( !this.annos )\r\n\t\t\treturn null;\r\n\t\treturn this.annos.getItem( _type );\r\n\t};\r\n\r\n\tdeleteAnnoItem( type )\r\n\t{\r\n\t\tif ( this.annos )\r\n\t\t\tthis.annos.deleteItem( type );\r\n\t};\r\n\r\n\tresetAnno()\r\n\t{\r\n\t\tthis.annos = null;\r\n\t};\r\n\r\n\tunAnnotate()\r\n\t{\r\n\t\tthis.resetAnno();\r\n\t\tthis.reconstructorLines();\r\n\t};\r\n\r\n\tgetBaggage()\r\n\t{\r\n\t\treturn this.baggage;\r\n\t};\r\n\r\n\tsetBaggage( b )\r\n\t{\r\n\t\tthis.baggage = b;\r\n\t}\r\n\r\n\tforAllconstructors( fn )\r\n\t{\r\n\t\tfn( this );\r\n\t\tif ( this.subLines )\r\n\t\t{\r\n\t\t\tfor ( var i = 0; i < this.subLines.length; i++ )\r\n\t\t\t\tthis.subLines[ i ].forAllconstructors( fn );\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","// ST 2011\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nimport { Piece, CastleRights } from 'common/Chess/Logic/Chess'\r\n\r\nexport class Undo\r\n{\r\n\t// NH2021 Added uniqePiecePositions\r\n\tconstructor( _pos, _mv )\r\n\t{\r\n\t\tif ( _pos !== undefined )\r\n\t\t{\r\n\t\t\tthis.cr = _pos.cr;\r\n\t\t\tthis.ep = _pos.ep;\r\n\t\t\tthis.mvd = _pos.board[ _mv.from ];\r\n\t\t\tthis.vct = _pos.board[ _mv.to ];\r\n\t\t\t\r\n\t\t\tthis.mvdUnique = _pos.uniquePiecePositions[_mv.from];\r\n\t\t\tthis.vctUnique = _pos.uniquePiecePositions[_mv.to];\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.cr = CastleRights.NONE;\r\n\t\t\tthis.ep = 0;\r\n\t\t\tthis.vct = Piece.NONE;\r\n\t\t\tthis.mvd = Piece.NONE;\r\n\r\n\t\t\t// NH2021 TODO Maybe add default values for mvdUnique and vctUnique\r\n\t\t\tconsole.trace(\"UNDO CONSTRUCTOR\")\r\n\t\t}\r\n\r\n\t\tif ( _mv !== undefined )\r\n\t\t\tthis.fldVct = _mv.to;\r\n\r\n\t\tthis.to2 = 0;\r\n\t\tthis.from2 = 0;\r\n\t}\r\n\r\n\t// NH2021 Added Unique Values\r\n\tsetEP( _vct, _fldVct, _vctUnique )\r\n\t{\r\n\t\tthis.fldVct = _fldVct;\r\n\t\tthis.vct = _vct;\r\n\r\n\t\tif (_vctUnique)\r\n\t\t\tthis.vctUnique = _vctUnique;\r\n\t};\r\n\r\n\t// NH2021 Added Unique Values\r\n\tsetCastle( _from2, _to2 )\r\n\t{\r\n\t\tthis.from2 = _from2;\r\n\t\tthis.to2 = _to2;\r\n\t};\r\n\r\n}\r\n\r\n\r\n","// mw 6.2.2013\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nimport { Side, Piece, Square } from 'common/Chess/Logic/Chess'\r\n\r\nexport class Board\r\n{\r\n\tconstructor( bSetup ) \r\n\t{\r\n\t\tthis.sqs = [];\r\n\t\tfor ( var s = 0; s < 64; s++ )\r\n\t\t\tthis.sqs.push( 0 );\r\n\t\tif ( bSetup )\r\n\t\t\tthis.setup();\r\n\t};\r\n\r\n\tstatic SIZE = 64;\r\n\r\n\tsetup()\r\n\t{\r\n\t\tthis.sqs = [ Piece.W_ROOK, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_ROOK,\r\n\t\tPiece.W_KNIGHT, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_KNIGHT,\r\n\t\tPiece.W_BISHOP, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_BISHOP,\r\n\t\tPiece.W_QUEEN, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_QUEEN,\r\n\t\tPiece.W_KING, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_KING,\r\n\t\tPiece.W_BISHOP, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_BISHOP,\r\n\t\tPiece.W_KNIGHT, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_KNIGHT,\r\n\t\tPiece.W_ROOK, Piece.W_PAWN, 0, 0, 0, 0, Piece.B_PAWN, Piece.B_ROOK ];\r\n\t};\r\n\r\n\tclear()\r\n\t{\r\n\t\tthis.sqs.forEach(\r\n\t\t\tfunction( _, i, arr )\r\n\t\t\t{\r\n\t\t\t\tarr[ i ] = 0;\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tfromPosStr( str )\r\n\t{\r\n\t\tvar currColour = Side.WHITE, currPiece = Piece.KING;\r\n\r\n\t\tfor ( var i = 0; i < str.length; i++ )\r\n\t\t{\r\n\t\t\tswitch ( str[ i ] )\r\n\t\t\t{\r\n\t\t\t\tcase 'K':\r\n\t\t\t\t\tcurrPiece = Piece.KING;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'Q':\r\n\t\t\t\t\tcurrPiece = Piece.QUEEN;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'R':\r\n\t\t\t\t\tcurrPiece = Piece.ROOK;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'B':\r\n\t\t\t\t\tcurrPiece = Piece.BISHOP;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'N':\r\n\t\t\t\t\tcurrPiece = Piece.KNIGHT;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'P':\r\n\t\t\t\t\tcurrPiece = Piece.PAWN;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'a':\r\n\t\t\t\tcase 'b':\r\n\t\t\t\tcase 'c':\r\n\t\t\t\tcase 'd':\r\n\t\t\t\tcase 'e':\r\n\t\t\t\tcase 'f':\r\n\t\t\t\tcase 'g':\r\n\t\t\t\tcase 'h':\r\n\t\t\t\t\tvar nThis = str.charCodeAt( i );\r\n\t\t\t\t\tvar nNext = str.charCodeAt( i + 1 );\r\n\t\t\t\t\tif ( ( nNext >= 49 ) && ( nNext <= 56 ) )\r\n\t\t\t\t\t\tthis.sqs[ ( ( nThis - 97 ) << 3 ) + nNext - 49 ] = ( currPiece | currColour );\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tif ( nThis === 98 )\r\n\t\t\t\t\t\t\tcurrColour = Side.SIDE_MASK;\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'w':\r\n\t\t\t\t\tcurrColour = Side.WHITE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tcopyFrom( arr )\r\n\t{\r\n\t\tfor ( var i = 0; i < arr.length; i++ )\r\n\t\t\tthis.sqs[ i ] = arr[ i ];\r\n\t};\r\n\r\n\tcopyTo( arr )\r\n\t{\r\n\t\tfor ( var i = 0; i < 64; i++ )\r\n\t\t\tarr[ i ] = this.sqs[ i ];\r\n\t};\r\n\r\n\tset( n64, piece )\r\n\t{\r\n\t\tthis.sqs[ n64 ] = piece;\r\n\t};\r\n\r\n\tget( n64 )\r\n\t{\r\n\t\treturn this.sqs[ n64 ];\r\n\t};\r\n\r\n\tchange( from, to )\r\n\t{\r\n\t\tthis.sqs[ to ] = this.sqs[ from ];\r\n\t\tthis.sqs[ from ] = 0;\r\n\t};\r\n\r\n\tpromo( from, to, prom )\r\n\t{\r\n\t\tthis.sqs[ to ] = prom;\r\n\t\tthis.sqs[ from ] = 0;\r\n\t};\r\n\r\n\tenPassant( from, to, ep )\r\n\t{\r\n\t\tthis.sqs[ to ] = this.sqs[ from ];\r\n\t\tthis.sqs[ from ] = 0;\r\n\t\tthis.sqs[ ep ] = 0;\r\n\t};\r\n\r\n\twriteToDataBuffer = function( rBuf )\r\n\t{\r\n\t\tfor ( var i = 0; i < 64; i++ )\r\n\t\t\trBuf.writeByte( this.sqs[ i ] );\r\n\t}\r\n\r\n\ttoDebugStrs()\r\n\t{\r\n\t\tvar strs = [];\r\n\t\tfor ( var rank = 7; rank >= 0; rank-- )\r\n\t\t{\r\n\t\t\tvar strRank = \"\";\r\n\t\t\tfor ( var file = 0; file < 8; file++ )\r\n\t\t\t{\r\n\t\t\t\tvar p = this.get( file * 8 + rank );\r\n\t\t\t\tif ( p )\r\n\t\t\t\t\tstrRank += Piece.g_arrPieces[ p ];\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( Square.isDark( file * 8 + rank ) )\r\n\t\t\t\t\t\tstrRank += \".\";\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tstrRank += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tstrs.push( strRank );\r\n\t\t}\r\n\t\treturn strs;\r\n\t};\r\n\r\n\t/*static*/\r\n\tfindSamePieceClosestSquare( piece, sq, refBoard, setExclude )\r\n\t{\r\n\t\t// primitive default implementation, ignore 'closest':\r\n\t\tfor ( var i = 0; i < 64; i++ )\r\n\t\t{\r\n\t\t\tif ( setExclude === undefined || !setExclude[ i ] )\r\n\t\t\t{\r\n\t\t\t\tif ( refBoard[ i ] === piece )\r\n\t\t\t\t{\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\r\n\t//////////////////////////////////////////\r\n\ttest()\r\n\t{\r\n\t\tvar board = new Board();\r\n\t\tboard.setup();\r\n\t\tboard.toDebugStrs().forEach( function( sLine ) \r\n\t\t{\r\n\t\t\tconsole.log( sLine );\r\n\t\t} );\r\n\t};\r\n}\r\n\r\n","// ST 2011\r\n\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil'\r\n\r\nexport function NOT(_func)\r\n{\r\n return function ()\r\n {\r\n return !_func.apply(this, arguments);\r\n };\r\n};\r\n\r\nexport function TRUE()\r\n{\r\n return function ()\r\n {\r\n return true;\r\n }\r\n};\r\n\r\nexport function FALSE()\r\n{\r\n return function ()\r\n {\r\n return false;\r\n }\r\n};\r\n\r\nexport function EqualsFilter(_cmp_elem)\r\n{\r\n return function (_elem, _inx, _arr)\r\n {\r\n return ObjUtil.equals(_elem, _cmp_elem);\r\n }\r\n}\r\n\r\n\r\n","// ST 2011\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nimport { NOT } from 'common/Patterns/FuncUtil'\r\n\r\nexport class StringTools\r\n{\r\n\ttrimChar( str, ch )\r\n\t{\r\n\t\tif ( str.charAt( 0 ) === ch )\r\n\t\t\tstr = str.slice( 1, str.length - 1 );\r\n\t\tif ( str.length > 2 && str.charAt( str.length - 1 ) === ch )\r\n\t\t{\r\n\t\t\tstr = str.slice( 0, str.length - 1 );\r\n\t\t}\r\n\t\treturn str;\r\n\t}\r\n}\r\n\r\nexport class Char\r\n{\r\n\tstatic IsDigit = function( _ch )\r\n\t{\r\n\t\treturn _ch <= '9' && _ch >= '0';\r\n\t};\r\n\r\n\tstatic IsLetter = function( _ch )\r\n\t{\r\n\t\treturn ( _ch <= 'z' && _ch >= 'a' ) || ( _ch <= 'Z' && _ch >= 'A' );\r\n\t};\r\n\r\n\tstatic IsUpperCaseLetter = function( _ch )\r\n\t{\r\n\t\treturn _ch <= 'Z' && _ch >= 'A';\r\n\t};\r\n\r\n\tstatic IsLetterOrDigit = function( _ch )\r\n\t{\r\n\t\treturn Char.IsLetter( _ch ) || Char.IsDigit( _ch );\r\n\t}\r\n\r\n\tstatic IsWhiteSpace = function( _ch )\r\n\t{\r\n\t\treturn _ch === '\\r' || _ch === '\\n' || _ch === ' ' || _ch === '\\t';\r\n\t};\r\n\r\n\tstatic getIsChar = function( _chCmp )\r\n\t{\r\n\t\treturn function( _ch )\r\n\t\t{\r\n\t\t\treturn _ch === _chCmp;\r\n\t\t};\r\n\t};\r\n\r\n\tstatic getIsNotChar = function( _chCmp )\r\n\t{\r\n\t\treturn function( _ch )\r\n\t\t{\r\n\t\t\treturn _ch !== _chCmp;\r\n\t\t};\r\n\t};\r\n}\r\n\r\nexport class StringIterator\r\n{\r\n\tconstructor( _str )\r\n\t{\r\n\t\tthis.m_str = _str;\r\n\t\tthis.m_len = _str.length;\r\n\t\t// this.m_str = null;\r\n\t\tthis.m_inx = -1;\r\n\t}\r\n\r\n\r\n\tCurrent = function()\r\n\t{\r\n\t\treturn this.m_str[ this.m_inx ];\r\n\t};\r\n\r\n\tPeek = function()\r\n\t{\r\n\t\tif ( this.m_inx >= this.m_len - 1 )\r\n\t\t\treturn 0;\r\n\t\treturn this.m_str[ this.m_inx + 1 ];\r\n\t};\r\n\r\n\tNext = function()\r\n\t{\r\n\t\t++this.m_inx;\r\n\t\tif ( this.m_inx === this.m_len )\r\n\t\t\treturn 0;\r\n\t\treturn this.m_str[ this.m_inx ];\r\n\t};\r\n\r\n\r\n\tCurrentString = function( _len )\r\n\t{\r\n\t\treturn this.SubString( this.m_inx, _len );\r\n\t};\r\n\r\n\tNextString = function( _len )\r\n\t{\r\n\t\treturn this.SubString( this.m_inx + 1, _len );\r\n\t};\r\n\r\n\tSubString = function( _start, _len )\r\n\t{\r\n\t\tvar rest = this.m_len - _start;\r\n\t\tif ( !_len || _len > rest )\r\n\t\t\t_len = rest;\r\n\r\n\t\tvar end = _start + _len;\r\n\t\treturn this.m_str.substring( _start, end );\r\n\t};\r\n\r\n\tgetPosition = function()\r\n\t{\r\n\t\treturn this.m_inx;\r\n\t};\r\n\r\n\tsetPosition = function( _inx )\r\n\t{\r\n\t\tthis.m_inx = _inx;\r\n\t};\r\n\r\n\tskip = function( _chs )\r\n\t{\r\n\t\tthis.m_inx += _chs;\r\n\t};\r\n\r\n\tisEOF = function()\r\n\t{\r\n\t\treturn this.m_inx === this.m_len;\r\n\t};\r\n\r\n\tAcceptWhile = function( _func, _fromCur )\r\n\t{\r\n\t\tvar res = \"\";\r\n\t\tif ( _fromCur )\r\n\t\t{\r\n\t\t\tvar cur = this.Current();\r\n\t\t\tif ( typeof cur === \"undefined\" )\r\n\t\t\t\treturn res;\r\n\t\t\tif ( !_func( cur ) )\r\n\t\t\t\treturn res;\r\n\t\t\tres = cur;\r\n\t\t}\r\n\t\tfor ( var ch = this.Next();\r\n\t\t\tch !== 0 && _func( ch );\r\n\t\t\tch = this.Next() )\r\n\t\t{\r\n\t\t\tres += ch;\r\n\t\t\tif ( typeof ch === \"undefined\" )\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tAcceptUntil = function( _func, _fromCur )\r\n\t{\r\n\t\treturn this.AcceptWhile( NOT( _func ), _fromCur );\r\n\t};\r\n\r\n\tAcceptStr = function( _str, _fromCur )\r\n\t{\r\n\t\tvar len = _str.length;\r\n\t\tvar strFollow = _fromCur ? this.CurrentString( len ) : this.NextString( len );\r\n\t\tif ( strFollow === _str )\r\n\t\t{\r\n\t\t\tif ( !_fromCur )\r\n\t\t\t\t++len;\r\n\t\t\tthis.skip( len );\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tAcceptChar = function( _ch, _fromCur )\r\n\t{\r\n\t\tif ( _fromCur )\r\n\t\t{\r\n\t\t\tvar chCur = this.Current();\r\n\t\t\tif ( chCur === _ch )\r\n\t\t\t{\r\n\t\t\t\tthis.skip( 1 );\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar chNxt = this.Peek();\r\n\t\t\tif ( chNxt === _ch )\r\n\t\t\t{\r\n\t\t\t\tthis.skip( 2 );\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tskipWhile = function( _func, _fromCur )\r\n\t{\r\n\t\tif ( _fromCur )\r\n\t\t{\r\n\t\t\tif ( !_func( this.Current() ) )\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t\tfor ( var ch = this.Next();\r\n\t\t\tch !== 0 && _func( ch );\r\n\t\t\tch = this.Next() )\r\n\t\t{ }\r\n\t};\r\n\r\n\tskipUntil = function( _func )\r\n\t{\r\n\t\treturn this.skipWhite( NOT( _func ) );\r\n\t};\r\n\r\n}\r\n\r\nexport function AddStringFillIns()\r\n{\r\n\tif ( !String.prototype.trim )\r\n\t\tString.prototype.trim = function()\r\n\t\t{\r\n\t\t\treturn this.replace( /^\\s\\s*/, '' ).replace( /\\s\\s*$/, '' );\r\n\t\t};\r\n\r\n\tif ( !String.prototype.quote )\r\n\t\tString.prototype.quote = function()\r\n\t\t{\r\n\t\t\tvar inquotes = this.replace( /\\\\/g, \"\\\\\\\\\" ).replace( new RegExp( '\"', \"g\" ), \"\\\\\\\"\" );\r\n\t\t\treturn '\"' + inquotes + '\"';\r\n\t\t};\r\n\r\n\r\n\tif ( !String.prototype.startsWith )\r\n\t\tString.prototype.startsWith = function( _str )\r\n\t\t{\r\n\t\t\tif ( this.indexOf ) // no string?\r\n\t\t\t\treturn this.indexOf( _str ) === 0;\r\n\t\t\telse\r\n\t\t\t\treturn false;\r\n\t\t};\r\n\r\n\tif ( !String.capitalize )\r\n\t\tString.capitalize = function()\r\n\t\t{\r\n\t\t\tif ( !this.length )\r\n\t\t\t\treturn this;\r\n\t\t\treturn this[ 0 ].toUpperCase() + this.substring( 1, this.length ).toLowerCase();\r\n\t\t};\r\n}\r\n\r\n","// ST 2011\r\n// ES 6 MW: Feb 27, 2020\r\n\r\nimport { Piece, Square, Side, CastleRights } from 'common/Chess/Logic/Chess'\r\nimport { Move } from 'common/Chess/Logic/Move'\r\nimport { Undo } from 'common/Chess/Logic/Undo'\r\nimport { Board } from 'common/Chess/Logic/Board'\r\nimport { idiv } from 'common/Tools/Tools'\r\nimport { Char, StringIterator } from 'common/Tools/Strings/CharUtil'\r\n\r\n// NH2020I wichtige Klasse, die eine Position beinhaltet und Auskünfite über diese Position geben kann.\r\n// zb, ob ein bestimmter zug Legal ist. Ob der Zug ein promotion Zug ist. Oder auch, auf welche Felder\r\n// eine gegebene figur ziehen kann.\r\n// Die eigentliche Position des Bretts ist im Feld this.board als Array gespeichert.\r\n// this.board verweist NICHT auf die Klasse, die in Board.js definiert wird.\r\n\r\nexport class Position\r\n{\r\n\tconstructor( _fen )\r\n\t{\r\n\t\tthis.initFields();\r\n\t\tif ( !_fen )\r\n\t\t\tthis.initStartPos();\r\n\t\telse\r\n\t\t{\r\n\t\t\tif ( _fen.length )\r\n\t\t\t{\r\n\t\t\t\tif ( _fen.charAt( 0 ) === 'w' )\r\n\t\t\t\t\tthis.initString( _fen );\r\n\t\t\t\telse\r\n\t\t\t\t\tthis.initFEN( _fen );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstatic NOEP = -1;\r\n\r\n\tcopy( pos )\r\n\t{\r\n\t\tfor ( var fld = 0; fld < this.board.length; ++fld )\r\n\t\t\tthis.board[ fld ] = pos.board[ fld ];\r\n\r\n\t\t// NH2020\r\n\t\tfor ( var fld = 0; fld < this.uniquePiecePositions.length; fld++ )\r\n\t\t\tthis.uniquePiecePositions[ fld ] = pos.uniquePiecePositions[ fld ];\r\n\r\n\t\tthis.sd = pos.sd;\r\n\t\tthis.ep = pos.ep;\r\n\t\tthis.cr = pos.cr;\r\n\t\tthis.lastKillOrPawn = pos;\r\n\t\tthis.numPly = pos.numPly;\r\n\t};\r\n\r\n\t// NH2020 added this to change \"lastKillOrPawn\"\r\n\tcopy02 (pos)\r\n\t{\r\n\t\tfor ( var fld = 0; fld < this.board.length; ++fld )\r\n\t\t\tthis.board[ fld ] = pos.board[ fld ];\r\n\r\n\t\tfor ( var fld = 0; fld < this.uniquePiecePositions.length; fld++ )\r\n\t\t\tthis.uniquePiecePositions[ fld ] = pos.uniquePiecePositions[ fld ];\r\n\r\n\t\tthis.sd = pos.sd;\r\n\t\tthis.ep = pos.ep;\r\n\t\tthis.cr = pos.cr;\r\n\t\tthis.lastKillOrPawn = pos.lastKillOrPawn;\r\n\t\tthis.numPly = pos.numPly;\r\n\t}\r\n\r\n\tequals( _pos )\r\n\t{\r\n\t\tif ( !_pos )\r\n\t\t\treturn false;\r\n\r\n\t\tif ( this.sd !== _pos.sd )\r\n\t\t\treturn false;\r\n\t\tif ( this.ep !== _pos.ep )\r\n\t\t\treturn false;\r\n\t\tif ( this.cr !== _pos.cr )\r\n\t\t\treturn false;\r\n\r\n\t\tfor ( var fld = 0; fld < this.board.length; ++fld )\r\n\t\t{\r\n\t\t\tif ( this.board[ fld ] !== _pos.board[ fld ] )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\t// NH2020 made static\r\n\tstatic plyToMvNum( _numPly, _sd )\r\n\t{\r\n\t\treturn idiv( _numPly, 2 ) + 1;\r\n\t};\r\n\r\n\tstatic mvToPlyNum( _numMv, _sd )\r\n\t{\r\n\t\treturn 2 * ( _numMv - 1 ) + _sd;\r\n\t};\r\n\r\n\tgetMoveNum()\r\n\t{\r\n\t\treturn Position.plyToMvNum( this.numPly, this.sd );\r\n\t};\r\n\r\n\tsetMoveNum( _numMv )\r\n\t{\r\n\t\tthis.numPly = Position.mvToPlyNum( _numMv, this.sd );\r\n\t};\r\n\r\n\tgetPlyNum()\r\n\t{\r\n\t\treturn this.numPly;\r\n\t};\r\n\r\n\tinitStartPos()\r\n\t{\r\n\t\tthis.sd = Side.WHITE;\r\n\r\n\t\tfor ( var col = Square.C_A; col <= Square.C_H; ++col )\r\n\t\t{\r\n\t\t\tthis.board[ Square.I( col, Square.R_2 ) ] = Piece.W_PAWN;\r\n\t\t\tthis.board[ Square.I( col, Square.R_7 ) ] = Piece.B_PAWN;\r\n\t\t}\r\n\r\n\t\tthis.board[ Square.A1 ] = this.board[ Square.H1 ] = Piece.W_ROOK;\r\n\t\tthis.board[ Square.B1 ] = this.board[ Square.G1 ] = Piece.W_KNIGHT;\r\n\t\tthis.board[ Square.C1 ] = this.board[ Square.F1 ] = Piece.W_BISHOP;\r\n\r\n\t\tthis.board[ Square.D1 ] = Piece.W_QUEEN;\r\n\t\tthis.board[ Square.E1 ] = Piece.W_KING;\r\n\r\n\t\tthis.board[ Square.A8 ] = this.board[ Square.H8 ] = Piece.B_ROOK;\r\n\t\tthis.board[ Square.B8 ] = this.board[ Square.G8 ] = Piece.B_KNIGHT;\r\n\t\tthis.board[ Square.C8 ] = this.board[ Square.F8 ] = Piece.B_BISHOP;\r\n\r\n\t\tthis.board[ Square.D8 ] = Piece.B_QUEEN;\r\n\t\tthis.board[ Square.E8 ] = Piece.B_KING;\r\n\r\n\t\t// NH2020 \r\n\t\tthis.uniquePiecePositions = \r\n\t\t[ 1, 2, 0, 0, 0, 0, 3, 4,\r\n\t\t\t5, 6, 0, 0, 0, 0, 7, 8,\r\n\t\t\t9, 10, 0, 0, 0, 0, 11, 12,\r\n\t\t\t13, 14, 0, 0, 0, 0, 15, 16,\r\n\t\t\t17, 18, 0, 0, 0, 0, 19, 20,\r\n\t\t\t21, 22, 0, 0, 0, 0, 23, 24,\r\n\t\t\t25, 26, 0, 0, 0, 0, 27, 28,\r\n\t\t\t29, 30, 0, 0, 0, 0, 31, 32 ];\r\n\r\n\r\n\t\tthis.cr = CastleRights.ALL;\r\n\r\n\t\tthis.lastKillOrPawn = 0;\r\n\t\tthis.numPly = 0;\r\n\t};\r\n\r\n\tboardEquals( board )\r\n\t{\r\n\t\tfor ( var i = 0; i < this.board.length && i < 64; i++ )\r\n\t\t{\r\n\t\t\tif ( this.board[ i ] !== board[ i ] )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\tinitFEN( _fen )\r\n\t{\r\n\t\tvar it = new StringIterator( _fen );\r\n\r\n\t\tvar rCur = Square.R_8;\r\n\t\tvar cCur = Square.C_A;\r\n\r\n\t\tvar ch;\r\n\r\n\t\tfor ( ch = it.Next();\r\n\t\t\tch !== 0 && !Char.IsWhiteSpace( ch );\r\n\t\t\tch = it.Next() )\r\n\t\t{\r\n\t\t\tif ( ch === '/' )\r\n\t\t\t{\r\n\t\t\t\t--rCur;\r\n\t\t\t\tcCur = Square.C_A;\r\n\t\t\t}\r\n\t\t\telse if ( Char.IsDigit( ch ) )\r\n\t\t\t{\r\n\t\t\t\tcCur += Number( ch );\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar fld = Square.I( cCur, rCur );\r\n\t\t\t\tvar pc = Piece.fromString( ch );\r\n\r\n\t\t\t\t// CBDebug.assert( pc !== Piece.NONE );\r\n\r\n\t\t\t\tthis.board[ fld ] = pc;\r\n\t\t\t\t\r\n\t\t\t\t// NH202 TODO: Init FEN mit unique Piece IDs\r\n\r\n\t\t\t\tcCur++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( it.isEOF() ) return;\r\n\r\n\t\tit.skipWhile( Char.IsWhiteSpace );\r\n\r\n\t\tif ( it.isEOF() ) return;\r\n\r\n\t\t//Seite am Zug.\r\n\t\tthis.sd = Side.fromString( it.Current() );\r\n\r\n\t\tit.skipWhile( Char.IsWhiteSpace );\r\n\r\n\t\tif ( it.isEOF() ) return;\r\n\r\n\t\tvar strCr = it.AcceptUntil( Char.IsWhiteSpace, true );\r\n\r\n\t\tthis.cr = CastleRights.fromString( strCr );\r\n\r\n\t\tif ( it.isEOF() ) return;\r\n\r\n\t\tit.skipWhile( Char.IsWhiteSpace );\r\n\r\n\t\t//EP\r\n\t\tvar strFld = it.AcceptUntil( Char.IsWhiteSpace, true );\r\n\r\n\t\tif ( strFld === '-' )\r\n\t\t\tthis.ep = Position.NOEP;\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar fldEp = Square.fromString( strFld );\r\n\t\t\tthis.ep = Square.C( fldEp );\r\n\t\t}\r\n\r\n\t\tlet mvNum = 1;\r\n\t\tthis.numPly = Position.mvToPlyNum( mvNum, this.sd );\r\n\r\n\t\tif ( it.isEOF() )\r\n\t\t\treturn;\r\n\r\n\t\t//Kill Clock\r\n\t\tit.skipWhile( Char.IsWhiteSpace );\r\n\r\n\t\tif ( it.isEOF() )\r\n\t\t\treturn;\r\n\r\n\t\tvar strLastKill = it.AcceptUntil( Char.IsWhiteSpace, true );\r\n\t\tthis.lastKillOrPawn = Number( strLastKill );\r\n\t\tif ( it.isEOF() )\r\n\t\t\treturn;\r\n\t\t//Move Num\r\n\t\tit.skipWhile( Char.IsWhiteSpace );\r\n\t\tif ( it.isEOF() )\r\n\t\t\treturn;\r\n\t\tvar strMvNum = it.AcceptUntil( Char.IsWhiteSpace, true );\r\n\t\tmvNum = Number( strMvNum );\r\n\r\n\t\tif ( !mvNum )\r\n\t\t\tmvNum = 1;\r\n\r\n\t\tthis.numPly = Position.mvToPlyNum( mvNum, this.sd );\r\n\t};\r\n\r\n\t// NH2021 TODO: InitString mit unique Piece IDs\r\n\tinitString( str )\r\n\t{\r\n\t\tthis.initEmpty();\r\n\t\tvar l = str.length;\r\n\t\tvar ger = false;\r\n\t\tfor ( var i = 0; i < l; i++ )\r\n\t\t{\r\n\t\t\tif ( ( ( str[ i ] === 'b' ) || ( str[ i ] === 's' ) ) && ( str[ i + 1 ] === 'K' ) )\r\n\t\t\t{\r\n\t\t\t\tger = ( str[ i ] === 's' );\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar curr_piece = 0, curr_colour = 0;\r\n\t\tfor ( let i = 0; i < l; i++ )\r\n\t\t{\r\n\t\t\tswitch ( str[ i ] )\r\n\t\t\t{\r\n\t\t\t\tcase 'K':\r\n\t\t\t\t\tcurr_piece = Piece.KING;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'D':\r\n\t\t\t\tcase 'Q':\r\n\t\t\t\t\tcurr_piece = Piece.QUEEN;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'T':\r\n\t\t\t\tcase 'R':\r\n\t\t\t\t\tcurr_piece = Piece.ROOK;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'L':\r\n\t\t\t\t\tcurr_piece = Piece.BISHOP;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'B':\r\n\t\t\t\t\tcurr_piece = ger ? Piece.PAWN : Piece.BISHOP;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'S':\r\n\t\t\t\tcase 'N':\r\n\t\t\t\t\tcurr_piece = Piece.KNIGHT;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'P':\r\n\t\t\t\t\tcurr_piece = Piece.PAWN;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'a':\r\n\t\t\t\tcase 'b':\r\n\t\t\t\tcase 'c':\r\n\t\t\t\tcase 'd':\r\n\t\t\t\tcase 'e':\r\n\t\t\t\tcase 'f':\r\n\t\t\t\tcase 'g':\r\n\t\t\t\tcase 'h':\r\n\t\t\t\t\tif ( ( str.charCodeAt( i + 1 ) > 48 /*0*/ ) && ( str.charCodeAt( i + 1 ) < 57 /*9*/ ) )\r\n\t\t\t\t\t\tthis.board[ ( ( str.charCodeAt( i ) - 97 /*a*/ ) << 3 ) + str.charCodeAt( i + 1 ) - 49 /*1*/ ] = ( curr_piece | curr_colour );\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tif ( ( str[ i ] === 'b' ) && !ger )\r\n\t\t\t\t\t\t\tcurr_colour = Piece.BLACK;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 's':\r\n\t\t\t\t\tif ( ger )\r\n\t\t\t\t\t\tcurr_colour = Piece.BLACK;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 'w':\r\n\t\t\t\t\tcurr_colour = Piece.WHITE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase ':':\r\n\t\t\t\t\tthis.parseAttributes( str.slice( i + 1 ) );\r\n\t\t\t\t\ti = l;\t// done.\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( this.cr === 0 )\t// castle rights: if the positions of the pieces fit, assume castling legal, if nothing further specified.\r\n\t\t{\r\n\t\t\tif ( this.board[ Square.E1 ] === Piece.W_KING )\r\n\t\t\t{\r\n\t\t\t\tif ( this.board[ Square.H1 ] === Piece.W_ROOK )\r\n\t\t\t\t\tthis.cr |= CastleRights.W_00;\r\n\t\t\t\telse if ( this.board[ Square.A1 ] === Piece.W_ROOK )\r\n\t\t\t\t\tthis.cr |= CastleRights.W_000;\r\n\t\t\t}\r\n\t\t\tif ( this.board[ Square.E8 ] === Piece.B_KING )\r\n\t\t\t{\r\n\t\t\t\tif ( this.board[ Square.H8 ] === Piece.B_ROOK )\r\n\t\t\t\t\tthis.cr |= CastleRights.B_00;\r\n\t\t\t\telse if ( this.board[ Square.A8 ] === Piece.B_ROOK )\r\n\t\t\t\t\tthis.cr |= CastleRights.B_000;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tparseAttributes( str )\r\n\t{\r\n\t\t//Log.Log( str );\r\n\t\tif ( str[ 0 ] === 'b' )\r\n\t\t\tthis.sd = Side.BLACK;\r\n\t};\r\n\r\n\tcanMakeNullMove()\r\n\t{\r\n\t\treturn !this.isCheck();\r\n\t};\r\n\r\n\tmakeNullMove()\r\n\t{\r\n\t\treturn this.makeMove( new Move( 0, 0 ) );\r\n\t};\r\n\r\n\tunmakeNullMove()\r\n\t{\r\n\t\treturn this.unmakeMove( new Move( 0, 0 ) );\r\n\t};\r\n\r\n\t// NH2020 Weshalb wird diese Funktion bei jedem Zug ca. 20 Mal aufgerufen?\r\n\tmakeMove( _mv )\r\n\t{\r\n\t\t// console.trace(\"Make Move!\");\r\n\t\tif ( !_mv )\r\n\t\t\treturn;\r\n\r\n\t\tvar undo = new Undo( this, _mv );\r\n\r\n\t\t++this.numPly;\r\n\r\n\t\tthis.sd = Side.other( this.sd );\r\n\t\tvar oldEP = this.ep;\r\n\t\tthis.ep = Position.NOEP;\r\n\r\n\t\tif ( _mv.isNullMove() )\r\n\t\t\treturn undo;\r\n\r\n\t\t//Always do...\r\n\t\tvar pcMvd = this.board[ _mv.from ];\r\n\t\tvar pcVct = this.board[ _mv.to ];\r\n\r\n\t\tthis.board[ _mv.to ] = this.board[ _mv.from ];\r\n\t\tthis.board[ _mv.from ] = Piece.NONE;\r\n\r\n\t\t// NH2020\r\n\t\tthis.uniquePiecePositions[_mv.to] = this.uniquePiecePositions[_mv.from];\r\n\t\tthis.uniquePiecePositions[_mv.from] = Piece.NONE;\r\n\r\n\t\t// rowFrom/rowTo\r\n\t\tvar rFrom = Square.R( _mv.from );\r\n\t\tvar rTo = Square.R( _mv.to );\r\n\r\n\t\t// columnFrom/columnTo\r\n\t\tvar cFrom = Square.C( _mv.from );\r\n\t\tvar cTo = Square.C( _mv.to );\r\n\r\n\t\t//Pawn special cases...\r\n\t\tif ( Piece.nominal( pcMvd ) === Piece.PAWN )\r\n\t\t{\r\n\t\t\t// Handle en passent\r\n\t\t\tif ( cTo !== cFrom && cTo === oldEP && pcVct === Piece.NONE )\r\n\t\t\t{\r\n\t\t\t\tpcVct = Piece.changeSide( pcMvd );\r\n\r\n\t\t\t\tvar fldVct = Square.I( cTo, rFrom );\r\n\t\t\t\tthis.board[ fldVct ] = Piece.NONE;\r\n\r\n\t\t\t\t// NH2021\r\n\t\t\t\tvar pcVctUnique = this.uniquePiecePositions[fldVct];\r\n\t\t\t\tthis.uniquePiecePositions[fldVct] = Piece.NONE;\r\n\r\n\t\t\t\t// NH2021\r\n\t\t\t\t// undo.setEP( pcVct, fldVct );\r\n\t\t\t\tundo.setEP( pcVct, fldVct, pcVctUnique );\r\n\t\t\t}\r\n\r\n\t\t\t// Promotion Zug\r\n\t\t\tif ( _mv.prom !== Piece.NONE )\r\n\t\t\t{\r\n\t\t\t\tvar pcProm = Piece.make( _mv.prom, Piece.side( pcMvd ) );\r\n\t\t\t\tthis.board[ _mv.to ] = pcProm;\r\n\t\t\t}\r\n\r\n\t\t\t// First pawn move with two steps. Set en passent possibility.\r\n\t\t\tif ( Math.abs( rFrom - rTo ) === 2 )\r\n\t\t\t{\r\n\t\t\t\tthis.ep = cFrom;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// King special cases\r\n\t\tif ( Piece.nominal( pcMvd ) === Piece.KING )\r\n\t\t{\r\n\t\t\t// Castle\r\n\t\t\tif ( Math.abs( cTo - cFrom ) === 2 )\r\n\t\t\t{\r\n\t\t\t\tvar from2 = null;\r\n\t\t\t\tvar to2 = null;\r\n\r\n\t\t\t\tif ( cTo === Square.C_G )\r\n\t\t\t\t{\r\n\t\t\t\t\tfrom2 = Square.I( Square.C_H, rFrom );\r\n\t\t\t\t\tto2 = Square.I( Square.C_F, rFrom );\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tfrom2 = Square.I( Square.C_A, rFrom );\r\n\t\t\t\t\tto2 = Square.I( Square.C_D, rFrom );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.board[ to2 ] = this.board[ from2 ];\r\n\t\t\t\tthis.board[ from2 ] = Piece.NONE;\r\n\r\n\t\t\t\t// NH2021\r\n\t\t\t\tlet from2Unique = this.uniquePiecePositions[from2];\r\n\t\t\t\tthis.uniquePiecePositions[to2] = this.uniquePiecePositions[from2];\r\n\t\t\t\tthis.uniquePiecePositions[from2] = Piece.NONE;\r\n\r\n\t\t\t\t// NH2021\r\n\t\t\t\t// undo.setCastle( from2, to2 );\r\n\t\t\t\tundo.setCastle( from2, to2, from2Unique);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// NH2021I Set Castling Rights\r\n\t\tif ( this.cr )\r\n\t\t{\r\n\t\t\tif ( this.cr & CastleRights.W_ALL )\r\n\t\t\t{\r\n\t\t\t\tif ( _mv.from === Square.E1 )\r\n\t\t\t\t\tthis.cr &= ~CastleRights.W_ALL;\r\n\t\t\t\telse if ( _mv.from === Square.A1 || _mv.to === Square.A1 )\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.cr &= ~CastleRights.W_000;\r\n\t\t\t\t}\r\n\t\t\t\telse if ( _mv.from === Square.H1 || _mv.to === Square.H1 )\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.cr &= ~CastleRights.W_00;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.cr & CastleRights.B_ALL )\r\n\t\t\t{\r\n\t\t\t\tif ( _mv.from === Square.E8 )\r\n\t\t\t\t\tthis.cr &= ~CastleRights.B_ALL;\r\n\t\t\t\telse if ( _mv.from === Square.A8 || _mv.to === Square.A8 )\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.cr &= ~CastleRights.B_000;\r\n\t\t\t\t}\r\n\t\t\t\telse if ( _mv.from === Square.H8 || _mv.to === Square.H8 )\r\n\t\t\t\t{\r\n\t\t\t\t\tthis.cr &= ~CastleRights.B_00;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undo;\r\n\t};\r\n\r\n\t// NH2021 Muss diese Funktion so oft aufgerufen werden?\r\n\t// Aufrufe kommen wohl daher, dass die legalen Züge einer Position generiert werden\r\n\t// Dafür wird gecheckt, ob ein möglicher Zug ein Suicide Move wäre, indem makeMove aufgerufen und dann\r\n\t// rückgängig gemacht wird.\r\n\tunmakeMove( _mv, _undo )\r\n\t{\r\n\r\n\t\tif ( !_mv.isNullMove() )\r\n\t\t{\r\n\t\t\tthis.board[ _mv.from ] = _undo.mvd;\r\n\t\t\tthis.board[ _mv.to ] = Piece.NONE;\r\n\r\n\t\t\tthis.board[ _undo.fldVct ] = _undo.vct;\r\n\r\n\t\t\t// NH2021\r\n\t\t\tthis.uniquePiecePositions[_mv.from] = _undo.mvdUnique;\r\n\t\t\tthis.uniquePiecePositions[_mv.to] = Piece.NONE;\r\n\t\t\tthis.uniquePiecePositions[_undo.fldVct] = _undo.vctUnique;\r\n\r\n\t\t\tif ( _undo.to2 || _undo.from2 )\r\n\t\t\t{\r\n\t\t\t\tthis.board[ _undo.from2 ] = this.board[ _undo.to2 ];\r\n\t\t\t\tthis.board[ _undo.to2 ] = Piece.NONE;\r\n\r\n\t\t\t\t// NH2021\r\n\t\t\t\tthis.uniquePiecePositions[_undo.from2] = this.uniquePiecePositions[_undo.to2];\r\n\t\t\t\tthis.uniquePiecePositions[_undo.to2] = Piece.NONE;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.cr = _undo.cr;\r\n\t\tthis.ep = _undo.ep;\r\n\t\t--this.numPly;\r\n\t\tthis.sd = Side.other( this.sd );\r\n\r\n\t};\r\n\r\n\tgenerateLegals()\r\n\t{\r\n\t\tvar arrMvs = this.generateSemiLegals();\r\n\t\treturn this.filterLegals( arrMvs );\r\n\t};\r\n\r\n\t/**\r\n @param {number=} _pc opt\r\n */\r\n\tgenerateSemiLegals( _pc )\r\n\t{\r\n\t\tvar arrRes = [];\r\n\r\n\t\tfor ( var fld = 0; fld < this.board.length; ++fld )\r\n\t\t{\r\n\t\t\tvar pc = this.board[ fld ];\r\n\t\t\tif ( pc === Piece.NONE )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif ( _pc && pc !== _pc )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar sd = Piece.side( pc );\r\n\t\t\tif ( sd !== this.sd )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tthis._generateSemiLegalsFrom( fld, pc, arrRes );\r\n\t\t}\r\n\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\tgenerateSemiLegalsFrom( _from, _pc )\r\n\t{\r\n\t\tif ( !_pc )\r\n\t\t\t_pc = this.board[ _from ];\r\n\r\n\t\tvar arrRes = [];\r\n\r\n\t\tthis._generateSemiLegalsFrom( _from, _pc, arrRes );\r\n\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\tgenerateLegalsFrom( _from, _pc )\r\n\t{\r\n\t\tvar arrSemiLegals = this.generateSemiLegalsFrom( _from, _pc );\r\n\t\treturn this.filterLegals( arrSemiLegals );\r\n\t};\r\n\r\n\t_generateSemiLegalsFrom( _fld, _pc, _arrRes )\r\n\t{\r\n\t\tswitch ( _pc )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.W_PAWN:\r\n\t\t\tcase Piece.B_PAWN:\r\n\t\t\t\tthis.generatePawn( _pc, _fld, _arrRes );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.W_KNIGHT:\r\n\t\t\tcase Piece.B_KNIGHT:\r\n\t\t\t\tthis.generateKnight( _pc, _fld, _arrRes );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.W_BISHOP:\r\n\t\t\tcase Piece.B_BISHOP:\r\n\t\t\t\tthis.generateBishop( _pc, _fld, _arrRes );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.W_ROOK:\r\n\t\t\tcase Piece.B_ROOK:\r\n\t\t\t\tthis.generateRook( _pc, _fld, _arrRes );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.W_QUEEN:\r\n\t\t\tcase Piece.B_QUEEN:\r\n\t\t\t\tthis.generateQueen( _pc, _fld, _arrRes );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.W_KING:\r\n\t\t\tcase Piece.B_KING:\r\n\t\t\t\tthis.generateKing( _pc, _fld, _arrRes );\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t};\r\n\r\n\tgenerateSemiLegalsTo( _to, _pc )\r\n\t{\r\n\t\t//Temporär...\r\n\t\tvar arrSemiLegals = this.generateSemiLegals( _pc );\r\n\t\treturn arrSemiLegals.filter(\r\n\t\t\tfunction( _mv )\r\n\t\t\t{\r\n\t\t\t\treturn _mv.to === _to;\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\r\n\r\n\r\n\tstatic g_arrKnightMvs =\r\n\t\t[\r\n\t\t\t//dc,dr\r\n\t\t\t[ 2, 1 ],\r\n\t\t\t[ 1, 2 ],\r\n\t\t\t[ -1, 2 ],\r\n\t\t\t[ -2, 1 ],\r\n\r\n\t\t\t[ -2, -1 ],\r\n\t\t\t[ -1, -2 ],\r\n\t\t\t[ 1, -2 ],\r\n\t\t\t[ 2, -1 ]\r\n\t\t];\r\n\r\n\tstatic g_arrKingMvs =\r\n\t\t[\r\n\t\t\t//dc,dr\r\n\t\t\t[ 1, 0 ],\r\n\t\t\t[ 1, 1 ],\r\n\t\t\t[ 0, 1 ],\r\n\t\t\t[ -1, 1 ],\r\n\r\n\t\t\t[ -1, 0 ],\r\n\t\t\t[ -1, -1 ],\r\n\t\t\t[ 0, -1 ],\r\n\t\t\t[ 1, -1 ]\r\n\t\t];\r\n\r\n\tstatic g_arrBishopMvs =\r\n\t\t[\r\n\t\t\t//dc,dr\r\n\t\t\t[ 1, 1 ],\r\n\t\t\t[ -1, 1 ],\r\n\r\n\t\t\t[ -1, -1 ],\r\n\t\t\t[ 1, -1 ]\r\n\t\t];\r\n\r\n\tstatic g_arrRookMvs =\r\n\t\t[\r\n\t\t\t//dc,dr\r\n\t\t\t[ 1, 0 ],\r\n\t\t\t[ 0, 1 ],\r\n\r\n\t\t\t[ -1, 0 ],\r\n\t\t\t[ 0, -1 ]\r\n\t\t];\r\n\r\n\tgenerateKnight( _pc, _fld, _arrRes )\r\n\t{\r\n\t\tthis.generate( _pc, _fld, Position.g_arrKnightMvs, false, _arrRes );\r\n\t};\r\n\r\n\tgenerateKing( _pc, _fld, _arrRes )\r\n\t{\r\n\t\tthis.generate( _pc, _fld, Position.g_arrKingMvs, false, _arrRes );\r\n\r\n\t\t//Rochaden...\r\n\t\tif ( _pc === Piece.W_KING )\r\n\t\t{\r\n\t\t\tif ( !( this.cr & CastleRights.W_ALL ) )\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif ( this.isAttacked( Square.E1, Side.BLACK ) )\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif ( this.cr & CastleRights.W_00 )\r\n\t\t\t{\r\n\t\t\t\tif ( this.board[ Square.F1 ] === Piece.NONE &&\r\n\t\t\t\t\tthis.board[ Square.G1 ] === Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( !this.isAttacked( Square.F1, Side.BLACK )\r\n\t\t\t\t\t\t&& !this.isAttacked( Square.G1, Side.BLACK )\r\n\t\t\t\t\t)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_arrRes.push( Move.g_mvW00 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.cr & CastleRights.W_000 )\r\n\t\t\t{\r\n\t\t\t\tif ( this.board[ Square.D1 ] === Piece.NONE &&\r\n\t\t\t\t\tthis.board[ Square.C1 ] === Piece.NONE &&\r\n\t\t\t\t\tthis.board[ Square.B1 ] === Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( !this.isAttacked( Square.D1, Side.BLACK )\r\n\t\t\t\t\t\t&& !this.isAttacked( Square.C1, Side.BLACK )\r\n\t\t\t\t\t)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_arrRes.push( Move.g_mvW000 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( _pc === Piece.B_KING )\r\n\t\t{\r\n\t\t\tif ( !( this.cr & CastleRights.B_ALL ) )\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif ( this.isAttacked( Square.E8, Side.WHITE ) )\r\n\t\t\t\treturn;\r\n\r\n\t\t\tif ( this.cr & CastleRights.B_00 )\r\n\t\t\t{\r\n\t\t\t\tif ( this.board[ Square.F8 ] === Piece.NONE &&\r\n\t\t\t\t\tthis.board[ Square.G8 ] === Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( !this.isAttacked( Square.F8, Side.WHITE )\r\n\t\t\t\t\t\t&& !this.isAttacked( Square.G8, Side.WHITE )\r\n\t\t\t\t\t)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_arrRes.push( Move.g_mvB00 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.cr & CastleRights.B_000 )\r\n\t\t\t{\r\n\t\t\t\tif ( this.board[ Square.D8 ] === Piece.NONE &&\r\n\t\t\t\t\tthis.board[ Square.C8 ] === Piece.NONE &&\r\n\t\t\t\t\tthis.board[ Square.B8 ] === Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( !this.isAttacked( Square.D8, Side.WHITE )\r\n\t\t\t\t\t\t&& !this.isAttacked( Square.C8, Side.WHITE )\r\n\t\t\t\t\t)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_arrRes.push( Move.g_mvB000 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t};\r\n\r\n\tgenerateRook( _pc, _fld, _arrRes )\r\n\t{\r\n\t\tthis.generate( _pc, _fld, Position.g_arrRookMvs, true, _arrRes );\r\n\t};\r\n\r\n\tgenerateBishop( _pc, _fld, _arrRes )\r\n\t{\r\n\t\tthis.generate( _pc, _fld, Position.g_arrBishopMvs, true, _arrRes );\r\n\t};\r\n\r\n\tgenerateQueen( _pc, _fld, _arrRes )\r\n\t{\r\n\t\tthis.generateRook( _pc, _fld, _arrRes );\r\n\t\tthis.generateBishop( _pc, _fld, _arrRes );\r\n\t};\r\n\r\n\tgeneratePawn( _pc, _fld, _arrRes )\r\n\t{\r\n\t\tvar rDir = _pc === Piece.W_PAWN ? +1 : -1;\r\n\t\tvar rProm = _pc === Piece.W_PAWN ? Square.R_8 : Square.R_1;\r\n\r\n\t\tvar cFrom = Square.C( _fld );\r\n\t\tvar rFrom = Square.R( _fld );\r\n\r\n\t\tvar sdMe = Piece.side( _pc );\r\n\r\n\t\tvar rTo = rFrom + rDir;\r\n\t\tvar fldOne = Square.I( cFrom, rTo );\r\n\r\n\t\tvar promMv = rTo === rProm;\r\n\r\n\t\tif ( this.board[ fldOne ] === Piece.NONE )\r\n\t\t{\r\n\t\t\tif ( promMv )\r\n\t\t\t{\r\n\t\t\t\t_arrRes.push( new Move( _fld, fldOne, Piece.QUEEN ) );\r\n\t\t\t\t_arrRes.push( new Move( _fld, fldOne, Piece.ROOK ) );\r\n\t\t\t\t_arrRes.push( new Move( _fld, fldOne, Piece.BISHOP ) );\r\n\t\t\t\t_arrRes.push( new Move( _fld, fldOne, Piece.KNIGHT ) );\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar mvSingle = new Move( _fld, fldOne );\r\n\t\t\t\t_arrRes.push( mvSingle );\r\n\t\t\t}\r\n\r\n\t\t\tif ( ( _pc === Piece.W_PAWN && rFrom === Square.R_2 ) ||\r\n\t\t\t\t( _pc === Piece.B_PAWN && rFrom === Square.R_7 ))\r\n\t\t\t{\r\n\t\t\t\tvar fldDouble = Square.I( cFrom, rFrom + 2 * rDir );\r\n\r\n\t\t\t\tif ( this.board[ fldDouble ] === Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar mvDouble = new Move( _fld, fldDouble );\r\n\r\n\t\t\t\t\t_arrRes.push( mvDouble );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor ( var cDir = -1; cDir <= 1; cDir += 2 )\r\n\t\t{\r\n\t\t\tvar cTo = cFrom + cDir;\r\n\t\t\tvar rTakeTo = rFrom + rDir;\r\n\r\n\t\t\tif ( !Square.isLegal( cTo, rTakeTo ) )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar fldTo = Square.I( cTo, rTakeTo );\r\n\t\t\tvar pcVct = this.board[ fldTo ];\r\n\r\n\t\t\tif ( pcVct !== Piece.NONE && Piece.side( pcVct ) !== sdMe )\r\n\t\t\t{\r\n\t\t\t\tif ( promMv )\r\n\t\t\t\t{\r\n\t\t\t\t\t_arrRes.push( new Move( _fld, fldTo, Piece.QUEEN ) );\r\n\t\t\t\t\t_arrRes.push( new Move( _fld, fldTo, Piece.ROOK ) );\r\n\t\t\t\t\t_arrRes.push( new Move( _fld, fldTo, Piece.BISHOP ) );\r\n\t\t\t\t\t_arrRes.push( new Move( _fld, fldTo, Piece.KNIGHT ) );\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tvar mvKill = new Move( _fld, fldTo );\r\n\t\t\t\t\t_arrRes.push( mvKill );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//ep?\r\n\t\t\tif ( pcVct === Piece.NONE && cTo === this.ep )\r\n\t\t\t{\r\n\t\t\t\tvar rEPFrom = sdMe === Side.WHITE ? Square.R_5 : Square.R_4;\r\n\t\t\t\tvar fldEPVct = Square.I( cTo, rEPFrom );\r\n\t\t\t\tvar pcEPVct = this.board[ fldEPVct ];\r\n\r\n\t\t\t\tif ( rFrom === rEPFrom && pcEPVct === Piece.changeSide( _pc ) )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar mvEPKill = new Move( _fld, fldTo );\r\n\r\n\t\t\t\t\t_arrRes.push( mvEPKill );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tgenerate( _pc, _fld, _arrMvs, _long, _arrRes )\r\n\t{\r\n\t\tvar sdMe = Piece.side( _pc );\r\n\t\tvar rFrom = Square.R( _fld );\r\n\t\tvar cFrom = Square.C( _fld );\r\n\r\n\t\tfor ( var inx = 0, len = _arrMvs.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar dshift = _arrMvs[ inx ];\r\n\r\n\t\t\tvar cTo = cFrom;\r\n\t\t\tvar rTo = rFrom;\r\n\r\n\t\t\tvar contin = _long;\r\n\r\n\t\t\tdo\r\n\t\t\t{\r\n\t\t\t\tcTo += dshift[ 0 ];\r\n\t\t\t\trTo += dshift[ 1 ];\r\n\r\n\t\t\t\tif ( !Square.isLegal( cTo, rTo ) )\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tvar to = Square.I( cTo, rTo );\r\n\r\n\t\t\t\tvar pcVct = this.board[ to ];\r\n\t\t\t\tif ( pcVct !== Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( Piece.side( pcVct ) === sdMe )\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tcontin = false;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tvar mvNew = new Move( _fld, to );\r\n\r\n\t\t\t\t_arrRes.push( mvNew );\r\n\t\t\t} while ( contin );\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tfilterLegals( _arrMvs )\r\n\t{\r\n\t\tvar pos = this;\r\n\t\treturn _arrMvs.filter\r\n\t\t\t(\r\n\t\t\t\tfunction( _mv )\r\n\t\t\t\t{\r\n\t\t\t\t\treturn !pos.isSuicideMove( _mv );\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t};\r\n\r\n\tisProm( _from, _to )\r\n\t{\r\n\t\tvar sd = this.sd;\r\n\t\tvar pcMvd = this.board[ _from ];\r\n\t\treturn pcMvd === Piece.make( Piece.PAWN, sd ) &&\r\n\t\t\tSquare.R( _to ) === Square.getPromRow( sd );\r\n\t};\r\n\r\n\tisLegalFromTo( _from, _to )\r\n\t{\r\n\t\tvar mvDummy = new Move( _from, _to );\r\n\r\n\t\tif ( this.isProm( _from, _to ) )\r\n\t\t{\r\n\t\t\t//var sd = this.sd;\r\n\t\t\tmvDummy.prom = Piece.QUEEN; //Piece.make( Piece.QUEEN, sd );\r\n\t\t}\r\n\r\n\t\treturn this.isLegalMove( mvDummy );\r\n\t};\r\n\r\n\tisLegalMove( _mv )\r\n\t{\r\n\t\treturn ( _mv != null ) &&\r\n\t\t\t( _mv.isNullMove() || this.isSemiLegalMove( _mv ) ) &&\r\n\t\t\t!this.isSuicideMove( _mv );\r\n\t};\r\n\r\n\tisSemiLegalMove( _mv )\r\n\t{\r\n\t\t//Fast checks...\r\n\t\tif ( _mv === null )\r\n\t\t\treturn false;\r\n\r\n\t\tvar from = _mv.from;\r\n\t\tvar to = _mv.to;\r\n\r\n\t\tif ( from === to )\r\n\t\t\treturn false;\r\n\r\n\t\tvar pcMvd = this.board[ from ];\r\n\r\n\t\tif ( pcMvd === Piece.NONE )\r\n\t\t\treturn false;\r\n\t\tif ( Piece.side( pcMvd ) !== this.sd )\r\n\t\t\treturn false;\r\n\t\tvar pcVct = this.board[ to ];\r\n\r\n\t\tif ( pcVct !== Piece.NONE &&\r\n\t\t\tPiece.side( pcMvd ) === Piece.side( pcVct ) )\r\n\t\t\treturn false;\r\n\r\n\t\t//Nun die Muhesame...\r\n\t\tvar arrSemiLegals = this.generateSemiLegalsFrom( from, pcMvd );\r\n\r\n\t\treturn arrSemiLegals.some\r\n\t\t\t(\r\n\t\t\t\t_mv.equals.bind( _mv )\r\n\t\t\t);\r\n\r\n\t};\r\n\r\n\t// NH2021I Checks if the move would move the king to an attacked square\r\n\t// NH2021I Do we really need to call makeMove every time here? This happens a lot!\r\n\t// NH2021I TODO Maybe check if the king is to be moved. Only then makeMove. Or does this happen already?\r\n\tisSuicideMove( _mv )\r\n\t{\r\n\t\tvar undo = this.makeMove( _mv );\r\n\t\tvar res = this.isSuicidePos();\r\n\t\tthis.unmakeMove( _mv, undo );\r\n\t\treturn res;\r\n\t};\r\n\r\n\r\n\tinitFields()\r\n\t{\r\n\t\tthis.board = new Array( Board.SIZE );\r\n\r\n\t\t// NH2020 Added this field to maintain pieces in animations\r\n\t\tthis.uniquePiecePositions = new Array(Board.SIZE);\r\n\r\n\t\t// console.log(\"Init Position\");\r\n\r\n\t\tthis.initEmpty();\r\n\t};\r\n\r\n\tinitEmpty()\r\n\t{\r\n\t\tfor ( var i = 0; i < 64; i++ )\r\n\t\t{\r\n\t\t\tthis.board[ i ] = Piece.NONE;\r\n\t\t}\r\n\t\tthis.sd = Side.WHITE;\r\n\t\tthis.cr = 0;\r\n\t\tthis.ep = Position.NOEP;\r\n\t\tthis.lastKillOrPawn = 0;\r\n\t\tthis.numPly = 0;\r\n\t};\r\n\r\n\ttoNormalizedFEN()\r\n\t{\r\n\t\tvar fen = \"\";\r\n\t\tfor ( var r = Square.R_8; r >= Square.R_1; --r )\r\n\t\t{\r\n\t\t\tvar cntEmpty = 0;\r\n\t\t\tfor ( var c = Square.C_A; c <= Square.C_H; ++c )\r\n\t\t\t{\r\n\t\t\t\tvar inx = Square.I( c, r );\r\n\t\t\t\tvar pc = this.board[ inx ];\r\n\r\n\t\t\t\tif ( pc === Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\t++cntEmpty;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( cntEmpty > 0 )\r\n\t\t\t\t\tfen += cntEmpty;\r\n\r\n\t\t\t\tcntEmpty = 0;\r\n\r\n\t\t\t\tfen += Piece.toString( pc );\r\n\t\t\t}\r\n\t\t\tif ( cntEmpty > 0 )\r\n\t\t\t\tfen += cntEmpty;\r\n\r\n\t\t\tif ( r > Square.R_1 )\r\n\t\t\t\tfen += \"/\";\r\n\t\t}\r\n\r\n\r\n\t\t//Side To Move\r\n\t\tfen += \" \";\r\n\t\tfen += Side.toString( this.sd );\r\n\t\t//Castle Rights\r\n\t\tfen += \" \";\r\n\t\tfen += CastleRights.toString( this.cr );\r\n\t\t//EP\r\n\t\tfen += \" \";\r\n\t\tif ( this.ep === Position.NOEP )\r\n\t\t\tfen += \"-\";\r\n\t\telse\r\n\t\t{\r\n\t\t\tvar fldEP = this.getEPField();\r\n\t\t\tfen += Square.toString( fldEP );\r\n\t\t}\r\n\t\treturn fen;\r\n\r\n\t};\r\n\r\n\ttoFEN()\r\n\t{\r\n\t\tvar fen = this.toNormalizedFEN();\r\n\t\tfen += \" 0 \";\r\n\r\n\t\tvar mvNum = this.getMoveNum();\r\n\t\tfen += mvNum;\r\n\r\n\t\treturn fen;\r\n\t};\r\n\r\n\ttoString = this.toFEN;\r\n\r\n\ttoDescriptiveString()\r\n\t{\r\n\t\tvar cPieceNames = [ \" \", \"K\", \"Q\", \"N\", \"B\", \"R\", \"P\" ];\r\n\t\tvar diaString = \"\";\r\n\t\tvar thePieces = [], ptrPieces = [];\r\n\r\n\t\tfor ( var i = 0; i < 16; i++ )\r\n\t\t{\r\n\t\t\tthePieces.push( [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] );\r\n\t\t\tptrPieces[ i ] = 0;\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i < 64; i++ )\r\n\t\t{\r\n\t\t\tvar p = this.board[ i ] & 15;\r\n\t\t\tif ( p && ptrPieces[ p ] < 16 )\r\n\t\t\t\tthePieces[ p ][ ptrPieces[ p ]++ ] = i;\r\n\t\t}\r\n\t\tdiaString += 'w';\r\n\t\tfor ( let i = 1; i < 7; i++ )\r\n\t\t{\r\n\t\t\tif ( ptrPieces[ i ] > 0 )\r\n\t\t\t{\r\n\t\t\t\tif ( i > 1 )\r\n\t\t\t\t\tdiaString += ',';\r\n\t\t\t\tvar cPiece = cPieceNames[ i ];\r\n\t\t\t\tdiaString += String( cPiece );\r\n\t\t\t\tfor ( var ix = 0; ix < ptrPieces[ i ]; ix++ )\r\n\t\t\t\t{\r\n\t\t\t\t\tlet p = thePieces[ i ][ ix ];\r\n\t\t\t\t\t//diaString += char( 'a' + ( p >> 3 ) );\r\n\t\t\t\t\t//diaString += char( '1' + ( p & 7 ) );\r\n\t\t\t\t\tdiaString += Square.toString( p );\r\n\t\t\t\t\tif ( ix < ptrPieces[ i ] - 1 )\r\n\t\t\t\t\t\tdiaString += ',';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tdiaString += \"/b\";\r\n\t\tfor ( let i = 9; i < 15; i++ )\r\n\t\t{\r\n\t\t\tif ( ptrPieces[ i ] > 0 )\r\n\t\t\t{\r\n\t\t\t\tif ( i > 9 )\r\n\t\t\t\t\tdiaString += ',';\r\n\t\t\t\tlet cPiece = cPieceNames[ i & 7 ];\r\n\t\t\t\tdiaString += String( cPiece );\r\n\t\t\t\tfor ( let ix = 0; ix < ptrPieces[ i ]; ix++ )\r\n\t\t\t\t{\r\n\t\t\t\t\tlet p = thePieces[ i ][ ix ];\r\n\t\t\t\t\tdiaString += Square.toString( p );\r\n\t\t\t\t\t//diaString += char( 'a' + ( p >> 3 ) );\r\n\t\t\t\t\t//diaString += char( '1' + ( p & 7 ) );\r\n\t\t\t\t\tif ( ix < ptrPieces[ i ] - 1 )\r\n\t\t\t\t\t\tdiaString += ',';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn diaString;\r\n\t};\r\n\r\n\tgetPiece( _inx )\r\n\t{\r\n\t\treturn this.board[ _inx ];\r\n\t};\r\n\r\n\tgetPieces()\r\n\t{\r\n\t\tvar arrRes = [];\r\n\t\tfor ( var inx = 0; inx < this.board.length; ++inx )\r\n\t\t{\r\n\t\t\tvar pc = this.board[ inx ];\r\n\t\t\tif ( pc === Piece.NONE )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar newPiece = new PieceData( pc, inx );\r\n\r\n\t\t\tarrRes.push( newPiece );\r\n\t\t}\r\n\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\tcountPieces( p )\r\n\t{\r\n\t\tvar cnt = 0;\r\n\t\tfor ( var inx = 0; inx < this.board.length; ++inx )\r\n\t\t{\r\n\t\t\tif ( this.board[ inx ] === p )\r\n\t\t\t\tcnt++;\r\n\t\t}\r\n\t\treturn cnt;\r\n\t}\r\n\r\n\tcountAllPieces( black )\r\n\t{\r\n\t\tvar cnt = 0;\r\n\t\tfor ( var inx = 0; inx < this.board.length; ++inx )\r\n\t\t{\r\n\t\t\tif ( this.board[ inx ] )\r\n\t\t\t{\r\n\t\t\t\tif ( ( ( this.board[ inx ] & Piece.SIDE_MASK ) !== 0 ) === black )\r\n\t\t\t\t\tcnt++;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn cnt;\r\n\t}\r\n\r\n\tgetSideToMove()\r\n\t{\r\n\t\treturn this.sd;\r\n\t};\r\n\r\n\tgetBoard()\r\n\t{\r\n\t\treturn this.board;\r\n\t}\r\n\r\n\tisWTM()\r\n\t{\r\n\t\treturn this.sd === Side.WHITE;\r\n\t};\r\n\r\n\tisBTM()\r\n\t{\r\n\t\treturn this.sd === Side.BLACK;\r\n\t};\r\n\r\n\tsetBTM( b )\r\n\t{\r\n\t\tthis.sd = b ? Side.BLACK : Side.WHITE;\r\n\t};\r\n\r\n\tgetBTM = this.isBTM;\r\n\r\n\tsetCastleRights( cBits )\r\n\t{\r\n\t\tthis.cr = cBits;\r\n\t};\r\n\r\n\tgetEPFile()\r\n\t{\r\n\t\tif ( this.ep === Position.NOEP )\r\n\t\t\treturn -1;\r\n\t\treturn this.ep % 8;\r\n\t}\r\n\r\n\tgetCPPEPFile()\r\n\t{\r\n\t\tif ( this.ep === Position.NOEP )\r\n\t\t\treturn 0;\r\n\t\treturn ( this.ep % 8 ) + 1;\r\n\t}\r\n\r\n\tsetCPPEPFile( cppep )\t/* 1..8 */\r\n\t{\r\n\t\tif ( cppep <= 0 )\r\n\t\t\tthis.ep = Position.NOEP;\r\n\t\telse\r\n\t\t\tthis.ep = cppep - 1;\r\n\t}\r\n\r\n\tgetEPField()\r\n\t{\r\n\t\tif ( this.ep === Position.NOEP )\r\n\t\t\treturn -1;\r\n\t\tvar rEP = this.sd === Side.WHITE ? Square.R_6 : Square.R_3;\r\n\t\treturn Square.I( this.ep, rEP );\r\n\t};\r\n\r\n\tgetEPCol()\r\n\t{\r\n\t\treturn this.ep;\r\n\t};\r\n\r\n\tgetEPVictimField()\r\n\t{\r\n\t\tif ( this.ep === Position.NOEP )\r\n\t\t\treturn -1;\r\n\t\tvar rEP = this.sd === Side.WHITE ? Square.R_5 : Square.R_4;\r\n\t\treturn Square.I( this.ep, rEP );\r\n\t};\r\n\r\n\tgetCastleRights()\r\n\t{\r\n\t\treturn this.cr;\r\n\t};\r\n\r\n\tgetPossibleCastleRights()\r\n\t{\r\n\t\tvar cr = 0;\r\n\t\tif ( this.board[ Square.E1 ] === Piece.W_KING )\r\n\t\t{\r\n\t\t\tif ( this.board[ Square.A1 ] === Piece.W_ROOK )\r\n\t\t\t\tcr |= CastleRights.W_000;\r\n\r\n\t\t\tif ( this.board[ Square.H1 ] === Piece.W_ROOK )\r\n\t\t\t\tcr |= CastleRights.W_00;\r\n\t\t}\r\n\t\tif ( this.board[ Square.E8 ] === Piece.B_KING )\r\n\t\t{\r\n\t\t\tif ( this.board[ Square.A8 ] === Piece.B_ROOK )\r\n\t\t\t\tcr |= CastleRights.B_000;\r\n\r\n\t\t\tif ( this.board[ Square.H8 ] === Piece.B_ROOK )\r\n\t\t\t\tcr |= CastleRights.B_00;\r\n\t\t}\r\n\t\treturn cr;\r\n\t};\r\n\r\n\tgetPossibleEP()\r\n\t{\r\n\t\tvar arrRes = [];\r\n\t\tvar r = this.sd === Side.WHITE ? Square.R_5 : Square.R_4;\r\n\r\n\t\tvar pcKillPawn = Piece.make( Piece.PAWN, this.sd );\r\n\t\tvar pcEPPawn = Piece.changeSide( pcKillPawn );\r\n\r\n\t\tfor ( var c = Square.C_A; c <= Square.C_H; ++c )\r\n\t\t{\r\n\t\t\tvar fld = Square.I( c, r );\r\n\t\t\tif ( this.board[ fld ] !== pcEPPawn )\r\n\t\t\t\tcontinue;\r\n\t\t\tif ( ( c > Square.C_A && this.board[ Square.I( c - 1, r ) ] === pcKillPawn )\r\n\t\t\t\t||( c < Square.C_H && this.board[ Square.I( c + 1, r ) ] === pcKillPawn ))\r\n\t\t\t\tarrRes.push( c );\r\n\r\n\r\n\t\t}\r\n\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\tisAttacked( _fld, _sd )\r\n\t{\r\n\t\tvar arrAttacks = this.getAttacksTo( _fld, _sd );\r\n\t\treturn arrAttacks.length > 0;\r\n\t};\r\n\r\n\tgetAttacksTo( _fld, _sd )\r\n\t{\r\n\t\tvar arrRes = [];\r\n\t\tthis._getAttacksTo( _fld, _sd, arrRes );\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\t_getAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getPawnAttacksTo( _fld, _sd, _arrRes );\r\n\t\tthis.getKnightAttacksTo( _fld, _sd, _arrRes );\r\n\t\tthis.getKingAttacksTo( _fld, _sd, _arrRes );\r\n\t\tthis.getRangedAttacksTo( _fld, _sd, _arrRes );\r\n\t};\r\n\r\n\r\n\tstatic getIsPiece( _pc1, _pc2 )\r\n\t{\r\n\t\treturn function( _pc ) { return ( _pc === _pc1 ) || (_pc2 && _pc === _pc2 ); }\r\n\t}\r\n\r\n\tgetKnightAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrKnightMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.KNIGHT, _sd ) ),\r\n\t\t\tfalse,\r\n\t\t\t_arrRes );\r\n\t};\r\n\r\n\tgetKingAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrKingMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.KING, _sd ) ),\r\n\t\t\tfalse,\r\n\t\t\t_arrRes );\r\n\t};\r\n\r\n\tgetQueenAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrBishopMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.QUEEN, _sd ) ),\r\n\t\t\ttrue,\r\n\t\t\t_arrRes );\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrRookMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.QUEEN, _sd ) ),\r\n\t\t\ttrue,\r\n\t\t\t_arrRes );\r\n\t};\r\n\r\n\t//Ruhige Bauernzüge...\r\n\tgetPawnMovesTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tif ( this.board[ _fld ] !== Piece.NONE )\r\n\t\t\treturn;\r\n\r\n\t\tvar rTo = Square.R( _fld );\r\n\t\tvar cTo = Square.C( _fld );\r\n\r\n\t\tif ( _sd === Side.WHITE &&\r\n\t\t\t( rTo === Square.R_1 ||\r\n\t\t\t\trTo === Square.R_2 ) )\r\n\t\t\treturn;\r\n\t\tif ( _sd === Side.BLACK &&\r\n\t\t\t( rTo === Square.R_8 ||\r\n\t\t\t\trTo === Square.R_7 ) )\r\n\t\t\treturn;\r\n\r\n\t\tvar rDir = _sd === Side.WHITE ? -1 : +1;\r\n\r\n\t\tvar pc = Piece.make( Piece.PAWN, _sd );\r\n\t\tvar rDbl = _sd === Side.WHITE ? Square.R_4 : Square.R_5;\r\n\r\n\t\tvar fldOne = Square.I( cTo, rTo + rDir );\r\n\r\n\t\tif ( this.board[ fldOne ] === pc )\r\n\t\t{\r\n\t\t\t_arrRes.push( fldOne );\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse if ( rTo === rDbl && this.board[ fldOne ] === Piece.NONE )\r\n\t\t{\r\n\t\t\tvar fldDbl = Square.I( cTo, rTo + 2 * rDir );\r\n\t\t\tif ( this.board[ fldDbl ] === pc )\r\n\t\t\t{\r\n\t\t\t\t_arrRes.push( fldDbl );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tgetBishopAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrBishopMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.BISHOP, _sd ) ),\r\n\t\t\ttrue,\r\n\t\t\t_arrRes );\r\n\t};\r\n\r\n\tgetRookAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrRookMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.ROOK, _sd ) ),\r\n\t\t\ttrue,\r\n\t\t\t_arrRes );\r\n\t};\r\n\r\n\tgetRangedAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrRookMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.ROOK, _sd ), Piece.make( Piece.QUEEN, _sd ) ),\r\n\t\t\ttrue,\r\n\t\t\t_arrRes );\r\n\r\n\t\tthis.getAttacks( _fld, _sd, Position.g_arrBishopMvs,\r\n\t\t\tPosition.getIsPiece( Piece.make( Piece.BISHOP, _sd ), Piece.make( Piece.QUEEN, _sd ) ),\r\n\t\t\ttrue,\r\n\t\t\t_arrRes );\r\n\t};\r\n\r\n\r\n\r\n\tstatic g_arrWhPawnAttks =\r\n\t\t[\r\n\t\t\t//dc,dr\r\n\t\t\t[ 1, 1 ],\r\n\t\t\t[ -1, 1 ]\r\n\t\t];\r\n\r\n\tstatic g_arrBlPawnAttks =\r\n\t\t[\r\n\t\t\t//dc,dr\r\n\t\t\t[ 1, -1 ],\r\n\t\t\t[ -1, -1 ]\r\n\t\t];\r\n\r\n\r\n\r\n\tgetPawnAttacksTo( _fld, _sd, _arrRes )\r\n\t{\r\n\t\tif ( _sd === Side.WHITE )\r\n\t\t\tthis.getAttacks( _fld, _sd, Position.g_arrWhPawnAttks,\r\n\t\t\t\tPosition.getIsPiece( Piece.W_PAWN ),\r\n\t\t\t\tfalse,\r\n\t\t\t\t_arrRes );\r\n\t\telse\r\n\t\t\tthis.getAttacks( _fld, _sd, Position.g_arrBlPawnAttks,\r\n\t\t\t\tPosition.getIsPiece( Piece.B_PAWN ),\r\n\t\t\t\tfalse,\r\n\t\t\t\t_arrRes );\r\n\t};\r\n\r\n\tgetAttacks( _fld, _sd, _arrMvs, _func, _long, _arrRes )\r\n\t{\r\n\t\tvar rTo = Square.R( _fld );\r\n\t\tvar cTo = Square.C( _fld );\r\n\r\n\t\tfor ( var inx = 0, len = _arrMvs.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar dshift = _arrMvs[ inx ];\r\n\r\n\t\t\tvar cFrom = cTo;\r\n\t\t\tvar rFrom = rTo;\r\n\r\n\t\t\tvar contin = _long;\r\n\r\n\t\t\tdo\r\n\t\t\t{\r\n\t\t\t\tcFrom -= dshift[ 0 ];\r\n\t\t\t\trFrom -= dshift[ 1 ];\r\n\r\n\t\t\t\tif ( !Square.isLegal( cFrom, rFrom ) )\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tvar from = Square.I( cFrom, rFrom );\r\n\r\n\t\t\t\tvar pcAttkr = this.board[ from ];\r\n\r\n\t\t\t\tif ( pcAttkr !== Piece.NONE )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( Piece.side( pcAttkr ) !== _sd )\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tcontin = false;\r\n\r\n\t\t\t\t\tif ( _func( pcAttkr ) )\r\n\t\t\t\t\t\t_arrRes.push( from );\r\n\t\t\t\t}\r\n\t\t\t} while ( contin );\r\n\t\t}\r\n\t};\r\n\r\n\tgetKingsPos( _sd )\r\n\t{\r\n\t\tvar pcKing = Piece.make( Piece.KING, _sd );\r\n\t\treturn this.board.indexOf( pcKing );\r\n\t};\r\n\r\n\tgetPiecePos( piece, _sd )\r\n\t{\r\n\t\tvar pcKing = Piece.make( piece, _sd );\r\n\t\treturn this.board.indexOf( pcKing );\r\n\t};\r\n\r\n\tisCheck()\r\n\t{\r\n\t\tvar fldTo = this.getKingsPos( this.sd );\r\n\t\tvar sdChecker = Side.other( this.sd );\r\n\r\n\t\treturn this.isAttacked( fldTo, sdChecker );\r\n\t};\r\n\r\n\t// NH2021I Check if my king would be attacked after I made a move\r\n\tisSuicidePos()\r\n\t{\r\n\t\tvar sdVct = Side.other( this.sd );\r\n\t\tvar fldTo = this.getKingsPos( sdVct );\r\n\r\n\t\treturn this.isAttacked( fldTo, this.sd );\r\n\t};\r\n\r\n\tisMate()\r\n\t{\r\n\t\tif ( !this.isCheck() )\r\n\t\t\treturn false;\r\n\t\treturn !this.hasLegals();\r\n\t};\r\n\r\n\tisStaleMate()\r\n\t{\r\n\t\tif ( this.isCheck() )\r\n\t\t\treturn false;\r\n\t\treturn !this.hasLegals();\r\n\t};\r\n\r\n\tswapSide() \r\n\t{\r\n\t\tif ( !this.isCheck() && !this.isMate() && !this.isStaleMate() )\r\n\t\t{\r\n\t\t\tthis.makeMove( new Move() );\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\thasLegals()\r\n\t{\r\n\t\tvar arrLegals = this.generateLegals();\r\n\t\treturn arrLegals.length > 0;\r\n\t};\r\n\r\n\tgetVictim( _mv )\r\n\t{\r\n\t\tvar pcVct = this.board[ _mv.to ];\r\n\t\tif ( pcVct !== Piece.NONE )\r\n\t\t\treturn pcVct;\r\n\r\n\t\tvar pcMvd = this.board[ _mv.from ];\r\n\r\n\t\tif ( Piece.nominal( pcMvd ) === Piece.PAWN\r\n\t\t\t&& Square.C( _mv.from ) !== Square.C( _mv.to ) )\r\n\t\t{\r\n\t\t\tvar fldEP = Square.I( Square.C( _mv.to ), Square.R( _mv.from ) );\r\n\t\t\treturn this.board[ fldEP ];\r\n\t\t}\r\n\t\treturn Piece.NONE;\r\n\t}\r\n\r\n\tisTake( _mv )\r\n\t{\r\n\t\treturn this.getVictim( _mv ) !== Piece.NONE;\r\n\t};\r\n\r\n\tcalcNeed( _mv )\r\n\t{\r\n\t\tvar from = _mv.from;\r\n\t\tvar pcMvd = this.board[ from ];\r\n\r\n\t\tvar res = { needCol: false, needRow: false };\r\n\r\n\t\tvar pcNom = Piece.nominal( pcMvd );\r\n\r\n\t\tif ( pcNom === Piece.PAWN ||\r\n\t\t\tpcNom === Piece.KING )\r\n\t\t\treturn res;\r\n\r\n\t\t//Vielleicht ist es der einzige seiner Gattung\r\n\r\n\t\tvar arrCoCandidates = [];\r\n\r\n\t\tfor ( var inx = 0; inx < Board.SIZE; ++inx )\r\n\t\t{\r\n\t\t\tvar pc = this.board[ inx ];\r\n\t\t\tif ( pc === pcMvd && inx !== from )\r\n\t\t\t\tarrCoCandidates.push( inx );\r\n\t\t}\r\n\r\n\t\tif ( !arrCoCandidates.length )\r\n\t\t\treturn res;\r\n\r\n\t\tif ( pcNom === Piece.BISHOP )\r\n\t\t{\r\n\t\t\tvar unique = arrCoCandidates.every\r\n\t\t\t\t(\r\n\t\t\t\t\tfunction( _fld )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn Square.isDark( _fld ) !== Square.isDark( from );\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\tif ( unique )\r\n\t\t\t\treturn res;\r\n\t\t}\r\n\r\n\t\tvar uniqueCol = true;\r\n\t\tvar uniqueRow = true;\r\n\t\tvar cocand = false;\r\n\t\t//Nun ja...\r\n\t\tfor ( var inxCand = 0, len = arrCoCandidates.length; inxCand < len; ++inxCand )\r\n\t\t{\r\n\t\t\tvar cofrom = arrCoCandidates[ inxCand ];\r\n\t\t\tvar arrMvs = this.generateSemiLegalsFrom( cofrom, pcMvd );\r\n\r\n\t\t\tif ( arrMvs.some( function( _mvElem ) { return _mvElem.to === _mv.to; } ) )\r\n\t\t\t{\r\n\t\t\t\tcocand = true;\r\n\r\n\t\t\t\tuniqueCol &= Square.C( cofrom ) !== Square.C( from );\r\n\t\t\t\tuniqueRow &= Square.R( cofrom ) !== Square.R( from );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( cocand )\r\n\t\t{\r\n\t\t\tres.needCol = uniqueCol || !uniqueRow;\r\n\t\t\tres.needRow = !uniqueCol;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tpreCalcCtx( _mv )\r\n\t{\r\n\t\tthis.preSetMinCtx( _mv );\r\n\r\n\t\tif ( _mv.isNullMove() )\r\n\t\t\treturn;\r\n\r\n\t\tvar need = this.calcNeed( _mv );\r\n\r\n\t\t_mv.setNeedCol( need.needCol );\r\n\t\t_mv.setNeedRow( need.needRow );\r\n\r\n\t};\r\n\r\n\t//HACK, wenn needCol & needRow garantiert nicht benötigt werden...\r\n\tpreSetMinCtx( _mv )\r\n\t{\r\n\t\tif ( _mv.isNullMove() )\r\n\t\t{\r\n\t\t\t_mv.setMoved( Piece.make( Piece.PAWN, this.sd ) );\r\n\t\t\t_mv.setVictim( Piece.NONE );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\t_mv.setMoved( this.board[ _mv.from ] );\r\n\t\t\tvar pcVct = this.getVictim( _mv );\r\n\t\t\t_mv.setVictim( pcVct );\r\n\t\t\t_mv.setIsCastling();\r\n\t\t}\r\n\t\t// \"#IFDEBUG\"\r\n\t\t// _mv.debug = Square.toString( _mv.from ) + \"-\" + Square.toString( _mv.to );\r\n\t\t// \"#ENDIF\"\r\n\t};\r\n\r\n\tpostCalcCtx( _mv, _canBeLast )\r\n\t{\r\n\t\tif ( _mv.isNullMove() )\r\n\t\t{\r\n\t\t\t_mv.setCheck( false );\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar check = this.isCheck();\r\n\t\t_mv.setCheck( check );\r\n\t\tif ( check && _canBeLast )\r\n\t\t\t_mv.setMate( !this.hasLegals() );\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\t// NH2021 TODO: Create unique piece IDs on position Read.\r\n\t\tconsole.log(\"Read Position\");\r\n\r\n\t\tthis.board = _buf.readByteArray( Board.SIZE );\r\n\r\n\t\tthis.sd = _buf.readInt();\r\n\t\tthis.ep = _buf.readByte() - 1;\r\n\t\tthis.cr = _buf.readByte();\r\n\r\n\t\tthis.numPly = 0;\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByteArray( this.board, Board.SIZE );\r\n\r\n\t\t_buf.writeInt( this.sd );\r\n\t\t_buf.writeByte( this.ep + 1 );\r\n\t\t_buf.writeByte( this.cr );\r\n\t\t//_buf.writeShort(this.numPly);\r\n\t};\r\n\r\n\tcopyTo( newPosition )\r\n\t{\r\n\t\tnewPosition.sd = this.sd;\r\n\t\tnewPosition.ep = this.ep;\r\n\t\tnewPosition.cr = this.cr;\r\n\t\tfor ( var n = 0; n < 64; n++ )\r\n\t\t\tnewPosition.board[ n ] = this.board[ n ];\r\n\t};\r\n\r\n\tstatic packBoard( _board )\r\n\t{\r\n\t\tvar arrPacked = new Array( 32 );\r\n\t\tfor ( var inx = 0, len = arrPacked.length; inx < len; ++inx )\r\n\t\t\tarrPacked[ inx ] = _board[ 2 * inx ] | ( _board[ 2 * inx + 1 ] << 4 );\r\n\t\treturn arrPacked;\r\n\t};\r\n\r\n\tstatic unpackBoard( _arrPacked )\r\n\t{\r\n\t\tvar board = new Array( _arrPacked.length * 2 );\r\n\t\tfor ( var inx = 0, len = _arrPacked.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tboard[ 2 * inx ] = _arrPacked[ inx ] & 0xF;\r\n\t\t\tboard[ 2 * inx + 1 ] = _arrPacked[ inx ] >> 4;\r\n\t\t}\r\n\t\treturn board;\r\n\t};\r\n\r\n\tfillSquaresOfSide( squareSet, side )\r\n\t{\r\n\t\tfor ( var s = 0; s < this.board.length; s++ )\r\n\t\t{\r\n\t\t\tif ( Piece.side( this.board[ s ] ) === side )\r\n\t\t\t{\r\n\t\t\t\tsquareSet[ s ] = this.board[ s ];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tsetEquals( other )\r\n\t{\r\n\t\tfor ( var s = 0; s < this.board.length; s++ )\r\n\t\t{\r\n\t\t\tif ( this.board[ s ] !== other.board[ s ] )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ( this.sd !== other.sd )\r\n\t\t\treturn false;\r\n\t\tif ( this.ep !== other.ep )\r\n\t\t\treturn false;\r\n\t\tif ( this.cr !== other.cr )\r\n\t\t\treturn false;\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tsetGreater( other )\r\n\t{\r\n\t\tfor ( var s = 0; s < this.board.length; s++ )\r\n\t\t{\r\n\t\t\tif ( this.board[ s ] !== other.board[ s ] )\r\n\t\t\t\treturn this.board[ s ] > other.board[ s ];\r\n\t\t}\r\n\r\n\t\tif ( this.sd !== other.sd )\r\n\t\t\treturn this.sd > other.sd;\r\n\t\tif ( this.ep !== other.ep )\r\n\t\t\treturn this.ep > other.ep\r\n\t\tif ( this.cr !== other.cr )\r\n\t\t\treturn this.cr > other.cr;\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tdump( fnLog )\r\n\t{\r\n\t\tvar b = new Board();\r\n\t\tb.copyFrom( this.board );\r\n\t\tb.toDebugStrs().forEach( fnLog !== undefined ? fnLog : function( sLine ) \r\n\t\t{ console.log( sLine ); \r\n\t\t} );\r\n\t\tvar flags = \"s=\" + this.sd + \", ep=\" + this.ep + \", cr=\" + this.cr;\r\n\t\tif ( fnLog !== undefined )\r\n\t\t\tfnLog( flags );\r\n\t\telse\r\n\t\t\tconsole.log( flags );\r\n\t};\r\n\r\n\tisLegal()\r\n\t{\r\n\t\t//SOME TEST FOR LEGAL POS...\r\n\t\tvar arrPieces = this.getPieces();\r\n\t\tif ( arrPieces.length > 32 )\r\n\t\t\treturn false;\r\n\t\tif ( arrPieces.length < 2 )\r\n\t\t\treturn false;\r\n\r\n\t\tvar arrCnts = new Array( Piece.B_PAWN + 1 );\r\n\t\tfor ( let i = 0; i < arrCnts.length; ++i )\r\n\t\t\tarrCnts[ i ] = 0;\r\n\r\n\t\tfor ( let i = 0; i < arrPieces.length; ++i )\r\n\t\t{\r\n\t\t\tvar pcd = arrPieces[ i ];\r\n\t\t\t++arrCnts[ pcd.piece ];\r\n\r\n\t\t\tif ( Piece.nominal( pcd.piece ) === Piece.PAWN )\r\n\t\t\t{\r\n\t\t\t\tvar r = Square.R( pcd.field );\r\n\t\t\t\tif ( r === Square.R_1 || r === Square.R_8 )\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( arrCnts[ Piece.W_KING ] !== 1 )\r\n\t\t\treturn false;\r\n\t\tif ( arrCnts[ Piece.B_KING ] !== 1 )\r\n\t\t\treturn false;\r\n\r\n\t\tif ( arrCnts[ Piece.W_PAWN ] > 8 )\r\n\t\t\treturn false;\r\n\t\tif ( arrCnts[ Piece.B_PAWN ] > 8 )\r\n\t\t\treturn false;\r\n\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tisBoardEqual( board )\r\n\t{\r\n\t\tif ( board.length !== this.board.length )\r\n\t\t\treturn false;\r\n\r\n\t\tfor ( var i = 0; i < this.board.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this.board[ i ] !== board[ i ] )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tfindSquaresOfPiece( piece )\r\n\t{\r\n\t\tvar sqs = [];\r\n\t\tfor ( var i = 0; i < this.board.length; i++ )\r\n\t\t{\r\n\t\t\tif ( this.board[ i ] === piece )\r\n\t\t\t\tsqs.push( i );\r\n\t\t}\r\n\t\treturn sqs;\r\n\t};\r\n\r\n\tstatic fromValues( board, side, castleRights, epFile )\r\n\t{\r\n\t\tvar position = new Position();\r\n\t\tboard.copyTo( position.board );\r\n\t\tposition.sd = side;\r\n\t\tposition.setCastleRights( castleRights );\r\n\t\tposition.setCPPEPFile( epFile );\r\n\t\treturn position;\r\n\t}\r\n}\r\n\r\nexport class PieceData\r\n{\r\n\tconstructor( _pc, _fld )\r\n\t{\r\n\t\tthis.piece = _pc;\r\n\t\tthis.field = _fld;\r\n\t}\r\n\r\n\ttoString()\r\n\t{\r\n\t\tvar pcNom = Piece.nominal( this.piece );\r\n\t\treturn Piece.toString( pcNom ) + Square.toString( this.field );\r\n\t}\r\n\r\n\tequals( _other )\r\n\t{\r\n\t\treturn this.piece === _other.piece &&\r\n\t\t\tthis.field === _other.field;\r\n\t};\r\n}","// ST 2011\r\n// ES 6 MW: Feb 28, 2020\r\n\r\nimport { Side, Piece, Square } from \"common/Chess/Logic/Chess\";\r\nimport { Position } from \"common/Chess/Logic/Position\";\r\n// import { Log } from \"common/Tools/Log\";\r\n\r\nexport var InvariantLocalization = {\r\n\tarrStrPieces: [],\r\n\r\n\tstrTakes: \"x\",\r\n\tstrCheck: \"+\",\r\n\tstrMate: \"#\",\r\n\tstrProm: \"\",\r\n\tstr00: \"0-0\",\r\n\tstr000: \"0-0-0\",\r\n\tstrNullMove: \"--\",\r\n\tbOmitPawnTakes: false\r\n};\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_KING] =\r\nInvariantLocalization.arrStrPieces[Piece.B_KING] = \"K\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_QUEEN] =\r\nInvariantLocalization.arrStrPieces[Piece.B_QUEEN] = \"Q\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_ROOK] =\r\nInvariantLocalization.arrStrPieces[Piece.B_ROOK] = \"R\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_BISHOP] =\r\nInvariantLocalization.arrStrPieces[Piece.B_BISHOP] = \"B\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_KNIGHT] =\r\nInvariantLocalization.arrStrPieces[Piece.B_KNIGHT] = \"N\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_PAWN] =\r\nInvariantLocalization.arrStrPieces[Piece.B_PAWN] = \"\";\r\n\r\n\r\nexport class NotationGenerator\r\n{\r\n\tconstructor ( _loc )\r\n\t{\t\r\n\t\t// NH2020 \r\n\t\tthis.m_loc = _loc || InvariantLocalization;\r\n\t}\r\n\r\n\tgetLocalization()\r\n\t{\r\n\t\treturn this.m_loc;\r\n\t};\r\n\r\n\tgetLineNota( _pos, _line, _firstMove )\r\n\t{\r\n\t\tvar first = 0;\r\n\t\tif ( _firstMove )\r\n\t\t\tfirst = _firstMove;\r\n\r\n\t\tvar numMv = _pos.getMoveNum();\r\n\t\t\r\n\t\tvar strRes = \"\";\r\n\r\n\t\tfor ( var i = first; i < _line.length; ++i )\r\n\t\t{\r\n\t\t\tvar mv = _line[i];\r\n\r\n\t\t\tvar pcMvd = mv.getMoved();\r\n\t\t\tvar wtm = Piece.side( pcMvd ) === Side.WHITE;\r\n\r\n\t\t\tstrRes += this.getMoveNota( mv, wtm || !i ? numMv : 0 ) + \" \";\r\n\r\n\r\n\t\t\tif ( !wtm )\r\n\t\t\t\t++numMv;\r\n\t\t}\r\n\r\n\t\treturn strRes;\r\n\t};\r\n\r\n\tgenLineNotaFromEnd( game, nMoves )\r\n\t{\r\n\t\tvar moveNum = game.getMainLine().length;\r\n\r\n\t\tmoveNum -= nMoves;\r\n\t\tif ( moveNum < 0 )\r\n\t\t\tmoveNum = 0;\r\n\r\n\t\tvar numMv = Math.floor( moveNum / 2 ) + 1;\r\n\r\n\t\tvar res = [];\r\n\r\n\t\tvar first = Math.max( 0, game.getMoveNo() - nMoves );\r\n\r\n\t\tfor ( var i = first; i < game.getMainLine().length; ++i )\r\n\t\t{\r\n\t\t\tvar mv = game.getMainLine()[i];\r\n\r\n\t\t\tvar pcMvd = mv.getMoved();\r\n\t\t\tvar wtm = Piece.side( pcMvd ) === Side.WHITE;\r\n\r\n\t\t\tres.push( this.getMoveNota( mv, wtm || ( i === first ) ? numMv : 0 ) );\r\n\r\n\t\t\tif ( !wtm )\r\n\t\t\t\t++numMv;\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tgetNota( _mv, _kernel )\r\n\t{\r\n\r\n\r\n\t\tvar mvNum = Math.floor( _kernel.getCurPos().getMoveNum() / 2 + 1 );\r\n\t\t_kernel.getCurPos().preCalcCtx( _mv );\r\n\t\treturn this.getMoveNota( _mv, mvNum );\r\n\t};\r\n\r\n\tgetMoveNota( _mv, _numMv )\r\n\t{\r\n\t\tvar res = \"\";\r\n\t\tvar pcMvd = _mv.getMoved();\r\n\r\n\t\tif ( _numMv )\r\n\t\t{\r\n\t\t\tres = \"\" + _numMv + \".\";\r\n\t\t\tif ( Piece.side( pcMvd ) === Side.BLACK )\r\n\t\t\t{\r\n\t\t\t\tres += \"..\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( _mv.isNullMove() )\r\n\t\t{\r\n\t\t\tres += this.m_loc.strNullMove;\r\n\t\t}\r\n\t\telse if ( _mv.isShortCastling() )\r\n\t\t{\r\n\t\t\tres += this.m_loc.str00;\r\n\t\t}\r\n\t\telse if ( _mv.isLongCastling() )\r\n\t\t{\r\n\t\t\tres += this.m_loc.str000;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif ( pcMvd < 1 || pcMvd > 15 )\r\n\t\t\t{\r\n\t\t\t\tres += \"[pcMvd=\" + pcMvd + \"]\";\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tres += this.m_loc.arrStrPieces[pcMvd];\r\n\t\t\t}\r\n\r\n\t\t\tif ( _mv.isNeedCol() )\r\n\t\t\t\tres += Square.colToString( Square.C( _mv.from ) );\r\n\t\t\tif ( _mv.isNeedRow() )\r\n\t\t\t\tres += Square.rowToString( Square.R( _mv.from ) );\r\n\r\n\t\t\tif ( _mv.isTake() )\r\n\t\t\t{\r\n\t\t\t\tif ( pcMvd === Piece.W_PAWN || pcMvd === Piece.B_PAWN )\r\n\t\t\t\t{\r\n\t\t\t\t\tres += Square.colToString( Square.C( _mv.from ) );\r\n\t\t\t\t\tif ( !this.m_loc.bOmitPawnTakes )\r\n\t\t\t\t\t\tres += this.m_loc.strTakes;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tres += this.m_loc.strTakes;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tres += Square.toString( _mv.to );\r\n\r\n\t\t\tif ( _mv.prom )\r\n\t\t\t{\r\n\t\t\t\tres += this.m_loc.strProm;\r\n\t\t\t\tres += this.m_loc.arrStrPieces[_mv.prom];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( _mv.isMate() )\r\n\t\t\tres += this.m_loc.strMate;\r\n\t\telse if ( _mv.isCheck() )\r\n\t\t\tres += this.m_loc.strCheck;\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tgetStrMoveNumInLine( i, iStart, blackStarts )\r\n\t{\r\n\t\tvar moveNum = Position.plyToMvNum( i + iStart );\r\n\r\n\t\tvar str = \"\";\r\n\t\tif ( ( ( i + iStart ) & 1 ) === 0 || i === 0 )\r\n\t\t{\r\n\t\t\tstr = moveNum.toString() + \".\";\r\n\t\t\tif ( blackStarts )\r\n\t\t\t{\r\n\t\t\t\tif ( ( ( i + iStart ) & 1 ) === 0 )\r\n\t\t\t\t\tstr += \"..\";\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tif ( ( ( i + iStart ) & 1 ) !== 0 )\r\n\t\t\t\t\tstr += \"..\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn str;\r\n\t}\r\n\r\n\r\n\tstatic Localizations = \r\n\t{\r\n\t\tinvariant: InvariantLocalization\r\n\t};\r\n\t\r\n\r\n}\r\nexport var NotationLocalizations = NotationGenerator.Localizations;","// ST 2011\r\n// ES6 3.3.2020\r\n\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil';\r\nimport { StringBuilder } from \"common/Tools/Strings/StringBuilder\";\r\nimport { Piece, Side } from 'common/Chess/Logic/Chess';\r\nimport { InvariantLocalization, NotationGenerator } from 'common/Chess/Logic/Notation'\r\nimport { AnnoType } from 'common/Chess/Format/AnnoTypes';\r\n\r\n\r\nexport var PGNLocalization = ObjUtil.copyTo( InvariantLocalization,\r\n\t{ strProm: \"=\" },\r\n\ttrue );\r\n\r\n\r\nexport class PGNWriter\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.notaGen = new NotationGenerator( PGNLocalization );\r\n\t}\r\n\r\n\t// NH2020 made static\r\n\tstatic writeHeader( _sb, _game )\r\n\t{\r\n\t\tvar hdr = _game.getHeader();\r\n\t\t// console.log(\"HEADER: \" + hdr);\r\n\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Event\", hdr.getEvent() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"White\", hdr.getWhite() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Black\", hdr.getBlack() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Site\", hdr.getSite() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Round\", hdr.getRoundStr() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Annotator\", hdr.getAnnotator() );\r\n\r\n\t\t// NH2020 changed the following line\r\n\t\t// previously: PGNWriter.writeHeaderItem( _sb, \"Result\", hdr.getesult().toPGNString() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Result\", hdr.getCBResult().toPGNString() );\r\n\t\t\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"Date\", hdr.getDateStr() );\r\n\t\tif ( hdr.getEloWhite() )\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"WhiteElo\", hdr.getEloWhite() );\r\n\t\tif ( hdr.getEloBlack() )\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"BlackElo\", hdr.getEloBlack() );\r\n\t\tPGNWriter.writeHeaderItem( _sb, \"PlyCount\", _game.getMainLine().length );\r\n\r\n\t\tvar normInit = _game.isNormalInit();\r\n\t\tif ( !normInit )\r\n\t\t{\r\n\t\t\tPGNWriter.writeHeaderItem( _sb, \"Setup\", 1 );\r\n\r\n\t\t\tvar fen = _game.getStartPos().toFEN();\r\n\r\n\t\t\tPGNWriter.writeHeaderItem( _sb, \"FEN\", fen );\r\n\t\t}\r\n\r\n\t\tvar clockParams = hdr.getClockParams();\r\n\t\tif ( clockParams )\r\n\t\t{\r\n\t\t\tvar strCtrl = clockParams.getStartSecs().toString();\r\n\t\t\tif ( clockParams.incSecs )\r\n\t\t\t\tstrCtrl += \"+\" + clockParams.incSecs;\r\n\t\t\t\tPGNWriter.writeHeaderItem( _sb, \"TimeControl\", strCtrl );\r\n\t\t}\r\n\t}\r\n\r\n\twriteCmd( _sb, _name )\r\n\t{\r\n\t\t_sb.appendFormat( \"[%{0}\", _name );\r\n\t\tvar cnt = arguments.length - 2;\r\n\t\tif ( cnt )\r\n\t\t{\r\n\t\t\t_sb.append( \" \" );\r\n\t\t\tfor ( var inx = 2; inx < arguments.length; ++inx )\r\n\t\t\t{\r\n\t\t\t\tvar val = arguments[inx];\r\n\t\t\t\tif ( inx > 2 )\r\n\t\t\t\t\t_sb.append( \",\" );\r\n\r\n\t\t\t\t_sb.append( val );\r\n\t\t\t}\r\n\t\t}\r\n\t\t_sb.appendFormat( \"]\" );\r\n\t}\r\n\r\n\twriteTimeAnno( _sb, _timeAnno )\r\n\t{\r\n\t\tvar centSecs = _timeAnno.getTimeIn100th();\r\n\t\tvar h = Math.floor( centSecs / ( 3600 * 100 ) );\r\n\t\tcentSecs -= h * 3600 * 100;\r\n\t\tvar m = Math.floor( centSecs / ( 60 * 100 ) );\r\n\t\tcentSecs -= m * 60 * 100;\r\n\t\tvar secs = Math.round( centSecs / 100, 1 );\r\n\r\n\t\tPGNWriter.writeCmd( _sb, \"emt\", String.formatEx( \"{0}:{1}:{2}\", h, m, secs ) );\r\n\t};\r\n\r\n\twritePostAnno( _sb, _anno )\r\n\t{\r\n\t\tvar symbols = _anno.getItem( AnnoType.SYMBOL );\r\n\t\tif ( symbols )\r\n\t\t{\r\n\t\t\tfor ( var inx = 0, len = symbols.length; inx < len; ++inx )\r\n\t\t\t{\r\n\t\t\t\tvar gly = symbols[inx];\r\n\r\n\t\t\t\t// eslint-disable-next-line no-template-curly-in-string\r\n\t\t\t\t_sb.appendFormat( \"${0} \", gly );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cnt = _anno.count();\r\n\t\tif ( _anno.hasItem( AnnoType.SYMBOL ) )\r\n\t\t\t--cnt;\r\n\t\tif ( _anno.hasItem( AnnoType.PRETEXT ) )\r\n\t\t\t--cnt;\r\n\r\n\t\tif ( !cnt )\r\n\t\t\treturn;\r\n\r\n\t\t_sb.append( \"{\" );\r\n\r\n\t\tvar time = _anno[AnnoType.TIME];\r\n\r\n\t\tif ( time )\r\n\t\t{\r\n\t\t\tPGNWriter.writeTimeAnno( _sb, time );\r\n\t\t}\r\n\r\n\t\tvar txt = _anno[AnnoType.POSTTEXT];\r\n\t\tif ( txt )\r\n\t\t{\r\n\t\t\t_sb.append( txt.getString() );\r\n\t\t}\r\n\r\n\t\t_sb.append( \"} \" );\r\n\t}\r\n\r\n\twritePreAnno( _sb, _anno )\r\n\t{\r\n\t\tvar txt = _anno[AnnoType.PRETEXT];\r\n\r\n\t\tif ( !txt )\r\n\t\t\treturn;\r\n\r\n\t\t_sb.append( \"{\" );\r\n\r\n\t\t_sb.append( txt.getString() );\r\n\t\t_sb.append( \"} \" );\r\n\t}\r\n\r\n\t// NH2020 made static\r\n\tstatic writeMove( _sb, _mv, _numMv, _needNum )\r\n\t{\r\n\t\tvar anno = _mv.getAnno();\r\n\t\tif ( _mv.hasAnno() )\r\n\t\tPGNWriter.writePreAnno( _sb, anno );\r\n\r\n\t\tvar pcMvd = _mv.getMoved();\r\n\r\n\t\tif (_needNum || Piece.side(pcMvd) === Side.WHITE)\r\n\t\t{\r\n\t\t\t_sb.append( _numMv );\r\n\t\t\t_sb.append(\".\");\r\n\r\n\t\t\tif ( Piece.side( pcMvd ) === Side.BLACK )\r\n\t\t\t{\r\n\t\t\t\t_sb.append( \"..\" );\r\n\t\t\t}\r\n\t\t\t_sb.append(\" \");\r\n\t\t}\r\n\t\t\t\r\n\t\tvar notaGen = new NotationGenerator();\r\n\t\tvar str = notaGen.getMoveNota( _mv );\r\n\t\t_sb.append( str );\r\n\t\t_sb.append( \" \" );\r\n\r\n\t\tif ( _mv.hasAnno() )\r\n\t\t\tPGNWriter.writePostAnno( _sb, anno );\r\n\r\n\t\tif (_mv.hasLines())\r\n\t\t{\r\n\t\t\tfor (var inx = 0; inx < _mv.getSubLinesCount(); ++inx)\r\n\t\t\t{\r\n\t\t\t\t_sb.append(\"(\");\r\n\t\t\t\tvar ln = _mv.getLine( inx );\r\n\r\n\t\t\t\tPGNWriter.writeLine( _sb, ln, _numMv );\r\n\r\n\t\t\t\t_sb.append( \")\" );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// NH2020 made static\r\n\tstatic writeLine( _sb, _line, _numMv )\r\n\t{\r\n\t\tfor ( var i = 0; i < _line.length; ++i )\r\n\t\t{\r\n\t\t\tvar mv = _line[i];\r\n\r\n\t\t\tvar pcMvd = mv.getMoved();\r\n\r\n\t\t\tPGNWriter.writeMove( _sb, mv, _numMv, i === 0 );\r\n\r\n\t\t\tif (Piece.side(pcMvd) === Side.BLACK)\r\n\t\t\t\t++_numMv;\r\n\t\t}\r\n\t}\r\n\r\n\t// NH2020 made static\r\n\tstatic writeGame( _sb, _game )\r\n\t{\r\n\t\tvar numMv = 1;\r\n\t\tif(!_game.isNormalInit())\r\n\t\t\tnumMv = _game.getStartPos().getMoveNum();\r\n\t\t\tPGNWriter.writeLine( _sb, _game.getMainLine(), numMv );\r\n\t}\r\n\r\n\t// NH2020 madeStatic\r\n\tstatic writeHeaderItem( _sb, _var, _val )\r\n\t{\r\n\t\t_sb.appendFormat( '[{0} \"{1}\"]', _var, _val );\r\n\t\t_sb.append( \"\\r\\n\" );\r\n\t}\r\n\r\n\r\n\tstatic toPGN( _game )\r\n\t{\r\n\t\tvar sb = new StringBuilder();\r\n\r\n\t\tPGNWriter.writeHeader( sb, _game );\r\n\r\n\t\tsb.append( \"\\r\\n\" );\r\n\r\n\t\tPGNWriter.writeGame( sb, _game );\r\n\r\n\t\t// NH2020 changed the following line\r\n\t\t// sb.append( _game.hdr.getesult().toPGNString() );\r\n\t\tsb.append( _game.hdr.getCBResult().toPGNString() );\r\n\r\n\t\tsb.append( \"\\r\\n\" );\r\n\t\tsb.append( \"\\r\\n\" );\r\n\r\n\t\treturn sb.toString();\r\n\t};\r\n\r\n\tstatic toUrlPGN( _game )\r\n\t{\r\n\t\tvar pgn = this.toPGN( _game );\r\n\r\n\t\tvar strTags = [\"Site \\\"?\\\"\", \"Round \\\"?\\\"\", \"Date \\\"????.??.??\\\"\", \"Result \\\"*\\\"\"];\r\n\r\n\t\tfor ( var i = 0; i < strTags.length; i++ )\r\n\t\t{\r\n\t\t\tvar reg = \"/[\" + strTags[i] + \"/]/ig\";\r\n\t\t\tpgn = pgn.replace( reg, \"\" );\r\n\t\t}\r\n\r\n\t\tpgn = encodeURI( pgn );\r\n\r\n\t\tpgn = pgn.replace( /\\.%20/ig, \".\" );\r\n\t\tpgn = pgn.replace( /%0D%0A/ig, \"%20\" );\r\n\t\tpgn = pgn.replace( /%20%20/ig, \"%20\" );\r\n\t\tpgn = pgn.replace( /%20%20/ig, \"%20\" );\r\n\r\n\t\treturn pgn;\r\n\t};\r\n\r\n\ttoFEN( _game )\r\n\t{\r\n\t\tvar sb = new StringBuilder();\r\n\r\n\t\tvar fen = _game.getCurPos().toFEN();\r\n\t\tsb.append( fen );\r\n\r\n\t\t//writeHeader( sb, _game );\r\n\r\n\t\t//sb.append( \"\\r\\n\" );\r\n\r\n\t\t//writeGame( sb, _game );\r\n\r\n\t\t//sb.append( _game.hdr.getesult().toPGNString() );\r\n\r\n\t\t//sb.append( \"\\r\\n\" );\r\n\t\t//sb.append( \"\\r\\n\" );\r\n\r\n\t\treturn sb.toString();\r\n\t};\r\n}","\r\n\r\n// Fake Log Export for project build\r\nexport var Log = {\r\n Log: function() {},\r\n TraceCollapsed: function() {},\r\n Exception: function() {},\r\n Missing: function() {},\r\n WillItWork: function() {},\r\n Stats: function() {},\r\n}\r\n\r\n// export class Log\r\n// {\r\n// static Log( txt )\r\n// {\r\n// console.log( txt );\r\n// }\r\n\r\n// static TraceCollapsed ( txt )\r\n// {\r\n// console.groupCollapsed(txt);\r\n// console.trace();\r\n// console.groupEnd();\r\n// }\r\n\r\n// static Exception( txt, x, label )\r\n// {\r\n// var xMsg = x ? x.toString() : \"---\";\r\n// Log.TraceCollapsed( txt + \", \" + xMsg );\r\n// }\r\n\r\n// static Missing ()\r\n// {\r\n// Log.TraceCollapsed( \"This part has been commented out\" );\r\n// }\r\n\r\n// static WillItWork ()\r\n// {\r\n// Log.TraceCollapsed( \"Not sure if the following code will work.\");\r\n// }\r\n\r\n// Stats( txt )\r\n// {\r\n// Log.Log( txt )\r\n// }\r\n// }","import {Log} from 'common/Tools/Log'\r\n\r\nexport var ListenersUtil = {};\r\n\r\n// NH2020 initiiert die Instanz eines Objekts so, dass sie die Listener Funktionen verwenden kann.\r\n// Fügt im Grunde einfach die Funktionen der Instanz hinzu.\r\nListenersUtil.initInstForListeners = function ( _inst )\r\n{\r\n\t_inst.addListener = ListenersUtil.addListener;\r\n\t_inst.removeListener = ListenersUtil.removeListener;\r\n\t_inst.fireEvent = ListenersUtil.fireEvent;\r\n\t_inst.getListeners = ListenersUtil.getListeners;\r\n\t_inst.enableEvents = ListenersUtil.enableEvents;\r\n\t_inst.eventsEnabled = true;\r\n\t_inst.idLstnr = 0;\r\n};\r\n\r\nListenersUtil.initForListeners = function ( _type )\r\n{\r\n\tListenersUtil.initInstForListeners( _type.prototype );\r\n};\r\n\r\nListenersUtil.enableEvents = function ( b )\r\n{\r\n\tthis.eventsEnabled = b;\r\n};\r\n\r\n\r\nListenersUtil.getListeners = function ( _evtname )\r\n{\r\n\tvar dctListenersName = \"m_lstOn\" + _evtname;\r\n\tvar dctListeners = this[dctListenersName];\r\n\tif ( !dctListeners )\r\n\t{\r\n\t\tdctListeners = {};\r\n\t\tthis[dctListenersName] = dctListeners;\r\n\t}\r\n\r\n\treturn dctListeners;\r\n};\r\n\r\n// NH2020 Hier wird einer Instanz ein Listener hinzugefügt.\r\n// Wenn die Klasse \"App\" ein Event \"fireOnChange\" hat, kann über\r\n// App.addOnFireOnChangeListener( chessapp )\r\n// der App ein Listener hinzugefügt werden, dessen funktion\r\n// mit dem Namen OnChange (???) dann aufgerufen wird, wenn \r\n// App.fireOnChange aufgerufen wird.\r\nListenersUtil.addListener = function ( _evtname, _listener )\r\n{\r\n\tvar dctListeners = this.getListeners( _evtname );\r\n\tdctListeners[++this.idLstnr] = _listener;\r\n\r\n\treturn this.idLstnr;\r\n};\r\n\r\nListenersUtil.removeListener = function ( _evtname, _inxRemove )\r\n{\r\n\tvar dctListeners = this.getListeners( _evtname );\r\n\tdelete dctListeners[_inxRemove];\r\n};\r\n\r\nListenersUtil.fireEvent = function ( _evtname, _args )\r\n{\r\n\tif ( !this.eventsEnabled )\r\n\t\treturn;\r\n\r\n\tvar dctListeners = this.getListeners( _evtname );\r\n\r\n\tfor ( var inx in dctListeners )\r\n\t{\r\n\t\tif ( !dctListeners.hasOwnProperty( inx ) )\r\n\t\t\tcontinue;\r\n\t\tvar f = dctListeners[inx];\r\n\t\tf.apply( this, _args );\r\n\t}\r\n};\r\n\r\n// NH2020 Fügt einer Instanz ein Event hinzu \r\n// Dazu gehört, dass einige Funktionen zur Instanz hinzugefügt werden\r\n// addOn'Name'Listener, removeListener, fireOn'Name', etc.\r\nListenersUtil.addInstEvent = function ( _inst, _evtname, _funcArgs )\r\n{\r\n\tvar addOnName = String.formatEx( \"addOn{0}Listener\", _evtname );\r\n\r\n\t_inst[addOnName] = function ( _lstnr )\r\n\t{\r\n\t\treturn this.addListener( _evtname, _lstnr );\r\n\t};\r\n\r\n\t_inst[String.formatEx( \"removeOn{0}Listener\", _evtname )] = function ( _inxRemove )\r\n\t{\r\n\t\tthis.removeListener( _evtname, _inxRemove );\r\n\t};\r\n\r\n\t_inst[String.formatEx( \"fireOn{0}\", _evtname )] = function ()\r\n\t{\r\n\t\tif ( !this[String.formatEx( \"fireOn{0}\", _evtname )].delayed )\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tvar args = arguments || [];\r\n\t\t\t\tif ( _funcArgs )\r\n\t\t\t\t\targs = _funcArgs.call( this );\r\n\r\n\t\t\t\tthis.fireEvent( _evtname, args );\r\n\t\t\t}\r\n\t\t\tcatch( x )\r\n\t\t\t{\r\n\t\t\t\tLog.Exception( \"fire-\" + _evtname, x );\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis[String.formatEx( \"fireOn{0}\", _evtname )].needFire = true;\r\n\t\t}\r\n\t};\r\n\r\n\t_inst.removeAllListeners = function ()\r\n\t{\r\n\t\tfor ( var l in this )\r\n\t\t{\r\n\t\t\tif ( this.hasOwnProperty( l ) && l.search( \"m_lstOn\" ) == 0 )\r\n\t\t\t{\r\n\t\t\t\tdelete this[l];\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t_inst[String.formatEx( \"delayfireOn{0}\", _evtname )] = function ( msDelay )\r\n\t{\r\n\t\tmsDelay = msDelay || 100 //default delay, falls continue vergessen wird\r\n\t\tthis[String.formatEx( \"fireOn{0}\", _evtname )].delayed = true;\r\n\t\tvar me = this;\r\n\t\twindow.setTimeout( function ()\r\n\t\t{\r\n\t\t\tme[String.formatEx( \"continuefireOn{0}\", _evtname )]();\r\n\r\n\t\t}, msDelay )\r\n\t};\r\n\r\n\t_inst[String.formatEx( \"continuefireOn{0}\", _evtname )] = function ()\r\n\t{\r\n\t\tthis[String.formatEx( \"fireOn{0}\", _evtname )].delayed = false;\r\n\t\tif ( this[String.formatEx( \"fireOn{0}\", _evtname )].needFire )\r\n\t\t{\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tthis[String.formatEx( \"fireOn{0}\", _evtname )]();\r\n\t\t\t}\r\n\t\t\tcatch( x )\r\n\t\t\t{\r\n\t\t\t\tLog.Exception( \"delfire-\" + _evtname, x );\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis[String.formatEx( \"fireOn{0}\", _evtname )].needFire = false;\r\n\t};\r\n};\r\n\r\nListenersUtil.addEvent = function ( _type, _evtname, _funcArgs )\r\n{\r\n\tListenersUtil.addInstEvent( _type.prototype, _evtname, _funcArgs );\r\n};","// ST, 2011\r\n// ES 6 MW: Feb 28, 2020\r\n\r\nimport { createReadFactory } from \"common/Container/DataBuffer\";\r\nimport { CBDate } from \"common/Tools/CBDate\";\r\n\r\nexport var GameResultEnum =\r\n{\r\n\tGAME_UNFINISHED: -1,\r\n\tBLACK_WINS: 0,\r\n\tDRAW: 1,\r\n\tWHITE_WINS: 2,\r\n\tLINE: 3,\r\n\tUNDEFINED_RESULT: 3,\r\n\tUNDEFINED: 3,\t\r\n\r\n\tisFinished: function ( n )\r\n\t{\r\n\t\treturn n >= this.BLACK_WINS && n <= this.WHITE_WINS;\r\n\t},\r\n\r\n\ttoString:\r\n\t\tfunction ( n )\r\n\t\t{\r\n\t\t\tswitch ( n )\r\n\t\t\t{\r\n\t\t\t\tcase this.GAME_UNFINISHED:\r\n\t\t\t\t\t//return lm.IN_PROGRESS;\r\n\t\t\t\t\treturn \"in progress\";\r\n\t\t\t\tcase this.WHITE_WINS:\r\n\t\t\t\t\treturn \"1 \\u2013 0\"; // NH2020 added spaces for more consistent display\r\n\t\t\t\tcase this.BLACK_WINS:\r\n\t\t\t\t\treturn \"0 \\u2013 1\"; // NH2020 added spaces for more consistent display\r\n\t\t\t\tcase this.DRAW:\r\n\t\t\t\t\t//\treturn \"\\u0189\\u2013\\u0189\";\r\n\t\t\t\t\treturn \"\\u00BD\\u2013\\u00BD\";\r\n\t\t\t\t\t//\treturn \"1/2\";\r\n\t\t\t\tcase this.UNDEFINED_RESULT:\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t},\r\n\r\n\tfromString:\r\n\t\tfunction ( str )\r\n\t\t{\r\n\t\t\tswitch ( str )\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn \"...\";\r\n\t\t\t\tcase \"\\u00BD\\u2013\\u00BD\":\r\n\t\t\t\tcase \"1/2-1/2\":\r\n\t\t\t\tcase \"1/2\":\r\n\t\t\t\t\treturn this.DRAW;\r\n\t\t\t\tcase \"1\\u20130\":\r\n\t\t\t\tcase \"1-0\":\r\n\t\t\t\t\treturn this.WHITE_WINS;\r\n\t\t\t\tcase \"0\\u20131\":\r\n\t\t\t\tcase \"0-1\":\r\n\t\t\t\t\treturn this.BLACK_WINS;\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nexport class GameResult\r\n{\r\n\tconstructor( n )\r\n\t{\r\n\t\tthis.n = n;\r\n\t};\r\n\r\n\tisFinished()\r\n\t{\r\n\t\treturn GameResultEnum.isFinished( this.n );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn GameResultEnum.toString( this.n );\r\n\t};\r\n\r\n\ttoPGNString()\r\n\t{\r\n\t\tswitch( this.n )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"*\";\r\n\t\t\tcase GameResultEnum.WHITE_WINS:\r\n\t\t\t\treturn \"1-0\";\r\n\t\t\tcase GameResultEnum.BLACK_WINS:\r\n\t\t\t\treturn \"0-1\";\r\n\t\t\tcase GameResultEnum.DRAW:\r\n\t\t\t\treturn \"1/2-1/2\";\r\n\t\t}\r\n\t};\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class GameHeader\r\n{\r\n\tconstructor ()\r\n\t{\r\n\t\tthis.white = new PlayerData();\r\n\t\tthis.black = new PlayerData();\r\n\t\tthis.event = new EventData();\r\n\r\n\t\tthis.player = [this.white, this.black];\r\n\r\n\t\tthis.result = GameResultEnum.LINE;\r\n\t\tthis.clockParams = null;\r\n\r\n\t\tthis.annotator = \"\";\r\n\t\tthis.round = 0;\r\n\t\tthis.subRound = 0;\r\n\t\tthis.board = 0;\r\n\t\tthis.eco = \"\";\r\n\t\tthis.result = GameResultEnum.LINE;\r\n\t\tthis.eloWh = 0;\r\n\t\tthis.eloBl = 0;\r\n\r\n\t\t// NH2020 assuming CBDate\r\n\t\tthis.date = new CBDate();\r\n\t\r\n\t\tthis.clockParams = null;\r\n\t}\r\n\r\n\tgetStrPlayers( withElo, firstNameLen )\r\n\t{\r\n\t\tvar w = this.white.getListStr( firstNameLen || 0 );\r\n\t\tvar b = this.black.getListStr( firstNameLen || 0 );\r\n\r\n\t\tvar ret;\r\n\t\tif ( b && b.length )\r\n\t\t{\r\n\t\t\tif ( withElo )\r\n\t\t\t{\r\n\t\t\t\tret = w;\r\n\t\t\t\tif ( this.eloWh > 0 )\r\n\t\t\t\t\tret += \" (\" + this.eloWh + \")\";\r\n\t\t\t\tret += \" - \";\r\n\t\t\t\tret += b;\r\n\t\t\t\tif ( this.eloBl > 0 )\r\n\t\t\t\t\tret += \" (\" + this.eloBl + \")\";\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tret = w + \"-\" + b;\r\n\t\t} else\r\n\t\t{\r\n\t\t\tret = w;\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tvar strEvent = this.event.toString();\r\n\t\tvar strDate = this.date.toLocaleString();\r\n\t\tvar str = this.getStrPlayers( true /*elo*/, 999 );\r\n\t\tif ( strEvent )\r\n\t\t\tstr += \", \" + strEvent;\r\n\t\tif ( strDate )\r\n\t\t\tstr += \" \" + strDate;\r\n\r\n\t\treturn str;\r\n\t};\r\n\r\n\tgetWhite()\r\n\t{\r\n\t\treturn this.white.toString();\r\n\t};\r\n\r\n\tgetClockParams()\r\n\t{\r\n\t\treturn this.clockParams;\r\n\t};\r\n\r\n\tsetClockParams(_clockParams)\r\n\t{\r\n\t\tthis.clockParams = _clockParams;\r\n\t};\r\n\r\n\tsetWhite( _val )\r\n\t{\r\n\t\tthis.white.init( _val );\r\n\t};\r\n\r\n\tgetBlack()\r\n\t{\r\n\t\treturn this.black.toString();\r\n\t};\r\n\r\n\tsetBlack( _val )\r\n\t{\r\n\t\tthis.black.init( _val );\r\n\t};\r\n\r\n\tgetECO()\r\n\t{\r\n\t\treturn this.eco;\r\n\t};\r\n\r\n\tsetECO( _val )\r\n\t{\r\n\t\tthis.eco = _val;\r\n\t};\r\n\r\n\tgetEvent()\r\n\t{\r\n\t\treturn this.event.event;\r\n\t};\r\n\r\n\tsetEvent( _val )\r\n\t{\r\n\t\tthis.event.event = _val;\r\n\t};\r\n\r\n\tgetAnnotator()\r\n\t{\r\n\t\treturn this.annotator;\r\n\t};\r\n\r\n\tsetAnnotator( _val )\r\n\t{\r\n\t\tthis.annotator = _val;\r\n\t};\r\n\r\n\tgetSite()\r\n\t{\r\n\t\treturn this.event.site;\r\n\t};\r\n\r\n\tsetSite( _val )\r\n\t{\r\n\t\tthis.event.site = _val;\r\n\t};\r\n\r\n\tisDefined()\r\n\t{\r\n\t\treturn this.getWhite() || this.getBlack();\r\n\t};\r\n\r\n\tgetResult()\r\n\t{\r\n\t\treturn this.result;\r\n\t};\r\n\r\n\tgetCBResult()\r\n\t{\r\n\t\treturn new GameResult( this.result );\r\n\t};\r\n\r\n\tsetResult( _val )\r\n\t{\r\n\t\tvar ret = this.result;\r\n\t\tif ( typeof _val != \"undefined\" )\r\n\t\t\tthis.result = _val;\r\n\t\telse\r\n\t\t\tthis.result = GameResultEnum.LINE;\r\n\r\n\t\treturn ret;\r\n\t};\r\n\r\n\tsetRoundStr( _str )\r\n\t{\r\n\t\tif ( _str )\r\n\t\t{\r\n\t\t\tvar rnds = _str.split( \".\" );\r\n\t\t\tthis.round = parseInt( rnds[0], 10 );\r\n\t\t\tif ( rnds.length > 1 )\r\n\t\t\t\tthis.subRound = parseInt( rnds[1], 10 );\r\n\t\t}\r\n\t};\r\n\r\n\tgetRoundStr()\r\n\t{\r\n\t\tvar strRes = \"\";\r\n\t\tif ( this.round )\r\n\t\t{\r\n\t\t\tstrRes = \"\" + this.round;\r\n\t\t\tif ( this.subRound )\r\n\t\t\t\tstrRes = strRes + \".\" + this.subRound;\r\n\t\t}\r\n\t\treturn strRes;\r\n\t};\r\n\r\n\tgetEloWhite()\r\n\t{\r\n\t\treturn this.eloWh;\r\n\t};\r\n\r\n\tsetEloWhite( _val )\r\n\t{\r\n\t\tthis.eloWh = _val;\r\n\t};\r\n\r\n\tgetEloBlack()\r\n\t{\r\n\t\treturn this.eloBl;\r\n\t};\r\n\r\n\tsetEloBlack( _val )\r\n\t{\r\n\t\tthis.eloBl = _val;\r\n\t};\r\n\r\n\tgetMaxElo()\r\n\t{\r\n\t\treturn Math.max( this.eloWh, this.eloBl );\r\n\t};\r\n\r\n\tsetDateStr( _val )\r\n\t{\r\n\t\tthis.date = CBDate.fromPGNString( _val );\r\n\t};\r\n\r\n\tgetLocaleDateStr()\r\n\t{\r\n\t\treturn this.date.toLocaleString();\r\n\t};\r\n\r\n\tgetDateStr()\r\n\t{\r\n\t\treturn this.date.toPGNString();\r\n\t};\r\n\r\n\tsetDeleted( deleted )\r\n\t{\r\n\t\tthis.deleted = deleted;\r\n\t\tif ( deleted )\r\n\t\t\tthis.flags = this.flags | 1;\r\n\t\telse\r\n\t\t\tthis.flags = this.flags & ~1;\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.white = PlayerData.readFactory( _buf );\t// deliberately no catch for OnlineLobby loadGames\r\n\t\tthis.black = PlayerData.readFactory( _buf );\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.event = EventData.readFactory( _buf );\r\n\r\n\t\t\t/*var src =*/ SourceData.readFactory( _buf );\r\n\r\n\t\t\tthis.annotator = AnnotatorData.readFactory( _buf ).name;\r\n\r\n\t\t\tthis.eloWh = _buf.readShort();\r\n\t\t\tthis.eloBl = _buf.readShort();\r\n\r\n\t\t\tthis.nEco = _buf.readUint16();\r\n\t\t\tthis.eco = GameHeader.ECOtoString( this.nEco );\r\n\t\t\tthis.result = GameHeader.readResult( _buf );\r\n\r\n\t\t\tthis.date = new CBDate();\r\n\t\t\tvar dt = _buf.readInt();\r\n\t\t\tthis.date.constructFromNum( dt );\r\n\t\t\tthis.plyCount = _buf.readShort();\r\n\r\n\t\t\tthis.round = _buf.readByte();\r\n\t\t\tthis.subRound = _buf.readByte();\r\n\r\n\t\t\t//2 reserved\r\n\t\t\t_buf.readInt();\r\n\t\t\t_buf.readInt();\r\n\r\n\t\t\t//teams\r\n\t\t\t_buf.skipSizedRead();\r\n\t\t}\r\n\r\n\t\tcatch( x )\r\n\t\t{\r\n\t\t\tconsole.log( x );\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\r\n\t// naming convention:\r\n\tcompactFromDataBuf( buf )\r\n\t{\r\n\t\tbuf.beginSizedRead();\r\n\r\n\t\tthis.eType = buf.readInt16();\r\n\t\tthis.nGame = buf.readInt32();\r\n\r\n\t\tthis.white = PlayerData.readFactory( buf );\r\n\t\tthis.black = PlayerData.readFactory( buf );\r\n\t\tthis.event = EventData.readFactory( buf );\r\n\r\n\t\tthis.eloWh = buf.readInt16();\r\n\t\tthis.eloBl = buf.readInt16();\r\n\r\n\t\tthis.result = GameHeader.readResult( buf );\r\n\r\n\t\tthis.date = new CBDate();\r\n\t\tthis.date.fromDataBuf( buf );\r\n\t\tthis.plyCount = buf.readInt16();\r\n\t\tthis.round = buf.readByte();\r\n\t\tthis.subRound = buf.readByte();\r\n\r\n\t\t/*var annoAttr = */buf.readUint32();\r\n\t\t/*var bigAttr = */ buf.readUint32();\r\n\r\n\t\tthis.nEco = buf.readUint16();\r\n\r\n\t\tthis.eco = GameHeader.ECOtoString( this.nEco );\r\n\r\n\t\tthis.flags = buf.readUint16();\r\n\t\tthis.deleted = !!( this.flags & 1 );\r\n\r\n\t\tbuf.endSizedRead();\r\n\t};\r\n\r\n\tcompactToDataBuf( buf )\r\n\t{\r\n\t\tbuf.beginSizedWrite();\r\n\r\n\t\tif ( this.eType !== undefined )\r\n\t\t\tbuf.writeInt16( this.eType );\r\n\t\telse\r\n\t\t\tbuf.writeInt16( 1 );\t// HT_GAME\r\n\r\n\t\tif ( this.nGame !== undefined )\r\n\t\t\tbuf.writeInt32( this.nGame );\r\n\t\telse\r\n\t\t\tbuf.writeInt32( 0 );\r\n\r\n\t\tthis.white.write( buf );\r\n\t\tthis.black.write( buf );\r\n\t\tthis.event.write( buf );\r\n\r\n\t\tbuf.writeShort( this.eloWh );\r\n\t\tbuf.writeShort( this.eloBl );\r\n\r\n\t\tGameHeader.writeResult( this.result, buf );\r\n\r\n\t\tif ( this.date === undefined )\r\n\t\t\tthis.date = new Date( 0 );\r\n\t\tthis.date.toDataBuf( buf );\r\n\r\n\t\tif ( this.plyCount )\r\n\t\t\tbuf.writeInt16( this.plyCount );\r\n\t\telse\r\n\t\t\tbuf.writeInt16( 0 );\r\n\t\tbuf.writeByte( this.round );\r\n\t\tbuf.writeByte( this.subRound );\r\n\r\n\t\tbuf.writeUint32( 0 );\t// annoAttr\r\n\t\tbuf.writeUint32( 0 );\t// bigAttr\r\n\r\n\t\tif ( this.nEco )\r\n\t\t\tbuf.writeUint16( this.nEco );\r\n\t\telse\r\n\t\t\tbuf.writeUint16( 0 );\r\n\r\n\t\tif ( this.flags === undefined )\r\n\t\t\tthis.flags = 0;\r\n\t\tif ( this.deleted )\r\n\t\t\tthis.flags = this.flags | 1;\r\n\t\tbuf.writeUint16( this.flags );\r\n\r\n\t\tbuf.endSizedWrite();\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tthis.white.write( _buf );\r\n\t\tthis.black.write( _buf );\r\n\t\tthis.event.write( _buf );\r\n\r\n\t\tnew SourceData().write( _buf );\r\n\t\tnew AnnotatorData( this.annotator ).write( _buf );\r\n\r\n\t\t_buf.writeShort( this.eloWh );\r\n\t\t_buf.writeShort( this.eloBl );\r\n\r\n\t\tvar eco = 0;\r\n\t\t_buf.writeShort( eco );\r\n\r\n\t\tGameHeader.writeResult( this.result, _buf );\r\n\r\n\t\tvar dt = 0;\r\n\t\t_buf.writeInt( dt );\r\n\t\tif ( this.plyCount )\r\n\t\t\t_buf.writeShort( this.plyCount );\r\n\t\telse\r\n\t\t\t_buf.writeShort( 0 );\r\n\r\n\t\t_buf.writeByte( this.round );\r\n\t\t_buf.writeByte( this.subRound );\r\n\r\n\t\t//2 reserved\r\n\t\t_buf.writeInt( 0 );\r\n\t\t_buf.writeInt( 0 );\r\n\r\n\t\t//teams\r\n\r\n\t\t_buf.beginSizedWrite();\r\n\t\t_buf.endSizedWrite();\r\n\t\t//_buf.doSizedWrite(\r\n\t\t// function ( _bufTmp ) {\r\n\t\t////NIX DA SCHREIBEN\r\n\t\t//}\r\n\t\t//);\r\n\r\n\t};\r\n\r\n\tstatic readResult = function ( _buf )\r\n\t{\r\n\t\tvar res = _buf.readByte();\r\n\t\t_buf.readByte();\r\n\t\t_buf.readByte();\r\n\t\treturn res;\r\n\t};\r\n\r\n\tstatic writeResult = function ( _res, _buf )\r\n\t{\r\n\t\t_buf.writeByte( _res );\r\n\t\t_buf.writeByte( 0 );\r\n\t\t_buf.writeByte( 0 );\r\n\t};\r\n\r\n\tstatic ECOtoString = function ( nClass )\r\n\t{\r\n\t\tvar i;\r\n\t\tvar pClass = \"\";\r\n\t\ti = nClass >> 7;\r\n\t\tif ( ( i > 0 ) && ( i <= 500 ) )\r\n\t\t{\r\n\t\t\ti--;\r\n\t\t\tpClass = String.fromCharCode( \"A\".charCodeAt() + i / 100 )[0];\r\n\t\t\ti %= 100;\r\n\t\t\tpClass += String.fromCharCode( \"0\".charCodeAt() + i / 10 )[0];\r\n\t\t\tpClass += String.fromCharCode( \"0\".charCodeAt() + i % 10 )[0];\r\n\t\t\ti = nClass & 127;\r\n\t\t\tif ( i )\r\n\t\t\t{\r\n\t\t\t\tpClass += '/';\r\n\t\t\t\tif ( i >= 100 )\r\n\t\t\t\t{\r\n\t\t\t\t\tpClass += '9';\r\n\t\t\t\t\tpClass += '9';\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t{\r\n\t\t\t\t\tpClass += String.fromCharCode( \"0\".charCodeAt() + i / 10 )[0];\r\n\t\t\t\t\tpClass += String.fromCharCode( \"0\".charCodeAt() + i % 10 )[0];\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\tpClass = \"\";\r\n\t\treturn pClass;\r\n\t};\r\n\r\n\ttoJson()\r\n\t{\r\n\t\treturn {\r\n\t\t\tgameNo: this.nGame,\r\n\t\t\twhite: this.white.getListStr( 1 ),\r\n\t\t\tblack: this.black.getListStr( 1 ),\r\n\t\t\tevent: this.event.event,\r\n\t\t\tdate: this.date.getYear(),\r\n\t\t\tresult: GameResultEnum.toString( this.result ),\r\n\t\t\telow: this.eloWh,\r\n\t\t\telob: this.eloBl,\r\n\t\t\teco: this.eco,\r\n\t\t\tround: this.round,\r\n\t\t\tsubRound: this.subRound,\r\n\t\t\tplyCount: this.plyCount,\r\n\t\t\tflags: this.flags\r\n\t\t}\r\n\t};\r\n\r\n\tmatchesFilterVal( filterVal )\r\n\t{\r\n\t\tif ( this.white.last.search( filterVal ) !== -1 )\r\n\t\t\treturn true;\r\n\t\tif ( this.black.last.search( filterVal ) !== -1 )\r\n\t\t\treturn true;\r\n\t\tif ( this.event.site.search( filterVal ) !== -1 )\r\n\t\t\treturn true;\r\n\t\tif ( this.event.event.search( filterVal ) !== -1 )\r\n\t\t\treturn true;\r\n\r\n\t\treturn false;\r\n\t};\r\n}\r\n\r\n//////////////////////////////////////////////////////////\r\n\r\nexport class PlayerData\r\n{\r\n\tconstructor ( _first, _last )\r\n\t{\r\n\t\tif ( _first )\r\n\t\t{\r\n\t\t\tthis.first = _first;\r\n\t\t} else\r\n\t\t{\r\n\t\t\tthis.first = \"\";\r\n\t\t}\r\n\r\n\t\tif ( _last )\r\n\t\t{\r\n\t\t\tthis.last = _last;\r\n\t\t} else\r\n\t\t{\r\n\t\t\tthis.last = \"\";\r\n\t\t}\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tif ( this.first && this.first.length && this.last && this.last.length )\r\n\t\t\treturn String.formatEx( \"{last}, {first}\", this );\r\n\t\telse\r\n\t\t\treturn this.last || this.first;\r\n\t};\r\n\r\n\t// NH2020 Added Space in new Function\r\n\t// getListStr( lenFirst )\r\n\t// {\r\n\t// \tif ( lenFirst && this.first && this.last && this.first.length && this.last.length )\r\n\t// \t{\r\n\t// \t\treturn this.last + \",\" + this.first.substr( 0, lenFirst );\r\n\t// \t}\r\n\t// \telse\r\n\t// \t\treturn this.last || this.first;\r\n\t// };\r\n\r\n\t// NH2020 Changed function to return break between first and last name\r\n\t// getListStr( lenFirst )\r\n\t// {\r\n\t// \tif ( lenFirst && this.first && this.last && this.first.length && this.last.length )\r\n\t// \t{\r\n\t// \t\treturn this.last + \", \" + this.first.substr( 0, lenFirst );\r\n\t// \t}\r\n\t// \telse\r\n\t// \t\treturn this.last || this.first;\r\n\t// };\r\n\r\n\tgetListStr( lenFirst )\r\n\t{\r\n\t\tif ( lenFirst && this.first && this.last && this.first.length && this.last.length )\r\n\t\t{\r\n\t\t\t// if (this.last.length < 10)\r\n\t\t\t\treturn this.last + \"\\n\" + this.first.substr( 0, lenFirst );\r\n\t\t\t// else\r\n\t\t\t// \treturn this.last.substr(0, 9) + \"...\\n\" + this.first.substr( 0, lenFirst );\t\t\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn this.last || this.first;\r\n\t};\r\n\r\n\tstatic g_splitOnComma = true;\r\n\tstatic g_splitOnSpace = false;\r\n\r\n\tinit( _strFull )\r\n\t{\r\n\t\tif ( PlayerData.g_splitOnComma )\r\n\t\t{\r\n\t\t\tvar arrPartsColon = _strFull.split( ',' );\r\n\t\t\tif ( arrPartsColon.length === 2 )\r\n\t\t\t{\r\n\t\t\t\tthis.first = arrPartsColon[1].trim();\r\n\t\t\t\tthis.last = arrPartsColon[0].trim();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ( PlayerData.g_splitOnSpace )\r\n\t\t{\r\n\t\t\tvar arrPartsSpace = _strFull.split( ' ' );\r\n\t\t\tif ( arrPartsSpace.length > 1 )\r\n\t\t\t{\r\n\t\t\t\tthis.first = arrPartsSpace[0];\r\n\t\t\t\tthis.last = arrPartsSpace.slice( 1 ).join( \" \" );\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.last = _strFull;\r\n\t\tthis.first = \"\";\r\n\t};\r\n\r\n\tstatic create = function ( _strFull )\r\n\t{\r\n\t\tvar res = new PlayerData();\r\n\t\tres.init( _strFull );\r\n\t\treturn res;\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.last = _buf.readByteLenASCIIString( 50 );\r\n\t\tthis.first = _buf.readByteLenASCIIString( 50 );\r\n\r\n\t\tthis.last = this.last.trim();\r\n\t\tthis.first = this.first.trim();\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( PlayerData );\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByteLenASCIIString( this.last );\r\n\t\t_buf.writeByteLenASCIIString( this.first );\r\n\t};\r\n}\r\n\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class EventData\r\n{\r\n\tconstructor ()\r\n\t{\r\n\t\tthis.site = \"\";\r\n\t\tthis.event = \"\";\r\n\t\tthis.dt = 0;\r\n\t\tthis.type = 0;\r\n\t\tthis.nation = 0;\r\n\r\n\t\tthis.category = 0;\r\n\t\tthis.flags = 0;\r\n\r\n\t\tthis.rounds = 0;\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.site = _buf.readByteLenASCIIString( 100 );\r\n\t\tthis.event = _buf.readByteLenASCIIString( 100 );\r\n\t\tthis.dt = _buf.readInt();\r\n\t\tthis.type = _buf.readShort();\r\n\t\tthis.nation = _buf.readShort();\r\n\r\n\t\tthis.category = _buf.readByte();\r\n\t\tthis.flags = _buf.readByte();\r\n\r\n\t\tthis.rounds = _buf.readShort();\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( EventData );\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByteLenASCIIString( this.site );\r\n\t\t_buf.writeByteLenASCIIString( this.event );\r\n\t\t_buf.writeInt( this.dt );\r\n\t\t_buf.writeShort( this.type );\r\n\t\t_buf.writeShort( this.nation );\r\n\r\n\t\t_buf.writeByte( this.category );\r\n\t\t_buf.writeByte( this.flags );\r\n\r\n\t\t_buf.writeShort( this.rounds );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tvar str = this.event;\r\n\t\tif ( this.site && this.event && this.site !== this.event )\r\n\t\t\tstr += \" \";\r\n\t\tif ( this.site !== this.event )\r\n\t\t\tstr += this.site;\r\n\r\n\t\treturn str;\r\n\t};\r\n\r\n}\r\n\r\n/////////////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\nexport class SourceData\r\n{\r\n\tconstructor ()\r\n\t{\r\n\t\tthis.source = \"\";\r\n\t\tthis.publisher = \"\";\r\n\t\tthis.pubdt = 0;\r\n\t\tthis.verdt = 0;\r\n\t\tthis.version = 0;\r\n\t\tthis.quality = 0;\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.source = _buf.readByteLenASCIIString( 100 );\r\n\t\tthis.publisher = _buf.readByteLenASCIIString( 100 );\r\n\t\tthis.pubdt = _buf.readInt();\r\n\t\tthis.verdt = _buf.readInt();\r\n\t\tthis.version = _buf.readByte();\r\n\t\tthis.quality = _buf.readByte();\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( SourceData );\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByteLenASCIIString( this.source );\r\n\t\t_buf.writeByteLenASCIIString( this.publisher );\r\n\t\t_buf.writeInt( this.pubdt );\r\n\t\t_buf.writeInt( this.verdt );\r\n\t\t_buf.writeByte( this.version );\r\n\t\t_buf.writeByte( this.quality );\r\n\t};\r\n}\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class TeamData\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.team = \"\";\r\n\t\tthis.num = 0;\r\n\t\tthis.seasoned = 0;\r\n\t\tthis.nation = 0;\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tif ( this.num )\r\n\t\t\treturn String.formatEx( \"{team} {num}\", this );\r\n\t\treturn this.team;\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.team = _buf.readByteLenASCIIString( 100 );\r\n\t\tthis.num = _buf.readShort();\r\n\t\tthis.seasoned = _buf.readByte();\r\n\t\tthis.nation = _buf.readByte();\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( TeamData );\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByteLenASCIIString( this.team );\r\n\t\t_buf.writeShort( this.num );\r\n\t\t_buf.writeByte( this.seasoned );\r\n\t\t_buf.writeByte( this.nation );\r\n\t};\r\n}\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class AnnotatorData\r\n{\r\n\r\n\tconstructor ( _name )\r\n\t{\r\n\t\tthis.name = \"\";\r\n\t\tif ( _name )\r\n\t\t\tthis.name = _name;\r\n\t};\r\n\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn this.name;\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tthis.name = _buf.readByteLenASCIIString( 100 );\r\n\t};\r\n\r\n\tstatic readFactory = createReadFactory( AnnotatorData );\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\t_buf.writeByteLenASCIIString( this.name );\r\n\t};\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n","// ST 2011\r\n// ES 6 MW: Feb 27, 2020\r\n\r\n// import { Log } from \"common/Tools/Log\";\r\n\r\nexport class LineStackItem\r\n{\r\n\tconstructor ( _line, _mvsToGo )\r\n\t{\r\n\t\tif ( _line !== undefined )\r\n\t\t\tthis.line = _line;\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.line = null;\r\n\t\t}\r\n\t\tif ( _mvsToGo !== undefined )\r\n\t\t\tthis.mvsToGo = _mvsToGo;\r\n\t\telse\r\n\t\t\tthis.mvsToGo = 0;\r\n\t};\r\n\r\n\tgetLine()\r\n\t{\r\n\t\treturn this.line;\r\n\t};\r\n\r\n\tgetMovesToGo()\r\n\t{\r\n\t\treturn this.mvsToGo;\r\n\t};\r\n\r\n\tsetMovesToGo( _mvsToGo )\r\n\t{\r\n\t\tthis.mvsToGo = _mvsToGo;\r\n\t};\r\n\r\n\tincMovesToGo()\r\n\t{\r\n\t\t++this.mvsToGo;\r\n\t};\r\n\r\n\tdecMovesToGo()\r\n\t{\r\n\t\t--this.mvsToGo;\r\n\t};\r\n\r\n\tisLineEnd()\r\n\t{\r\n\t\treturn this.line.length === this.mvsToGo;\r\n\t};\r\n\r\n\tisLineStart()\r\n\t{\r\n\t\treturn this.mvsToGo === 0;\r\n\t};\r\n\r\n\tpushMove( _mv )\r\n\t{\r\n\t\tthis.line.length = this.mvsToGo;\r\n\t\t// Log.Log(\"Push Move to line. \" + _mv.getAnno());\r\n\t\tthis.line.push( _mv );\r\n\t\t++this.mvsToGo;\r\n\t};\r\n\r\n\tdeleteRemaining()\r\n\t{\r\n\t\tthis.line.length = this.mvsToGo;\r\n\t};\r\n\r\n\tdeletePrevious()\r\n\t{\r\n\t\tthis.line.splice( 0, this.mvsToGo - 1 );\r\n\t\tthis.mvsToGo = 1;\r\n\t\tthis.line.setSubParentData();\r\n\t\tthis.line.setMainLine();\r\n\r\n\t\treturn this.line;\r\n\t};\r\n\r\n\t//clone()\r\n\t//{\r\n // //alert(\"DON'T\");\r\n\t// return null;\r\n\t//};\r\n\r\n\tshallowClone()\r\n\t{\r\n\t return new LineStackItem( this.line, this.mvsToGo );\r\n\t};\r\n\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class LineStack extends Array\r\n{\r\n\tconstructor ( _mainLine, _mvsToGo )\r\n\t{\r\n\t\tsuper();\r\n\t\tif ( _mainLine )\r\n\t\t{\r\n\t\t\tif ( !_mvsToGo )\r\n\t\t\t\t_mvsToGo = 0;\r\n\t\t\tthis.push( new LineStackItem( _mainLine, _mvsToGo ) );\r\n\t\t}\r\n\t};\r\n\r\n\tTop()\r\n\t{\r\n\t\treturn this[this.length - 1];\r\n\t};\r\n\r\n\tshallowClone()\r\n\t{\r\n\t\tlet res = new LineStack();\r\n\t\tres.length = this.length;\r\n\t\tfor ( let inx = 0, len = this.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t res[inx] = this[inx].shallowClone();\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n //clone = function()\r\n //{\r\n // alert(\"DON'T\");\r\n // return null;\r\n //};\r\n\r\n\tdeleteRemaining()\r\n\t{\r\n if ( this.Top() )\r\n\t\t this.Top().deleteRemaining();\r\n\t};\r\n\r\n\tdeletePrevious()\r\n\t{\r\n\t\tlet itmTop = this.Top();\r\n\t\tlet lineNewMain = itmTop.deletePrevious();\r\n\r\n\t\tthis.length = 0;\r\n\t\tthis.push( itmTop );\r\n\r\n\t\treturn lineNewMain;\r\n\t};\r\n\r\n\tgotoPrev()\r\n\t{\r\n\t\tlet itmTop = this.Top();\r\n\t\tif ( itmTop )\r\n\t\t{\r\n\t\t\titmTop.decMovesToGo();\r\n\t\t\tif ( this.length > 1 && itmTop.getMovesToGo() === 0 )\r\n\t\t\t\tthis.pop();\r\n\t\t}\r\n\t};\r\n\r\n\tpromoteLine()\r\n\t{\r\n\t\tlet itmTop = this.Top();\r\n\t\tif ( itmTop )\r\n\t\t{\r\n\t\t\tlet subLine = itmTop.getLine();\r\n\t\t\tlet mvsToGo = itmTop.getMovesToGo();\r\n\r\n\t\t\tlet parentLine = subLine.getParentLine();\r\n\t\t\tlet inxMv = subLine.getParentMoveIndex();\r\n\r\n\t\t\tlet mvKnick = parentLine[inxMv];\r\n\r\n\t\t\tlet inxLine = mvKnick.indexOfLine( subLine );\r\n\r\n\t\t\tmvKnick.removeLine( subLine );\r\n\r\n\t\t\tlet mvNewKnick = subLine[0];\r\n\t\t\tmvKnick.moveLinesTo( mvNewKnick );\r\n\r\n\t\t\tparentLine.swapMoves( inxMv, subLine );\r\n\r\n\t\t\tmvNewKnick.insertLine( inxLine, subLine );\r\n\r\n\t\t\tmvsToGo += inxMv;\r\n\r\n\t\t\tthis.pop();\r\n\r\n\t\t\titmTop = this.Top();\r\n\t\t\titmTop.setMovesToGo( mvsToGo );\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tgetSimplePath()\r\n\t{\r\n\t\tlet arrRes = [];\r\n\t\tlet mvParent = null;\r\n\t\tfor ( let inx = 0, len = this.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tlet itm = this[inx];\r\n\t\t\tlet line = itm.getLine();\r\n\t\t\tlet mvsToGo = itm.getMovesToGo();\r\n\t\t\tlet inxLine = 0;\r\n\t\t\tif ( mvParent )\r\n\t\t\t{\r\n\t\t\t\tinxLine = mvParent.indexOfLine( line );\r\n\t\t\t}\r\n\r\n\t\t\tarrRes.push( { inxLine: inxLine, mvsToGo: mvsToGo } );\r\n\r\n\t\t\tmvParent = line[mvsToGo];\r\n\t\t}\r\n\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\tselfTest()\r\n\t{\r\n\t\t// scheitert nach dem Anlegen/Löschen/Promoten von Varianten.\r\n\r\n\t\t// let prevLine = null;\r\n\t\t// let prevMvsToGo = 0;\r\n\t\t// for (let inx = 0, len = this.length; inx < len; ++inx)\r\n\t\t// {\r\n\t\t// let itm = this[inx];\r\n\t\t// let line = itm.getLine();\r\n\t\t// let mvsToGo = itm.getMovesToGo();\r\n\r\n\t\t// CBDebug.assert(line.getParentLine() === prevLine);\r\n\t\t// CBDebug.assert(line.getParentMoveIndex() === prevMvsToGo);\r\n\t\t// CBDebug.assert(!prevLine || line.getParentMove().indexOfLine(line) >= 0);\r\n\r\n\t\t// prevLine = line;\r\n\t\t// prevMvsToGo = mvsToGo;\r\n\t\t// }\r\n\t};\r\n}","// S.T. 2011\r\n// ES 6 MW: Feb 28, 2020\r\n\r\nimport { CBDebug } from \"common/Tools/Debug/debug_util\"\r\nimport { Log } from \"common/Tools/Log\"\r\n//import { CBDebug} from \"common/Tools/Debug/debug_util.debug\"\r\nimport { DataBuffer } from \"common/Container/DataBuffer\"\r\nimport { ListenersUtil } from \"common/Patterns/Listeners\"\r\nimport { Piece, Square, Side, CastleRights } from \"common/Chess/Logic/Chess\";\r\nimport { GameHeader /*, PlayerData*/ } from \"common/Chess/Logic/GameHeader\";\r\nimport { Annotation } from \"common/Chess/Logic/Annotation\";\r\nimport { AnnoType, EvalProfileAnno } from \"common/Chess/Format/AnnoTypes\";\r\nimport { LineStack, LineStackItem } from \"common/Chess/Logic/LineStack\";\r\nimport { MoveLine } from \"common/Chess/Logic/MoveLine\";\r\nimport { ObjUtil } from \"common/Patterns/ObjectUtil\";\r\nimport { Position } from \"common/Chess/Logic/Position\";\r\nimport { NotationGenerator, InvariantLocalization } from \"common/Chess/Logic/Notation\";\r\n// import { glApp } from \"common/App/App\";\r\n\r\nexport var MoveEnterType = \r\n{\r\n\tCANCEL: -1, // 0..64: Variation numbers\r\n\r\n\tTYPE_MASK: ~63,\r\n\tLINE_MASK: 63,\r\n\r\n\tQUERY: 64,\r\n\tOVERWRITE_MAIN: 128,\r\n\tOVERWRITE_LINE: 256,\r\n\tNEWLINE: 512,\r\n\tINSERT_MAIN: 1024,\r\n\tNEWMAINLINE: 2048,\r\n\tINSERT_LINE: 4096\r\n};\r\n\r\n// NH2020I Abstrakte Repräsentation eines Spiels.\r\n// Ein neuer Zug wird so hinzugefügt: Canvas2d->BoardArea->BoardControl->MoveEntry->MoveEnteredEvent->GameKernel->Game.makeMove\r\n// Diese Klasse enthält zB auch die aktuelle Position des Spiels sowie die abstrakte Notation (LineStack, MoveLine, MainLine)\r\n// Ebenso enthält diese Klasse eine Referenz zum GameHeader Element, in dem Informationen über Spiel und Spieler\r\n// gespeichert sind.\r\n// In this.stk (ein LineStack mit wohl mehreren LineStackItems) werden wohl alle Lines der Notation gespeichert. Ein LineStackItem\r\n// enthält eine MoveLine und einen Index (in dem der aktuell ausgewählte Zug gespeichert ist?).\r\n\r\nexport class Game\r\n{\r\n\tconstructor( _pos, _mainLine )\r\n\t{\r\n\t\tGame.InitListeners();\r\n\r\n\t\tif ( !_pos )\r\n\t\t\t_pos = new Position();\r\n\t\tthis.start = _pos;\r\n\r\n\t\tif ( !_mainLine )\r\n\t\t\t_mainLine = new MoveLine();\r\n\r\n\t\tthis.mainLine = _mainLine;\r\n\r\n\t\tthis.stk = new LineStack( this.mainLine );\r\n\t\tthis.hdr = new GameHeader();\r\n\r\n\t\tthis.initPost();\r\n\r\n\t\tthis.fromDataBuf = this.read;\r\n\t\tthis.toDataBuf = this.write;\r\n\r\n\t\tthis.onlineDBID = null; // NH2020 Added\r\n\t};\r\n\r\n\tstatic InitListeners()\r\n\t{\r\n\t\tif ( !Game.prototype.fireEvent )\r\n\t\t{\r\n\t\t\tListenersUtil.initForListeners( Game );\r\n\t\t\tListenersUtil.addEvent( Game, \"CurPosChanged\", function() { return [ this, this.getCurPos() ]; } );\r\n\t\t\tListenersUtil.addEvent( Game, \"Navigate\", function() { return [ this ]; } );\r\n\t\t\tListenersUtil.addEvent( Game, \"Move\", function() { return [ this, this.getLastMove() ]; } );\r\n\t\t\tListenersUtil.addEvent( Game, \"Changed\" );\r\n\t\t\tListenersUtil.addEvent( Game, \"HeaderChanged\" );\r\n\t\t\tListenersUtil.addEvent( Game, \"AnnoChanged\" );\t// do not update engine, live book etc.\r\n\t\t\tListenersUtil.addEvent( Game, \"ResetGame\" );\r\n\t\t\tListenersUtil.addEvent( Game, \"GameEnd\", function() { return [ this, this.getResult() ]; } );\r\n\t\t\tListenersUtil.addEvent( Game, \"ClickInNotation\" ); //Please! Don't!!!\t-> Sonderfall Video Player.\r\n\t\t\tListenersUtil.addEvent( Game, \"NotaDoubleClick\" );\r\n\t\t\tListenersUtil.addEvent( Game, \"Eval\" );\r\n\t\t}\r\n\t}\r\n\r\n\tinit( _pos, _mainLine )\r\n\t{\r\n\t\tGame.call( this, _pos, _mainLine );\r\n\t\tthis.fireOnChanged();\r\n\t\tthis.fireOnHeaderChanged();\r\n\t};\r\n\r\n\tinitPost()\r\n\t{\r\n\t\tthis.cur = ObjUtil.clone( this.start );\r\n\r\n\t\t//Die Züge initialisieren...\r\n\t\tGame.initLine( this.start, this.mainLine );\r\n\t};\r\n\r\n\tassign( _gm, noFire )\r\n\t{\r\n\t\t//Direkt übernehmen...\r\n\t\t//Das andere Spiel ist schon valid.\r\n\r\n\t\t//for ( var i in _gm )\t\t// better not, might overwrite existing handlers etc. Yep! And works bad with recursive structs.\r\n\t\t//{\r\n\t\t//\tif ( _gm.hasOwnProperty(i))\r\n\t\t//\t{\r\n\t\t//\t\tthis[i] = _gm[i];\r\n\t\t//\t}\r\n\t\t//}\r\n\r\n\t\tthis.start = _gm.start;\r\n\t\tthis.cur = _gm.cur;\r\n\t\tthis.mainLine = _gm.mainLine;\r\n\t\tthis.stk = _gm.stk;\r\n\t\tthis.hdr = _gm.hdr;\r\n\t\tthis.replaceGameNo = _gm.replaceGameNo;\r\n\t\tthis.replaceDBId = _gm.replaceDBId;\r\n\t\tthis.onlineDBID = _gm.onlineDBID; // NH2020 Added\r\n\r\n\t\tif ( !noFire )\r\n\t\t{\r\n\t\t\tthis.fireOnResetGame();\r\n\t\t\tthis.fireOnCurPosChanged();\r\n\t\t\tthis.fireOnChanged();\r\n\t\t\tthis.fireOnHeaderChanged();\r\n\t\t}\r\n\t};\r\n\r\n\tgetMoves()\r\n\t{\r\n\t\treturn this.mainLine;\r\n\t};\r\n\r\n\tsetMoves( mainLine )\r\n\t{\r\n\t\tthis.mainLine = mainLine;\r\n\t};\r\n\r\n\tgetMainLine = this.getMoves;\r\n\r\n\tgetCurPos()\r\n\t{\r\n\t\treturn this.cur;\r\n\t};\r\n\r\n\tgetStartPos()\r\n\t{\r\n\t\treturn this.start;\r\n\t};\r\n\r\n\tisNormalInit()\r\n\t{\r\n\t\tvar posInit = new Position();\r\n\t\treturn ObjUtil.equals( this.start, posInit );\r\n\t};\r\n\r\n\tgetNextMove()\r\n\t{\r\n\t\tvar itmTop = this.stk.Top();\r\n\t\tif ( itmTop )\r\n\t\t{\r\n\t\t\tif ( itmTop.isLineEnd() )\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tvar line = itmTop.getLine();\r\n\t\t\tvar mvsToGo = itmTop.getMovesToGo();\r\n\t\t\treturn line[ mvsToGo ];\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tgetLastMove()\r\n\t{\r\n\t\tif ( this.stk )\r\n\t\t{\r\n\t\t\tvar itmTop = this.stk.Top();\r\n\t\t\tif ( !itmTop || itmTop.isLineStart() )\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tvar line = itmTop.getLine();\r\n\t\t\tif ( line )\r\n\t\t\t{\r\n\t\t\t\tvar mvsToGo = itmTop.getMovesToGo();\r\n\t\t\t\treturn line[ mvsToGo - 1 ];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tgetPreviousMove = this.getLastMove;\r\n\r\n\r\n\tstatic initLine( _start, _line )\r\n\t{\r\n\t\tvar cur = ObjUtil.clone( _start );\r\n\r\n\t\tfor ( var inx = 0, len = _line.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar mv = _line[ inx ];\r\n\t\t\tcur.preCalcCtx( mv );\r\n\r\n\t\t\tif ( mv.hasLines() )\r\n\t\t\t{\r\n\t\t\t\tvar subLines = mv.getSubLines();\r\n\t\t\t\tfor ( var inxLn = 0, lenLines = subLines.length; inxLn < lenLines; ++inxLn )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar lineSub = subLines[ inxLn ];\r\n\t\t\t\t\tGame.initLine( cur, lineSub );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tcur.makeMove( mv );\r\n\t\t\tvar last = inx === _line.length - 1;\r\n\t\t\tcur.postCalcCtx( mv, last );\r\n\t\t}\r\n\t};\r\n\r\n\treset()\r\n\t{\r\n\t\tthis.assign( new Game(), true /*nofire*/ );\r\n\t\tthis.fireOnResetGame(); // e.g. deletes premoves\r\n\t\tthis.fireOnCurPosChanged();\r\n\t\tthis.fireOnChanged();\r\n\t\tthis.fireOnHeaderChanged();\r\n\t};\r\n\r\n\tsetResult( result )\r\n\t{\r\n\t\tthis.hdr.setResult( result );\r\n\t\tthis.fireOnChanged();\r\n\t\tthis.fireOnHeaderChanged();\r\n\t};\r\n\r\n\tgetResult()\r\n\t{\r\n\t\treturn this.hdr.getResult();\r\n\t};\r\n\r\n\tgetCBResult = function()\r\n\t{\r\n\t\treturn this.hdr.getCBResult();\r\n\t}\r\n\r\n\tgetTopItem()\r\n\t{\r\n\t\treturn this.stk.Top();\r\n\t};\r\n\r\n\tgetTopLine()\r\n\t{\r\n\t\tif ( this.stk.Top() )\r\n\t\t\treturn this.stk.Top().getLine();\r\n\t};\r\n\r\n\tgetTopMovesToGo()\r\n\t{\r\n\t\tif ( this.stk.Top() )\r\n\t\t\treturn this.stk.Top().getMovesToGo();\r\n\t};\r\n\r\n\tisLineEnd()\r\n\t{\r\n\t\tif ( this.stk.Top() )\r\n\t\t\treturn this.stk.Top().isLineEnd();\r\n\t\treturn false;\r\n\t};\r\n\r\n\tisOnMainLine()\r\n\t{\r\n\t\treturn this.stk.length === 1;\r\n\t};\r\n\r\n\tisGameStart()\r\n\t{\r\n\t\treturn this.stk.length === 1 && this.stk[ 0 ].isLineStart();\r\n\t};\r\n\r\n\tisGameEnd()\r\n\t{\r\n\t\treturn this.stk.length === 1 && this.stk[ 0 ].isLineEnd();\r\n\t};\r\n\r\n\t// NH2020I Um die Stack Position zu bekommen durchläuft das ganze von der Startposition aus\r\n\t// alle Lines bis zum jeweiligen MoveIndex des LineStack Items und führt\r\n\t// jeweils den Zug aus.\r\n\tgetStackPos( _stk )\r\n\t{\r\n\t\tvar cur = ObjUtil.clone( this.start );\r\n\r\n\t\tfor ( var inx = 0, len = _stk.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar itm = _stk[ inx ];\r\n\r\n\t\t\tvar line = itm.getLine();\r\n\t\t\tvar mvsToGo = itm.getMovesToGo();\r\n\r\n\t\t\tfor ( var inxMv = 0; inxMv < mvsToGo; ++inxMv )\r\n\t\t\t{\r\n\t\t\t\tvar mv = line[ inxMv ];\r\n\t\t\t\tcur.makeMove( mv );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn cur;\r\n\t};\r\n\r\n\tgetLinePos( _line, _mvsToGo )\r\n\t{\r\n\t\tvar stk = Game.getStackForLine( _line, _mvsToGo );\r\n\t\treturn this.getStackPos( stk );\r\n\t};\r\n\r\n\tsetStack( _stkNew )\r\n\t{\r\n\t\tthis.stk = _stkNew;\r\n\t\tif ( this.stk.length > 0 )\r\n\t\t{\r\n\t\t\tthis.mainLine = this.stk[ 0 ].line; //SICHERHEITSHALBER!!!\r\n\t\t}\r\n\r\n\t\tthis.cur = this.getStackPos( this.stk );\r\n\t};\r\n\r\n\tgetSimplePath()\r\n\t{\r\n\t\treturn this.stk.getSimplePath();\r\n\t};\r\n\r\n\tgetHeader()\r\n\t{\r\n\t\treturn this.hdr;\r\n\t};\r\n\r\n\tsetHeader( _hdr )\r\n\t{\r\n\t\tthis.hdr = _hdr;\r\n\t};\r\n\r\n\tgetGameNo()\r\n\t{\r\n\t\treturn this.hdr.nGame;\r\n\t};\r\n\r\n\trequiresPremiumForDownload()\r\n\t{\r\n\t\tvar cnt = 0;\r\n\t\tthis.forAllMoves( function( m )\r\n\t\t{\r\n\t\t\tcnt++;\r\n\t\t} );\r\n\r\n\t\tif ( cnt > 2 * this.getMainLine().length )\r\n\t\t{\r\n\t\t\treturn this.hdr.annotator.length > 5;\t// No \"TA\", no \"NA RC\"\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tselfTest()\r\n\t{\r\n\t\t//\tCBDebug.call( this.stk, this.stk.selfTest );\r\n\t\t//\tCBDebug.call( this.mainLine, this.mainLine.selfTest, this.start, null, 0 );\r\n\t};\r\n\r\n\r\n\t////////////////// Read/Write /////////////////////////////////////////////\r\n\r\n\tgetLineCnt( moveNr )\r\n\t{\r\n\t\treturn this.stk.length; // is this correct?\r\n\t};\r\n\r\n\r\n\r\n\t/// make moves ///////////////////////////////////////\r\n\r\n\r\n\t/// Goto Move //////////////////////////////////////////////////////////////////////\r\n\r\n\tisOnLastMove()\r\n\t{\r\n\t\treturn this.getMoveIndex() === this.mainLine.length;\r\n\t};\r\n\r\n\tgetPlyNum()\r\n\t{\r\n\t\treturn this.getCurPos().getPlyNum();\r\n\t};\r\n\r\n\tgetMoveNo = this.getPlyNum;\r\n\r\n\tgetMoveCount()\r\n\t{\r\n\t\treturn this.mainLine.length;\r\n\t}\r\n\r\n\r\n\t//////// Lines /////////////////////////////////////////////////////////////////\r\n\r\n\r\n\t/*\r\n\t * Move Baggage ist not serialized, just for internal use, like extra animations\r\n\t * can be any object\r\n\t */\r\n\tgetMoveBaggage()\r\n\t{\r\n\t\tif ( this.getLastMove() )\r\n\t\t\treturn this.getLastMove().getBaggage();\r\n\t\telse\r\n\t\t\treturn this.baggage;\r\n\t};\r\n\r\n\tsetMoveBaggage( b )\r\n\t{\r\n\t\tif ( this.getLastMove() )\r\n\t\t{\r\n\t\t\tthis.getLastMove().setBaggage( b );\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.baggage = b;\r\n\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tgetAnno( _type )\r\n\t{\r\n\t\tif ( this.getLastMove() )\r\n\t\t\treturn this.getLastMove().getAnnoItem( _type );\r\n\r\n\t\tif ( this.mainLine.anno )\r\n\t\t{\r\n\t\t\treturn this.mainLine.anno.getItem( _type );\r\n\t\t}\r\n\t};\r\n\r\n\tsetAnno( type, val )\r\n\t{\r\n\t\tif ( this.getLastMove() )\r\n\t\t{\r\n\t\t\tthis.getLastMove().setAnnoItem( type, val );\r\n\t\t\tthis.fireOnChanged();\r\n\t\t}\r\n\t};\r\n\r\n\tsetAnnoBeforeFirstMove( _type, _val, _nofire )\r\n\t{\r\n\t\tif ( !this.mainLine.anno )\r\n\t\t\tthis.mainLine.anno = new Annotation();\r\n\t\tthis.mainLine.anno.setItem( _type, _val );\r\n\t\tif ( !_nofire )\r\n\t\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tgetOrCreateCurrAnno()\r\n\t{\r\n\t\tif ( this.getPreviousMove() )\r\n\t\t{\r\n\t\t\tif ( !this.getPreviousMove().hasAnno() )\r\n\t\t\t{\r\n\t\t\t\tthis.getPreviousMove().setAnno( new Annotation() );\r\n\t\t\t}\r\n\t\t\treturn this.getPreviousMove().getAnno();\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif ( !this.getMoves().hasAnno() )\r\n\t\t\t{\r\n\t\t\t\tthis.getMoves().setAnno( new Annotation() );\r\n\t\t\t}\r\n\t\t\treturn this.getMoves().getAnno();\r\n\t\t}\r\n\t};\r\n\r\n\tupdateFromExtern()\r\n\t{\r\n\t\tthis.fireOnChanged();\r\n\t\tthis.fireOnCurPosChanged(); // arrows and squares were not visible in broadcast\r\n\t};\r\n\r\n\tupdateHeaderFromExtern()\r\n\t{\r\n\t\tthis.fireOnHeaderChanged();\r\n\t};\r\n\r\n\tdeleteAnnosInCurLine( type, nofire )\r\n\t{\r\n\t\tvar curLine = this.getCurLine();\r\n\r\n\t\tfor ( var i = 0; i < curLine.length; i++ )\r\n\t\t{\r\n\t\t\tif ( curLine[ i ] )\r\n\t\t\t{\r\n\t\t\t\tif ( type )\r\n\t\t\t\t{\r\n\t\t\t\t\tcurLine[ i ].deleteAnnoItem( type );\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t\tcurLine[ i ].setAnno( null );\r\n\t\t\t}\r\n\t\t}\r\n\t\tif ( !nofire )\r\n\t\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tdeleteAnno( type, nofire )\r\n\t{\r\n\t\tif ( this.getLastMove() )\r\n\t\t{\r\n\t\t\tthis.getLastMove().deleteAnnoItem( type );\r\n\t\t\tif ( !nofire )\r\n\t\t\t\tthis.fireOnAnnoChanged();\r\n\t\t}\r\n\t};\r\n\r\n\tgetEvaluationProfile()\r\n\t{\r\n\t\tif ( this.mainLine.anno && this.mainLine.anno[ AnnoType.EVAL_PROFILE ] )\r\n\t\t{\r\n\t\t\treturn this.mainLine.anno[ AnnoType.EVAL_PROFILE ];\r\n\t\t}\r\n\r\n\t\tvar curLine = this.getCurLine();\r\n\r\n\t\tif ( curLine.length )\r\n\t\t{\r\n\t\t\tif ( curLine[ 0 ].annos )\r\n\t\t\t\treturn curLine[ 0 ].annos[ AnnoType.EVAL_PROFILE ];\r\n\t\t}\r\n\t};\r\n\r\n\tinitEvaluationProfile( _p )\r\n\t{\r\n\t\tif ( !this.mainLine.anno )\r\n\t\t\tthis.mainLine.anno = new Annotation();\r\n\r\n\t\tvar p = _p || new EvalProfileAnno();\r\n\t\tthis.mainLine.anno[ AnnoType.EVAL_PROFILE ] = p;\r\n\r\n\t\treturn p;\r\n\t};\r\n\r\n\tdeleteEvaluationProfile()\r\n\t{\r\n\t\tif ( this.mainLine.anno )\r\n\t\t\tdelete this.mainLine.anno[ AnnoType.EVAL_PROFILE ];\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tvar notaGen = new NotationGenerator( InvariantLocalization );\r\n\t\tvar strLine = this.hdr.toString();\r\n\t\tstrLine += \"\\r\\n\";\r\n\t\tfor ( var i = 0; i < this.mainLine.length; i++ )\r\n\t\t{\r\n\t\t\tvar strMove = notaGen.getMoveNota( this.mainLine[ i ] );\r\n\t\t\tvar strMoveNum = notaGen.getStrMoveNumInLine( i, this.getStartPos().getPlyNum() );\r\n\t\t\tstrLine += strMoveNum + strMove;\r\n\t\t\tif ( i < this.mainLine.length - 1 )\r\n\t\t\t\tstrLine += \" \";\r\n\t\t}\r\n\r\n\t\tstrLine += \" \" + this.hdr.getCBResult().toString();\r\n\r\n\t\treturn strLine;\r\n\t};\r\n\r\n\tonSync( nVal )\r\n\t{\r\n\t\tLog.Missing();\r\n\t\t// NH2021D\r\n\t\t// if ( glApp.panelMgr && glApp.panelMgr.onSync )\r\n\t\t// \tglApp.panelMgr.onSync( nVal );\r\n\t};\r\n\r\n\tstatic createTestGame()\r\n\t{\r\n\t\tvar gm = new Game();\r\n\r\n\t\t// function getRndName()\r\n\t\t// {\r\n\t\t// \tvar rndName = [\"Adams\", \"Dolmatov\", \"Fischer\", \"Gelfand\", \"Ivkov\", \"Karpov\", \"Lerner\"];\r\n\t\t// \treturn rndName[Math.floor( rndName.length * Math.random() )];\r\n\t\t// }\r\n\r\n\t\t// gm.hdr.white = new PlayerData( getRndName() );\r\n\t\t// gm.hdr.black = new PlayerData( getRndName() );\r\n\r\n\t\treturn gm;\r\n\t};\r\n\r\n\r\n\tdelayChangedEvents( msDelay )\r\n\t{\r\n\t\tthis.delayfireOnCurPosChanged( msDelay );\r\n\t\tthis.delayfireOnChanged( msDelay );\r\n\t\tthis.delayfireOnHeaderChanged( msDelay );\r\n\t\tthis.delayfireOnAnnoChanged( msDelay );\r\n\t}\r\n\r\n\tcontinueChangedEvents()\r\n\t{\r\n\t\tthis.continuefireOnCurPosChanged();\r\n\t\tthis.continuefireOnChanged();\r\n\t\tthis.continuefireOnHeaderChanged();\r\n\t\tthis.continuefireOnAnnoChanged();\r\n\r\n\t}\r\n\r\n\tgetCurLine()\r\n\t{\r\n\t\t// return Game._getCurLine.call( this, false );\r\n\t\treturn this._getCurLine( false );\r\n\t};\r\n\r\n\tgetCurLineCut()\r\n\t{\r\n\t\t//return Game._getCurLine.call( this, true );\r\n\t\treturn this._getCurLine( true );\r\n\t};\r\n\r\n\tgetLineStartMoveNo()\r\n\t{\r\n\t\tvar sum = 0;\r\n\t\tfor ( var i = 0; i < this.stk.length - 1; i++ )\r\n\t\t\tsum += this.stk[ i ].getMovesToGo();\r\n\t\treturn sum;\r\n\t};\r\n\r\n\t_getCurLine( _cut )\r\n\t{\r\n\t\tvar curLine = [];\r\n\t\tfor ( var inx = 0, len = this.stk.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar itmStk = this.stk[ inx ];\r\n\r\n\t\t\tvar line = itmStk.getLine();\r\n\t\t\tvar mvsToGo = itmStk.getMovesToGo();\r\n\r\n\t\t\tvar end = mvsToGo;\r\n\t\t\tif ( !_cut && inx === len - 1 )\r\n\t\t\t\tend = line.length;\r\n\r\n\t\t\tif ( !end )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tcurLine = curLine.concat( line.slice( 0, end ) );\r\n\t\t}\r\n\t\treturn curLine;\r\n\t};\r\n\r\n\tgetCurLineIndex()\r\n\t{\r\n\t\tvar res = 0;\r\n\t\tfor ( var inx = 0, len = this.stk.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar itmStk = this.stk[ inx ];\r\n\t\t\tres += itmStk.getMovesToGo();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tsetCurLineIndex( _inx )\r\n\t{\r\n\t\tvar stkNew = new LineStack();\r\n\t\tfor ( var inx = 0, len = this.stk.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar itmStk = this.stk[ inx ];\r\n\t\t\tvar mvsToGo = itmStk.getMovesToGo();\r\n\r\n\t\t\tif ( inx < len - 1 && mvsToGo < _inx )\r\n\t\t\t{\r\n\t\t\t\tstkNew.push( itmStk );\r\n\t\t\t\t_inx -= mvsToGo;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar line = itmStk.getLine();\r\n\t\t\t\tmvsToGo = _inx;\r\n\r\n\t\t\t\tvar itmNew = new LineStackItem( line, mvsToGo );\r\n\t\t\t\tstkNew.push( itmNew );\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.gotoStack( stkNew );\r\n\t}\r\n\tjump( n )\r\n\t{\r\n\t\tvar nMove = this.getMoveIndex() + n;\r\n\t\tif ( nMove < 1 )\r\n\t\t\tnMove = 1;\r\n\t\tif ( nMove > this.mainLine.length )\r\n\t\t\tnMove = this.mainLine.length;\r\n\t\tthis.gotoIndex( nMove );\r\n\t\tthis.fireOnNavigate();\r\n\t\tthis.fireOnCurPosChanged();\r\n\t};\r\n\r\n\tgotoFirst()\r\n\t{\r\n\t\tthis.gotoIndex( 0 );\r\n\t};\r\n\r\n\tgotoLast()\r\n\t{\r\n\t\tthis.gotoIndex( this.mainLine.length );\r\n\t};\r\n\r\n\tgotoIndex( _inxMv, noFire )\r\n\t{\r\n\t\tvar stkNew = Game.getStackForIndex( this.mainLine, _inxMv );\r\n\t\tthis.gotoStack( stkNew, noFire );\r\n\t};\r\n\r\n\tgotoLine( _line, _mvsToGo )\r\n\t{\r\n\t\tvar stkNew = Game.getStackForLine( _line, _mvsToGo );\r\n\r\n\t\tthis.gotoStack( stkNew );\r\n\t};\r\n\r\n\tgotoSimplePath( _arrSimplePath )\r\n\t{\r\n\t\t//\tthis.fireOnNavigate();\r\n\r\n\t\tvar stkNew = Game._getStackForSimplePath.call( this, this.mainLine, _arrSimplePath );\r\n\r\n\t\tthis.gotoStack( stkNew );\r\n\t};\r\n\r\n\t// NH2020 Added this to board position change animations possible\r\n\tgoToSimplePathGenerateAnimationData (simplePath)\r\n\t{\r\n\t\tthis.stk = Game._getStackForSimplePath.call( this, this.mainLine, simplePath );\r\n\r\n\t\tif ( this.stk.length > 0 )\r\n\t\t{\r\n\t\t\tthis.mainLine = this.stk[ 0 ].line; //SICHERHEITSHALBER!!!\r\n\t\t}\r\n\r\n\t\tthis.cur = this.getStackPos( this.stk );\r\n\r\n\t\tthis.fireOnCurPosChanged();\r\n\t\tthis.fireOnNavigate();\r\n\t};\r\n\r\n\ttriggerOnClickInNotation()\r\n\t{\r\n\t\tthis.fireOnClickInNotation();\r\n\t};\r\n\r\n\t// NH2021 Original Version\r\n\tgotoNext()\r\n\t{\r\n\t\tif ( this.isLineEnd() )\r\n\t\t\treturn;\r\n\r\n\t\tvar mv = this.getNextMove();\r\n\t\tthis.cur.makeMove( mv );\r\n\r\n\t\tvar itmTop = this.getTopItem();\r\n\t\tif ( itmTop )\r\n\t\t\titmTop.incMovesToGo();\r\n\r\n\t\tthis.fireOnCurPosChanged();\r\n\t\tthis.fireOnNavigate();\r\n\t};\r\n\r\n\tgotoPrev( noFire )\r\n\t{\r\n\t\tif ( this.isGameStart() )\r\n\t\t\treturn;\r\n\t\tvar stk = /*ObjUtil.clone*/( this.stk ); //WIESO WURDE DER GESAMTE STACK GEKLONNT??? Führte zu einem Bug\r\n\t\t//Zug zurück...\r\n\t\tstk.gotoPrev();\r\n\r\n\t\tthis.gotoStack( stk, noFire );\r\n\t};\r\n\r\n\t// HACK, MW 6/15, für TrainingPlayingMode.js\r\n\t// TODO ST <-> MW Generell Verhalten von Clone diskutieren. -> storeOnce/restoreOnce\r\n\tgotoPrevClone()\r\n\t{\r\n\t\tif ( this.isGameStart() )\r\n\t\t\treturn;\r\n\t\tvar stk = ObjUtil.clone( this.stk );\r\n\t\tstk.gotoPrev();\r\n\t\tthis.gotoStack( stk );\r\n\t};\r\n\r\n\tgotoStart()\r\n\t{\r\n\t\tthis.gotoIndex( 0 );\r\n\t\tthis.fireOnCurPosChanged(); // gotoIndex fires also in gotoStack\r\n\t\tthis.fireOnNavigate();\r\n\t};\r\n\r\n\tgotoEnd()\r\n\t{\r\n\t\tthis.gotoIndex( this.mainLine.length );\r\n\t\tthis.fireOnCurPosChanged();\r\n\t\tthis.fireOnNavigate();\r\n\t};\r\n\r\n\tgotoStack( _stkNew, noFire )\r\n\t{\r\n\t\tthis.setStack( _stkNew );\r\n\r\n\t\tif ( !noFire )\r\n\t\t{\r\n\t\t\tthis.fireOnCurPosChanged();\r\n\t\t\tthis.fireOnNavigate();\r\n\t\t}\r\n\t};\r\n\r\n\tgotoMove( _mv, _fireOnMove )\r\n\t{\r\n\t\tvar mvNext = this.getNextMove();\r\n\t\tif ( !mvNext )\r\n\t\t\treturn false;\r\n\t\tif ( _mv.equals( mvNext ) )\r\n\t\t{\r\n\t\t\t_mv.mvd = mvNext.mvd;\t// complete attributes here because this is reached via move entry and can leave a move incomplete.\r\n\t\t\tthis.gotoNext();\r\n\t\t\tif ( _fireOnMove )\r\n\t\t\t\tthis.fireOnMove();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t//Untervarianten?\r\n\t\tvar line = mvNext.findLine( _mv );\r\n\t\tif ( line )\r\n\t\t{\r\n\t\t\tthis.gotoLine( line, 1 );\r\n\t\t\tif ( _fireOnMove )\r\n\t\t\t\tthis.fireOnMove();\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tbeginLineNextMove( nLine )\r\n\t{\r\n\t\tvar mvNext = this.getNextMove();\r\n\t\tif ( !mvNext )\r\n\t\t\treturn false;\r\n\t\tif ( !mvNext.hasLines() )\r\n\t\t\treturn false;\r\n\t\tif ( nLine >= mvNext.getSubLines().length )\r\n\t\t\treturn false;\r\n\t\tvar firstMoveOfLine = mvNext.getSubLines()[ nLine ][ 0 ];\r\n\t\tif ( this.gotoMove( firstMoveOfLine ) )\r\n\t\t\treturn firstMoveOfLine;\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\tendLine()\r\n\t{\r\n\t\tif ( this.stk.length > 1 )\r\n\t\t{\r\n\t\t\tvar itm = this.stk[ this.stk.length - 2 ];\r\n\t\t\tvar line = itm.getLine();\r\n\t\t\tthis.gotoLine( line, itm.mvsToGo );\r\n\r\n\t\t\treturn this.getMoveIndex();\r\n\t\t}\r\n\t};\r\n\r\n\tgetMoveOffs()\r\n\t{\r\n\t\treturn this.cur.numPly - this.start.numPly;\r\n\t};\r\n\r\n\tgetMoveIndex()\r\n\t{\r\n\t\tvar inxRes = 0;\r\n\t\tif ( this.stk.length > 0 )\r\n\t\t{\r\n\t\t\tvar itmTop = this.stk[ this.stk.length - 1 ];\r\n\r\n\t\t\tvar linePrev = itmTop.getLine();\r\n\t\t\tinxRes = itmTop.getMovesToGo();\r\n\r\n\t\t\tfor ( var inxItm = this.stk.length - 2; inxItm >= 0; --inxItm )\r\n\t\t\t{\r\n\t\t\t\tvar itmCur = this.stk[ inxItm ];\r\n\t\t\t\tvar lineCur = itmCur.getLine();\r\n\r\n\t\t\t\tvar inxParMv = linePrev.getParentMoveIndex();\r\n\t\t\t\tvar mvLined = lineCur[ inxParMv ];\r\n\r\n\t\t\t\tvar inxPrevLine = mvLined.indexOfLine( linePrev );\r\n\r\n\t\t\t\t// CBDebug.assert( inxPrevLine >= 0, \"inxPrevLine >= 0\" );\r\n\r\n\t\t\t\tfor ( var inxLn = 0; inxLn < inxPrevLine; ++inxLn )\r\n\t\t\t\t\tinxRes += mvLined.getLine( inxLn ).getTreeMoveCount();\r\n\r\n\t\t\t\tfor ( var inxMv = inxParMv + 1, lenLine = lineCur.length; inxMv < lenLine; ++inxMv )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar mv = lineCur[ inxMv ];\r\n\t\t\t\t\tif ( !mv.hasLines() )\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tfor ( let inxLn = 0, lenLines = mv.getSubLinesCount(); inxLn < lenLines; ++inxLn )\r\n\t\t\t\t\t\tinxRes += mv.getLine( inxLn ).getTreeMoveCount();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinxRes += lineCur.length;\r\n\r\n\t\t\t\tlinePrev = lineCur;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn inxRes;\r\n\t};\r\n\r\n\tstatic getStackForLine( _line, _mvsToGo )\r\n\t{\r\n\t\tvar arrTmp = [];\r\n\t\tfor ( ; _line != null;\r\n\t\t\t_mvsToGo = _line.getParentMoveIndex(),\r\n\t\t\t_line = _line.getParentLine()\r\n\t\t)\r\n\t\t{\r\n\t\t\tlet itm = new LineStackItem( _line, _mvsToGo );\r\n\t\t\tarrTmp.push( itm );\r\n\t\t}\r\n\r\n\t\tvar stkNew = new LineStack();\r\n\t\twhile ( arrTmp.length > 0 )\r\n\t\t{\r\n\t\t\tlet itm = arrTmp.pop();\r\n\t\t\tstkNew.push( itm );\r\n\t\t}\r\n\r\n\t\treturn stkNew;\r\n\t};\r\n\r\n\tstatic _getStackForSimplePath( _mainLine, _arrPath )\r\n\t{\r\n\t\tvar stkNew = new LineStack();\r\n\t\tvar curLine = _mainLine;\r\n\t\tfor ( var inx = 0, len = _arrPath.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\t// var line = _mainLine;\r\n\t\t\tvar itmSimple = _arrPath[ inx ];\r\n\t\t\t// console.log(\"Item Simple: \" + itmSimple.inxLine + \", \" + itmSimple.mvsToGo);\r\n\r\n\t\t\tvar itm = new LineStackItem( curLine, itmSimple.mvsToGo );\r\n\r\n\t\t\tstkNew.push( itm );\r\n\r\n\t\t\tif ( inx < len - 1 )\r\n\t\t\t{\r\n\t\t\t\t// console.log(\"Index Line: \" + itmSimple.inxLine);\r\n\t\t\t\tcurLine = curLine[ itmSimple.mvsToGo ].getLine( itmSimple.inxLine );\r\n\t\t\t\t// console.log(\"Cur Line: \" + curLine);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn stkNew;\r\n\t};\r\n\r\n\tstatic getStackForIndex( _mainLine, _inxMv )\r\n\t{\r\n\t\tvar stt = { complete: false, inxMv: _inxMv };\r\n\t\tvar stkNew = new LineStack();\r\n\r\n\t\tGame._getStackForIndex.call( this, _mainLine, stt, stkNew );\r\n\r\n\t\treturn stkNew;\r\n\t};\r\n\r\n\tstatic _getStackForIndex( _line, _stt, _stk )\r\n\t{\r\n\t\tvar len = _line.length;\r\n\t\tif ( _stt.inxMv <= len )\r\n\t\t{\r\n\t\t\t_stk.push( new LineStackItem( _line, _stt.inxMv ) );\r\n\t\t\t_stt.complete = true;\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t_stt.inxMv -= len;\r\n\r\n\t\tfor ( var inxMv = _line.length - 1; inxMv >= 0; --inxMv )\r\n\t\t{\r\n\t\t\tvar mv = _line[ inxMv ];\r\n\t\t\tif ( !mv.hasLines() )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t_stk.push( new LineStackItem( _line, inxMv ) );\r\n\r\n\t\t\tfor ( var inxLine = 0, lenLines = mv.getSubLinesCount(); inxLine < lenLines; ++inxLine )\r\n\t\t\t{\r\n\t\t\t\tvar lineSub = mv.getLine( inxLine );\r\n\r\n\t\t\t\tGame._getStackForIndex( lineSub, _stt, _stk );\r\n\r\n\t\t\t\tif ( _stt.complete )\r\n\t\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\t_stk.pop();\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpromoteLine()\r\n\t{\r\n\t\tif ( this.isOnMainLine() )\r\n\t\t\treturn false;\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tthis.stk.promoteLine();\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tthis.fireOnChanged();\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tstatic _shiftLine( _inc )\r\n\t{\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tif ( this.isOnMainLine() )\r\n\t\t\treturn;\r\n\r\n\t\tvar lineTop = this.getTopLine();\r\n\t\tvar mvParent = lineTop.getParentMove();\r\n\r\n\t\tvar cntLines = mvParent.getSubLinesCount();\r\n\r\n\t\tif ( !cntLines || cntLines === 1 )\r\n\t\t\treturn;\r\n\r\n\t\tvar inxCur = mvParent.indexOfLine( lineTop );\r\n\t\tvar inxShift = inxCur + _inc;\r\n\r\n\t\tif ( inxShift < 0 || inxShift >= cntLines )\r\n\t\t\treturn;\r\n\r\n\t\tmvParent.swapLines( inxCur, inxShift );\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tupLine()\r\n\t{\r\n\t\tGame._shiftLine.call( this, -1 );\r\n\t};\r\n\r\n\tdownLine()\r\n\t{\r\n\t\tGame._shiftLine.call( this, 1 );\r\n\t};\r\n\r\n\tdeleteLine()\r\n\t{\r\n\t\tif ( this.isOnMainLine() )\r\n\t\t\treturn;\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tvar stkNew = this.stk.shallowClone();\r\n\t\tvar lineTop = this.getTopLine();\r\n\t\tvar mvParent = lineTop.getParentMove();\r\n\t\tmvParent.removeLine( lineTop );\r\n\r\n\t\tstkNew.pop();\r\n\r\n\t\tthis.setStack( stkNew );\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tthis.fireOnCurPosChanged();\r\n\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tdeleteRemaining( nofire )\r\n\t{\r\n\t\tthis.stk.deleteRemaining();\r\n\r\n\t\tif ( !nofire )\r\n\t\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tdeletePrevious()\r\n\t{\r\n\t\tif ( this.getCurLine().length === 0 )\r\n\t\t\treturn;\r\n\r\n\t\tvar stk = this.stk.shallowClone();\r\n\t\t//Zug zurück...\r\n\t\tstk.gotoPrev();\r\n\r\n\t\tvar start = this.getStackPos( stk );\r\n\t\tthis.mainLine = this.stk.deletePrevious();\r\n\t\tthis.start = start;\r\n\r\n\t\tthis.fireOnChanged();\r\n\t};\r\n\r\n\tunAnnotate()\r\n\t{\r\n\t\t//Alle Linien weg!!!\r\n\t\tthis.mainLine.unAnnotate();\r\n\r\n\t\t//Klingt kommisch - ist aber so. Fritz jumpt zum Anfang.\r\n\t\tvar stk = new LineStack( this.mainLine, 0 );\r\n\r\n\t\tthis.setStack( stk );\r\n\r\n\t\tthis.fireOnChanged();\r\n\t\tthis.fireOnCurPosChanged();\r\n\t};\r\n\r\n\tstartLine()\r\n\t{\r\n\t\tthis.gotoPrev();\r\n\t};\r\n\r\n\tforAllMoves( fn )\r\n\t{\r\n\t\tthis.mainLine.forAllMoves( fn );\r\n\t};\r\n\r\n\tstatic CMP( _mv1, _mv2 )\r\n\t{\r\n\t\treturn _mv1.equals( _mv2 );\r\n\t}\r\n\r\n\tmerge( _gm, _noFire )\r\n\t{\r\n\t\tvar posStart = _gm.getStartPos();\r\n\r\n\t\tvar stk = this._findPos( posStart );\r\n\r\n\t\tif ( !stk ) //Wir haben nix gemeinsam! Wir müssen uns trennen!\r\n\t\t\treturn this.assign( _gm, _noFire );\r\n\r\n\t\t//Nun solange der Variante folgen, bis die Züge total gleich sind.\r\n\t\tvar itm = stk.Top();\r\n\r\n\t\tvar lnMe = itm.getLine();\r\n\t\tvar inxMeStart = itm.getMovesToGo();\r\n\r\n\t\tvar inxSrc = 0;\r\n\r\n\t\tvar lnSrc = _gm.mainLine;\r\n\r\n\t\tvar inxMe = inxMeStart;\r\n\r\n\t\t//ZUERST PROLO MERGING!\r\n\t\tfor ( ; inxMe < lnMe.length && inxSrc < lnSrc.length; ++inxMe, ++inxSrc )\r\n\t\t{\r\n\t\t\tvar mvMe = lnMe[ inxMe ];\r\n\t\t\tvar mvSrc = lnSrc[ inxSrc ];\r\n\r\n\t\t\tif ( !Game.CMP( mvMe, mvSrc ) )\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\t//Die SRC-Linie ist ausgeschöpft.\r\n\t\tif ( inxSrc >= lnSrc.length )\r\n\t\t\treturn;\r\n\r\n\t\tvar lnDst = null;\r\n\t\tif ( inxMe >= lnMe.length )\r\n\t\t{\r\n\t\t\t//Am Ende anhängen...\r\n\t\t\tlnDst = lnMe;\r\n\t\t} else\r\n\t\t{\r\n\t\t\tvar mvLast = lnMe[ inxMe ];\r\n\t\t\t//Neune Variante!!!\r\n\t\t\tvar lnNew = new MoveLine( lnMe, inxMe );\r\n\t\t\tmvLast.addLine( lnNew );\r\n\r\n\t\t\tlnDst = lnNew;\r\n\t\t}\r\n\r\n\t\tfor ( ; inxSrc < lnSrc.length; ++inxSrc )\r\n\t\t{\r\n\t\t\tvar mv = lnSrc[ inxSrc ];\r\n\t\t\tlnDst.push( mv );\r\n\t\t}\r\n\r\n\t\tlnDst.setSubParentData( false );\r\n\r\n\t\tif ( !_noFire )\r\n\t\t{\r\n\t\t\tthis.fireOnChanged();\r\n\t\t}\r\n\t};\r\n\r\n\t// warning: This does not work with annotated games (infinite recursion because of moveline.parent)\r\n\t// -> Stanislav\r\n\t// TM: We can use the re/storeOnce functions in Tactics App as we are stripping the game of its annotations.\r\n\r\n\tstoreOnce()\r\n\t{\r\n\t\tthis.storeState = {\r\n\t\t\tstart: ObjUtil.clone( this.start ),\r\n\t\t\tcur: ObjUtil.clone( this.cur ),\r\n\t\t\tmainLine: ObjUtil.clone( this.mainLine ),\r\n\t\t\tstk: ObjUtil.clone( this.stk )\r\n\t\t};\r\n\t};\r\n\r\n\trestoreOnce()\r\n\t{\r\n\t\tif ( this.storeState )\r\n\t\t{\r\n\t\t\tthis.start = ObjUtil.clone( this.storeState.start );\r\n\t\t\tthis.cur = ObjUtil.clone( this.storeState.cur );\r\n\t\t\tthis.mainLine = ObjUtil.clone( this.storeState.mainLine );\r\n\t\t\tthis.stk = ObjUtil.clone( this.storeState.stk );\r\n\t\t}\r\n\t};\r\n\r\n\t// unannotated: \r\n\tstoreOnce2()\r\n\t{\r\n\t\tthis.storeState = {\r\n\t\t\tstart: ObjUtil.clone2( this.start ),\r\n\t\t\tcur: ObjUtil.clone2( this.cur ),\r\n\t\t\tmainLine: ObjUtil.clone2( this.mainLine ),\r\n\t\t\tstk: ObjUtil.clone2( this.stk )\r\n\t\t};\r\n\t};\r\n\r\n\trestoreOnce2()\r\n\t{\r\n\t\tif ( this.storeState )\r\n\t\t{\r\n\t\t\tthis.start = ObjUtil.clone2( this.storeState.start );\r\n\t\t\tthis.cur = ObjUtil.clone2( this.storeState.cur );\r\n\t\t\tthis.mainLine = ObjUtil.clone2( this.storeState.mainLine );\r\n\t\t\tthis.stk = ObjUtil.clone2( this.storeState.stk );\r\n\t\t}\r\n\t};\r\n\r\n\tbeginLine( mv )\r\n\t{\r\n\t\tGame._makeMoveNewLine.call( this, mv );\r\n\t};\r\n\r\n\tmakeMove( _mv, _mvType )\r\n\t{\r\n\t\t// what about variation numbers?\r\n\r\n\t\tif ( _mvType >= 0 && _mvType <= 63 )\r\n\t\t{\r\n\t\t\t_mvType = MoveEnterType.NEWLINE;\r\n\t\t}\r\n\r\n\t\tif ( this.gotoMove( _mv ) )\r\n\t\t\treturn true;\r\n\r\n\t\tvar undo = null;\r\n\r\n\t\tvar mvType = _mvType & MoveEnterType.TYPE_MASK;\r\n\t\tvar inxLine = _mvType & MoveEnterType.LINE_MASK;\r\n\r\n\t\tswitch ( mvType )\r\n\t\t{\r\n\t\t\tcase MoveEnterType.CANCEL & MoveEnterType.TYPE_MASK:\r\n\t\t\tcase MoveEnterType.CANCEL:\r\n\t\t\t\tbreak;\r\n\t\t\tcase MoveEnterType.NEWMAINLINE:\r\n\t\t\t\tundo = Game._makeMoveNewMainLine.call( this, _mv );\r\n\t\t\t\tbreak;\r\n\t\t\tcase MoveEnterType.NEWLINE:\r\n\t\t\t\tundo = Game._makeMoveNewLine.call( this, _mv );\r\n\t\t\t\tbreak;\r\n\t\t\tcase MoveEnterType.INSERT_MAIN:\r\n\t\t\t\tundo = Game._makeMoveInsertMove.call( this, _mv );\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\tcase MoveEnterType.OVERWRITE_MAIN:\r\n\t\t\t\tundo = Game._makeMoveOverwriteMain.call( this, _mv );\r\n\t\t\t\tbreak;\r\n\t\t\tcase MoveEnterType.OVERWRITE_LINE:\r\n\t\t\t\tundo = Game._makeMoveOverwriteLine.call( this, _mv, inxLine );\r\n\t\t\t\tbreak;\r\n\t\t\tcase MoveEnterType.INSERT_LINE:\r\n\t\t\t\tundo = Game._makeMoveInsertLine.call( this, _mv, inxLine );\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif ( undo )\r\n\t\t{\r\n\t\t\t_mv.undo = undo;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tLog.Exception( \"No Undo\", \"Type=\" + mvType + \", mv=\" + _mv );\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tstatic _makeMoveSetCtx( _mv )\r\n\t{\r\n\t\tthis.cur.preCalcCtx( _mv );\r\n\t\tvar undo = this.cur.makeMove( _mv );\r\n\t\tthis.cur.postCalcCtx( _mv, true );\r\n\r\n\t\treturn undo;\r\n\t};\r\n\r\n\tstatic _makeMoveOverwriteMain( _mv )\r\n\t{\r\n\t\treturn Game._makeMoveInMain.call( this, _mv, function( _ln, _mvsToGo )\r\n\t\t{\r\n\t\t\t_ln.length = _mvsToGo + 1;\r\n\t\t} );\r\n\t};\r\n\r\n\t//private\r\n\tstatic _makeMoveInMain( _mv, _fnCut )\r\n\t{\r\n\t\tvar undo = Game._makeMoveSetCtx.call( this, _mv );\r\n\r\n\t\tif ( !undo )\r\n\t\t\tLog.Exception( \"MoveInMain, no undo\", _mv );\r\n\r\n\t\tvar itmTop = this.stk.Top();\r\n\r\n\t\tif ( itmTop )\r\n\t\t{\r\n\t\t\tvar line = itmTop.getLine();\r\n\t\t\tvar mvsToGo = itmTop.getMovesToGo();\r\n\r\n\t\t\tline[ mvsToGo ] = _mv;\r\n\t\t\t_fnCut( line, mvsToGo );\r\n\r\n\t\t\titmTop.setMovesToGo( mvsToGo + 1 );\r\n\r\n\t\t\t// need to check remaining moves? \r\n\t\t}\r\n\t\t_mv.undo = undo;\r\n\t\tthis.fireOnMove( _mv );\r\n\t\tthis.fireOnCurPosChanged();\t// overwrites board attributes in setBoard\r\n\r\n\t\treturn undo;\r\n\t};\r\n\r\n\tstatic _makeMoveInsertMove( _mv )\r\n\t{\r\n\r\n\t\treturn Game._makeMoveInMain.call( this, _mv, function( _ln, _mvsToGo )\r\n\t\t{\r\n\t\t\tGame._cutIllegalMoves( this.cur, _ln, _mvsToGo + 1 );\r\n\t\t}.bind( this ) );\r\n\t};\r\n\r\n\r\n\t//private\r\n\tstatic _makeMoveInLine( _mv, _line, _fnCut )\r\n\t{\r\n\t\tvar undo = Game._makeMoveSetCtx.call( this, _mv );\r\n\r\n\t\tvar itmTop = this.stk.Top();\r\n\t\tvar mvsToGo = itmTop.getMovesToGo();\r\n\t\tvar line = itmTop.getLine();\r\n\r\n\t\tvar mvNext = line[ mvsToGo ];\r\n\r\n\t\tvar lineToCut = mvNext.getLine( _line );\r\n\t\tlineToCut[ 0 ] = _mv;\r\n\r\n\t\t_fnCut( lineToCut );\r\n\r\n\t\tvar itmNew = new LineStackItem( lineToCut, 1 );\r\n\r\n\t\tthis.stk.push( itmNew );\r\n\r\n\r\n\t\tthis.fireOnMove();\r\n\t\tthis.fireOnCurPosChanged();\r\n\r\n\t\treturn undo;\r\n\t};\r\n\r\n\tstatic _makeMoveOverwriteLine( _mv, _line )\r\n\t{\r\n\t\treturn Game._makeMoveInLine.call( this, _mv, _line, function( _ln ) { _ln.length = 1; } );\r\n\t};\r\n\r\n\tstatic _makeMoveInsertLine( _mv, _line )\r\n\t{\r\n\t\tvar fnCut = function( _ln )\r\n\t\t{\r\n\t\t\tGame._cutIllegalMoves( this.cur, _ln, 1 );\r\n\t\t}.bind( this );\r\n\r\n\t\treturn Game._makeMoveInLine.call( this, _mv, _line, fnCut );\r\n\t};\r\n\r\n\tstatic _makeMoveNewLine( _mv )\r\n\t{\r\n\t\tvar undo = Game._makeMoveSetCtx.call( this, _mv );\r\n\r\n\t\t// This.stk == LineStack. Top returns last Element of Array (Wohl ein LineStackItem?)\r\n\t\tvar itmTop = this.stk.Top();\r\n\t\t\r\n\t\t// Log.Log(\"Item top: \" + itmTop);\r\n\r\n\t\tif ( !itmTop )\t// this happens, strange\r\n\t\t\treturn;\r\n\r\n\t\tvar line = itmTop.getLine();\r\n\t\tvar mvsToGo = itmTop.getMovesToGo();\r\n\r\n\t\t// NH2020 Wenn Es noch mehr Züge in der Line gibt\r\n\t\tif ( mvsToGo < line.length )\r\n\t\t{\r\n\t\t\t// Log.Log(\"There are moves to go.\");\r\n\r\n\t\t\tvar mvNext = line[ mvsToGo ];\r\n\t\t\tvar lineNew = mvNext.newLine( line, mvsToGo );\r\n\r\n\t\t\tvar itmNew = new LineStackItem( lineNew, 0 );\r\n\t\t\titmNew.pushMove( _mv );\r\n\r\n\t\t\tthis.stk.push( itmNew );\r\n\t\t}\r\n\t\t// NH2020 Wenn es keine Züge mehr in der Line gibt: Neuen Zug hinzufügen.\r\n\t\telse\r\n\t\t{\r\n\t\t\t// Log.Log(\"Create New Move\");\r\n\t\t\titmTop.pushMove( _mv );\r\n\t\t}\r\n\t\t// Log.Log(\"Fire On Move!\");\r\n\t\tthis.fireOnMove();\r\n\t\tthis.fireOnCurPosChanged();\r\n\r\n\t\treturn undo;\r\n\t};\r\n\r\n\tstatic _makeMoveNewMainLine( _mv )\r\n\t{\r\n\t\tvar undo = Game._makeMoveNewLine.call( this, _mv );\r\n\t\tthis.promoteLine();\r\n\t\treturn undo;\r\n\t};\r\n\r\n\t//private\r\n\tstatic _cutIllegalMoves( _posStart, _line, _inxStart )\r\n\t{\r\n\t\t_inxStart = _inxStart || 0;\r\n\r\n\t\tvar pos = ObjUtil.clone( _posStart );\r\n\t\tvar inxMv = _inxStart;\r\n\r\n\t\tfor ( ; inxMv < _line.length; ++inxMv )\r\n\t\t{\r\n\t\t\tvar mvToCheck = _line[ inxMv ];\r\n\r\n\t\t\tif ( !pos.isLegalMove( mvToCheck ) )\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tif ( mvToCheck.hasLines() )\r\n\t\t\t{\r\n\t\t\t\tvar cnt = mvToCheck.getSubLinesCount();\r\n\t\t\t\tfor ( var inx = cnt - 1; inx >= 0; --inx )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar line = mvToCheck.getLine( inx );\r\n\r\n\t\t\t\t\tGame._cutIllegalMoves( pos, line );\r\n\r\n\t\t\t\t\tif ( line.length === 0 )\r\n\t\t\t\t\t\tmvToCheck.removeLine( inx );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.makeMove( mvToCheck );\r\n\t\t}\r\n\t\t_line.length = inxMv;\r\n\t};\r\n\r\n\tfromBuf64( str64 )\r\n\t{\r\n\t\tvar buf = new DataBuffer();\r\n\t\tbuf.constructFromBase64( str64 );\r\n\r\n\t\tvar game = new Game();\r\n\t\tvar hdr = new GameHeader();\r\n\t\thdr.compactFromDataBuf( buf );\r\n\t\t/*var gameType = */ buf.readInt32();\r\n\t\tgame.readGameOnly2( buf );\r\n\t\tgame.setHeader( hdr );\r\n\t\tthis.assign( game );\r\n\t};\r\n\r\n\twrite( _buf )\r\n\t{\r\n\t\tvar inxMv = this.getMoveIndex();\r\n\t\t_buf.writeInt( inxMv );\r\n\r\n\t\tvar version = 0;\r\n\t\t_buf.writeInt( version );\r\n\r\n\t\tthis.hdr.write( _buf );\r\n\r\n\t\tGame._writeGame.call( this, _buf );\r\n\t};\r\n\r\n\tstatic _writeStartPos( _buf )\r\n\t{\r\n\t\tvar init = new Position();\r\n\t\tvar normalInit = ObjUtil.equals( this.start, init );\r\n\r\n\t\t_buf.writeBool( normalInit );\r\n\t\tif ( !normalInit )\r\n\t\t{\r\n\t\t\tthis.start.write( _buf );\r\n\t\t\t_buf.writeShort( 0 );\r\n\t\t\t_buf.writeShort( this.start.getMoveNum() );\r\n\r\n\t\t\t_buf.writeBool( normalInit );\r\n\t\t}\r\n\t};\r\n\r\n\tstatic _writeMoves( _buf )\r\n\t{\r\n\t\tthis.mainLine.write( _buf );\r\n\t};\r\n\r\n\tstatic _writeMoves2( _buf )\r\n\t{\r\n\t\tthis.mainLine.write2( _buf );\r\n\t};\r\n\r\n\tstatic _readMoves( _buf )\r\n\t{\r\n\t\tthis.mainLine.read( _buf );\r\n\t};\r\n\r\n\tstatic _readMoves2( _buf )\r\n\t{\r\n\t\tthis.mainLine.read2( _buf );\r\n\t};\r\n\r\n\tread( _buf )\r\n\t{\r\n\t\tvar inxMv = _buf.readInt();\r\n\r\n\t\t/*var version = */_buf.readInt();\r\n\r\n\t\tthis.hdr.read( _buf );\r\n\r\n\t\tGame._readGame.call( this, _buf );\r\n\r\n\t\tthis.initPost();\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tthis.fireOnChanged();\r\n\r\n\t\tthis.gotoIndex( inxMv );\r\n\t};\r\n\r\n\tread2( _buf )\r\n\t{\r\n\t\t// Auskommentiert von MW, da OnlineDB nicht mehr ging.\r\n\r\n\t\t//var inxMv = _buf.readInt();\t\r\n\r\n\t\t//var version = _buf.readInt();\r\n\r\n\t\tvar ret = false;\r\n\t\tif ( this.hdr.read( _buf ) )\r\n\t\t{\r\n\t\t\tGame._readGame2.call( this, _buf );\r\n\t\t\tret = true;\r\n\t\t}\r\n\r\n\t\tthis.initPost();\r\n\r\n\t\treturn ret;\r\n\r\n\t\t//CBDebug.call(this, this.selfTest);\r\n\r\n\t\t//this.fireOnChanged();\r\n\r\n\t\t//this.gotoIndex(inxMv);\r\n\t};\r\n\r\n\t// jb: read3 ist notwendig fur live stream\r\n\tread3( _buf )\r\n\t{\r\n\t\tvar inxMv = _buf.readInt();\r\n\r\n\t /*var version = */ _buf.readInt();\r\n\r\n\t\tthis.hdr.read( _buf );\r\n\r\n\t\tGame._readGame2.call( this, _buf );\r\n\r\n\t\t_buf.beginSizedWrite();\t// see void CBGame::WriteToDataBuffer2\r\n\t\t_buf.endSizedWrite();\r\n\r\n\t\tthis.initPost();\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tthis.fireOnChanged();\r\n\t\tthis.fireOnHeaderChanged();\r\n\r\n\t\tthis.gotoIndex( inxMv );\r\n\t};\r\n\r\n\t// used in CloudManager because of compact header\r\n\treadGameOnly2( _buf )\r\n\t{\r\n\t\tGame._readGame2.call( this, _buf );\r\n\t\tthis.initPost();\r\n\t};\r\n\r\n\twriteGameOnly2( _buf )\r\n\t{\r\n\t\tGame._writeGame2.call( this, _buf );\r\n\t};\r\n\r\n\r\n\tstatic _readStartPos( _buf )\r\n\t{\r\n\t\tvar normalInit = _buf.readBool();\r\n\t\tif ( !normalInit )\r\n\t\t{\r\n\t\t\tthis.start.read( _buf );\r\n\t\t\t_buf.readShort();\r\n\t\t\tvar numMv = _buf.readShort();\r\n\r\n\t\t\tthis.start.setMoveNum( numMv );\r\n\r\n\t\t\tnormalInit = _buf.readBool();\r\n\r\n\t\t\tif ( normalInit )\r\n\t\t\t\tthis.start = new Position();\r\n\t\t}\r\n\t};\r\n\r\n\tstatic _writeGame( _buf )\r\n\t{\r\n\t\tGame._writeStartPos.call( this, _buf );\r\n\r\n\t\tvar anno = new Annotation();\r\n\t\tanno.write( _buf );\r\n\r\n\t\tGame._writeMoves.call( this, _buf );\r\n\r\n\t\t_buf.beginSizedWrite();\r\n\t\t_buf.endSizedWrite();\r\n\t};\r\n\r\n\tstatic _writeGame2( _buf )\r\n\t{\r\n\t\tGame._writeStartPos.call( this, _buf );\r\n\r\n\t\t//var anno = new Annotation();\r\n\t\t//anno.write( _buf );\r\n\t\t_buf.writeUint8( 0 );\r\n\r\n\t\tGame._writeMoves2.call( this, _buf );\r\n\t};\r\n\r\n\tstatic _readGame( _buf )\r\n\t{\r\n\t\tGame._readStartPos.call( this, _buf );\r\n\t\t//start anno...\r\n\t\tvar anno = new Annotation();\r\n\t\tanno.read( _buf );\r\n\t\t//\t\tAnnotation.readFactory( _buf );\r\n\t\tGame._readMoves.call( this, _buf );\r\n\r\n\t\tif ( !anno.empty() )\r\n\t\t{\r\n\t\t\tthis.mainLine.setAnno( anno );\r\n\t\t}\r\n\t\t_buf.beginSizedRead();\r\n\t\t_buf.endSizedRead();\r\n\t};\r\n\r\n\tstatic _readGame2( _buf )\r\n\t{\r\n\t\tGame._readStartPos.call( this, _buf );\r\n\t\t//start anno...\r\n\t\tvar anno = new Annotation();\r\n\t\tanno.read2( _buf );\r\n\t\t//\t\tAnnotation.readFactory( _buf );\r\n\t\tGame._readMoves2.call( this, _buf );\r\n\r\n\t\tif ( !anno.empty() )\r\n\t\t{\r\n\t\t\tthis.mainLine.setAnno( anno );\r\n\t\t}\r\n\t};\r\n\r\n\tstatic canCut( _mv, _posTarget, _posWrk )\r\n\t{\r\n\t\t_posWrk.preSetMinCtx( _mv );\r\n\r\n\t\tvar sd = _posWrk.sd;\r\n\r\n\t\tvar mvd = _mv.getMoved();\r\n\t\t/*var vct = */ _posWrk.getPiece( _mv.to );\r\n\r\n\t\tvar from = _mv.from;\r\n\t\tvar to = _mv.to;\r\n\r\n\t\tvar rFrom = Square.R( from );\r\n\t\tvar rTo = Square.R( to );\r\n\r\n\t\tvar pcPawn = Piece.make( Piece.PAWN, sd );\r\n\t\tvar rStart = sd === Side.WHITE ? Square.R_2 : Square.R_7;\r\n\r\n\t\tif ( mvd === pcPawn && rFrom === rStart && _posTarget.getPiece( from ) === pcPawn )\r\n\t\t\treturn true;\r\n\r\n\t\tvar pcKilledPawn = Piece.changeSide( pcPawn );\r\n\t\tvar rKilledStart = sd === Side.WHITE ? Square.R_7 : Square.R_2;\r\n\r\n\t\tif ( mvd === pcKilledPawn && rTo === rKilledStart && _posTarget.getPiece( to ) === pcKilledPawn )\r\n\t\t\treturn true;\r\n\r\n\t\tif ( !!( _posTarget.cr & CastleRights.W_ALL ) )\r\n\t\t{\r\n\t\t\tif ( mvd === Piece.W_KING )\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t\tif ( !!( _posTarget.cr & CastleRights.B_ALL ) )\r\n\t\t{\r\n\t\t\tif ( mvd === Piece.B_KING )\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\thasPos( _pos )\r\n\t{\r\n\t\treturn this._findPos( _pos );\r\n\t};\r\n\r\n\tstatic _findPos( _posTarget, _posWrk, _ln, _stk )\r\n\t{\r\n\t\tif ( _ln.isMainLine() && ObjUtil.equals( _posTarget, _posWrk ) )\r\n\t\t{\r\n\t\t\t_stk.push( new LineStackItem( _ln ) );\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar posWrk = ObjUtil.clone( _posWrk );\r\n\r\n\t\tfor ( var inx = 0; inx < _ln.length; ++inx )\r\n\t\t{\r\n\t\t\tvar mv = _ln[ inx ];\r\n\r\n\t\t\tif ( mv.hasLines() )\r\n\t\t\t{\r\n\r\n\r\n\t\t\t\tfor ( var inxLn = mv.getSubLinesCount() - 1; inxLn >= 0; --inxLn )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar lnSub = mv.getLine( inxLn );\r\n\r\n\t\t\t\t\t_stk.push( new LineStackItem( _ln, inx ) );\r\n\r\n\t\t\t\t\tif ( Game._findPos( _posTarget, posWrk, lnSub, _stk ) )\r\n\t\t\t\t\t\treturn true;\r\n\r\n\t\t\t\t\t_stk.pop();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//var mv = new Move(mv.from, mv.to, mv.prom);\r\n\r\n\t\t\tif ( !Game.canCut( mv, _posTarget, posWrk ) )\r\n\t\t\t{\r\n\t\t\t\tposWrk.makeMove( mv );\r\n\r\n\t\t\t\tif ( ObjUtil.equals( _posTarget, posWrk ) )\r\n\t\t\t\t{\r\n\t\t\t\t\t_stk.push( new LineStackItem( _ln, inx + 1 ) );\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t} else\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n\t_findPos( _pos )\r\n\t{\r\n\t\tvar posWrk = this.getStartPos();\r\n\r\n\t\tvar stk = new LineStack();\r\n\r\n\t\tif ( Game._findPos( _pos, posWrk, this.mainLine, stk ) )\r\n\t\t\treturn stk;\r\n\t\treturn null;\r\n\t};\r\n\r\n\r\n\tgotoPos( _pos, noFire )\r\n\t{\r\n\t\tvar stk = this._findPos( _pos );\r\n\t\tif ( !stk )\r\n\t\t\treturn false;\r\n\r\n\t\tthis.gotoStack( stk, noFire );\r\n\r\n\t\tCBDebug.call( this, this.selfTest );\r\n\r\n\t\tCBDebug.assert( this.cur.equals( _pos ) );\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tfindInTree( tree )\r\n\t{\r\n\t\tthis.gotoEnd();\r\n\t\twhile ( this.getMoveNo() > 0 )\r\n\t\t{\r\n\t\t\tif ( tree.hasPos( this.getCurPos() ) )\r\n\t\t\t\treturn this.getMoveNo();\r\n\t\t\tthis.gotoPrev();\r\n\t\t}\r\n\t\treturn -1;\r\n\t};\r\n\r\n}\r\n\r\n","// EloRating, mw 28.1.2013\r\n\r\n// ES6 3.3.2020\r\n\r\nexport class EloRating\r\n{\r\n\tconstructor ()\r\n\t{\r\n\t\tthis.nElo = [];\r\n\t\tfor ( var i = 0; i < this.RATING_COUNT_MAX; i++ )\r\n\t\t\tthis.nElo.push( 0 );\r\n\t\tthis.RATING_COUNT = 5;\r\n\t\tthis.RATING_COUNT_MAX = 10;\t\t\t\r\n\t}\r\n\r\n\t// use as EloRating.BLITZ\r\n\tstatic NONE = 0;\r\n\tstatic BULLET = 1;\r\n\tstatic BLITZ = 2;\r\n\tstatic SLOW = 4;\r\n\tstatic ENGINE = 8;\t// not used in js\r\n\tstatic CENTAUR = 16;\r\n\r\n\tstatic POOL = 0x80;\r\n\r\n\tstatic POOL_BULLET = EloRating.BULLET | EloRating.POOL;\r\n\tstatic POOL_BLITZ = EloRating.BLITZ | EloRating.POOL;\r\n\r\n\t\r\n\r\n\tfromDataBuf( buf )\r\n\t{\r\n\t\t/// \r\n\t\tfor ( var i = 0; i < this.RATING_COUNT; i++ )\r\n\t\t{\r\n\t\t\tif ( i + 3 * this.RATING_COUNT < this.RATING_COUNT_MAX )\r\n\t\t\t{\r\n\t\t\t\tthis.nElo[i] = buf.readInt16() & 0x0fff;\r\n\t\t\t\tthis.nElo[i + 3 * this.RATING_COUNT] = buf.readInt16() & 0x0fff;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.nElo[i] = buf.readInt32() & 0x0fff;\r\n\t\t\t}\r\n\r\n\t\t\t//\tRating-Blocks 2+3\r\n\t\t\tif ( i + 2 * this.RATING_COUNT < this.RATING_COUNT_MAX )\r\n\t\t\t{\r\n\t\t\t\tthis.nElo[i + this.RATING_COUNT] = buf.readInt16() & 0x0fff;\r\n\t\t\t\tthis.nElo[i + 2 * this.RATING_COUNT] = buf.readInt16() & 0x0fff;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.nElo[i + this.RATING_COUNT] = buf.readInt32() & 0x0fff;\r\n\t\t\t}\r\n\t\t}\r\n\t\tbuf.beginSizedRead();\r\n\t\tbuf.endSizedRead();\r\n\t};\r\n\r\n\r\n\ttoDataBuf( buf )\r\n\t{\r\n\t\t/// \r\n\t\tfor ( var i = 0; i < this.RATING_COUNT; i++ )\r\n\t\t{\r\n\t\t\tif ( i + 3 * this.RATING_COUNT < this.RATING_COUNT_MAX )\r\n\t\t\t{\r\n\t\t\t\tbuf.writeInt16( this.nElo[i] & 0x0fff );\r\n\t\t\t\tbuf.writeInt16( this.nElo[i + 3 * this.RATING_COUNT] & 0x0fff );\r\n\t\t\t} else\r\n\t\t\t{\r\n\t\t\t\tbuf.writeInt32( this.nElo[i] & 0x0fff );\r\n\t\t\t}\r\n\t\t\tif ( i + 2 * this.RATING_COUNT < this.RATING_COUNT_MAX )\r\n\t\t\t{\r\n\t\t\t\tbuf.writeInt16( this.nElo[i + this.RATING_COUNT] & 0x0fff );\r\n\t\t\t\tbuf.writeInt16( this.nElo[i + 2 * this.RATING_COUNT] & 0x0fff );\r\n\t\t\t} else\r\n\t\t\t{\r\n\t\t\t\tbuf.writeInt( this.nElo[i + this.RATING_COUNT] & 0x0fff );\r\n\t\t\t}\r\n\t\t}\r\n\t\tbuf.writeInt32( 0 );\t// rest size\r\n\t}\r\n\r\n\tgetStrElo( ratingType )\r\n\t{\r\n\t\tif ( this.getElo( ratingType ) > 0 )\r\n\t\t\treturn this.getElo( ratingType );\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t};\r\n\r\n\tgetArrayIndex( ratingType )\r\n\t{\r\n\t\tif ( ratingType & EloRating.BULLET )\r\n\t\t\treturn ( ratingType & EloRating.POOL ) ? 9 : 0;\r\n\t\tif ( ratingType & EloRating.BLITZ )\r\n\t\t\treturn ( ratingType & EloRating.POOL ) ? 8 : 1;\r\n\t\tif ( ratingType & EloRating.SLOW )\r\n\t\t\treturn 2;\r\n\r\n\t\treturn 8;\t//\tDefault: Human Pool Blitz\r\n\t}\r\n\r\n\tgetElo( ratingType )\r\n\t{\r\n\t\tswitch ( ratingType )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\tcase EloRating.BULLET:\r\n\t\t\t\treturn this.nElo[0];\r\n\t\t\tcase EloRating.BLITZ:\r\n\t\t\t\treturn this.nElo[1];\r\n\t\t\tcase EloRating.SLOW:\r\n\t\t\t\treturn this.nElo[2];\r\n\t\t\tcase EloRating.POOL_BLITZ:\r\n\t\t\t\treturn this.nElo[8];\r\n\t\t\tcase EloRating.POOL_BULLET:\r\n\t\t\t\treturn this.nElo[9];\r\n\t\t}\r\n\t};\r\n\t\r\n\tgetHighestBlitzRating()\r\n\t{\r\n\t\tif ( this.nElo[8] > this.nElo[1] )\r\n\t\t\treturn this.nElo[8];\r\n\t\tif ( this.nElo[1] )\r\n\t\t\treturn this.nElo[1];\r\n\r\n\t\treturn \"\";\r\n\t};\r\n}\r\n\r\n","// mw 26.3.2013\r\n\r\n// ES6 3.3.2020\r\n\r\nimport { EloRating } from \"common/Chess/PlayChess/EloRating\";\r\n\r\nexport class ClockParams\r\n{\r\n\tconstructor( minutes, incSecs )\r\n\t{\r\n\t\tif ( minutes !== undefined )\r\n\t\t\tthis.startMins = minutes;\r\n\t\telse\r\n\t\t\tthis.startMins = 0;\r\n\t\tthis.incSecs = incSecs || 0;\r\n\t\tif ( this.startMins < 1 && this.incSecs ===0 )\r\n\t\t\tthis.startMins = 1;\r\n\t\tthis.addMins = 0;\r\n\t\tthis.addSecs = 0;\r\n\t\tthis.flags = 0;\r\n\t};\r\n\r\n\tstatic POOL_BLITZ = 1;\t// flags\r\n\r\n\tfromDataBuf( buf )\r\n\t{\r\n\t\t/// \r\n\t\tthis.startMins = buf.readInt32() & 0x0000ffff;\r\n\t\tthis.incSecs = buf.readInt32() & 0x0000ffff;\r\n\t\tthis.addMins = buf.readInt16();\r\n\t\tthis.addSecs = buf.readInt16();\r\n\t\tthis.flags = buf.readInt32();\r\n\t};\r\n\r\n\ttoDataBuf( buf )\r\n\t{\r\n\t\t/// \r\n\t\tbuf.writeInt32( this.startMins & 0x0000ffff );\r\n\t\tbuf.writeInt32( this.incSecs & 0x0000ffff );\r\n\t\tbuf.writeInt16( this.addMins );\r\n\t\tbuf.writeInt16( this.addSecs );\r\n\t\tbuf.writeInt32( this.flags );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn this.startMins + \"m + \" + this.incSecs + \"s\";\r\n\t};\r\n\r\n\t//setPoolBlitz( b )\r\n\t//{\r\n\t//\tsetFlag( this, ClockParams.POOL_BLITZ, b );\r\n\t//};\r\n\r\n\t//isPoolBlitz( b )\r\n\t//{\r\n\t//\tisFlag( this.flags, ClockParams.POOL_BLITZ );\r\n\t//};\r\n\r\n\tcanBePoolBlitz()\r\n\t{\r\n\t\treturn this.addMins === 0 && this.addSecs === 0\r\n\t\t\t&& this.incSecs === 0\r\n\t\t\t&& ( this.startMins === 1 || this.startMins === 3 || this.startMins === 5 );\r\n\t};\r\n\r\n\tstatic createFromSeekParams = function ( seekParams )\r\n\t{\r\n\t\tvar cp = new ClockParams( 3, 0 );\r\n\t\tif ( seekParams )\r\n\t\t{\r\n\t\t\tvar params = seekParams.split( ',' );\r\n\t\t\tif ( params.length )\r\n\t\t\t{\r\n\t\t\t\tcp.startMins = params[0];\r\n\t\t\t\tif ( cp.startMins === 0 )\r\n\t\t\t\t\tcp.startMins = 5;\r\n\t\t\t\tif ( params.length > 1 )\r\n\t\t\t\t\tcp.incSecs = params[1];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn cp;\r\n\t};\r\n\r\n\tgetSortVal()\r\n\t{\r\n\t\treturn this.startMins * 40 + this.incSecs;\r\n\t};\r\n\r\n\tcalcRatingType()\r\n\t{\r\n\t\tif ( this.getAvGameTimeSeconds() > 900 )\r\n\t\t\treturn EloRating.SLOW;\r\n\t\telse if ( this.getAvGameTimeSeconds() >= 180 )\r\n\t\t\treturn EloRating.BLITZ;\r\n\r\n\t\treturn EloRating.BULLET;\r\n\t};\r\n\r\n\tgetGameTypeName()\r\n\t{\r\n\t\tswitch( this.calcRatingType() )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\tcase EloRating.BULLET:\r\n\t\t\t\treturn \"Bullet\";\r\n\t\t\tcase EloRating.BLITZ:\r\n\t\t\t\treturn \"Blitz\";\r\n\t\t\tcase EloRating.SLOW:\r\n\t\t\t\treturn \"Slow\";\r\n\t\t}\r\n\t};\r\n\r\n\tgetAvGameTimeSeconds()\r\n\t{\r\n\t\treturn this.startMins * 60 + 40 * this.incSecs;\r\n\t};\r\n\r\n\tisBlitz()\r\n\t{\r\n\t\treturn this.calcRatingType() === EloRating.BLITZ;\r\n\t};\r\n\r\n\tisBullet()\r\n\t{\r\n\t\treturn this.calcRatingType() === EloRating.BULLET;\r\n\t};\r\n\r\n\tisSlow()\r\n\t{\r\n\t\treturn this.calcRatingType() === EloRating.SLOW;\r\n\t};\r\n\r\n\tgetStartSecs()\r\n\t{\r\n\t\treturn this.startMins * 60;\r\n\t};\r\n\r\n}","// ES6 3.3.2020\r\n\r\nimport { Piece } from 'common/Chess/Logic/Chess';\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil';\r\nimport { InvariantLocalization, NotationLocalizations } from 'common/Chess/Logic/Notation'\r\n\r\nexport var SpecialGlyphs = {\r\n\t//PGN-Symbole\r\n\r\n\tNONE: 0,//null annotation\r\n\tGOOD_MOVE: 1, \t//good move (traditional \"!\")\r\n\tBAD_MOVE: 2, \t//poor move (traditional \"?\")\r\n\tVERY_GOOD_MOVE: 3, \t//very good move (traditional \"!!\")\r\n\tVERY_BAD_MOVE: 4, \t//very poor move (traditional \"??\")\r\n\tSPECULATIVE_MOVE: 5, \t//speculative move (traditional \"!?\")\r\n\tDUBIOUS_MOVE: 6, \t//questionable move (traditional \"?!\")\r\n\tFORCED_MOVE: 7, \t//forced move (all others lose quickly)\r\n\tSINGULAR_MOVE: 8, \t//singular move (no reasonable alternatives)\r\n\tWORST_MOVE: 9, \t//worst move\r\n\tDRAWN_POS: 10, \t//drawish position\r\n\tEQUAL_QUIET_POS: 11, \t//equal chances, quiet position\r\n\tEQUAL_ACTIVE_POS: 12, \t//equal chances, active position\r\n\tUNCLEAR_POS: 13, \t//unclear position\r\n\tW_SLIGHT_ADV: 14, \t//White has a slight advantage\r\n\tB_SLIGHT_ADV: 15, \t//Black has a slight advantage\r\n\tW_MODER_ADV: 16, \t//White has a moderate advantage\r\n\tB_MODER_ADV: 17, \t//Black has a moderate advantage\r\n\tW_DECIS_ADV: 18, \t//White has a decisive advantage\r\n\tB_DECIS_ADV: 19, \t//Black has a decisive advantage\r\n\tW_CRASH_ADV: 20, \t//White has a crushing advantage (Black should resign)\r\n\tB_CRASH_ADV: 21, \t//Black has a crushing advantage (White should resign)\r\n\tW_ZUGZW: 22, \t//White is in zugzwang\r\n\tB_ZUGZW: 23, \t//Black is in zugzwang\r\n\tW_SLIGHT_SPC: 24, \t//White has a slight space advantage\r\n\tB_SLIGHT_SPC: 25, \t//Black has a slight space advantage\r\n\tW_MODER_SPC: 26, \t//White has a moderate space advantage\r\n\tB_MODER_SPC: 27, \t//Black has a moderate space advantage\r\n\tW_DECIS_SPC: 28, \t//White has a decisive space advantage\r\n\tB_DECIS_SPC: 29, \t//Black has a decisive space advantage\r\n\tW_SLIGHT_TEMP: 30, \t//White has a slight time (development) advantage\r\n\tB_SLIGHT_TEMP: 31, \t//Black has a slight time (development) advantage\r\n\tW_MODER_TEMP: 32, \t//White has a moderate time (development) advantage\r\n\tB_MODER_TEMP: 33, \t//Black has a moderate time (development) advantage\r\n\tW_DECIS_TEMP: 34, \t//White has a decisive time (development) advantage\r\n\tB_DECIS_TEMP: 35, \t//Black has a decisive time (development) advantage\r\n\tW_INITIATIVE: 36, \t//White has the initiative\r\n\tB_INITIATIVE: 37, \t//Black has the initiative\r\n\tW_LASTING_INITIATIVE: 38, \t//White has a lasting initiative\r\n\tB_LASTING_INITIATIVE: 39, \t//Black has a lasting initiative\r\n\tW_ATTACK: 40, \t//White has the attack\r\n\tB_ATTACK: 41, \t//Black has the attack\r\n\tW_INSUFF_COMP: 42, \t//White has insufficient compensation for material deficit\r\n\tB_INSUFF_COMP: 43, \t//Black has insufficient compensation for material deficit\r\n\tW_SUFF_COMP: 44, \t//White has sufficient compensation for material deficit\r\n\tB_SUFF_COMP: 45, \t//Black has sufficient compensation for material deficit\r\n\tW_GOOD_COMP: 46, \t//White has more than adequate compensation for material deficit\r\n\tB_GOOD_COMP: 47, \t//Black has more than adequate compensation for material deficit\r\n\tW_SLIGHT_CENTER: 48, \t//White has a slight center control advantage\r\n\tB_SLIGHT_CENTER: 49, \t//Black has a slight center control advantage\r\n\tW_MODER_CENTER: 50, \t//White has a moderate center control advantage\r\n\tB_MODER_CENTER: 51, \t//Black has a moderate center control advantage\r\n\tW_DECIS_CENTER: 52, \t//White has a decisive center control advantage\r\n\tB_DECIS_CENTER: 53, \t//Black has a decisive center control advantage\r\n\tW_SLIGHT_KS: 54, \t//White has a slight kingside control advantage\r\n\tB_SLIGHT_KS: 55, \t//Black has a slight kingside control advantage\r\n\tW_MODER_KS: 56, \t//White has a moderate kingside control advantage\r\n\tB_MODER_KS: 57, \t//Black has a moderate kingside control advantage\r\n\tW_DECIS_KS: 58, \t//White has a decisive kingside control advantage\r\n\tB_DECIS_KS: 59, \t//Black has a decisive kingside control advantage\r\n\tW_SLIGHT_QS: 60, \t//White has a slight queenside control advantage\r\n\tB_SLIGHT_QS: 61, \t//Black has a slight queenside control advantage\r\n\tW_MODER_QS: 62, \t//White has a moderate queenside control advantage\r\n\tB_MODER_QS: 63, \t//Black has a moderate queenside control advantage\r\n\tW_DECIS_QS: 64, \t//White has a decisive queenside control advantage\r\n\tB_DECIS_QS: 65, \t//Black has a decisive queenside control advantage\r\n\tW_BAD_FRST_RANK: 66, \t//White has a vulnerable first rank\r\n\tB_BAD_FRST_RANK: 67, \t//Black has a vulnerable first rank\r\n\tW_GOOD_FRST_RANK: 68, \t//White has a well protected first rank\r\n\tB_GOOD_FRST_RANK: 69, \t//Black has a well protected first rank\r\n\tW_BAD_PROTECTED_KING: 70, //White has a poorly protected king\r\n\tB_BAD_PROTECTED_KING: 71, //Black has a poorly protected king\r\n\tW_GOOD_PROTECTED_KING: 72, //White has a well protected king\r\n\tB_GOOD_PROTECTED_KING: 73, //Black has a well protected king\r\n\tW_BAD_PLACED_KING: 74, \t//White has a poorly placed king\r\n\tB_BAD_PLACED_KING: 75, \t//Black has a poorly placed king\r\n\tW_GOOD_PLACED_KING: 76, \t//White has a well placed king\r\n\tB_GOOD_PLACED_KING: 77, \t//Black has a well placed king\r\n\tW_VERY_WEAK_PAWNS: 78, \t//White has a very weak pawn structure\r\n\tB_VERY_WEAK_PAWNS: 79, \t//Black has a very weak pawn structure\r\n\tW_MODER_WEAK_PAWNS: 80, \t//White has a moderately weak pawn structure\r\n\tB_MODER_WEAK_PAWNS: 81, \t//Black has a moderately weak pawn structure\r\n\tW_MODER_STRONG_PAWNS: 82, \t//White has a moderately strong pawn structure\r\n\tB_MODER_STRONG_PAWNS: 83, \t//Black has a moderately strong pawn structure\r\n\tW_VERY_STRONG_PAWNS: 84, \t//White has a very strong pawn structure\r\n\tB_VERY_STRONG_PAWNS: 85, \t//Black has a very strong pawn structure\r\n\tW_BAD_KNIGHT: 86, \t//White has poor knight placement\r\n\tB_BAD_KNIGHT: 87, \t//Black has poor knight placement\r\n\tW_GOOD_KNIGHT: 88, \t//White has good knight placement\r\n\tB_GOOD_KNIGHT: 89, \t//Black has good knight placement\r\n\tW_BAD_BISHOP: 90, \t//White has poor bishop placement\r\n\tB_BAD_BISHOP: 91, \t//Black has poor bishop placement\r\n\tW_GOOD_BISHOP: 92, \t//White has good bishop placement\r\n\tB_GOOD_BISHOP: 93, \t//Black has good bishop placement\r\n\tW_BAD_ROOK: 94, \t//White has poor rook placement\r\n\tB_BAD_ROOK: 95, \t//Black has poor rook placement\r\n\tW_GOOD_ROOK: 96, \t//White has good rook placement\r\n\tB_GOOD_ROOK: 97, \t//Black has good rook placement\r\n\tW_BAD_QUEEN: 98, \t//White has poor queen placement\r\n\tB_BAD_QUEEN: 99, \t//Black has poor queen placement\r\n\tW_GOOD_QUEEN: 100, \t//White has good queen placement\r\n\tB_GOOD_QUEEN: 101, \t//Black has good queen placement\r\n\tW_BAD_PIECES: 102, \t//White has poor piece coordination\r\n\tB_BAD_PIECES: 103, \t//Black has poor piece coordination\r\n\tW_GOOD_PIECES: 104, \t//White has good piece coordination\r\n\tB_GOOD_PIECES: 105, \t//Black has good piece coordination\r\n\tW_OP_VERY_BAD: 106, \t//White has played the opening very poorly\r\n\tB_OP_VERY_BAD: 107, \t//Black has played the opening very poorly\r\n\tW_OP_BAD: 108, \t//White has played the opening poorly\r\n\tB_OP_BAD: 109, \t//Black has played the opening poorly\r\n\tW_OP_GOOD: 110, \t//White has played the opening well\r\n\tB_OP_GOOD: 111, \t//Black has played the opening well\r\n\tW_OP_VERY_GOOD: 112, \t//White has played the opening very well\r\n\tB_OP_VERY_GOOD: 113, \t//Black has played the opening very well\r\n\tW_MG_VERY_BAD: 114, \t//White has played the middlegame very poorly\r\n\tB_MG_VERY_BAD: 115, \t//Black has played the middlegame very poorly\r\n\tW_MG_BAD: 116, \t//White has played the middlegame poorly\r\n\tB_MG_BAD: 117, \t//Black has played the middlegame poorly\r\n\tW_MG_GOOD: 118, \t//White has played the middlegame well\r\n\tB_MG_GOOD: 119, \t//Black has played the middlegame well\r\n\tW_MG_VERY_GOOD: 120, \t//White has played the middlegame very well\r\n\tB_MG_VERY_GOOD: 121, \t//Black has played the middlegame very well\r\n\tW_EG_VERY_BAD: 122, \t//White has played the ending very poorly\r\n\tB_EG_VERY_BAD: 123, \t//Black has played the ending very poorly\r\n\tW_EG_BAD: 124, \t//White has played the ending poorly\r\n\tB_EG_BAD: 125, \t//Black has played the ending poorly\r\n\tW_EG_GOOD: 126, \t//White has played the ending well\r\n\tB_EG_GOOD: 127, \t//Black has played the ending well\r\n\tW_EG_VERY_GOOD: 128, \t//White has played the ending very well\r\n\tB_EG_VERY_GOOD: 129, \t//Black has played the ending very well\r\n\tW_SLIGHT_COUNTER: 130, \t//White has slight counterplay\r\n\tB_SLIGHT_COUNTER: 131, \t//Black has slight counterplay\r\n\tW_MODER_COUNTER: 132, \t//White has moderate counterplay\r\n\tB_MODER_COUNTER: 133, \t//Black has moderate counterplay\r\n\tW_DECIS_COUNTER: 134, \t//White has decisive counterplay\r\n\tB_DECIS_COUNTER: 135, \t//Black has decisive counterplay\r\n\tW_MODER_ZEITNOT: 136, \t//White has moderate time control pressure\r\n\tB_MODER_ZEITNOT: 137, \t//Black has moderate time control pressure\r\n\tW_SEVERE_ZEITNOT: 138, \t//White has severe time control pressure\r\n\tB_SEVERE_ZEITNOT: 139, \t//Black has severe time control pressure\r\n\r\n\t//Fritz-Symbole\r\n\tWITH_IDEA: 140,\t\t\t//with the idea\",\t\t\t\t\t\t\t\t\t\t\t\t//\t140\r\n\tAIMED_AGAINST: 141,\t\t\t//aimed against\",\r\n\tBETTER_IS: 142,\t\t\t\t//better is\", \t//\t>:\r\n\tWORSE_IS: 143,\t\t\t\t//worse is\", \t\t\t\t\t\t\t\t\t\t\t\t//\t<:\r\n\tEQUAL_IS: 144,\t\t\t\t//equivalent is\"\t\t\t\t\t\t\t\t\t\t\t\t//\t:\r\n\tEDITORS_MARK: 145,\t\t\t//editors remark\",\t//\tRR\r\n\r\n\tNOVELTY: 146,\t\t\t\t//novelty\",\t\t\t\t\t\t\t\t\t\t\t\t\t\t//\tN\r\n\tWEAK_POINT: 147,\t\t\t\t//weak point\",\t\t\t\t\t\t\t\t\t\t\t\t\t//\t147\r\n\tENDGAME: 148,\t\t\t\t//endgame\",\r\n\tLINE: 149,\t\t\t\t\t//line\",\r\n\tDIAGONAL: 150,\t\t\t\t//diagonal\",\r\n\t//\t150\r\n\tW_BISHOP_PAIR: 151,\t\t//White has the pair of bishops\", //\t151\r\n\tB_BISHOP_PAIR: 152,\t\t//Black has the pair of bishops\",\r\n\tOPP_COLOR_BISHOPS: 153,\t\t//bishops of opposite colour\",\r\n\tSAME_COLOR_BISHOPS: 154,\t\t//bishops of the same colour\",\r\n\tW_UNITED_PAWNS: 155,\t\t//White has united pawns\",\r\n\tB_UNITED_PAWNS: 156,\t\t//Black has united pawns\",\r\n\tW_SEPARATE_PAWNS: 157,\t\t//White has separated pawns\",\r\n\tB_SEPARATE_PAWNS: 158,\t\t//Black has separated pawns\",\r\n\tW_DOUBLE_PAWNS: 159,\t\t//White has double pawns\",\r\n\tB_DOUBLE_PAWNS: 160,\t\t//Black has double pawns\", \t//\t160\r\n\tW_PASSED_PAWNS: 161,\t\t//White has a passed pawn\", //\t161\r\n\tB_PASSED_PAWNS: 162,\t\t//Black has a passed pawn\",\r\n\tW_MORE_PAWNS: 163,\t\t//White has an advantage in number of pawns\",\r\n\tB_MORE_PAWNS: 164,\t\t//Black has an advantage in number of pawns\"\t\t\t//\t164\r\n\r\n\t// not an eval. They belong to marks, because they need to be combined with evaluations\r\n\tMY_MOVE: 165,\r\n\tIMPORTANT: 166,\r\n\tWHITE: 167,\r\n\tBLACK: 168,\r\n\tBOTH: 169,\r\n};\r\n\r\nexport var GlyphTexts = {};\r\n\r\nGlyphTexts[SpecialGlyphs.NONE] = \"\";\r\nGlyphTexts[SpecialGlyphs.GOOD_MOVE] = \"!\";\r\nGlyphTexts[SpecialGlyphs.BAD_MOVE] = \"?\";\r\nGlyphTexts[SpecialGlyphs.VERY_GOOD_MOVE] = \"\\u203C\";\r\nGlyphTexts[SpecialGlyphs.VERY_BAD_MOVE] = \"??\";\r\nGlyphTexts[SpecialGlyphs.SPECULATIVE_MOVE] = \"!?\";\r\nGlyphTexts[SpecialGlyphs.DUBIOUS_MOVE] = \"?!\";\r\nGlyphTexts[SpecialGlyphs.FORCED_MOVE] = \"!\";\r\nGlyphTexts[SpecialGlyphs.SINGULAR_MOVE] = \"\\uE021\";\r\nGlyphTexts[SpecialGlyphs.WORST_MOVE] = \"\";\r\nGlyphTexts[SpecialGlyphs.DRAWN_POS] = \"=\";\r\nGlyphTexts[SpecialGlyphs.EQUAL_QUIET_POS] = \"=\";\r\nGlyphTexts[SpecialGlyphs.EQUAL_ACTIVE_POS] = \"=\";\r\nGlyphTexts[SpecialGlyphs.UNCLEAR_POS] = \"\\u221E\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_ADV] = \"\\uE02F\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_ADV] = \"\\uE02E\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_ADV] = \"\\u00B1\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_ADV] = \"\\uE01A\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_ADV] = \"+-\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_ADV] = \"-+\";\r\nGlyphTexts[SpecialGlyphs.W_CRASH_ADV] = \"+-\";\r\nGlyphTexts[SpecialGlyphs.B_CRASH_ADV] = \"-+\";\r\nGlyphTexts[SpecialGlyphs.W_ZUGZW] = \"\\uE01D\";\r\nGlyphTexts[SpecialGlyphs.B_ZUGZW] = \"\\uE01D\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_SPC] = \"\\uE023\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_SPC] = \"\\uE023\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_SPC] = \"\\uE023\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_SPC] = \"\\uE023\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_SPC] = \"\\uE023\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_SPC] = \"\\uE023\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_TEMP] = \"\\uE02D\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_TEMP] = \"\\uE02D\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_TEMP] = \"\\uE02D\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_TEMP] = \"\\uE02D\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_TEMP] = \"\\uE02D\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_TEMP] = \"\\uE02D\";\r\nGlyphTexts[SpecialGlyphs.W_INITIATIVE] = \"\\uE012\";\r\nGlyphTexts[SpecialGlyphs.B_INITIATIVE] = \"\\uE012\";\r\nGlyphTexts[SpecialGlyphs.W_LASTING_INITIATIVE] = \"\\uE012\";\r\nGlyphTexts[SpecialGlyphs.B_LASTING_INITIATIVE] = \"\\uE012\";\r\nGlyphTexts[SpecialGlyphs.W_ATTACK] = \"\\uE013\";\r\nGlyphTexts[SpecialGlyphs.B_ATTACK] = \"\\uE013\";\r\nGlyphTexts[SpecialGlyphs.W_INSUFF_COMP] = \"\\uE004\\uE000\";\r\nGlyphTexts[SpecialGlyphs.B_INSUFF_COMP] = \"\\uE004\\uE000\";\r\nGlyphTexts[SpecialGlyphs.W_SUFF_COMP] = \"\\uE000\";\r\nGlyphTexts[SpecialGlyphs.B_SUFF_COMP] = \"\\uE000\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_COMP] = \"\\uE000\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_COMP] = \"\\uE000\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_CENTER] = \"\\uE01E\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_CENTER] = \"\\uE01E\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_CENTER] = \"\\uE01E\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_CENTER] = \"\\uE01E\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_CENTER] = \"\\uE01E\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_CENTER] = \"\\uE01E\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_KS] = \"\\uE00F\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_KS] = \"\\uE00F\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_KS] = \"\\uE00F\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_KS] = \"\\uE00F\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_KS] = \"\\uE00F\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_KS] = \"\\uE00F\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_QS] = \"\\uE00E\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_QS] = \"\\uE00E\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_QS] = \"\\uE00E\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_QS] = \"\\uE00E\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_QS] = \"\\uE00E\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_QS] = \"\\uE00E\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_FRST_RANK] = \"\\uE010\\uE018\\u0031\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_FRST_RANK] = \"\\uE010\\uE018\\u0038\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_FRST_RANK] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_FRST_RANK] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_PROTECTED_KING] = \"\\uE010\\uE024\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_PROTECTED_KING] = \"\\uE010\\uE024\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_PROTECTED_KING] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_PROTECTED_KING] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_PLACED_KING] = \"\\uE010\\uE024\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_PLACED_KING] = \"\\uE010\\uE024\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_PLACED_KING] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_PLACED_KING] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_VERY_WEAK_PAWNS] = \"\\uE010\\uE029\";\r\nGlyphTexts[SpecialGlyphs.B_VERY_WEAK_PAWNS] = \"\\uE010\\uE029\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_WEAK_PAWNS] = \"\\uE010\\uE029\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_WEAK_PAWNS] = \"\\uE010\\uE029\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_STRONG_PAWNS] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_STRONG_PAWNS] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_VERY_STRONG_PAWNS] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_VERY_STRONG_PAWNS] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_KNIGHT] = \"\\uE010\\uE028\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_KNIGHT] = \"\\uE010\\uE028\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_KNIGHT] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_KNIGHT] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_BISHOP] = \"\\uE010\\uE027\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_BISHOP] = \"\\uE010\\uE027\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_BISHOP] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_BISHOP] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_ROOK] = \"\\uE010\\uE026\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_ROOK] = \"\\uE010\\uE026\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_ROOK] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_ROOK] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_QUEEN] = \"\\uE010\\uE025\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_QUEEN] = \"\\uE010\\uE025\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_QUEEN] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_QUEEN] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_BAD_PIECES] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_BAD_PIECES] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_GOOD_PIECES] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_GOOD_PIECES] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_OP_VERY_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_OP_VERY_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_OP_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_OP_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_OP_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_OP_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_OP_VERY_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_OP_VERY_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_MG_VERY_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_MG_VERY_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_MG_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_MG_BAD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_MG_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_MG_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_MG_VERY_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_MG_VERY_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_EG_VERY_BAD] = \"\\uE010\\uE01F\";\r\nGlyphTexts[SpecialGlyphs.B_EG_VERY_BAD] = \"\\uE010\\uE01F\";\r\nGlyphTexts[SpecialGlyphs.W_EG_BAD] = \"\\uE010\\uE01F\";\r\nGlyphTexts[SpecialGlyphs.B_EG_BAD] = \"\\uE010\\uE01F\";\r\nGlyphTexts[SpecialGlyphs.W_EG_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_EG_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_EG_VERY_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.B_EG_VERY_GOOD] = \"\";\r\nGlyphTexts[SpecialGlyphs.W_SLIGHT_COUNTER] = \"\\uE017\";\r\nGlyphTexts[SpecialGlyphs.B_SLIGHT_COUNTER] = \"\\uE017\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_COUNTER] = \"\\uE017\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_COUNTER] = \"\\uE017\";\r\nGlyphTexts[SpecialGlyphs.W_DECIS_COUNTER] = \"\\uE017\";\r\nGlyphTexts[SpecialGlyphs.B_DECIS_COUNTER] = \"\\uE017\";\r\nGlyphTexts[SpecialGlyphs.W_MODER_ZEITNOT] = \"\\uE01C\";\r\nGlyphTexts[SpecialGlyphs.B_MODER_ZEITNOT] = \"\\uE01C\";\r\nGlyphTexts[SpecialGlyphs.W_SEVERE_ZEITNOT] = \"\\uE01C\";\r\nGlyphTexts[SpecialGlyphs.B_SEVERE_ZEITNOT] = \"\\uE01C\";\r\nGlyphTexts[SpecialGlyphs.WITH_IDEA] = \"\\u2206\";\r\nGlyphTexts[SpecialGlyphs.AIMED_AGAINST] = \"\\uE022\";\r\nGlyphTexts[SpecialGlyphs.BETTER_IS] = \"\\uE020\";\r\nGlyphTexts[SpecialGlyphs.WORSE_IS] = \"\\u2264\";\r\nGlyphTexts[SpecialGlyphs.EQUAL_IS] = \"=\";\r\nGlyphTexts[SpecialGlyphs.EDITORS_MARK] = \"RR\";\r\nGlyphTexts[SpecialGlyphs.NOVELTY] = \"N\";\r\nGlyphTexts[SpecialGlyphs.WEAK_POINT] = \"\\uE010\";\r\nGlyphTexts[SpecialGlyphs.ENDGAME] = \"\\uE01F\";\r\nGlyphTexts[SpecialGlyphs.LINE] = \"\\uE018\";\r\nGlyphTexts[SpecialGlyphs.DIAGONAL] = \"\\uE019\";\r\nGlyphTexts[SpecialGlyphs.W_BISHOP_PAIR] = \"\\uE001\";\r\nGlyphTexts[SpecialGlyphs.B_BISHOP_PAIR] = \"\\uE001\";\r\nGlyphTexts[SpecialGlyphs.OPP_COLOR_BISHOPS] = \"\\uE002\";\r\nGlyphTexts[SpecialGlyphs.SAME_COLOR_BISHOPS] = \"\\uE003\";\r\nGlyphTexts[SpecialGlyphs.W_UNITED_PAWNS] = \"\\uE02B\";\r\nGlyphTexts[SpecialGlyphs.B_UNITED_PAWNS] = \"\\uE02B\";\r\nGlyphTexts[SpecialGlyphs.W_SEPARATE_PAWNS] = \"\\uE02C\";\r\nGlyphTexts[SpecialGlyphs.B_SEPARATE_PAWNS] = \"\\uE02C\";\r\nGlyphTexts[SpecialGlyphs.W_DOUBLE_PAWNS] = \"\\uE007\";\r\nGlyphTexts[SpecialGlyphs.B_DOUBLE_PAWNS] = \"\\uE007\";\r\nGlyphTexts[SpecialGlyphs.W_PASSED_PAWNS] = \"\\uE008\";\r\nGlyphTexts[SpecialGlyphs.B_PASSED_PAWNS] = \"\\uE008\";\r\nGlyphTexts[SpecialGlyphs.W_MORE_PAWNS] = \">\";\r\nGlyphTexts[SpecialGlyphs.B_MORE_PAWNS] = \">\";\r\nGlyphTexts[SpecialGlyphs.MY_MOVE] = \"*\";\r\nGlyphTexts[SpecialGlyphs.IMPORTANT] = \"**\";\r\nGlyphTexts[SpecialGlyphs.WHITE] = \"\";\t\t// invisible\r\nGlyphTexts[SpecialGlyphs.BLACK] = \"\";\r\nGlyphTexts[SpecialGlyphs.BOTH] = \"\";\r\n\r\nexport var PieceGlyphs = {};\r\n\r\n//Nach der Nachricht von K.Thompson habe ich Unicode ausprobiert. \r\nPieceGlyphs[Piece.PAWN] = \"\\uE029\";\r\nPieceGlyphs[Piece.KNIGHT] = \"\\uE028\";\r\nPieceGlyphs[Piece.BISHOP] = \"\\uE027\";\r\nPieceGlyphs[Piece.ROOK] = \"\\uE026\";\r\nPieceGlyphs[Piece.QUEEN] = \"\\uE025\";\r\nPieceGlyphs[Piece.KING] = \"\\uE024\";\r\n\r\nexport var UnicodePieceGlyphs = {};\r\n\r\n//Nach der Nachricht von K.Thompson habe ich Unicode ausprobiert. \r\nUnicodePieceGlyphs[Piece.PAWN] = \"\\u2659\";\r\nUnicodePieceGlyphs[Piece.KNIGHT] = \"\\u2658\";\r\nUnicodePieceGlyphs[Piece.BISHOP] = \"\\u2657\";\r\nUnicodePieceGlyphs[Piece.ROOK] = \"\\u2656\";\r\nUnicodePieceGlyphs[Piece.QUEEN] = \"\\u2655\";\r\nUnicodePieceGlyphs[Piece.KING] = \"\\u2654\";\r\n\r\n\r\nexport function getText ( _glyph )\r\n{\r\n\treturn GlyphTexts[_glyph];\r\n};\r\n\r\nGlyphTexts.addTexts = function ( _strMv, _symbols )\r\n{\r\n\tvar txts = {};\r\n\ttxts[GlyphType.MOVE_GLYPH] =\r\n\ttxts[GlyphType.PRE_GLYPH] =\r\n\ttxts[GlyphType.POST_GLYPH] = \"\";\r\n\r\n\tfor ( var inx = 0, len = _symbols.length; inx < len; ++inx )\r\n\t{\r\n\t\tvar gly = _symbols[inx];\r\n\t\tvar str = GlyphTexts.getText( gly );\r\n\r\n\t\ttxts[GlyphType.getType( gly )] += str;\r\n\t}\r\n\r\n\treturn txts[GlyphType.PRE_GLYPH] + _strMv + txts[GlyphType.MOVE_GLYPH] + txts[GlyphType.POST_GLYPH];\r\n}\r\n\r\nexport var GlyphLocalization = ObjUtil.clone( InvariantLocalization );\r\n\r\nGlyphLocalization.arrStrPieces[Piece.W_KING] =\r\nGlyphLocalization.arrStrPieces[Piece.B_KING] = PieceGlyphs[Piece.KING];\r\n\r\nGlyphLocalization.arrStrPieces[Piece.W_QUEEN] =\r\nGlyphLocalization.arrStrPieces[Piece.B_QUEEN] = PieceGlyphs[Piece.QUEEN];\r\n\r\nGlyphLocalization.arrStrPieces[Piece.W_ROOK] =\r\nGlyphLocalization.arrStrPieces[Piece.B_ROOK] = PieceGlyphs[Piece.ROOK];\r\n\r\nGlyphLocalization.arrStrPieces[Piece.W_BISHOP] =\r\nGlyphLocalization.arrStrPieces[Piece.B_BISHOP] = PieceGlyphs[Piece.BISHOP];\r\n\r\nGlyphLocalization.arrStrPieces[Piece.W_KNIGHT] =\r\nGlyphLocalization.arrStrPieces[Piece.B_KNIGHT] = PieceGlyphs[Piece.KNIGHT];\r\n\r\nGlyphLocalization.arrStrPieces[Piece.W_PAWN] =\r\nGlyphLocalization.arrStrPieces[Piece.B_PAWN] = \"\";\r\n\r\nexport var UnicodeGlyphLocalization = ObjUtil.clone( InvariantLocalization );\r\n\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.W_KING] =\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.B_KING] = UnicodePieceGlyphs[Piece.KING];\r\n\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.W_QUEEN] =\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.B_QUEEN] = UnicodePieceGlyphs[Piece.QUEEN];\r\n\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.W_ROOK] =\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.B_ROOK] = UnicodePieceGlyphs[Piece.ROOK];\r\n\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.W_BISHOP] =\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.B_BISHOP] = UnicodePieceGlyphs[Piece.BISHOP];\r\n\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.W_KNIGHT] =\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.B_KNIGHT] = UnicodePieceGlyphs[Piece.KNIGHT];\r\n\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.W_PAWN] =\r\nUnicodeGlyphLocalization.arrStrPieces[Piece.B_PAWN] = \"\";\r\n\r\nvar GlyphType =\r\n{\r\n\tPRE_GLYPH: 0,\r\n\tMOVE_GLYPH: 1,\r\n\tPOST_GLYPH: 2\r\n};\r\n\r\nGlyphType.getType = function ( _gly )\r\n{\r\n\t//Langfristig so!\r\n\t//Habe bei MF abgeguckt.\r\n\r\n\tif ( _gly <= SpecialGlyphs.WORST_MOVE\r\n\t\t|| ( _gly >= SpecialGlyphs.MY_MOVE && _gly <= SpecialGlyphs.BOTH ) )\r\n\t\treturn GlyphType.MOVE_GLYPH;\r\n\r\n\tif ( _gly === SpecialGlyphs.W_ZUGZW ||\r\n\t _gly === SpecialGlyphs.B_ZUGZW )\r\n\t\treturn GlyphType.MOVE_GLYPH;\r\n\r\n\tif ( _gly <= SpecialGlyphs.B_SEVERE_ZEITNOT ||\r\n\t _gly >= SpecialGlyphs.NOVELTY )\r\n\t\treturn GlyphType.POST_GLYPH;\r\n\r\n\treturn GlyphType.PRE_GLYPH;\r\n};\r\n\r\nNotationLocalizations.glyphs = GlyphLocalization;\r\nNotationLocalizations.uglyphs = UnicodeGlyphLocalization;\r\n","// ST 2011\r\n// ES6 3.3.2020\r\n\r\nimport { EnumToString } from 'common/Patterns/ObjectUtil';\r\nimport { StringIterator, Char } from \"common/Tools/Strings/CharUtil\";\r\nimport { Piece } from 'common/Chess/Logic/Chess';\r\n\r\nexport var TokenType = {\r\n\tNONE: 0,\r\n\tUNKNOWN: 1,\r\n\tEOF: 2,\r\n\tHEAD_OP: 3,\r\n\tHEAD_CL: 4,\r\n\tSTR_VAR: 5,\r\n\tSTR_VAL: 6,\r\n\tCOMMENT: 7,\r\n\tVAR_OP: 8,\r\n\tVAR_CL: 9,\r\n\tRES_STAR: 10,\r\n\tRES_1_0: 11,\r\n\tRES_0_1: 12,\r\n\tRES_1_2: 13,\r\n\tBUCK: 14,\r\n\tCHECK: 15,\r\n\tMATE: 16,\r\n\tMOVE: 17,\r\n\tROCHADE: 18,\r\n\tNULLMOVE: 19,\r\n\tNUM: 20,\r\n\tDOT: 21,\r\n\tLONG_ROCHADE: 22,\r\n\tSHORT_ROCHADE: 23,\r\n\tBAD: 24,\r\n\tVERY_BAD: 25,\r\n\tGOOD: 26,\r\n\tVERY_GOOD: 27,\r\n\tBAD_GOOD: 28,\r\n\tGOOD_BAD: 29\r\n};\r\n\r\nfunction Token( _type, _str )\r\n{\r\n\tthis.type = _type;\r\n\tif ( _str )\r\n\t\tthis.str = _str;\r\n};\r\n\r\nToken.prototype.type = TokenType.UNKNOWN;\r\nToken.prototype.str = \"\";\r\n\r\nToken.prototype.toString = function()\r\n{\r\n\tvar res = EnumToString( TokenType, this.type );\r\n\tif ( this.str )\r\n\t\tres += \"(\" + this.str + \")\";\r\n\treturn res;\r\n};\r\n\r\nexport class PGNTokenStream\r\n{\r\n\tconstructor( _strPGN )\r\n\t{\r\n\t\tthis.m_it = new StringIterator( _strPGN || \"\" );\r\n\t\tthis.m_it.Next();\r\n\r\n\t\tthis.m_inHeader = false;\r\n\t\r\n\t}\r\n\r\n\tnextToken()\r\n\t{\r\n\t\t//WhiteSpace v pizdu.\r\n\t\tthis.m_it.skipWhile( Char.IsWhiteSpace, true );\r\n\r\n\t\t//Sind wird am Ende.\r\n\t\tif ( this.m_it.isEOF() )\r\n\t\t\treturn new Token( TokenType.EOF );\r\n\r\n\t\tvar ch = this.m_it.Current();\r\n\t\tthis.m_it.Next();\r\n\r\n\t\tswitch ( ch )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'X':\r\n\t\t\tcase '#':\r\n\t\t\t\treturn new Token( TokenType.MATE );\r\n\t\t\tcase '+':\r\n\t\t\t\treturn new Token( TokenType.CHECK );\r\n\t\t\tcase '$':\r\n\t\t\t\treturn new Token( TokenType.BUCK );\r\n\t\t\tcase '*':\r\n\t\t\t\treturn new Token( TokenType.RES_STAR, ch );\r\n\t\t\tcase '[':\r\n\t\t\t\tthis.m_inHeader = true;\r\n\t\t\t\treturn new Token( TokenType.HEAD_OP );\r\n\t\t\tcase ']':\r\n\t\t\t\tthis.m_inHeader = false;\r\n\t\t\t\treturn new Token( TokenType.HEAD_CL );\r\n\t\t\tcase '(':\r\n\t\t\t\treturn new Token( TokenType.VAR_OP );\r\n\t\t\tcase ')':\r\n\t\t\t\treturn new Token( TokenType.VAR_CL );\r\n\t\t\tcase '.':\r\n\t\t\t\treturn new Token( TokenType.DOT );\r\n\t\t}\r\n\r\n\t\tif ( this.m_inHeader )\r\n\t\t{\r\n\t\t\tif ( Char.IsLetterOrDigit( ch ) )\r\n\t\t\t{\r\n\t\t\t\tvar hdrVar = ch + this.m_it.AcceptWhile( Char.IsLetterOrDigit, true );\r\n\t\t\t\treturn new Token( TokenType.STR_VAR, hdrVar );\r\n\t\t\t}\r\n\r\n\t\t\tif ( ch === '\"' )\r\n\t\t\t{\r\n\t\t\t\t//HeaderWert!\r\n\t\t\t\tvar hdrVal = this.m_it.AcceptUntil( Char.getIsChar( ']' ), true );\r\n\t\t\t\thdrVal = hdrVal.trim();\r\n\t\t\t\tif ( hdrVal.charAt( hdrVal.length - 1 ) === '\"' )\r\n\t\t\t\t\thdrVal = hdrVal.slice( 0, hdrVal.length - 1 );\r\n\t\t\t\treturn new Token( TokenType.STR_VAL, hdrVal );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( ch === '{' )\r\n\t\t{\r\n\t\t\tvar strComment = this.m_it.AcceptUntil( Char.getIsChar( '}' ), true );\r\n\t\t\tthis.m_it.skipWhile( Char.getIsChar( '}' ), true );\r\n\r\n\t\t\treturn new Token( TokenType.COMMENT, strComment );\r\n\t\t}\r\n\r\n\t\tif ( ch === '0' )\r\n\t\t{\r\n\t\t\t//Rochaden???\r\n\t\t\tif ( this.m_it.AcceptStr( \"-0-0\", true ) )\r\n\t\t\t\treturn new Token( TokenType.LONG_ROCHADE );\r\n\t\t\tif ( this.m_it.AcceptStr( \"-0\", true ) )\r\n\t\t\t\treturn new Token( TokenType.SHORT_ROCHADE );\r\n\t\t\tif ( this.m_it.AcceptStr( \"-1\", true ) )\r\n\t\t\t\treturn new Token( TokenType.RES_0_1 );\r\n\t\t}\r\n\r\n\t\tif ( ch === 'O' )\r\n\t\t{\r\n\t\t\t//Rochaden???\r\n\t\t\tif ( this.m_it.AcceptStr( \"-O-O\", true ) )\r\n\t\t\t\treturn new Token( TokenType.LONG_ROCHADE );\r\n\t\t\tif ( this.m_it.AcceptStr( \"-O\", true ) )\r\n\t\t\t\treturn new Token( TokenType.SHORT_ROCHADE );\r\n\t\t}\r\n\r\n\t\tif ( ch === '1' )\r\n\t\t{\r\n\t\t\t//Rochaden???\r\n\t\t\tif ( this.m_it.AcceptStr( \"-0\", true ) )\r\n\t\t\t\treturn new Token( TokenType.RES_1_0 );\r\n\t\t\tif ( this.m_it.AcceptStr( \"/2-1/2\", true ) )\r\n\t\t\t\treturn new Token( TokenType.RES_1_2 );\r\n\r\n\r\n\t\t}\r\n\r\n\t\t//Alle Sonderfälle sind nun abgehackt!\r\n\t\tif ( Char.IsDigit( ch ) )\r\n\t\t{\r\n\t\t\tvar strNum = ch + this.m_it.AcceptWhile( Char.IsDigit, true );\r\n\t\t\treturn new Token( TokenType.NUM, strNum );\r\n\t\t}\r\n\r\n\t\tif ( ch === '-' )\r\n\t\t{\r\n\t\t\tif ( this.m_it.AcceptChar( \"-\", true ) )\r\n\t\t\t\treturn new Token( TokenType.NULLMOVE );\r\n\t\t}\r\n\r\n\t\tif ( ch === '?' )\r\n\t\t{\r\n\t\t\tif ( this.m_it.AcceptChar( \"?\", true ) )\r\n\t\t\t\treturn new Token( TokenType.VERY_BAD );\r\n\t\t\tif ( this.m_it.AcceptChar( \"!\", true ) )\r\n\t\t\t\treturn new Token( TokenType.BAD_GOOD );\r\n\t\t\treturn new Token( TokenType.BAD );\r\n\t\t}\r\n\r\n\t\tif ( ch === '!' )\r\n\t\t{\r\n\t\t\tif ( this.m_it.AcceptChar( \"?\", true ) )\r\n\t\t\t\treturn new Token( TokenType.GOOD_BAD );\r\n\t\t\tif ( this.m_it.AcceptChar( \"!\", true ) )\r\n\t\t\t\treturn new Token( TokenType.VERY_GOOD );\r\n\t\t\treturn new Token( TokenType.GOOD );\r\n\t\t}\r\n\r\n\t\tif ( PGNTokenStream.isMoveChar( ch ) )\r\n\t\t{\r\n\t\t\t//Nun schmerzvoll den Zug akzeptieren...\r\n\t\t\tvar strMove = ch + this.m_it.AcceptWhile( PGNTokenStream.isMoveChar, true );\r\n\t\t\treturn new Token( TokenType.MOVE, strMove );\r\n\t\t}\r\n\r\n\t\treturn new Token( TokenType.UNKNOWN, ch );\r\n\t};\r\n\r\n\tstatic isMoveChar = function( _ch )\r\n\t{\r\n\t\treturn ( _ch >= 'a' && _ch <= 'h' ) ||\r\n\t\t\t( _ch >= '1' && _ch <= '8' ) ||\r\n\t\t\t( _ch === 'x' ) ||\r\n\t\t\t( _ch === '=' ) ||\r\n\t\t\t( Char.IsUpperCaseLetter( _ch ) && Piece.fromString( _ch ) !== Piece.NONE );\r\n\t};\r\n}\r\n\r\n//LEXER\r\n\r\nexport class PGNLexer\r\n{\r\n\tconstructor( _strPGN ) \r\n\t{\r\n\t\tthis.m_stm = new PGNTokenStream( _strPGN );\r\n\t\tthis.m_last = null;\r\n\t}\r\n\r\n\tpeek( _func )\r\n\t{\r\n\t\tif ( !this.m_last )\r\n\t\t\tthis.m_last = this.m_stm.nextToken();\r\n\r\n\t\tif ( _func && _func( this.m_last.type ) )\r\n\t\t\treturn this.m_last;\r\n\t\telse\r\n\t\t\treturn null;\r\n\t};\r\n\r\n\tstatic getIsType = function( _typeCmp )\r\n\t{\r\n\t\treturn function( _type )\r\n\t\t{\r\n\t\t\treturn _type === _typeCmp;\r\n\t\t};\r\n\t};\r\n\r\n\tpop( _func )\r\n\t{\r\n\t\tvar res = this.peek( _func );\r\n\t\tif ( res )\r\n\t\t\tthis.m_last = null;\r\n\t\treturn res;\r\n\t};\r\n\r\n\tpopT( _type )\r\n\t{\r\n\t\treturn this.pop( PGNLexer.getIsType( _type ) );\r\n\t};\r\n\r\n\tpeekT( _type )\r\n\t{\r\n\t\treturn this.peek( PGNLexer.getIsType( _type ) );\r\n\t};\r\n}","// ST 2011\r\n// ES6 3.3.2020\r\n\r\nimport { StringBuilder } from \"common/Tools/Strings/StringBuilder\";\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil';\r\nimport { Piece, Square } from 'common/Chess/Logic/Chess';\r\nimport { Game } from 'common/Chess/Logic/Game';\r\n\r\nimport { Move } from 'common/Chess/Logic/Move';\r\nimport { MoveLine } from 'common/Chess/Logic/MoveLine';\r\nimport { Position } from 'common/Chess/Logic/Position';\r\nimport { AnnoType } from 'common/Chess/Format/AnnoTypes';\r\nimport { GameResultEnum, GameHeader } from 'common/Chess/Logic/GameHeader';\r\nimport { ColSq, ColArrow, ColSqAnno, ColArrowAnno, TextAnno, EvalAnno, TrainingAnno, TimeAnno, \r\n\t\t MoveMedalAnno, EvalProfileAnno, SymbolsAnno } from 'common/Chess/Format/AnnoTypes';\r\nimport { ClockParams } from 'common/Chess/PlayingModes/ClockParams';\r\nimport { SpecialGlyphs } from \"./glyph\";\r\nimport { PGNLexer, TokenType } from \"./PGNLexer\";\r\n\r\n\r\nexport class PGNSubLine extends Array\r\n{\r\n}\r\n\r\nexport class PGNMove\r\n{\r\n\tconstructor( _str )\r\n\t{\r\n\t\tthis.m_strMove = null;\r\n\t\tthis.m_isCheck = false;\r\n\t\tthis.m_isMate = false;\r\n\t\tthis.m_isShortCastle = false;\r\n\t\tthis.m_isLongCastle = false;\r\n\r\n\t\tthis.m_isNullMove = false;\r\n\t\tthis.m_isTake = false;\r\n\r\n\t\tthis.m_mvd = Piece.NONE;\r\n\t\tthis.m_prom = Piece.NONE;\r\n\r\n\t\tthis.m_colFrom = -1;\r\n\t\tthis.m_rowFrom = -1;\r\n\r\n\t\tthis.m_colTo = -1;\r\n\t\tthis.m_rowTo = -1;\r\n\r\n\t\tthis.m_to = -1;\r\n\r\n\t\tif ( _str )\r\n\t\t{\r\n\t\t\tthis.m_strMove = _str;\r\n\t\t\tthis.init( _str );\r\n\t\t}\r\n\t};\r\n\r\n\r\n\t//Initers for special cases...\r\n\tstatic g_regex = /^(K|Q|R|N|B)?([a-h]?)([1-8]?)(x?)([a-h])([1-8])(?:=?(K|Q|R|N|B))?$/;\r\n\tinit( _strMv )\r\n\t{\r\n\t\tif ( PGNMove.g_regex.exec( _strMv ) )\r\n\t\t{\r\n\t\t\tthis.m_mvd = Piece.fromString( RegExp.$1 );\r\n\t\t\tthis.m_mvd = Piece.nominal( this.m_mvd );\r\n\r\n\t\t\tif ( RegExp.$2 )\r\n\t\t\t\tthis.m_colFrom = Square.colFromString( RegExp.$2 );\r\n\t\t\tif ( RegExp.$3 )\r\n\t\t\t\tthis.m_rowFrom = Square.rowFromString( RegExp.$3 );\r\n\r\n\t\t\tif ( RegExp.$4 )\r\n\t\t\t\tthis.m_isTake = true;\r\n\r\n\t\t\tif ( RegExp.$5 )\r\n\t\t\t\tthis.m_colTo = Square.colFromString( RegExp.$5 );\r\n\t\t\tif ( RegExp.$6 )\r\n\t\t\t\tthis.m_rowTo = Square.rowFromString( RegExp.$6 );\r\n\r\n\t\t\tif ( RegExp.$7 )\r\n\t\t\t{\r\n\t\t\t\tthis.m_prom = Piece.fromString( RegExp.$7 );\r\n\t\t\t\tthis.m_prom = Piece.nominal( this.m_prom );\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.m_rowFrom < 0 && this.m_mvd === Piece.NONE )\r\n\t\t\t\tthis.m_mvd = Piece.PAWN;\r\n\r\n\t\t\tif ( this.m_colTo >= 0 && this.m_rowTo >= 0 )\r\n\t\t\t\tthis.m_to = Square.I( this.m_colTo, this.m_rowTo );\r\n\t\t}\r\n\t};\r\n\r\n\tsetNullMove()\r\n\t{\r\n\t\tthis.m_isNullMove = true;\r\n\t};\r\n\r\n\tisNullMove()\r\n\t{\r\n\t\treturn this.m_isNullMove;\r\n\t};\r\n\r\n\tsetLongCastling()\r\n\t{\r\n\t\tthis.m_isLongCastle = true;\r\n\t};\r\n\r\n\tisLongCastling()\r\n\t{\r\n\t\treturn this.m_isLongCastle;\r\n\t};\r\n\r\n\tsetShortCastling()\r\n\t{\r\n\t\tthis.m_isShortCastle = true;\r\n\t};\r\n\r\n\tisShortCastling()\r\n\t{\r\n\t\treturn this.m_isShortCastle;\r\n\t};\r\n\r\n\tsetCheck( _chk )\r\n\t{\r\n\t\tthis.m_isCheck = _chk;\r\n\t};\r\n\r\n\tsetMate( _mate )\r\n\t{\r\n\t\tthis.m_isMate = _mate;\r\n\t};\r\n\r\n\tisTake()\r\n\t{\r\n\t\treturn this.m_isTake;\r\n\t};\r\n\r\n\tmatches( _mv )\r\n\t{\r\n\t\tvar from = _mv.from;\r\n\t\tvar to = _mv.to;\r\n\r\n\t\tif ( this.m_to !== to )\r\n\t\t\treturn false;\r\n\r\n\t\tif ( this.m_mvd !== Piece.NONE )\r\n\t\t{\r\n\t\t\tvar mvd = _mv.getMoved();\r\n\t\t\tif ( Piece.nominal( mvd ) !== this.m_mvd )\r\n\t\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.matchesFrom( from );\r\n\r\n\t};\r\n\r\n\tmatchesFrom( _fld )\r\n\t{\r\n\t\tif ( this.m_colFrom >= 0 )\r\n\t\t\tif ( this.m_colFrom !== Square.C( _fld ) )\r\n\t\t\t\treturn false;\r\n\r\n\t\tif ( this.m_rowFrom >= 0 )\r\n\t\t\tif ( this.m_rowFrom !== Square.R( _fld ) )\r\n\t\t\t\treturn false;\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tgetMoved()\r\n\t{\r\n\t\treturn this.m_mvd;\r\n\t};\r\n\r\n\tgetTo()\r\n\t{\r\n\t\treturn this.m_to;\r\n\t};\r\n\r\n\tgetProm()\r\n\t{\r\n\t\treturn this.m_prom;\r\n\t};\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class PGNComment\r\n{\r\n\tconstructor( _strComment )\r\n\t{\r\n\t\t//\tthis.m_strComment = this.preprocessComment( _strComment ); // TODO, still minifying problem with AnnoType below\r\n\r\n\t\tthis.m_strComment = _strComment || \"\";\r\n\t};\r\n\r\n\tgetComment()\r\n\t{\r\n\t\treturn this.m_strComment;\r\n\t};\r\n\r\n\t//preprocessComment( _str )\r\n\t//{\r\n\t//\treturn _str.replace( /\\/\\\\/g, \"FOO\" );\r\n\t//};\r\n\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////////\r\nexport class PGNGlyph\r\n{\r\n\tconstructor( _glyph )\r\n\t{\r\n\t\tthis.m_glyph = _glyph || 9;\r\n\t}\r\n\r\n\tgetGlyph = function()\r\n\t{\r\n\t\treturn this.m_glyph;\r\n\t}\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class PGNMoveNum\r\n{\r\n\tconstructor( _num, _isBlack )\r\n\t{\r\n\t\tthis.m_num = _num;\r\n\t\tthis.m_isBlack = _isBlack;\r\n\t}\r\n}\r\n\r\nexport class PGNGame\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.m_hdrs = {};\r\n\t\tthis.m_mainLine = new PGNSubLine();\r\n\t}\r\n\r\n\tgetHeaders = function()\r\n\t{\r\n\t\treturn this.m_hdrs;\r\n\t};\r\n\r\n\tgetMainLine = function()\r\n\t{\r\n\t\treturn this.m_mainLine;\r\n\t};\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\nexport class PGNParser\r\n{\r\n\tconstructor( _lexer )\r\n\t{\r\n\t\tif ( _lexer )\r\n\t\t\tthis.m_lexer = _lexer;\r\n\t\telse\r\n\t\t\tthis.m_lexer = new PGNLexer( \"\" );\r\n\t};\r\n\r\n\tacceptGame()\r\n\t{\r\n\t\tvar gm = new PGNGame();\r\n\t\tif ( !this.acceptHeaders( gm.m_hdrs ) )\r\n\t\t\treturn null;\r\n\t\tif ( !this.acceptGameNotation( gm ) )\r\n\t\t\treturn null;\r\n\t\treturn gm;\r\n\t};\r\n\r\n\tacceptGameNoMoves()\r\n\t{\r\n\t\tvar gm = new PGNGame();\r\n\t\tif ( !this.acceptHeaders( gm.m_hdrs ) )\r\n\t\t\treturn null;\r\n\t\treturn gm;\r\n\t};\r\n\r\n\tacceptGameNotation( _gm )\r\n\t{\r\n\t\tthis.acceptNotation( _gm.m_mainLine );\r\n\t\tvar res = this.acceptResult();\r\n\t\tif ( res != null )\r\n\t\t\t_gm.m_hdrs.result = res;\r\n\t\t//Kam garantiert nach Result-Header.\r\n\t\treturn true;\r\n\t};\r\n\r\n\tstatic isResultTokenType = function( _type )\r\n\t{\r\n\t\treturn _type === TokenType.RES_0_1 ||\r\n\t\t\t_type === TokenType.RES_1_0 ||\r\n\t\t\t_type === TokenType.RES_1_2 ||\r\n\t\t\t_type === TokenType.RES_STAR;\r\n\t};\r\n\r\n\tacceptResult()\r\n\t{\r\n\t\tvar tokRes = this.m_lexer.pop( PGNParser.isResultTokenType );\r\n\t\tif ( tokRes )\r\n\t\t{\r\n\t\t\tswitch ( tokRes.type )\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\tcase TokenType.RES_0_1:\r\n\t\t\t\t\treturn GameResultEnum.BLACK_WINS;\r\n\t\t\t\tcase TokenType.RES_1_0:\r\n\t\t\t\t\treturn GameResultEnum.WHITE_WINS;\r\n\t\t\t\tcase TokenType.RES_1_2:\r\n\t\t\t\t\treturn GameResultEnum.DRAW;\r\n\t\t\t\tcase TokenType.RES_STAR:\r\n\t\t\t\t\treturn GameResultEnum.LINE;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tacceptNotation( _line )\r\n\t{\r\n\t\tfor ( var elem = this.acceptNotaElem();\r\n\t\t\telem != null;\r\n\t\t\telem = this.acceptNotaElem() )\r\n\t\t{\r\n\t\t\t_line.push( elem );\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\tacceptNotaElem()\r\n\t{\r\n\t\tvar elem = this.acceptMoveNum();\r\n\t\tif ( elem )\r\n\t\t\treturn elem;\r\n\r\n\t\telem = this.acceptMove();\r\n\t\tif ( elem )\r\n\t\t\treturn elem;\r\n\r\n\t\telem = this.acceptGlyph();\r\n\t\tif ( elem )\r\n\t\t\treturn elem;\r\n\r\n\t\telem = this.acceptSubLine();\r\n\t\tif ( elem )\r\n\t\t\treturn elem;\r\n\r\n\t\telem = this.acceptComment();\r\n\t\tif ( elem )\r\n\t\t\treturn elem;\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\t// NH2020 made static\r\n\tstatic tokenTypeToGlyph( _type )\r\n\t{\r\n\t\tswitch ( _type )\r\n\t\t{\r\n\t\t\tcase TokenType.BAD:\r\n\t\t\t\treturn SpecialGlyphs.BAD_MOVE;\r\n\t\t\tcase TokenType.BAD_GOOD:\r\n\t\t\t\treturn SpecialGlyphs.DUBIOUS_MOVE;\r\n\t\t\tcase TokenType.GOOD:\r\n\t\t\t\treturn SpecialGlyphs.GOOD_MOVE;\r\n\t\t\tcase TokenType.GOOD_BAD:\r\n\t\t\t\treturn SpecialGlyphs.SPECULATIVE_MOVE;\r\n\t\t\tcase TokenType.VERY_GOOD:\r\n\t\t\t\treturn SpecialGlyphs.VERY_GOOD_MOVE;\r\n\t\t\tcase TokenType.VERY_BAD:\r\n\t\t\t\treturn SpecialGlyphs.VERY_BAD_MOVE;\r\n\t\t\tdefault:\r\n\t\t\t\treturn SpecialGlyphs.NONE;\r\n\t\t}\r\n\t}\r\n\r\n\tisGlyphType( _type )\r\n\t{\r\n\t\treturn PGNParser.tokenTypeToGlyph( _type ) !== SpecialGlyphs.NONE;\r\n\t}\r\n\r\n\tacceptGlyph()\r\n\t{\r\n\t\tvar tokBuck = this.m_lexer.popT( TokenType.BUCK );\r\n\t\tif ( tokBuck )\r\n\t\t{\r\n\t\t\tvar tokNum = this.m_lexer.popT( TokenType.NUM );\r\n\t\t\treturn new PGNGlyph( Number( tokNum.str ) );\r\n\t\t}\r\n\r\n\t\tvar tokSpec = this.m_lexer.pop( this.isGlyphType );\r\n\t\tif ( tokSpec )\r\n\t\t{\r\n\t\t\tvar glyph = this.tokenTypeToGlyph( tokSpec.type );\r\n\t\t\treturn new PGNGlyph( glyph );\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tacceptSubLine()\r\n\t{\r\n\t\tvar tokOp = this.m_lexer.popT( TokenType.VAR_OP );\r\n\t\tif ( tokOp )\r\n\t\t{\r\n\t\t\tvar line = new PGNSubLine();\r\n\r\n\t\t\tthis.acceptNotation( line );\r\n\r\n\t\t\tthis.m_lexer.popT( TokenType.VAR_CL );\r\n\r\n\t\t\treturn line;\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tacceptComment()\r\n\t{\r\n\t\tvar tokComment = this.m_lexer.popT( TokenType.COMMENT );\r\n\t\tif ( tokComment )\r\n\t\t{\r\n\t\t\treturn new PGNComment( tokComment.str );\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tacceptMoveNum()\r\n\t{\r\n\t\tvar tokNum = this.m_lexer.popT( TokenType.NUM );\r\n\t\tif ( tokNum )\r\n\t\t{\r\n\t\t\tvar cntDots = 0;\r\n\t\t\t\r\n\t\t\twhile ( this.m_lexer.popT( TokenType.DOT ) != null )\r\n\t\t\t\t++cntDots;\r\n\t\t\t\r\n\t\t\treturn new PGNMoveNum( Number( tokNum.str ), cntDots > 1 );\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tstatic isMoveTokenType = function( _type )\r\n\t{\r\n\t\treturn _type === TokenType.MOVE ||\r\n\t\t\t_type === TokenType.LONG_ROCHADE ||\r\n\t\t\t_type === TokenType.SHORT_ROCHADE ||\r\n\t\t\t_type === TokenType.NULLMOVE;\r\n\t};\r\n\r\n\tacceptMove()\r\n\t{\r\n\t\tvar tokMove = this.m_lexer.pop( PGNParser.isMoveTokenType );\r\n\t\tif ( tokMove )\r\n\t\t{\r\n\t\t\tvar mv = new PGNMove();\r\n\t\t\tswitch ( tokMove.type )\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\tcase TokenType.MOVE:\r\n\t\t\t\t\tmv.init( tokMove.str );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase TokenType.LONG_ROCHADE:\r\n\t\t\t\t\tmv.setLongCastling();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase TokenType.SHORT_ROCHADE:\r\n\t\t\t\t\tmv.setShortCastling();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase TokenType.NULLMOVE:\r\n\t\t\t\t\tmv.setNullMove();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( tokMove.type !== TokenType.NULLMOVE )\r\n\t\t\t{\r\n\t\t\t\tvar chk = this.m_lexer.popT( TokenType.CHECK ) != null;\r\n\t\t\t\tvar mate = false;\r\n\t\t\t\tif ( !chk )\r\n\t\t\t\t\tmate = this.m_lexer.popT( TokenType.MATE ) != null;\r\n\r\n\t\t\t\tmv.setCheck( chk );\r\n\t\t\t\tmv.setMate( mate );\r\n\t\t\t}\r\n\r\n\t\t\treturn mv;\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tacceptHeaders( _hdrs )\r\n\t{\r\n\t\twhile ( this.acceptHeader( _hdrs ) ) { }\r\n\t\treturn true;\r\n\t};\r\n\r\n\tacceptHeader( _hdrs )\r\n\t{\r\n\t\tif ( this.m_lexer.popT( TokenType.HEAD_OP ) )\r\n\t\t{\r\n\t\t\tvar tokVar = this.m_lexer.popT( TokenType.STR_VAR );\r\n\t\t\tvar tokVal = this.m_lexer.popT( TokenType.STR_VAL );\r\n\r\n\t\t\tthis.m_lexer.popT( TokenType.HEAD_CL );\r\n\r\n\t\t\tvar prop = tokVar.str.toLowerCase();\r\n\t\t\t_hdrs[ prop ] = tokVal.str;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\t//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n\r\n\t//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n\tstatic toColSq = function( _arrArgs )\r\n\t{\r\n\t\tvar res = new ColSqAnno();\r\n\t\tfor ( var inx = 0, len = _arrArgs.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar strArg = _arrArgs[ inx ];\r\n\r\n\t\t\tvar csq = new ColSq();\r\n\t\t\tcsq.init( strArg );\r\n\r\n\t\t\tres.push( csq );\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tstatic toColArrow = function( _arrArgs )\r\n\t{\r\n\t\tvar res = new ColArrowAnno();\r\n\t\tfor ( var inx = 0, len = _arrArgs.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar strArg = _arrArgs[ inx ];\r\n\r\n\t\t\tvar carr = new ColArrow();\r\n\t\t\tcarr.init( strArg );\r\n\r\n\t\t\tres.push( carr );\r\n\t\t}\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tstatic toDiag = function( _arrArgs )\r\n\t{\r\n\t\tvar strLegend = \"\";\r\n\t\tif ( _arrArgs.length > 0 )\r\n\t\t\tstrLegend = _arrArgs[ 0 ];\r\n\t\treturn new TextAnno( strLegend );\r\n\t};\r\n\r\n\tstatic toTime = function( _arrArgs )\r\n\t{\r\n\t\tvar time = _arrArgs[ 0 ];\r\n\r\n\t\tvar arrParts = time.split( ':' );\r\n\t\tvar secs = Number( arrParts[ 0 ] ) * 3600 + Number( arrParts[ 1 ] ) * 60 + Number( arrParts[ 2 ] );\r\n\r\n\t\tvar res = new TimeAnno();\r\n\t\tres.fromCentiSecs( 100 * secs );\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tstatic toEval = function( _arrArgs )\r\n\t{\r\n\t\tvar myeval = Number( _arrArgs[ 0 ] ) * 0.01;\r\n\t\tvar depth = 0;\r\n\t\tif ( _arrArgs.length > 1 )\r\n\t\t\tdepth = Number( _arrArgs[ 1 ] );\r\n\t\treturn new EvalAnno( myeval, depth );\r\n\t};\r\n\r\n\tstatic toTraining = function( _arrArgs )\r\n\t{\r\n\t\tvar res = new TrainingAnno();\r\n\t\tif ( _arrArgs.length >= 7 && _arrArgs[ 0 ].length === 2 ) // new format: language id\r\n\t\t{\r\n\t\t\tres.move = _arrArgs[ 4 ];\r\n\r\n\t\t\tfor ( var l = 0; l < _arrArgs.length / 7; l++ )\r\n\t\t\t{\r\n\t\t\t\tif ( _arrArgs[ l * 7 ].length === 2 )\r\n\t\t\t\t{\r\n\t\t\t\t\tres.texts[ _arrArgs[ l * 7 ].toLowerCase() ] =\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tquestion: _arrArgs[ l * 7 + 1 ],\r\n\t\t\t\t\t\thelp: _arrArgs[ l * 7 + 2 ],\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse // old format\r\n\t\t{\r\n\t\t\tres.move = _arrArgs[ 3 ];\r\n\t\t\tres.texts[ \"en\" ] =\r\n\t\t\t{\r\n\t\t\t\tquestion: _arrArgs[ 0 ],\r\n\t\t\t\thelp: _arrArgs[ 1 ]\r\n\t\t\t}\r\n\t\t}\r\n\t\tres.fromPGN = true;\r\n\r\n\t\treturn res;\r\n\t};\r\n\r\n\tstatic toEvalProfile = function( _arrArgs )\r\n\t{\r\n\t\tvar evals = [];\r\n\t\tif ( _arrArgs.length > 3 )\r\n\t\t{\r\n\t\t\tvar first = parseInt( _arrArgs[ 0 ] );\r\n\t\t\tvar last = parseInt( _arrArgs[ 1 ] );\r\n\t\t\tfor ( var i = 0; i < last - first + 1; i++ )\r\n\t\t\t{\r\n\t\t\t\tevals.push( parseInt( _arrArgs[ i + 2 ] ) );\r\n\t\t\t}\r\n\t\t\tvar res = new EvalProfileAnno( first, last, evals );\r\n\t\t\tres.fromPGN = true;\r\n\t\t\treturn res;\r\n\t\t}\r\n\t};\r\n\r\n\tstatic toMedal = function( _arrArgs )\r\n\t{\r\n\t\tvar res = new MoveMedalAnno( parseInt( _arrArgs[ 0 ] ) );\r\n\t\treturn res;\r\n\t};\r\n\r\n\tstatic PGNAnnoResolver =\r\n\t\t{\r\n\t\t\t\"cal\": { func: PGNParser.toColArrow, type: AnnoType.ARROW_LIST },\r\n\t\t\t\"csl\": { func: PGNParser.toColSq, type: AnnoType.SQUARE_LIST },\r\n\t\t\t\"dia\": { func: PGNParser.toDiag, type: AnnoType.DIAGRAM },\r\n\t\t\t\"eval\": { func: PGNParser.toEval, type: AnnoType.FRITZ_EVAL },\r\n\t\t\t\"emt\": { func: PGNParser.toTime, type: AnnoType.TIME },\r\n\t\t\t\"tqu\": { func: PGNParser.toTraining, type: AnnoType.TRAINING },\r\n\t\t\t\"mdl\": { func: PGNParser.toMedal, type: AnnoType.MOVE_MEDAL },\r\n\t\t\t\"evp\": { func: PGNParser.toEvalProfile, type: AnnoType.EVAL_PROFILE },\r\n\t\t};\r\n\r\n\r\n\tstatic g_regexEval = /(-?(?:\\d?\\d\\.\\s?\\d\\d?)|(?:#\\d+))\\/\\s?(\\d+)/;\r\n\tstatic toAnno = function( _mv, _strComment )\r\n\t{\r\n\t\t//Sonderfälle\r\n\t\tif ( _strComment.indexOf( \"/\" ) >= 0 )\r\n\t\t{\r\n\t\t\tvar tmpComment = _strComment.replace( /\\r/g, ' ' );\r\n\t\t\ttmpComment = tmpComment.replace( /\\n/g, ' ' );\r\n\t\t\ttmpComment = tmpComment.replace( /\\s\\s/g, ' ' );\r\n\t\t\t//Das kann die Bewertung sein!\r\n\r\n\t\t\tvar match = PGNParser.g_regexEval.exec( tmpComment );\r\n\r\n\t\t\tif ( match )\r\n\t\t\t{\r\n\t\t\t\tvar myEval = match[ 1 ];\r\n\t\t\t\tmyEval = myEval.replace( /\\s/g, \"\" );\r\n\t\t\t\tif ( myEval.indexOf( \"#\" ) === 0 )\r\n\t\t\t\t\tmyEval = 32000;\r\n\t\t\t\telse if ( myEval.indexOf( \"-#\" ) === 0 )\r\n\t\t\t\t\tmyEval = -32000;\r\n\t\t\t\telse\r\n\t\t\t\t\tmyEval = Number( myEval );\r\n\r\n\t\t\t\tvar depth = Number( match[ 2 ] );\r\n\t\t\t\tvar evalAnno = new EvalAnno( myEval, depth );\r\n\r\n\t\t\t\t_mv.setAnnoItem( AnnoType.FRITZ_EVAL, evalAnno );\r\n\r\n\t\t\t\tvar inxStart = match.index;\r\n\t\t\t\tlet len = match[ 0 ].length;\r\n\r\n\t\t\t\t_strComment = tmpComment.substring( 0, inxStart ) +\r\n\t\t\t\t\ttmpComment.substring( inxStart + len );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar esc = _strComment.indexOf( \"[%\" ) >= 0;\r\n\t\tif ( esc )\r\n\t\t{\r\n\t\t\tvar arrCmds = [];\r\n\t\t\t_strComment = PGNCommand.process( _strComment, arrCmds );\r\n\r\n\t\t\tfor ( let inx = 0, len = arrCmds.length; inx < len; ++inx )\r\n\t\t\t{\r\n\t\t\t\tvar cmd = arrCmds[ inx ];\r\n\r\n\t\t\t\tif ( cmd.m_cmd in PGNParser.PGNAnnoResolver )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar cmdToAnno = PGNParser.PGNAnnoResolver[ cmd.m_cmd ];\r\n\t\t\t\t\tvar type = cmdToAnno.type;\r\n\t\t\t\t\tvar anno = cmdToAnno.func( cmd.m_args );\r\n\r\n\t\t\t\t\tif ( anno )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//if ( type == AnnoType.TRAINING )\t\t// wrong move ... need the next one.\r\n\t\t\t\t\t\t//{\tanno.move = new Move( _mv.from, _mv.to, _mv.prom );\r\n\t\t\t\t\t\t//}\r\n\t\t\t\t\t\t_mv.setAnnoItem( type, anno );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( _strComment )\r\n\t\t\t_mv.setAnnoItem( AnnoType.POSTTEXT, new TextAnno( _strComment ) );\r\n\r\n\t};\r\n\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////////////////////////////////////\r\n//Shtoby gladenko...\r\nexport class PGN\r\n{\r\n\tstatic checkUndefined( _str )\r\n\t{\r\n\t\tif ( _str === undefined )\r\n\t\t\treturn \"\";\r\n\t\treturn _str === \"?\" ? \"\" : _str;\r\n\t}\r\n\r\n\tstatic isDefined( _str )\r\n\t{\r\n\t\treturn _str && _str !== \"?\";\r\n\t}\r\n\r\n\tstatic toHeader( _pgnHdr )\r\n\t{\r\n\t\tvar hdr = new GameHeader();\r\n\r\n\t\thdr.setWhite( PGN.checkUndefined( _pgnHdr.white ) );\r\n\t\thdr.setBlack( PGN.checkUndefined( _pgnHdr.black ) );\r\n\r\n\t\thdr.setEvent( PGN.checkUndefined( _pgnHdr.event ) );\r\n\t\thdr.setSite( PGN.checkUndefined( _pgnHdr.site ) );\r\n\r\n\t\thdr.setAnnotator( PGN.checkUndefined( _pgnHdr.annotator ) );\r\n\r\n\t\thdr.setECO( PGN.checkUndefined( _pgnHdr.eco ) );\r\n\r\n\t\tvar res = _pgnHdr.result;\r\n\t\tif ( typeof ( res ) === \"string\" )\r\n\t\t{\r\n\t\t\thdr.setResult( GameResultEnum.fromString( res ) );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\thdr.setResult( res );\r\n\t\t}\r\n\r\n\t\thdr.setRoundStr( PGN.checkUndefined( _pgnHdr.round ) );\r\n\r\n\t\tif ( PGN.isDefined( _pgnHdr.whiteelo ) )\r\n\t\t{\r\n\t\t\thdr.setEloWhite( parseInt( _pgnHdr.whiteelo ) );\r\n\t\t}\r\n\r\n\t\tif ( PGN.isDefined( _pgnHdr.blackelo ) )\r\n\t\t{\r\n\t\t\thdr.setEloBlack( parseInt( _pgnHdr.blackelo ) );\r\n\t\t}\r\n\r\n\t\tif ( PGN.isDefined( _pgnHdr.date ) )\r\n\t\t{\r\n\t\t\thdr.setDateStr( _pgnHdr.date );\r\n\t\t}\r\n\r\n\t\tif ( PGN.isDefined( _pgnHdr.timecontrol ) )\r\n\t\t{\r\n\t\t\thdr.setClockParams( PGN.toClockParams( _pgnHdr.timecontrol ) );\r\n\t\t}\r\n\r\n\t\tif ( PGN.isDefined( _pgnHdr.plycount ) )\r\n\t\t{\r\n\t\t\thdr.plyCount = ( parseInt( _pgnHdr.plycount ) + 1 ) >> 1;\r\n\t\t}\r\n\r\n\t\treturn hdr;\r\n\t}\r\n\r\n\tstatic rexCP = /^(\\d+)(?:\\+(\\d+))?$/;\r\n\tstatic toClockParams( _str )\r\n\t{\r\n\t\tvar res = PGN.rexCP.exec( _str );\r\n\t\tif ( !res )\r\n\t\t\treturn new ClockParams();\r\n\t\treturn new ClockParams( Number( res[ 1 ] ) / 60, Number( res[ 2 ] ) );\r\n\t}\r\n\r\n\tstatic toGame( _pgnGM )\r\n\t{\r\n\t\t//Headers vorerst ignorieren...\r\n\t\t//Und nun...\r\n\t\tvar fen = null;\r\n\t\tvar hdrs = _pgnGM.getHeaders();\r\n\t\tif ( /*hdrs.setup && */ hdrs.fen )\r\n\t\t\tfen = hdrs.fen;\r\n\r\n\t\tvar hdr = PGN.toHeader( hdrs );\r\n\r\n\t\tvar start = new Position( fen );\r\n\t\tvar pgnLine = _pgnGM.getMainLine();\r\n\t\tvar mainLine = PGN.toLine( start, pgnLine );\r\n\r\n\t\tvar gmRes = new Game( start, mainLine );\r\n\t\tgmRes.setHeader( hdr );\r\n\r\n\t\t//\tCBDebug.call( gmRes, gmRes.selfTest );\r\n\r\n\t\treturn gmRes;\r\n\t}\r\n\r\n\tstatic toMove( _pgnMv, _pos )\r\n\t{\r\n\t\tif ( _pgnMv.isLongCastling() )\r\n\t\t{\r\n\t\t\tlet mv = _pos.isWTM() ? Move.g_mvW000 : Move.g_mvB000;\r\n\t\t\tif ( PGN.trustLegal || _pos.isLegalMove( mv ) )\r\n\t\t\t\treturn ObjUtil.clone( mv );\r\n\t\t}\r\n\r\n\t\tif ( _pgnMv.isShortCastling() )\r\n\t\t{\r\n\t\t\tlet mv = _pos.isWTM() ? Move.g_mvW00 : Move.g_mvB00;\r\n\t\t\tif ( PGN.trustLegal || _pos.isLegalMove( mv ) )\r\n\t\t\t\treturn ObjUtil.clone( mv );\r\n\t\t}\r\n\r\n\t\tif ( _pgnMv.isNullMove() )\r\n\t\t{\r\n\t\t\treturn new Move();\r\n\t\t}\r\n\r\n\t\tvar to = _pgnMv.getTo();\r\n\t\tvar mvd = _pgnMv.getMoved();\r\n\r\n\t\tvar sd = _pos.getSideToMove();\r\n\t\tvar prom = _pgnMv.getProm();\r\n\r\n\r\n\t\tif ( mvd !== Piece.PAWN )\r\n\t\t\tprom = Piece.NONE;\r\n\r\n\t\tvar arrAttks = [];\r\n\t\tswitch ( mvd )\r\n\t\t{\r\n\t\t\tcase Piece.KNIGHT:\r\n\t\t\t\t_pos.getKnightAttacksTo( to, sd, arrAttks );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.BISHOP:\r\n\t\t\t\t_pos.getBishopAttacksTo( to, sd, arrAttks );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.ROOK:\r\n\t\t\t\t_pos.getRookAttacksTo( to, sd, arrAttks );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.QUEEN:\r\n\t\t\t\t_pos.getQueenAttacksTo( to, sd, arrAttks );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.KING:\r\n\t\t\t\t_pos.getKingAttacksTo( to, sd, arrAttks );\r\n\t\t\t\tbreak;\r\n\t\t\tcase Piece.PAWN:\r\n\t\t\t\tif ( _pgnMv.isTake() )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar pcVct = _pos.getPiece( to );\r\n\t\t\t\t\tif ( pcVct === Piece.NONE && to === _pos.getEPField() )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tvar fldEP = _pos.getEPVictimField();\r\n\t\t\t\t\t\tpcVct = _pos.getPiece( fldEP );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( pcVct !== Piece.NONE && Piece.side( pcVct ) !== sd )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t_pos.getPawnAttacksTo( to, sd, arrAttks );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tlet pcVct = _pos.getPiece( to );\r\n\t\t\t\t\tif ( pcVct === Piece.NONE )\r\n\t\t\t\t\t\t_pos.getPawnMovesTo( to, sd, arrAttks );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif ( !arrAttks.length )\r\n\t\t\treturn null;\r\n\t\tif ( arrAttks.length === 1 && PGN.trustLegal )\r\n\t\t\treturn new Move( arrAttks[ 0 ], to, prom );\r\n\r\n\t\t//Es gib't mehr als einen Kandidat!!!\r\n\t\tvar funFltr = _pgnMv.matchesFrom.bind( _pgnMv );\r\n\t\tarrAttks = arrAttks.filter( funFltr );\r\n\t\tif ( !arrAttks.length )\r\n\t\t\treturn null;\r\n\t\tif ( arrAttks.length === 1 && PGN.trustLegal )\r\n\t\t\treturn new Move( arrAttks[ 0 ], to );\r\n\r\n\t\tvar fnFldToMv = function( _from )\r\n\t\t{\r\n\t\t\treturn new Move( _from, to );\r\n\t\t};\r\n\r\n\t\tvar arrMvs = arrAttks.map( fnFldToMv );\r\n\r\n\t\tarrMvs = _pos.filterLegals( arrMvs );\r\n\t\tif ( !arrMvs.length )\r\n\t\t\treturn null;\r\n\t\tif ( arrMvs.length === 1 )\r\n\t\t\treturn arrMvs[ 0 ];\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic detectLineEnd( _strPGN )\r\n\t{\r\n\t\tvar arrEnds = [ '\\r\\n', '\\n', '\\r' ];\r\n\t\tfor ( var inx = 0, len = arrEnds.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar end = arrEnds[ inx ];\r\n\t\t\tif ( _strPGN.indexOf( end ) >= 0 )\r\n\t\t\t\treturn end;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic fixMixed( _strPGN )\r\n\t{\r\n\t\t_strPGN = _strPGN.replace( /\\r\\n/g, '\\n' );\r\n\t\t_strPGN = _strPGN.replace( /\\r/g, '\\n' );\r\n\r\n\t\treturn _strPGN;\r\n\t}\r\n\r\n\tstatic canBeMixed( _strPGN )\r\n\t{\r\n\t\treturn _strPGN.indexOf( '\\r\\r' ) >= 0 ||\r\n\t\t\t_strPGN.indexOf( '\\n\\n' ) >= 0;\r\n\t}\r\n\r\n\tstatic splitGames = function( _strPGN )\r\n\t{\r\n\t\tvar firstToken = _strPGN.indexOf( \"[\" );\r\n\t\tif ( firstToken === -1 )\r\n\t\t\tfirstToken = _strPGN.indexOf( \"1.\" );\r\n\t\tif ( firstToken > 0 )\r\n\t\t\t_strPGN = _strPGN.slice( firstToken );\r\n\r\n\t\tvar arrRes = [];\r\n\t\t//Split in PGNs...\r\n\r\n\t\tvar lineEnd = PGN.detectLineEnd( _strPGN );\r\n\r\n\t\tif ( lineEnd == null )\r\n\t\t{\r\n\t\t\t//Nix zu holen...\r\n\t\t\treturn [ _strPGN ];\r\n\t\t}\r\n\r\n\t\tif ( lineEnd === '\\r\\n' )\r\n\t\t{\r\n\t\t\tif ( PGN.canBeMixed( _strPGN ) )\r\n\t\t\t{\r\n\t\t\t\t_strPGN = PGN.fixMixed( _strPGN );\r\n\t\t\t\tlineEnd = '\\n';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar delim = lineEnd + lineEnd + '[';\r\n\t\tvar lenShift = 2 * lineEnd.length;\r\n\r\n\t\tvar lastInx = 0;\r\n\t\tfor (\r\n\t\t\tvar inxDelim = _strPGN.indexOf( delim, lastInx );\r\n\t\t\tinxDelim !== -1 && lastInx < _strPGN.length;\r\n\t\t\tinxDelim = _strPGN.indexOf( delim, lastInx ) )\r\n\t\t{\r\n\t\t\tvar pgn = _strPGN.substring( lastInx, inxDelim );\r\n\t\t\tarrRes.push( pgn );\r\n\t\t\tlastInx = inxDelim + lenShift;\r\n\t\t}\r\n\r\n\t\tif ( lastInx < _strPGN.length )\r\n\t\t{\r\n\t\t\tvar lastPGN = _strPGN.substring( lastInx );\r\n\t\t\tarrRes.push( lastPGN );\r\n\t\t}\r\n\r\n\t\treturn arrRes;\r\n\t};\r\n\r\n\tstatic g_regexHdr = /\\[(\\w+)\\s+\"([\\s\\S]*?)\"\\]/g;\r\n\tstatic g_regexWS = /^\\s*$/;\r\n\r\n\tstatic repair = function( _strPGN )\r\n\t{\r\n\t\t//Was tun? Alle [xx] in einzelnen Zeilen reintun. Nachder letzen, vor der ersten - neue Zeile.\r\n\t\tvar lineEnd = PGN.detectLineEnd( _strPGN );\r\n\r\n\t\tif ( !lineEnd )\r\n\t\t\tlineEnd = '\\r\\n';\r\n\r\n\t\tvar regexHdr = PGN.g_regexHdr;\r\n\t\tvar regexWS = PGN.g_regexWS;\r\n\r\n\t\tvar sb = new StringBuilder();\r\n\r\n\t\tregexHdr.lastIndex = 0;\r\n\t\tvar inxLast = 0;\r\n\t\tvar res = null;\r\n\t\twhile ( ( res = regexHdr.exec( _strPGN ) ) != null )\r\n\t\t{\r\n\t\t\tvar inxStart = res.index;\r\n\r\n\t\t\tvar strBetween = _strPGN.substring( inxLast, inxStart );\r\n\r\n\t\t\tif ( !regexWS.test( strBetween ) )\r\n\t\t\t{\r\n\t\t\t\tsb.append( lineEnd );\r\n\t\t\t\tsb.append( strBetween.trim() );\r\n\t\t\t\tsb.append( lineEnd );\r\n\t\t\t\tsb.append( lineEnd );\r\n\t\t\t}\r\n\r\n\t\t\tvar strVar = res[ 1 ];\r\n\t\t\tvar strVal = res[ 2 ];\r\n\r\n\t\t\tstrVal = strVal.replace( /\\r/g, \" \" );\r\n\t\t\tstrVal = strVal.replace( /\\n/g, \" \" );\r\n\r\n\t\t\tsb.appendFormat( '[{0} \"{1}\"]', strVar, strVal );\r\n\t\t\tsb.append( lineEnd );\r\n\r\n\t\t\tinxLast = inxStart + res[ 0 ].length;\r\n\t\t}\r\n\r\n\t\tvar strRest = _strPGN.substring( inxLast );\r\n\r\n\t\tif ( !regexWS.test( strRest ) )\r\n\t\t{\r\n\t\t\tsb.append( lineEnd );\r\n\t\t\tsb.append( strRest.trim() );\r\n\t\t\tsb.append( lineEnd );\r\n\t\t\tsb.append( lineEnd );\r\n\t\t}\r\n\r\n\t\tvar strRes = sb.toString();\r\n\r\n\r\n\t\treturn strRes;\r\n\t};\r\n\r\n\tstatic trustLegal = true;\r\n\r\n\tstatic parseGame ( _strPGN )\r\n\t{\r\n\t\tif ( _strPGN )\r\n\t\t{\r\n\t\t\tvar lexer = new PGNLexer( _strPGN );\r\n\t\t\tvar parser = new PGNParser( lexer );\r\n\r\n\t\t\tvar pgnGM = parser.acceptGame();\r\n\t\t\tif ( !pgnGM )\r\n\t\t\t\treturn null;\r\n\t\t\tvar gm = PGN.toGame( pgnGM );\r\n\r\n\t\t\t//\tCBDebug.profileEnd();\r\n\r\n\t\t\treturn gm;\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn new Game();\r\n\t};\r\n\r\n\tstatic parseGameNoMoves = function( _strPGN )\r\n\t{\r\n\t\tif ( _strPGN )\r\n\t\t{\r\n\t\t\tvar lexer = new PGNLexer( _strPGN );\r\n\t\t\tvar parser = new PGNParser( lexer );\r\n\r\n\t\t\tvar pgnGM = parser.acceptGameNoMoves();\r\n\t\t\tif ( !pgnGM )\r\n\t\t\t\treturn null;\r\n\t\t\tvar gm = PGN.toGame( pgnGM );\r\n\r\n\t\t\treturn gm;\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn new Game();\r\n\t};\r\n\r\n\tstatic parseHeader = function( _strPGN )\r\n\t{\r\n\t\t//\t\tCBDebug.profile( \"parseHeader\" );\r\n\r\n\t\tvar lexer = new PGNLexer( _strPGN );\r\n\t\tvar parser = new PGNParser( lexer );\r\n\r\n\t\tvar pgnHdr = {};\r\n\r\n\t\tparser.acceptHeaders( pgnHdr );\r\n\t\tif ( !pgnHdr )\r\n\t\t\treturn null;\r\n\t\tvar hdr = PGN.toHeader( pgnHdr );\r\n\r\n\t\t//\tCBDebug.profileEnd();\r\n\r\n\t\treturn hdr;\r\n\t};\r\n\r\n\tstatic toLine( _start, _pgnLine )\r\n\t{\r\n\t\tvar cur = ObjUtil.clone( _start );\r\n\t\tvar lineRes = new MoveLine();\r\n\t\tvar undoLast = null;\r\n\t\tvar mvLast = null;\r\n\r\n\t\tvar preComment = null;\r\n\r\n\t\tfor ( var inx = 0, len = _pgnLine.length; inx < len; ++inx )\r\n\t\t{\r\n\t\t\tvar elem = _pgnLine[ inx ];\r\n\r\n\t\t\tif ( elem instanceof PGNMoveNum )\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif ( elem instanceof PGNMove )\r\n\t\t\t{\r\n\t\t\t\tvar mv = PGN.toMove( elem, cur );\r\n\t\t\t\tif ( !mv )\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t//\tCBDebug.call( cur, cur.isLegalMove, mv );\r\n\r\n\t\t\t\tundoLast = cur.makeMove( mv );\r\n\t\t\t\tmvLast = mv;\r\n\t\t\t\tlineRes.push( mv );\r\n\r\n\t\t\t\tif ( preComment )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( preComment.m_strComment && preComment.m_strComment.indexOf( \"[%\" ) === 0 )\r\n\t\t\t\t\t\tPGNParser.toAnno( mvLast, preComment.getComment() );\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tmvLast.setAnnoItem( AnnoType.PRETEXT, new TextAnno( preComment.getComment() ) );\r\n\t\t\t\t\tpreComment = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem instanceof PGNSubLine )\r\n\t\t\t{\r\n\t\t\t\tif ( !mvLast )\r\n\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t//Wird dadrunter geklont...\r\n\t\t\t\tcur.unmakeMove( mvLast, undoLast );\r\n\t\t\t\tvar lineSub = PGN.toLine( cur, elem );\r\n\t\t\t\tmvLast.addLine( lineSub );\r\n\r\n\t\t\t\tvar inxMv = lineRes.length - 1;\r\n\r\n\t\t\t\tlineSub.setParentLine( lineRes );\r\n\t\t\t\tlineSub.setParentMoveIndex( inxMv );\r\n\r\n\t\t\t\tcur.makeMove( mvLast );\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t};\r\n\r\n\t\t\tif ( elem instanceof PGNComment )\r\n\t\t\t{\r\n\t\t\t\tif ( !mvLast )\r\n\t\t\t\t{\r\n\t\t\t\t\tpreComment = elem;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tvar strComment = elem.getComment();\r\n\r\n\t\t\t\t\tPGNParser.toAnno( mvLast, strComment );\r\n\r\n\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem instanceof PGNGlyph )\r\n\t\t\t{\r\n\t\t\t\tif ( mvLast )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar symbols = mvLast.getAnnoItem( AnnoType.SYMBOL );\r\n\t\t\t\t\tif ( !symbols )\r\n\t\t\t\t\t\tsymbols = new SymbolsAnno();\r\n\t\t\t\t\tsymbols.push( elem.getGlyph() );\t// symbols used as an array here\r\n\t\t\t\t\tmvLast.setAnnoItem( AnnoType.SYMBOL, symbols );\r\n\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcontinue;\r\n\t\t};\r\n\r\n\t\tfor ( var i = 0; i < lineRes.length - 1; i++ )\r\n\t\t{\r\n\t\t\tif ( lineRes[ i ].hasAnno() && lineRes[ i ].getAnno().hasTraining() )\r\n\t\t\t{\r\n\t\t\t\tvar t = lineRes[ i ].getAnno().getTraining();\r\n\t\t\t\tvar _mv = lineRes[ i + 1 ];\t// next move, CB++ convention\r\n\t\t\t\tt.move = new Move( _mv.from, _mv.to, _mv.prom );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn lineRes;\r\n\t}\r\n\r\n}\r\n\r\nexport class PGNCommand\r\n{\r\n\tconstructor( _cmd, _args )\r\n\t{\r\n\t\tif ( !_cmd )\r\n\t\t\t_cmd = \"\";\r\n\t\tif ( !_args )\r\n\t\t\t_args = [];\r\n\t\tthis.m_cmd = _cmd;\r\n\t\tthis.m_args = _args;\r\n\t}\r\n\r\n\t/*\r\n\tEin Command \\w+\r\n\tEin Parameter [^\",\\]]* | \"[^\"]*\"\\s*\r\n\t*/\r\n\r\n\tinit( _strCmd, _strParams )\r\n\t{\r\n\t\tthis.m_cmd = _strCmd;\r\n\t\tPGNCommand.initArgs( _strParams, this.m_args );\r\n\t};\r\n\r\n\tstatic initArgs = function( _strArgs, _args )\r\n\t{\r\n\t\t_strArgs = _strArgs.replace( /[\\n]/g, \" \" );\r\n\t\t_strArgs = _strArgs.replace( /[\\r]/g, \"\" );\r\n\r\n\t\t// var regexArg = /\\s*(\\\"[^\\\",]*\\\"|[^\\\",]*)\\s*($|,)/g; // geht nicht bei quoted strings.\r\n\t\tvar regexArg = /(\".*?\")|([-\\w\\n]+),|([-:\\w\\n]+)$/g;\t// neu, mw 7/16. Inkl Umlauts (Olivers Kolumne)\r\n\t\tregexArg.lastIndex = 0;\r\n\t\tvar more = false;\r\n\t\tdo\r\n\t\t{\r\n\t\t\tvar match = regexArg.exec( _strArgs );\r\n\t\t\tif ( match )\r\n\t\t\t{\r\n\t\t\t\tvar strArg = match[ 1 ] || match[ 2 ] || match[ 3 ];\r\n\t\t\t\tif ( strArg )\r\n\t\t\t\t{\r\n\t\t\t\t\tif ( strArg[ 0 ] === \"\\\"\" )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstrArg = strArg.substring( 1 );\r\n\t\t\t\t\t\tif ( strArg[ strArg.length - 1 ] === \"\\\"\" )\r\n\t\t\t\t\t\t\tstrArg = strArg.substring( 0, strArg.length - 1 );\r\n\t\t\t\t\t}\r\n\t\t\t\t\t_args.push( strArg );\r\n\r\n\t\t\t\t\tif ( regexArg.lastIndex === match.index )\r\n\t\t\t\t\t\t++regexArg.lastIndex;\r\n\t\t\t\t\tmore = match.index >= 0;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t} while ( more );\r\n\t};\r\n\r\n\tstatic g_regexWhole = /\\[%(\\w+)((?:\"[^\"]*\"|[^\"\\]]*)*)\\]/;\r\n\tstatic process = function( _strComment, _arrCmds )\r\n\t{\r\n\t\twhile ( _strComment )\r\n\t\t{\r\n\t\t\tvar match = PGNCommand.g_regexWhole.exec( _strComment );\r\n\t\t\tif ( match )\r\n\t\t\t{\r\n\t\t\t\tvar cmd = new PGNCommand();\r\n\t\t\t\tvar strCmd = match[ 0 ];\r\n\t\t\t\tcmd.init( match[ 1 ], match[ 2 ] );\r\n\r\n\t\t\t\t_arrCmds.push( cmd );\r\n\r\n\t\t\t\t_strComment = _strComment.substring( 0, match.index ) +\r\n\t\t\t\t\t_strComment.substring( match.index + strCmd.length );\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn _strComment;\r\n\t};\r\n}\r\n\r\n","\r\n\r\nimport { PGNWriter } from \"common/Chess/Format/PGN/PGNWriter\";\r\nimport { PGN } from \"common/Chess/Format/PGN/PGNParser\"\r\nimport { strUtil } from \"common/Tools/Tools\"\r\nimport { ObjUtil } from \"common/Patterns/ObjectUtil\";\r\n\r\nexport class CookieUtils\r\n{\r\n\r\n\t//#region Utility Conversion Methods\r\n\r\n static CodeAccountName ( name )\r\n\t{\r\n\t\treturn strUtil.base64.encode( strUtil.htmlEncode( name ) );\r\n\t}\r\n\r\n\tstatic GameToPgn (game, unannotate)\r\n\t{\r\n\t\tvar strPGN = PGNWriter.toPGN( game );\r\n\t\tvar html = encodeURI( strPGN );\r\n\t\tif ( html.length > 3900 || unannotate )\r\n\t\t{\r\n\t\t\tvar g2 = ObjUtil.clone( game );\r\n\t\t\tg2.unAnnotate();\r\n\t\t\tstrPGN = PGNWriter.toPGN( g2 );\r\n\t\t}\r\n\r\n\t\thtml = encodeURI( strPGN );\r\n\r\n\t\treturn [html, strPGN];\r\n\t}\r\n\r\n\tstatic ParseGame (strPGN, moveIndex, gameID)\r\n\t{\r\n\t\tif ( strPGN && strPGN != \"\" )\r\n\t\t{\r\n\t\t\tvar game = PGN.parseGame( strPGN );\r\n\r\n\t\t\tif (moveIndex)\r\n\t\t\t\tgame.gotoIndex( moveIndex )\r\n\r\n\t\t\tif (gameID)\r\n\t\t\t\tgame.onlineDBID = gameID;\r\n\r\n\t\t\treturn game;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region Local Storage Methods\r\n\r\n\tstatic SetStorageItem (sName, sValue)\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif (localStorage)\r\n\t\t\t\tlocalStorage.setItem(sName, sValue);\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic GetStorageItem (sName)\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif (localStorage)\r\n\t\t\t\treturn localStorage.getItem(sName);\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic SetCodedStorageItem (sName, sValue)\r\n\t{\r\n\t\tCookieUtils.SetStorageItem( sName, CookieUtils.CodeAccountName( sValue ) );\r\n\t}\r\n\r\n\tstatic GetCodedStorageItem (name, doHtmlDecode)\r\n {\r\n var value = CookieUtils.GetStorageItem(name);\r\n\r\n\t\tif (value)\r\n\t\t{\r\n\t\t\tvalue = strUtil.base64.decode(value);\r\n\t\t\tif (doHtmlDecode)\r\n\t\t\t{\r\n\t\t\t\tvalue = strUtil.htmlDecode(value);\r\n\t\t\t\tvalue = value.replace(\"%25\", \"%\");\r\n\t\t\t\tvalue = value.replace(\"%20\", \" \");\r\n\t\t\t}\r\n\t\t\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn null;\r\n };\r\n\r\n\tstatic ClearStorageItem (sName)\r\n\t{\r\n\t\tif (localStorage)\r\n\t\t\tlocalStorage.removeItem(sName);\r\n\t}\r\n\r\n\tstatic SaveGameToStorage (game, unannotate)\r\n\t{\r\n\t\tvar [html, strPGN] = CookieUtils.GameToPgn(game, unannotate);\r\n\r\n\t\tCookieUtils.SetStorageItem(\"CBLastGame\", strPGN);\r\n\t\tCookieUtils.SetStorageItem(\"CBLastMoveIndex\", game.getMoveIndex());\r\n\t\tif (game.onlineDBID)\r\n\t\t\tCookieUtils.SetStorageItem(\"CBLastDBID\", game.onlineDBID);\r\n\t}\r\n\r\n\tstatic LoadGameFromStorage ()\r\n\t{\r\n\t\tvar strPGN = null;\r\n\t\tvar moveIndex = null;\r\n\t\tvar gameID = null;\r\n\r\n\t\tstrPGN = CookieUtils.GetStorageItem(\"CBLastGame\");\r\n\t\tmoveIndex = parseInt(CookieUtils.GetStorageItem(\"CBLastMoveIndex\"));\r\n\t\tgameID = parseInt(CookieUtils.GetStorageItem(\"CBLastDBID\"));\r\n\r\n\t\treturn CookieUtils.ParseGame(strPGN, moveIndex, gameID);\r\n\t}\r\n\r\n\t//#endregion\r\n\r\n\t//#region Oldschool Cookies\r\n \r\n\t// NH2021 Original Method: Cookies.js\r\n static SetCookie ( sName, sValue )\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tvar oDate = new Date();\r\n\t\t\tvar strExpires;\r\n\t\t\tif ( sValue )\r\n\t\t\t{\r\n\t\t\t\toDate.setYear( oDate.getFullYear() + 1 );\r\n\t\t\t\tstrExpires = oDate.toUTCString();\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tstrExpires = 'Thu, 01 Jan 1970 00:00:01 GMT';\r\n\t\r\n\t\t\tvar domain = \".chessbase.com\";\r\n\t\r\n\t\t\tif ( document.URL.search( /localhost/i ) != -1 )\r\n\t\t\t\tdomain = \"localhost\";\r\n\r\n\t\t\tvar sCookie = sName + '=' + encodeURIComponent( sValue ) + ';expires=' + strExpires + ';path=/;'\r\n\t\t\t\r\n\t\t\tif ( domain.length )\r\n\t\t\t\tsCookie += 'domain=' + domain + ';';\r\n\t\r\n\t\t\tsCookie += 'SameSite=Lax;';\r\n\t\t\t\r\n\t\t\tdocument.cookie = sCookie;\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tconsole.log(error);\r\n\t\t}\r\n\t}\r\n\r\n static GetCookie (sName)\r\n {\r\n\t\ttry \r\n\t\t{\r\n\t\t\tvar oCrumbles = document.cookie.split( ';' );\r\n\r\n\t\t\tfor ( var i = 0; i < oCrumbles.length; i++ )\r\n\t\t\t{\r\n\t\t\t\tvar oPair = oCrumbles[i].split( '=' );\r\n\t\t\t\tvar sKey = oPair[0].trim();\r\n\t\t\t\tvar sValue = oPair.length > 1 ? oPair[1] : '';\r\n\r\n\t\t\t\tif ( sKey == sName )\r\n\t\t\t\t\treturn decodeURIComponent( sValue );\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tcatch (error)\r\n\t\t{\r\n\t\t\tconsole.log(error);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tstatic SetCodedCookie ( name, value )\r\n\t{\r\n\t\tCookieUtils.SetCookie( name, CookieUtils.CodeAccountName( value ) );\r\n };\r\n\r\n\tstatic GetCodedCookie ( name, doHtmlDecode )\r\n {\r\n var value = CookieUtils.GetCookie( name );\r\n\r\n\t\tif (value)\r\n\t\t{\r\n\t\t\tvalue = strUtil.base64.decode( value );\r\n\t\t\tif ( doHtmlDecode )\r\n\t\t\t{\r\n\t\t\t\tvalue = strUtil.htmlDecode( value );\r\n\t\t\t\tvalue = value.replace( \"%25\", \"%\" );\r\n\t\t\t\tvalue = value.replace( \"%20\", \" \" );\r\n\t\t\t}\r\n\t\t\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn null;\r\n\r\n };\r\n\r\n\tstatic ClearCookie( sName )\r\n {\r\n CookieUtils.SetCookie( sName, '' );\r\n }\r\n\r\n\tstatic SaveGameAsCookie( game, unannotate )\r\n {\r\n\t\tvar [html, strPGN] = CookieUtils.GameToPgn(game, unannotate);\r\n\r\n\t\tif ( html.length < 3900) // cookie limit\r\n\t\t{\r\n\t\t\tCookieUtils.SetCookie(\"CBLastGame\", strPGN);\r\n\t\t\tCookieUtils.SetCookie(\"CBLastMoveIndex\", game.getMoveIndex());\r\n\r\n\t\t\t// Currently: Always Save DBID in localstorage\r\n\t\t\tif (game.onlineDBID && localStorage)\r\n\t\t\t\tCookieUtils.SetStorageItem(\"CBLastDBID\", game.onlineDBID);\r\n\t\t}\r\n\t};\r\n\t\r\n\tstatic LoadGameFromCookie ()\r\n {\r\n\t\tvar strPGN = null;\r\n\t\tvar moveIndex = null;\r\n\t\tvar gameID = null;\r\n\r\n\t\tstrPGN = CookieUtils.GetCookie(\"CBLastGame\");\r\n\t\tmoveIndex = parseInt(CookieUtils.GetCookie(\"CBLastMoveIndex\"));\r\n\r\n\t\t// Currently: Always Load DBID from localstorage\r\n\t\tgameID = parseInt(CookieUtils.GetStorageItem(\"CBLastDBID\"));\r\n\r\n\t\treturn CookieUtils.ParseGame(strPGN, moveIndex, gameID);\r\n };\r\n\r\n\t//#endregion\r\n\r\n}","\r\n\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil';\r\nimport { Piece } from 'common/Chess/Logic/Chess';\r\nimport { Language } from 'common/Tools/Language';\r\nimport { CookieUtils } from \"CBReact/Utils/CookieUtils\";\r\n\r\nimport getChessLocEng from \"CBReact/Resources/Localization/en/Chess.en\";\r\nimport getMyMovesLocEng from \"CBReact/Resources/Localization/en/Chess.en\";\r\n\r\nexport var InvariantLocalization = {\r\n\tarrStrPieces: [],\r\n\r\n\tstrTakes: \"x\",\r\n\tstrCheck: \"+\",\r\n\tstrMate: \"#\",\r\n\tstrProm: \"\",\r\n\tstr00: \"0-0\",\r\n\tstr000: \"0-0-0\",\r\n\tstrNullMove: \"--\",\r\n\tbOmitPawnTakes: false\r\n};\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_KING] =\r\n\tInvariantLocalization.arrStrPieces[Piece.B_KING] = \"K\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_QUEEN] =\r\n\tInvariantLocalization.arrStrPieces[Piece.B_QUEEN] = \"Q\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_ROOK] =\r\n\tInvariantLocalization.arrStrPieces[Piece.B_ROOK] = \"R\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_BISHOP] =\r\n\tInvariantLocalization.arrStrPieces[Piece.B_BISHOP] = \"B\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_KNIGHT] =\r\n\tInvariantLocalization.arrStrPieces[Piece.B_KNIGHT] = \"N\";\r\n\r\nInvariantLocalization.arrStrPieces[Piece.W_PAWN] =\r\n\tInvariantLocalization.arrStrPieces[Piece.B_PAWN] = \"\";\r\n\r\n// const filePaths = [\"Chess\", \"MyMoves\", \"openings\", \"Playchess\"];\r\nconst filePaths = [\"Chess\", \"MyMoves\"];\r\n\r\nexport class LocalizationUtils \r\n{\r\n\tstatic InitLocalization() \r\n\t{\r\n\t\tvar newLocalization = {};\r\n\t\tnewLocalization.NOTA_LOCALIZATION = ObjUtil.clone(InvariantLocalization);\r\n\r\n\t\tlet chessLocEng = getChessLocEng();\r\n\t\tlet myMovesLocEng = getMyMovesLocEng();\r\n\r\n\t\tObjUtil.mixObject(newLocalization, chessLocEng);\r\n\t\tObjUtil.mixObject(newLocalization, myMovesLocEng);\r\n\r\n\t\treturn {language: Language.ENG, strings: newLocalization};\r\n\t}\r\n\r\n\tstatic SetLanguage(newLanguage, currentLocalization, setLocalization) \r\n\t{\r\n\t\tvar newLocalization = {};\r\n\t\tObject.assign(newLocalization, currentLocalization);\r\n\r\n\t\tvar folderName = LocalizationUtils.GetLanguageFolderName(newLanguage);\r\n\r\n\t\tvar nImportCallbacks = 0;\r\n\t\tfor (var i = 0; i < filePaths.length; i++)\r\n\t\t{\r\n\t\t\timport(\"CBReact/Resources/Localization/\" + folderName + \"/\" + filePaths[i] + \".\" + folderName + \".js\") // \"CBReact/Utils/Localization/en/Chess.en.js\"\r\n\t\t\t.then(localizationObj => {\r\n\t\t\t\tlet localizationPart = localizationObj.default();\r\n\t\t\t\tObjUtil.mixObject(newLocalization, localizationPart);\r\n\r\n\t\t\t\tif (localizationPart.NOTATION_KING && localizationPart.NOTATION_QUEEN && localizationPart.NOTATION_ROOK && localizationPart.NOTATION_BISHOP && localizationPart.NOTATION_KNIGHT)\r\n\t\t\t\t\tnewLocalization.NOTA_LOCALIZATION = LocalizationUtils.GetNotationLocalization(localizationPart);\r\n\t\t\t\t\r\n\t\t\t\tnImportCallbacks++;\r\n\t\t\t\tif (nImportCallbacks === filePaths.length)\r\n\t\t\t\t\tsetLocalization({language: newLanguage, strings: newLocalization});\r\n\t\t\t})\r\n\t\t\t.catch(error => { \r\n\t\t\t\tnImportCallbacks++;\r\n\t\t\t\tif (nImportCallbacks === filePaths.length)\r\n\t\t\t\t\tsetLocalization({language: newLanguage, strings: newLocalization});\r\n\r\n\t\t\t\t// console.log(\"Loading Error: \" + error + \", \" + nImportCallbacks);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// CookieUtils.SetCookie(\"CBLoc\", newLanguage);\r\n\t\tCookieUtils.SetStorageItem(\"CBLoc\", newLanguage);\r\n\t};\r\n\r\n\tstatic GetNotationLocalization (localizationPart)\r\n\t{\r\n\t\tlet notaLoc = ObjUtil.clone(InvariantLocalization);\r\n\r\n\t\tnotaLoc.arrStrPieces[Piece.W_KING] =\r\n\t\tnotaLoc.arrStrPieces[Piece.B_KING] = localizationPart.NOTATION_KING;\r\n\r\n\t\tnotaLoc.arrStrPieces[Piece.W_QUEEN] =\r\n\t\tnotaLoc.arrStrPieces[Piece.B_QUEEN] = localizationPart.NOTATION_QUEEN;\r\n\r\n\t\tnotaLoc.arrStrPieces[Piece.W_ROOK] =\r\n\t\tnotaLoc.arrStrPieces[Piece.B_ROOK] = localizationPart.NOTATION_ROOK;\r\n\r\n\t\tnotaLoc.arrStrPieces[Piece.W_BISHOP] =\r\n\t\tnotaLoc.arrStrPieces[Piece.B_BISHOP] = localizationPart.NOTATION_BISHOP;\r\n\r\n\t\tnotaLoc.arrStrPieces[Piece.W_KNIGHT] =\r\n\t\tnotaLoc.arrStrPieces[Piece.B_KNIGHT] = localizationPart.NOTATION_KNIGHT;\r\n\r\n\t\tnotaLoc.arrStrPieces[Piece.W_PAWN] =\r\n\t\tnotaLoc.arrStrPieces[Piece.B_PAWN] = \"\";\r\n\r\n\t\treturn notaLoc;\r\n\t}\r\n\r\n\tstatic GetAvailableLanguages() \r\n\t{\r\n\t\treturn [\r\n\t\t\tLanguage.ENG,\r\n\t\t\tLanguage.DEU,\r\n\t\t\tLanguage.ESP,\r\n\t\t\tLanguage.NED,\r\n\t\t\tLanguage.ROM,\r\n\t\t\tLanguage.CHN,\r\n\t\t\tLanguage.FRA,\r\n\t\t\tLanguage.RUS,\r\n\t\t\tLanguage.NOR,\r\n\t\t\tLanguage.POL,\r\n\t\t\tLanguage.ITA,\r\n\t\t\tLanguage.HEB,\r\n\t\t\tLanguage.CAT,\r\n\t\t\tLanguage.TRK,\r\n\t\t\tLanguage.SLO,\r\n\t\t\tLanguage.GRK,\r\n\t\t\tLanguage.UKR,\r\n\t\t\tLanguage.VIE,\r\n\t\t\tLanguage.ARA,\r\n\t\t\tLanguage.SER,\r\n\t\t\tLanguage.LIT,\r\n\t\t\tLanguage.BRA,\r\n\t\t\tLanguage.FAR,\r\n\t\t\tLanguage.GAL,\r\n\t\t\tLanguage.CRO,\r\n\t\t\tLanguage.CZE,\r\n\t\t\tLanguage.HIN,\r\n\t\t];\r\n\t};\r\n\r\n\tstatic GetLanguageFolderName (language) \r\n\t{\r\n\t\tswitch (language) {\r\n\t\t\tcase Language.ENG:\r\n\t\t\t\treturn \"en\";\r\n\t\t\tcase Language.DEU:\r\n\t\t\t\treturn \"de\";\r\n\t\t\tcase Language.ESP:\r\n\t\t\t\treturn \"es\";\r\n\t\t\tcase Language.NED:\r\n\t\t\t\treturn \"nl\";\r\n\t\t\tcase Language.ROM:\r\n\t\t\t\treturn \"ro\";\r\n\t\t\tcase Language.CHN:\r\n\t\t\t\treturn \"zh\";\r\n\t\t\tcase Language.FRA:\r\n\t\t\t\treturn \"fr\";\r\n\t\t\tcase Language.RUS:\r\n\t\t\t\treturn \"ru\";\r\n\t\t\tcase Language.NOR:\r\n\t\t\t\treturn \"no\";\r\n\t\t\tcase Language.POL:\r\n\t\t\t\treturn \"pl\";\r\n\t\t\tcase Language.ITA:\r\n\t\t\t\treturn \"it\";\r\n\t\t\tcase Language.HEB:\r\n\t\t\t\treturn \"he\";\r\n\t\t\tcase Language.CAT:\r\n\t\t\t\treturn \"cat\";\r\n\t\t\tcase Language.TRK:\r\n\t\t\t\treturn \"tr\";\r\n\t\t\tcase Language.SLO:\r\n\t\t\t\treturn \"slo\";\r\n\t\t\tcase Language.GRK:\r\n\t\t\t\treturn \"el\";\r\n\t\t\tcase Language.UKR:\r\n\t\t\t\treturn \"uk\";\r\n\t\t\tcase Language.VIE:\r\n\t\t\t\treturn \"vi\";\r\n\t\t\tcase Language.ARA:\r\n\t\t\t\treturn \"ar\";\r\n\t\t\tcase Language.SER:\r\n\t\t\t\treturn \"sr\";\r\n\t\t\tcase Language.LIT:\r\n\t\t\t\treturn \"lt\";\r\n\t\t\tcase Language.BRA:\r\n\t\t\t\treturn \"br\";\r\n\t\t\tcase Language.FAR:\r\n\t\t\t\treturn \"fa\";\r\n\t\t\tcase Language.GAL:\r\n\t\t\t\treturn \"ga\";\r\n\t\t\tcase Language.CRO:\r\n\t\t\t\treturn \"hr\";\r\n\t\t\tcase Language.CZE:\r\n\t\t\t\treturn \"cs\";\r\n\t\t\tcase Language.HIN:\r\n\t\t\t\treturn \"hi\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"en\";\r\n\t\t}\r\n\t}\r\n}","// mw 3.2.2013\r\n\r\n// ES6 28.2.2020\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////\r\n\r\nexport class Point\r\n{\r\n\tconstructor ( x, y )\r\n\t{\r\n\t\tif ( typeof x == \"object\" && typeof y == \"undefined\" )\r\n\t\t{\r\n\t\t\tif ( x.clientX !== undefined )\t// mouse click?\r\n\t\t\t{\r\n\t\t\t\tthis.set( x.clientX, x.clientY );\r\n\t\t\t}\r\n\t\t\telse if ( x.touches && x.touches.length )\r\n\t\t\t{\r\n\t\t\t\tthis.set( x.touches[0].pageX, x.touches[0].pageY );\r\n\t\t\t}\r\n\t\t\telse if ( x.pageX !== undefined )\r\n\t\t\t{\r\n\t\t\t\tthis.set( x.pageX, x.pageY );\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.set( x, y );\t// use \"new Pt( x, y )\"\r\n\t};\r\n\r\n\tset( x, y )\r\n\t{\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\t};\r\n\r\n\tadd( p )\r\n\t{\r\n\t\treturn new Point( this.x + p.x, this.y + p.y );\r\n\t};\r\n\r\n\tsubtract( p )\r\n\t{\r\n\t\treturn new Point( this.x - p.x, this.y - p.y );\r\n\t};\r\n\r\n\tgetDist( p )\r\n\t{\r\n\t\tvar dVec = this.subtract( p );\r\n\r\n\t\treturn Math.sqrt( dVec.x * dVec.x + dVec.y * dVec.y );\r\n\t};\r\n\r\n\tgetVecLen()\r\n\t{\r\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\r\n\t};\r\n\r\n\ttoInt()\r\n\t{\r\n\t\tthis.x = Math.floor( this.x + 0.5 );\r\n\t\tthis.y = Math.floor( this.y + 0.5 );\r\n\t}\r\n\r\n\tcloneIntPoint()\r\n\t{\r\n\t\tvar p = new Point( this.x, this.y );\r\n\t\tp.toInt();\r\n\t\treturn p;\r\n\t}\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"(\" + this.x + \",\" + this.y + \")\";\r\n\t};\r\n\r\n\tgetX()\r\n\t{\r\n\t\treturn this.x;\r\n\t};\r\n\r\n\tgetY()\r\n\t{\r\n\t\treturn this.y;\r\n\t};\r\n\r\n}\r\n\r\n\r\n//////////////////////////////////////////////////////////////////////\r\n\r\nexport class Size\r\n{\r\n\tconstructor( w, h )\r\n\t{\r\n\t\tthis.w = w;\r\n\t\tthis.h = h;\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"w=\" + this.w + \", h=\" + this.h;\r\n\t};\r\n\r\n\tcenterInSize( sizOuter )\r\n\t{\r\n\t\treturn new Point(( sizOuter.w - this.w ) / 2, ( sizOuter.h - this.h ) / 2 );\r\n\t};\r\n\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////\r\n\r\nexport class Rect\r\n{\r\n\tconstructor ( l, t, r, b )\r\n\t{\r\n\t\tthis.left = l || 0;\r\n\t\tthis.top = t || 0;\r\n\t\tthis.right = r || 0;\r\n\t\tthis.bottom = b || 0;\r\n\t};\r\n\r\n\tget w()\r\n\t{\r\n\t\treturn this.getSize().w;\r\n\t}\r\n\tset w( _w )\r\n\t{\r\n\t\tthis.right = this.left + _w - 1;\r\n\t}\r\n\tget h()\r\n\t{\r\n\t\treturn this.getSize().h;\r\n\t}\r\n\tset h( _h )\r\n\t{\r\n\t\tthis.right = this.left + _h - 1;\r\n\t}\r\n\r\n\tget topLeft()\r\n\t{\r\n\t\treturn new Point( this.left, this.top );\r\n\t}\r\n\tset topLeft( tl )\r\n\t{\r\n\t\tvar w = this.w;\r\n\t\tvar h = this.h;\r\n\t\tthis.left = tl.x; this.top = tl.y;\r\n\t\tthis.w = w;\r\n\t\tthis.h = h;\r\n\t}\r\n\r\n\tfromRect( rect )\r\n\t{\r\n\t\tthis.left = rect.left;\r\n\t\tthis.top = rect.top;\r\n\t\tthis.right = rect.right;\r\n\t\tthis.bottom = rect.bottom;\r\n\t};\r\n\r\n\tfromPosSize( pos, size )\r\n\t{\r\n\t\tthis.left = pos.x;\r\n\t\tthis.top = pos.y;\r\n\t\tthis.right = pos.x + size.w - 1;\r\n\t\tthis.bottom = pos.y + size.h - 1;\r\n\t};\r\n\r\n\tfromClientRect( clientRect )\r\n\t{\r\n\t\tthis.left = clientRect.left;\r\n\t\tthis.top = clientRect.top;\r\n\t\tthis.right = clientRect.right;\r\n\t\tthis.bottom = clientRect.bottom;\r\n\t};\r\n\r\n\tfromTwoPoints( x1, y1, x2, y2 )\r\n\t{\r\n\t\tthis.left = Math.min( x1, x2 );\r\n\t\tthis.right = Math.max( x1, x2 );\r\n\t\tthis.top = Math.min( y1, y2 );\r\n\t\tthis.bottom = Math.max( y1, y2 );\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\treturn \"l=\" + this.left + \", t=\" + this.top + \" \" + this.getSize().toString();\r\n\t};\r\n\r\n\tgetPos()\r\n\t{\r\n\t\treturn new Point( this.left, this.top );\r\n\t};\r\n\r\n\tgetTopLeft()\r\n\t{\r\n\t\treturn new Point( this.left, this.top );\r\n\t};\r\n\tgetTopRight()\r\n\t{\r\n\t\treturn new Point( this.right, this.top );\r\n\t};\r\n\tgetBottomRight()\r\n\t{\r\n\t\treturn new Point( this.right, this.bottom );\r\n\t};\r\n\tgetBottomLeft()\r\n\t{\r\n\t\treturn new Point( this.left, this.bottom );\r\n\t};\r\n\r\n\tgetSize()\r\n\t{\r\n\t\treturn new Size( this.right - this.left + 1, this.bottom - this.top + 1 );\r\n\t};\r\n\r\n\tgetUnion( rect )\r\n\t{\r\n\t\tvar left = Math.min( Math.min( this.left, rect.left ), Math.min( this.right, rect.right ) );\r\n\t\tvar right = Math.max( Math.max( this.left, rect.left ), Math.max( this.right, rect.right ) );\r\n\t\tvar top = Math.min( Math.min( this.top, rect.top ), Math.min( this.bottom, rect.bottom ) );\r\n\t\tvar bottom = Math.max( Math.max( this.top, rect.top ), Math.max( this.bottom, rect.bottom ) );\r\n\r\n\t\treturn new Rect( left, top, right, bottom );\r\n\t};\r\n\r\n\tgetCutAtBoundary( boundary )\r\n\t{\r\n\t\tvar ret = new Rect( this.left, this.top, this.right, this.bottom );\r\n\t\tif ( ret.left < boundary.left || ret.left >= boundary.right )\r\n\t\t\tret.left = boundary.left;\r\n\t\tif ( ret.right > boundary.right || ret.right <= boundary.left )\r\n\t\t\tret.right = boundary.right;\r\n\t\tif ( ret.top < boundary.top || ret.top >= boundary.bottom )\r\n\t\t\tret.top = boundary.top;\r\n\t\tif ( ret.bottom > boundary.bottom || ret.bottom <= boundary.top )\r\n\t\t\tret.bottom = boundary.bottom;\r\n\r\n\t\treturn ret;\r\n\t};\r\n\r\n\tisInside( x, y )\r\n\t{\r\n\t\treturn x >= this.left && x <= this.right\r\n\t\t\t && y >= this.top && y <= this.bottom;\r\n\t};\r\n\r\n\tgetPath()\r\n\t{\r\n\t\tvar path = new Path();\r\n\t\tpath.push( this.getTopLeft() );\r\n\t\tpath.push( this.getTopRight() );\r\n\t\tpath.push( this.getBottomRight() );\r\n\t\tpath.push( this.getBottomLeft() );\r\n\r\n\t\treturn path;\r\n\t};\r\n\r\n\tmove( dx, dy )\r\n\t{\r\n\t\tthis.left += dx;\r\n\t\tthis.top += dy;\r\n\t\tthis.right += dx;\r\n\t\tthis.bottom += dy;\r\n\t};\r\n\r\n\tshrink( dx, dy )\r\n\t{\r\n\t\tthis.left += dx;\r\n\t\tthis.right -= dx;\r\n\t\tthis.top += dy;\r\n\t\tthis.bottom -= dy;\r\n\t};\r\n\r\n\texpand( dx, dy )\r\n\t{\r\n\t\tthis.shrink( -dx, -dy );\r\n\t};\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////////\r\n\r\nexport class Vector\r\n{\r\n\tconstructor ( x, y, z )\r\n\t{\r\n\t\tthis.set( x, y, z );\r\n\t};\r\n\r\n\tset( x, y, z )\r\n\t{\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\t\tthis.z = z;\r\n\t};\r\n\r\n\tadd( vec )\r\n\t{\r\n\t\treturn new Vector( this.x + vec.x, this.y + vec.y, this.z + vec.z );\r\n\t};\r\n\r\n\tsubtract( vec )\r\n\t{\r\n\t\treturn new Point( this.x - vec.x, this.y - vec.y, this.z - vec.z );\r\n\t};\r\n\r\n\tgetLength()\r\n\t{\r\n\t\tif ( this.z !== undefined )\r\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\r\n\t\telse\r\n\t\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\r\n\t};\r\n\r\n\tnegate()\r\n\t{\r\n\t\tthis.x = -this.x;\r\n\t\tthis.y = -this.y;\r\n\t\tif ( this.z !== undefined )\r\n\t\t\tthis.z = -this.z;\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tif ( this.z !== undefined )\r\n\t\t\treturn \"(\" + this.x + \",\" + this.y + \",\" + this.z + \")\";\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn \"(\" + this.x + \",\" + this.y + \")\";\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\n//////////////////////////////////////////////////////////////////\r\n\r\nexport class Path\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.subPaths = [];\r\n\t};\r\n\r\n\ttoString()\r\n\t{\r\n\t\tlet strRet = \"Pth:\";\r\n\t\tfor ( let s = 0; s < this.subPaths.length; s++ )\r\n\t\t{\r\n\t\t\tstrRet += \"s=\";\r\n\t\t\tthis.subPaths[s].forEach(\r\n\t\t\t\tfunction ( v, a, e )\r\n\t\t\t\t{\r\n\t\t\t\t\tstrRet += v.toString();\r\n\t\t\t\t\tif ( e < a.length - 1 )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tstrRet += \",\";\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t}\r\n\t\treturn strRet;\r\n\t};\r\n\r\n\tpush( point )\r\n\t{\r\n\t\tif ( this.subPaths.length === 0 )\r\n\t\t{\r\n\t\t\tthis.subPaths.push( [] );\r\n\t\t}\r\n\t\tthis.subPaths[this.subPaths.length - 1].push( point );\r\n\t};\r\n\r\n\texec( ctx )\r\n\t{\r\n\t\tctx.beginPath();\r\n\t\tfor ( var s = 0; s < this.subPaths.length; s++ )\r\n\t\t{\r\n\t\t\tif ( this.subPaths[s].length > 1 )\r\n\t\t\t{\r\n\t\t\t\tthis.execPoly( ctx, this.subPaths[s] );\r\n\t\t\t}\r\n\t\t}\r\n\t\tctx.closePath();\r\n\t};\r\n\r\n\texecPoly( ctx, points )\r\n\t{\r\n\t\tctx.moveTo( points[0].x, points[0].y );\r\n\t\tfor ( var p = 1; p < points.length; p++ )\r\n\t\t{\r\n\t\t\tctx.lineTo( points[p].x, points[p].y );\r\n\t\t};\r\n\t}\r\n\t\r\n\tcurve( ctx )\r\n\t{\r\n\t\tfor ( var s = 0; s < this.subPaths.length; s++ )\r\n\t\t{\r\n\t\t\tif ( this.subPaths[s].length > 3 )\r\n\t\t\t{\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tthis.execCurve( ctx, this.subPaths[s] );\r\n\t\t\t\tctx.closePath();\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\texecCurve( ctx, points )\r\n\t{\r\n\t\tctx.moveTo( points[0].x, points[0].y );\r\n\t\tvar i;\r\n\t\tfor ( i = 1; i < points.length - 2; i++ )\r\n\t\t{\r\n\t\t\tvar xc = ( points[i].x + points[i + 1].x ) / 2;\r\n\t\t\tvar yc = ( points[i].y + points[i + 1].y ) / 2;\r\n\r\n\t\t\tctx.quadraticCurveTo( points[i].x, points[i].y, xc, yc );\r\n\t\t}\r\n\t\tctx.quadraticCurveTo( points[i].x, points[i].y, points[i + 1].x, points[i + 1].y );\r\n\t};\r\n\r\n\treverse()\r\n\t{\r\n\t\tif ( this.subPaths.length )\r\n\t\t\tthis.subPaths[this.subPaths.length - 1].reverse();\r\n\t};\r\n\r\n\tappend( p )\r\n\t{\r\n\t\tthis.subPaths = this.subPaths.concat( p.subPaths );\r\n\t}\r\n\r\n}\r\n","// mw 4.9.2013\r\n// ES6 1.3.2020\r\n\r\n/* eslint-disable eqeqeq */\r\n\r\nimport { strUtil } from 'common/Tools/Tools'\r\nimport { Point, Size } from 'common/Tools/Graphics/GeometricalObjects'\r\n\r\n\r\nexport var System =\r\n{\r\n\tgetStrOS: function ()\r\n\t{\r\n\t\tif ( !this.strOS )\r\n\t\t{\r\n\t\t\tif ( this.getiOSVersion() )\r\n\t\t\t\tthis.strOS = \"iOS\" + this.getiOSVersion();\r\n\t\t\tif ( this.getAndroidVersion() )\r\n\t\t\t\tthis.strOS = \"Andr\" + this.getAndroidVersion();\r\n\t\t\tif ( this.isWindows() )\r\n\t\t\t\tthis.strOS = \"Win\";\r\n\t\t\tif ( this.isLinux() )\r\n\t\t\t\tthis.strOS = \"Ux\";\r\n\t\t\tif ( this.isMac() )\r\n\t\t\t\tthis.strOS = \"Mac\";\r\n\r\n\t\t\tthis.strOS = navigator.platform;\r\n\t\t}\r\n\r\n\t\treturn this.strOS;\r\n\t},\r\n\r\n getOSChar: function ()\r\n {\r\n var osID = 'X';\r\n\t\tif ( this.isWindows() )\r\n\t\t\tosID = 'W';\r\n else\r\n\t\tif ( this.isMac() )\r\n\t\t\tosID = 'M';\r\n else\r\n if ( this.isIPhone() || this.isIPad() )\r\n\t\t\tosID = 'I';\r\n else\r\n\t\tif ( this.isAndroid() )\r\n\t\t\tosID = 'A';\r\n else\r\n\t\tif ( this.isLinux() )\r\n\t\t\tosID = 'L';\r\n return osID;\r\n }, \r\n\r\n\tgetStrSysInfo: function()\r\n\t{\r\n\t\treturn this.getStrOS() + \" \"\r\n\t\t\t+ String.f( \"{0}/{1}/{2}, cpus={3}\", window.innerWidth, window.innerHeight, window.devicePixelRatio, this.getNCpus() );\r\n\t},\r\n\r\n\tisCordova: function()\r\n\t{\r\n return (strUtil.getURLParam(\"client\") === \"cordova\") || (!!window.cordova);\r\n\t},\r\n\r\n\tisMobile: function ()\r\n\t{\r\n\t\t// 3 + 1;\r\n\t\t// \"#IFDEBUG\"\r\n\t\t// // return true;\r\n\t\t// \"#ENDIF\"\r\n\r\n var isKindle = /Kindle|Silk|KFAPW|KFARWI|KFASWI|KFFOWI|KFJW|KFMEWI|KFOT|KFSAW|KFSOWI|KFTBW|KFTHW|KFTT|WFFOWI/i.test( navigator.userAgent )\r\n if ( isKindle )\r\n return true;\r\n\r\n\t\treturn /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|bada|Opera Mini/i.test( navigator.userAgent );\r\n\t},\r\n\r\n\tisDesktop: function ()\r\n\t{\r\n\t\t// assume a certain hardware power:\r\n\t\treturn !System.isMobile() && window.screen.width > 1400 && window.screen.height >= 900;\r\n },\r\n\r\n isElectron: function ()\r\n {\r\n var userAgent = navigator.userAgent.toLowerCase();\r\n return (userAgent.indexOf(' electron/') > -1);\r\n },\r\n\r\n\trequestFullScreen: function ()\r\n\t{\r\n\t\tvar body = document.documentElement;\r\n\t\tif ( body.requestFullscreen )\r\n\t\t{\r\n\t\t\tbody.requestFullscreen();\r\n\t\t} else if ( body.webkitrequestFullscreen )\r\n\t\t{\r\n\t\t\tbody.webkitrequestFullscreen();\r\n\t\t} else if ( body.mozrequestFullscreen )\r\n\t\t{\r\n\t\t\tbody.mozrequestFullscreen();\r\n\t\t} else if ( body.msrequestFullscreen )\r\n\t\t{\r\n\t\t\tbody.msrequestFullscreen();\r\n\t\t}\r\n\t},\r\n\r\n\tisFullScreen: function()\r\n\t{\r\n\t\t// problematisch.\r\n\t\treturn ( document.fullscreen || document.webkitIsFullScreen || document.mozFullScreen )\r\n\t\t|| ( window.screen.availHeight || window.screen.height - 30 ) <= window.innerHeight;\r\n\t},\r\n\r\n\tisAtLeastTablet: function ()\r\n\t{\r\n\t\t// 3 + 4;\r\n\t\t// \"#IFDEBUG\"\r\n\t\t// //\t\treturn false;\r\n\t\t// \"#ENDIF\"\r\n\r\n\t\treturn ( window.screen.width >= 1000 && window.screen.height >= 760 ) || window.screen.height >= 1000;\r\n\t},\r\n\r\n\tisIPhone: function ()\r\n\t{\r\n\t\t//\treturn true;\r\n\t\treturn /iPhone/i.test( navigator.userAgent ) || /iPod/i.test( navigator.userAgent );\r\n\t},\r\n\r\n\tisIPad: function ()\r\n\t{\r\n\t\t//\treturn true;\r\n\t\treturn /iPad/i.test( navigator.userAgent );\r\n\t},\r\n\r\n\tgetiOSVersion: function ()\r\n\t{\r\n\t\t//if ( /iP(hone|od|ad)/.test( navigator.platform ) )\r\n\t\t//{\r\n\t\t//\t// supports iOS 2.0 and later: \r\n\t\t//\tvar v = ( navigator.appVersion ).match( /OS (\\d+)_(\\d+)_?(\\d+)?/ );\r\n\t\t//\treturn [parseInt( v[1], 10 ), parseInt( v[2], 10 ), parseInt( v[3] || 0, 10 )];\r\n\t\t//}\r\n\r\n\t\tvar iOS = parseFloat(\r\n\t\t ( '' + ( /CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec( navigator.userAgent ) || [0, ''] )[1] )\r\n\t\t .replace( 'undefined', '3_2' ).replace( '_', '.' ).replace( '_', '' ) ) || false;\r\n\r\n\t\treturn iOS;\r\n\t},\r\n\r\n\tisWindows: function ()\r\n\t{\r\n\t\treturn /Win32/i.test( navigator.platform );\r\n\t},\r\n\r\n\tisLinux: function ()\r\n\t{\r\n\t\treturn /Linux/i.test( navigator.platform );\r\n\t},\r\n\r\n\tisMac: function ()\r\n\t{\r\n\t\treturn /Mac/i.test( navigator.platform );\r\n\t},\r\n\r\n\tisTouchDevice: function ()\r\n\t{\r\n\t\tif ( this.isTouchChecked !== undefined )\r\n\t\t\treturn this.isTouchChecked;\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.isTouchChecked = this.isMobile() ||\r\n ( ( 'ontouchstart' in window )\r\n || ( navigator.MaxTouchPoints > 0 )\r\n || ( navigator.msMaxTouchPoints > 0 ) );\r\n\t\t\treturn this.isTouchChecked;\r\n\t\t}\r\n\t},\r\n\r\n\trunsInIFrame: function ()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\treturn window.self !== window.top\r\n\t\t\t\t&& document.referrer.search( /google/i ) == -1\r\n\t\t\t && document.referrer.search( /bing/i ) == -1;\r\n\t\t} catch ( x )\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\tgetWindowPos: function ()\r\n\t{\r\n\t\tif ( window.screenLeft !== undefined )\r\n\t\t\treturn new Point( window.screenLeft, window.screenTop );\r\n\t\telse if ( window.screenX !== undefined )\t// firefox\r\n\t\t\treturn new Point( window.screenX, window.screenY );\r\n\t},\r\n\r\n\tgetWindowSize: function ()\r\n\t{\r\n\t\tvar w = window,\r\n\t\td = document,\r\n\t\te = d.documentElement,\r\n\t\tg = d.getElementsByTagName( 'body' )[0],\r\n\t\twid = w.innerWidth || e.clientWidth || g.clientWidth,\r\n\t\thgt = w.innerHeight || e.clientHeight || g.clientHeight;\r\n\r\n\t\treturn new Size( wid, hgt );\r\n },\r\n\r\n getTimeZone: function ()\r\n {\r\n\r\n var rightNow = new Date();\r\n return String(String(rightNow).split(\"(\")[1]).split(\")\")[0];\r\n\r\n },\r\n\r\n\tisHighResScreen: function ()\r\n\t{\r\n\t\treturn window.screen.width >= 1400 && window.screen.height >= 900;\r\n\t},\r\n\r\n\tisPortraitScreen: function ( fact )\r\n\t{\r\n\t\tfact = fact || 1.0;\r\n\t\t// \"#IFDEBUG\"\r\n\t\t// return window.innerWidth * fact < window.innerHeight;\r\n\t\t// \"#ENDIF\"\r\n\t\treturn window.screen.width * fact < window.screen.height;\r\n },\r\n\r\n getLanguage: function ()\r\n {\r\n return navigator.language;\r\n },\r\n\r\n getSystemLanguage: function ()\r\n {\r\n return navigator.systemLanguage || window.navigator.language;\r\n },\r\n\r\n\tgetWindowsCodePage: function ()\r\n\t{\r\n\t\tif ( document.inputEncoding )\r\n\t\t{\r\n\t\t\tswitch ( document.inputEncoding )\t// defaultCharset deprecated in Chrome\r\n\t\t\t{\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn 1252;\r\n\t\t\t\tcase \"ISO-8859-11\":\r\n\t\t\t\t\treturn 874;\t// thai\r\n\t\t\t\tcase \"Windows-31J\":\t// japan ????\r\n\t\t\t\t\treturn 932;\r\n\t\t\t\tcase \"ISO-8859-2\":\r\n\t\t\t\t\treturn 1250;\t\t// Central Europe\r\n\t\t\t\tcase \"ISO-8859-5\":\r\n\t\t\t\t\treturn 1251;\t\t// Cyrillic\r\n\t\t\t\tcase \"ISO-8859-1\":\r\n\t\t\t\t\treturn 1252;\t\t// Western Europe\r\n\t\t\t\tcase \"ISO-8859-7\":\r\n\t\t\t\t\treturn 1253;\t\t// Greek\r\n\t\t\t\tcase \"ISO-8859-9\":\r\n\t\t\t\t\treturn 1254;\t\t//\tTurkish\r\n\t\t\t\tcase \"ISO-8859-8\":\r\n\t\t\t\t\treturn 1255;\t\t// Hebrew\r\n\t\t\t\tcase \"ISO-8859-6\":\r\n\t\t\t\t\treturn 1256;\t\t// Arabic\r\n\t\t\t\tcase \"ISO-8859-13\":\r\n\t\t\t\t\treturn 1257;\t\t// Baltic\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn 1252;\r\n\t},\r\n\r\n\tgetInternetExplorerVersion: function ()\r\n\t{\r\n\t\tvar rv = -1; // Return value assumes failure.\r\n\t\tif ( navigator.appName == 'Microsoft Internet Explorer' )\r\n\t\t{\r\n\t\t\tvar ua = navigator.userAgent;\r\n\t\t\tvar re = new RegExp( \"MSIE ([0-9]{1,}[.0-9]{0,})\" );\r\n\t\t\tif ( re.exec( ua ) != null )\r\n\t\t\t\trv = parseFloat( RegExp.$1 );\r\n\t\t}\r\n\t\treturn rv;\r\n\t},\r\n\r\n\tuseExtJSTouchCSS: function ()\r\n\t{\r\n\t\treturn this.isMobile() || this.isTouchDevice();\r\n\t},\r\n\r\n\tisBrowserOk: function ()\r\n\t{\r\n\t\t//2 + 3;\r\n\t\t//\"#IFDEBUG\"\r\n\t\t//return false;\r\n\t\t//\"#ENDIF\"\r\n\r\n\t\tif ( Function.prototype.bind === undefined )\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ( typeof console === \"undefined\" )\r\n\t\t\treturn false;\r\n\r\n\t\tif ( !( \"WebSocket\" in window ) )\r\n\t\t\treturn false;\r\n\r\n\t\tif ( this.getIEVersion() >= 11 )\t// windows phone reports as android 4.0\r\n\t\t\treturn true;\r\n\r\n\t\tif ( this.isAndroidBrowser() && this.getAndroidVersion() <= 4.2 )\t// hack, browser doesn't have WS. See websocketstest.com\r\n\t\t\treturn false;\r\n\r\n\t\tif ( this.isSafariOnWindows() && this.getSafariVersion() < 535 && !this.isChrome() )\r\n\t\t\treturn false;\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\tisHTTPS: function()\r\n\t{\r\n\t\tif ( document.location && document.location.protocol )\r\n\t\t\treturn 'http:' != document.location.protocol;\r\n\t\tif ( window.location && window.location.protocol )\r\n\t\t\treturn 'http:' != window.location.protocol;\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetIEVersion: function ()\r\n\t{\r\n\t\tvar ua = window.navigator.userAgent;\r\n\t\tvar msie = ua.indexOf( 'MSIE ' );\r\n\t\tif ( msie > 0 )\r\n\t\t{\r\n\t\t\t// IE 10 or older => return version number\r\n\t\t\treturn parseInt( ua.substring( msie + 5, ua.indexOf( '.', msie ) ), 10 );\r\n\t\t}\r\n\t\tvar trident = ua.indexOf( 'Trident/' );\r\n\t\tif ( trident > 0 )\r\n\t\t{\r\n\t\t\t// IE 11 => return version number\r\n\t\t\tvar rv = ua.indexOf( 'rv:' );\r\n\t\t\treturn parseInt( ua.substring( rv + 3, ua.indexOf( '.', rv ) ), 10 );\r\n\t\t}\r\n\r\n\t\tvar edge = ua.indexOf( 'Edge/' );\r\n\t\tif ( edge > 0 )\r\n\t\t{\r\n\t\t\t// IE 12 => return version number\r\n\t\t\treturn parseInt( ua.substring( edge + 5, ua.indexOf( '.', edge ) ), 10 );\r\n\t\t}\r\n\t},\r\n\r\n\tgetFirefoxVersion: function ()\r\n\t{\r\n\t\tvar match = window.navigator.userAgent.match(/Firefox\\/([0-9]+)\\./);\r\n\t\tvar ver = match ? parseInt(match[1]) : 0;\r\n\t\t\r\n\t\treturn ver;\r\n\t},\r\n\r\n\tisNonCrossDomainIE: function()\r\n\t{\r\n\t\tvar v = this.getIEVersion();\r\n\t\tif ( v )\r\n\t\t\treturn v < 12;\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\tcanRunWebAssembly: function()\r\n {\r\n // https://www.scirra.com/blog/218/apple-broke-webassembly-and-are-leaving-it-broken\r\n\r\n //\treturn false;\r\n //if ( this.isIPad() || this.isIPhone() ) // March 18, Apple broke WebAssembly on iOS\r\n // return false;\r\n\r\n\t\treturn typeof WebAssembly === \"object\" /*&& ( this.runsOnChessBaseCom() || document.URL.search( /localhost/i ) != -1 )*/;\r\n\t},\r\n\r\n\tisActivexEnabled: function ()\r\n\t{\r\n\t\tvar supported = null;\r\n\t\t// try\r\n\t\t// {\r\n\t\t// \tsupported = !!new ActiveXObject( \"htmlfile\" );\r\n\t\t// } catch ( e )\r\n\t\t// {\r\n\t\t// \tsupported = false;\r\n\t\t// }\r\n\t\treturn supported;\r\n\t},\r\n\r\n\tisWebKit: function ()\r\n\t{\r\n\t\tvar isWebkit = ( window.webkitURL != null );\r\n\t\treturn isWebkit;\r\n\t},\r\n\r\n\tisChrome: function ()\r\n\t{\r\n\t\treturn navigator.userAgent.indexOf( \"Chrome\" ) != -1;\r\n\t},\r\n\r\n\tisSafari: function ()\r\n\t{\r\n\t\treturn navigator.userAgent.indexOf( \"Safari\" ) != -1\r\n\t\t\t && navigator.userAgent.indexOf( \"Chrome\" ) == -1\r\n\t\t\t && navigator.userAgent.indexOf( \"CriOS\" ) == -1;\r\n\t},\r\n\r\n\tisFirefox: function ()\r\n\t{\r\n\t\treturn navigator.userAgent.indexOf( \"Firefox\" ) != -1;\r\n },\r\n\r\n isIE: function ()\r\n {\r\n return this.getIEVersion() > 0;\r\n },\r\n\r\n isOldIE: function ()\r\n {\r\n return this.getIEVersion() > 0 && this.getIEVersion() < 12;\r\n },\r\n\r\n\tbrowserIsSafeForEngine: function( cpus )\r\n\t{\r\n\t\t//2 + 3;\r\n\t\t//\"#IFDEBUG\"\r\n\t\t//return true;\r\n\t\t//\"#ENDIF\"\r\n\r\n\t\tvar ie = this.getIEVersion();\r\n\t\tvar ff = this.getFirefoxVersion();\r\n\t\tvar saf = parseFloat( this.getSafariVersion() );\r\n\r\n\t\tvar safe = this.isChrome() || ie >= 11 || ff >= 54 || saf > 600 || System.canRunWebAssembly();\r\n\r\n\t\t// note: iOS reports 2 cpus. 8 is max.\r\n\r\n\t\tvar nCpus = System.getNCpus();\r\n\t\tif ( !nCpus )\r\n\t\t\tsafe = safe && !System.isMobile();\r\n\t\telse\r\n\t\t\tsafe = safe && System.getNCpus() >= ( cpus || 6 );\r\n\r\n\t\t// console.log( \"SFE=\" + safe );\r\n\r\n\t\treturn safe;\r\n\t},\r\n\r\n\tisAndroidBrowser: function ()\r\n\t{\r\n\t\treturn navigator.userAgent.indexOf( \"Android\" ) >= 0 && navigator.userAgent.indexOf( \"Chrome\" ) == -1;\r\n\t},\r\n\r\n\tisAndroid: function ()\r\n\t{\r\n\t\treturn this.getAndroidVersion() > 0.0;\r\n\t},\r\n\r\n\t// hack: Safari Win reports WebSocket in window, but uses a deprecated protocol.\r\n\tisSafariOnWindows: function ()\r\n\t{\r\n\t\treturn navigator.userAgent.indexOf( \"Windows\" ) >= 0 && navigator.userAgent.indexOf( \"Safari\" ) >= 0;\r\n\t},\r\n\r\n\tgetSafariVersion: function ()\r\n\t{\r\n\t\tvar ua = navigator.userAgent;\r\n\t\tif ( ua.indexOf( \"Safari\" ) >= 0 )\r\n\t\t{\r\n\t\t\tvar safariVersion = parseFloat( ua.slice( ua.indexOf( \"Safari\" ) + 7 ) );\r\n\t\t\treturn safariVersion;\r\n\t\t}\r\n\t\treturn 0.0;\r\n\t},\r\n\r\n\tcopyToClipboard: function ( txt )\r\n\t{\r\n\t\tfunction fallbackCopyTextToClipboard( text )\r\n\t\t{\r\n\t\t\tvar textArea = document.createElement( \"textarea\" );\r\n\t\t\ttextArea.value = text;\r\n\t\t\tdocument.body.appendChild( textArea );\r\n\t\t\ttextArea.focus();\r\n\t\t\ttextArea.select();\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tdocument.execCommand( 'copy' );\r\n\t\t\t\t\r\n\t\t\t} catch ( x )\r\n\t\t\t{\r\n\t\t\t}\r\n\t\t\tdocument.body.removeChild( textArea );\r\n\t\t}\r\n\t\tif ( !navigator.clipboard )\r\n\t\t{\r\n\t\t\tfallbackCopyTextToClipboard( txt );\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tnavigator.clipboard.writeText( txt );\r\n\t},\r\n\r\n\tgetAndroidVersion: function ()\r\n\t{\r\n\t\tvar ua = navigator.userAgent;\r\n\t\tif ( ua.indexOf( \"Android\" ) >= 0 )\r\n\t\t{\r\n\t\t\tvar androidversion = parseFloat( ua.slice( ua.indexOf( \"Android\" ) + 8 ) );\r\n\t\t\treturn androidversion;\r\n\t\t}\r\n\t\treturn 0.0;\r\n\t},\r\n\r\n\tisWebGlCapable: function ( return_context )\r\n\t{\r\n\r\n\t\tif ( !!window.WebGLRenderingContext )\r\n\t\t{\r\n\t\t\tvar canvas = document.createElement( \"canvas\" ),\r\n names = [\"webgl\", \"experimental-webgl\", \"moz-webgl\", \"webkit-3d\"],\r\n context = false;\r\n\r\n\t\t\tfor ( var i = 0; i < 4; i++ )\r\n\t\t\t{\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tcontext = canvas.getContext( names[i] );\r\n\t\t\t\t\tif ( context && typeof context.getParameter == \"function\" )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// WebGL is enabled\r\n\t\t\t\t\t\tif ( return_context )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// return WebGL object if the function's argument is present\r\n\t\t\t\t\t\t\treturn { name: names[i], gl: context };\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// else, return just true\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch ( e ) { }\r\n\t\t\t}\r\n\r\n\t\t\t// WebGL is supported, but disabled\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// WebGL not supported\r\n\t\treturn false;\r\n\t},\r\n\r\n\trunsOnChessBaseDomain: function()\r\n\t{\r\n return ( document.URL.search( /chessbase.com/i ) != -1 && document.URL.search( /cloudserver/i ) == -1 )\r\n || document.URL.search( /playchess.com/i ) != -1\r\n || document.URL.search( /schach.de/i ) != -1;\r\n\t},\r\n\r\n\trunsOnChessBaseCom: function ()\r\n\t{\r\n\t//\treturn document.domain.endsWith( \"chessbase.com\" ); \r\n\t\treturn document.URL.search( /chessbase.com/i ) != -1;\r\n\t},\r\n\r\n\trunsOnLiveChessBaseCom: function ()\r\n\t{\r\n\t\treturn document.URL.search( /live.chessbase.com/i ) != -1\r\n\t\t || document.URL.search( /acc.chessbase.com/i ) != -1;\r\n\t},\r\n\r\n\trunsOnVideosChessBaseCom: function ()\r\n\t{\r\n\t return document.URL.search( /videos.chessbase.com/i ) != -1\r\n\t\t || document.URL.search( /videostest.chessbase.com/i ) != -1;\r\n\t},\r\n\r\n\tgetDevicePixelRatio: function ()\r\n\t{\r\n\t\treturn window.devicePixelRatio;\r\n\t},\r\n\r\n\toverrideDeviceZoom: function ( z )\r\n\t{\r\n\t\tthis.overriddenDeviceZoom = z;\r\n\t},\r\n\r\n\tpixToZoom: function ( n )\r\n\t{\r\n\t\tif ( this.overriddenDeviceZoom )\r\n\t\t\treturn n / this.overriddenDeviceZoom;\r\n\r\n\t\tif ( window.devicePixelRatio )\r\n\t\t\treturn n / window.devicePixelRatio;\r\n\t\telse\r\n\t\t\treturn n;\r\n\t},\r\n\r\n\tzoomToPix: function ( n )\r\n\t{\r\n\t\tif ( this.overriddenDeviceZoom )\r\n\t\t\treturn n * this.overriddenDeviceZoom;\r\n\r\n\t\tif ( window.devicePixelRatio )\r\n\t\t\treturn n * window.devicePixelRatio;\r\n\t\telse\r\n\t\t\treturn n;\r\n\t},\r\n\r\n\tgetNCpus: function()\r\n\t{\r\n\t\tif ( window.navigator.hardwareConcurrency )\r\n\t\t\treturn window.navigator.hardwareConcurrency;\r\n\t\treturn 0;\r\n\t},\r\n\r\n getDeviceMemory: function ()\r\n {\r\n if (navigator.deviceMemory)\r\n return navigator.deviceMemory;\r\n return 0;\r\n },\r\n\r\n getHardwareId: function ()\r\n { \r\n var s = this.getDeviceMemory() + navigator.platform + this.getNCpus() + this.getSystemLanguage() + this.getTimeZone();\r\n return s;\r\n },\r\n\t// reminder navigator.platform\r\n\r\n\tbrowser: {\t// could be useful\r\n\t\tdetect: function ()\r\n\t\t{\r\n\t\t\treturn {\r\n\t\t\t\tbrowser: this.search( this.data.browser ),\r\n\t\t\t\tversion: this.search( navigator.userAgent ) || this.search( navigator.appVersion ),\r\n\t\t\t\tos: this.search( this.data.os )\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tsearch: function ( data )\r\n\t\t{\r\n\t\t\tif ( typeof data === \"object\" )\r\n\t\t\t{\r\n\t\t\t\t// search for string match\r\n\t\t\t\tfor ( var i = 0; i < data.length; i++ )\r\n\t\t\t\t{\r\n\t\t\t\t\tvar dataString = data[i].string,\r\n\t\t\t\t\t\tdataProp = data[i].prop;\r\n\t\t\t\t\tthis.version_string = data[i].versionSearch || data[i].identity;\r\n\t\t\t\t\tif ( dataString )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( dataString.indexOf( data[i].subString ) != -1 )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\treturn data[i].identity;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if ( dataProp )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\treturn data[i].identity;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else\r\n\t\t\t{\r\n\t\t\t\t// search for version number\r\n\t\t\t\tvar index = data.indexOf( this.version_string );\r\n\t\t\t\tif ( index == -1 ) return;\r\n\t\t\t\treturn parseFloat( data.substr( index + this.version_string.length + 1 ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tdata: {\r\n\t\t\tbrowser: [\r\n\t\t\t { string: navigator.userAgent, subString: \"Chrome\", identity: \"Chrome\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"OmniWeb\", versionSearch: \"OmniWeb/\", identity: \"OmniWeb\" },\r\n\t\t\t { string: navigator.vendor, subString: \"Apple\", identity: \"Safari\", versionSearch: \"Version\" },\r\n\t\t\t { prop: window.opera, identity: \"Opera\", versionSearch: \"Version\" },\r\n\t\t\t { string: navigator.vendor, subString: \"iCab\", identity: \"iCab\" },\r\n\t\t\t { string: navigator.vendor, subString: \"KDE\", identity: \"Konqueror\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"Firefox\", identity: \"Firefox\" },\r\n\t\t\t { string: navigator.vendor, subString: \"Camino\", identity: \"Camino\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"Netscape\", identity: \"Netscape\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"MSIE\", identity: \"Explorer\", versionSearch: \"MSIE\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"Gecko\", identity: \"Mozilla\", versionSearch: \"rv\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"Mozilla\", identity: \"Netscape\", versionSearch: \"Mozilla\" }\r\n\t\t\t],\r\n\t\t\tos: [\r\n\t\t\t { string: navigator.platform, subString: \"Win\", identity: \"Windows\" },\r\n\t\t\t { string: navigator.platform, subString: \"Mac\", identity: \"Mac\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"iPhone\", identity: \"iPhone/iPod\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"iPad\", identity: \"iPad\" },\r\n\t\t\t { string: navigator.userAgent, subString: \"Android\", identity: \"Android\" },\r\n\t\t\t { string: navigator.platform, subString: \"Linux\", identity: \"Linux\" }\r\n\t\t\t]\r\n\t\t}\r\n\t}\r\n};\r\n\r\n","\r\nimport { System } from \"common/Tools/System\";\r\nimport { strUtil } from \"common/Tools/Tools\";\r\n\r\nconst SERVER = System.isHTTPS() ? \"https://users.chessbase.com\" : \"http://users.chessbase.com\";\r\nconst BACKUP_SERVER = System.isHTTPS() ? \"https://usersback.chessbase.com\" : \"http://usersback.chessbase.com\";\r\n\r\nexport var LOGIN_MODES = {\r\n guest: 0,\r\n free: 1,\r\n standard: 2,\r\n premium: 3,\r\n}\r\n\r\nexport class AccountUtils\r\n{\r\n static PasswordLogin (username, password, callback) \r\n {\r\n var nameCoded = AccountUtils.EncodeAndBase64( username );\r\n\t\tvar key = AccountUtils.GetCmdKey( nameCoded, \"chk\" );\r\n\t\tvar queryParameters = {\r\n\t\t\tcmd: \"chk\",\r\n\t\t\tuser: nameCoded,\r\n\t\t\tapp: \"database\", // TODO: Diesen Value als Parameter übergeben\r\n\t\t\tpass: AccountUtils.EncodeAndBase64( password ),\r\n\t\t\tkey: key \r\n\t\t};\r\n\r\n\t\tAccountUtils.QueryServer (queryParameters, callback);\r\n };\r\n\r\n static TokenLogin (userName, token, callback)\r\n\t{\r\n\t\tvar nameCoded = AccountUtils.EncodeAndBase64( userName );\r\n\t\tvar key = AccountUtils.GetCmdKey( nameCoded, \"get\" );\r\n\t\tvar queryParameters = {\r\n\t\t\tcmd: \"get\",\r\n\t\t\tuser: nameCoded,\r\n\t\t\tapp: \"database\",\r\n\t\t\ttoken: token,\r\n\t\t\tkey: key\r\n\t\t};\r\n\r\n\t\tAccountUtils.QueryServer(queryParameters, callback);\r\n }\r\n \r\n static QueryServer( parameters, callback )\r\n\t{\r\n\t\tvar query = [];\r\n\t\tfor ( var key in parameters )\r\n\t\t{\r\n\t\t\tquery.push( encodeURIComponent( key ) + '=' + encodeURIComponent( parameters[key] ) );\r\n\t\t}\r\n\t\tvar data = query.join( '&' );\r\n\r\n\t\tvar xmlRequest = new XMLHttpRequest();\r\n\t\txmlRequest.open( 'POST', SERVER);\r\n\t\txmlRequest.setRequestHeader( \"Content-type\", \"application/x-www-form-urlencoded\" );\r\n\t\txmlRequest.setRequestHeader( \"X-Requested-With\", \"XMLHttpRequest\" );\r\n xmlRequest.timeout = 3000;\r\n\r\n xmlRequest.onerror = xmlRequest.ontimeout = function ()\r\n {\r\n\t\t\t// console.log(\"XML Request Timeout/Error\");\r\n\t\t\txmlRequest.abort();\r\n\t\t\txmlRequest.open( 'POST', BACKUP_SERVER);\r\n\t\t\txmlRequest.ontimeout = AccountUtils.HandleLoginFailed;\r\n\t\t\txmlRequest.onerror = AccountUtils.HandleLoginFailed;\r\n\t\t\txmlRequest.send( data );\r\n\t\t}\r\n\r\n\t\txmlRequest.onload = function ()\r\n\t\t{\r\n\t\t\tif ( xmlRequest.readyState === 4 && xmlRequest.status === 200 ) \r\n\t\t\t{\r\n\t\t\t\tvar responsedata = xmlRequest.responseText;\r\n\t\t\t\tcallback( responsedata ? JSON.parse( responsedata ) : {});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tcallback({});\r\n\t\t}\r\n\r\n\t\txmlRequest.send( data );\r\n };\r\n\r\n static HandleLoginFailed ()\r\n\t{\r\n\t\t// console.log(\"Handle Login Failed\");\r\n };\r\n \r\n static GetLoginStatusFromSubscription (subscription)\r\n {\r\n\t\t// return LOGIN_MODES.standard;\r\n switch (subscription)\r\n {\r\n case 0:\r\n case 1:\r\n return LOGIN_MODES.free;\r\n case 2: \r\n return LOGIN_MODES.standard;\r\n case 3:\r\n return LOGIN_MODES.premium;\r\n\t\t\tdefault:\r\n\t\t\t\treturn LOGIN_MODES.free;\r\n }\r\n }\r\n\r\n // TODO: Localisation\r\n static GetLoginStringFromLoginStatus (loginStatus)\r\n {\r\n switch (loginStatus)\r\n {\r\n case LOGIN_MODES.guest:\r\n return \"Guest\"\r\n case LOGIN_MODES.free:\r\n return \"Free\";\r\n case LOGIN_MODES.standard: \r\n return \"Standard\";\r\n case LOGIN_MODES.premium:\r\n return \"Premium\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"Guest\";\r\n }\r\n }\r\n \r\n static GetCmdKey( name, cmd )\r\n\t{\r\n\t\tif ( name.Length === 0 )\r\n\t\t\tname = \"nameCoded\";\r\n\r\n\t\tvar cat = cmd + name;\r\n\t\tvar nameChars = name.split( \"\" ), codeChars = cmd.split( \"\" ), chars2 = cat.split( \"\" );\r\n\r\n\t\tvar nCode = 0, nName = 0;\r\n\t\tfor ( var i = 0; i < chars2.length ; i++ )\r\n\t\t{\r\n\t\t\tif ( ( i & 1 ) !== 0 && nCode < codeChars.length )\r\n\t\t\t{\r\n\t\t\t\tchars2[i] = codeChars[nCode];\r\n\t\t\t\tnCode++;\r\n\t\t\t}\r\n\t\t\telse if ( nName < nameChars.length )\r\n\t\t\t{\r\n\t\t\t\tchars2[i] = nameChars[nameChars.length - nName - 1];\r\n\t\t\t\tnName++;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar encoded = AccountUtils.EncodeAndBase64( chars2.join( \"\" ) );\r\n\t\treturn encoded;\r\n\t};\r\n \r\n static EncodeAndBase64( txt )\r\n\t{\r\n\t\ttxt = strUtil.escapeHtmlEntities( txt );\r\n\t\tvar encoded = strUtil.base64.encode( txt );\r\n\t\treturn encoded;\r\n\t};\r\n}\r\n","// jb 3.7.2013\r\n\r\n// \"use strict\";\r\nimport { Game } from 'common/Chess/Logic/Game';\r\n// import { Log } from \"common/Tools/Log\"\r\n\r\n\r\nexport var OnlineEntryEnum = {\r\n FLAGS_ONLINE_NONE: 0,\r\n FLAGS_ONLINE_ID: 1,\r\n FLAGS_ONLINE_HEADER: 2,\r\n FLAGS_ONLINE_GAME: 2,\r\n\r\n toString:\r\n function ( n ) {\r\n for ( var attr in this ) {\r\n if ( this[attr] == n )\r\n return \"OnlneEntryId: \" + attr;\r\n }\r\n return \"Unknown OnlineEntryId: \" + n;\r\n }\r\n};\r\n\r\nexport class OnlineEntry \r\n{\r\n constructor () \r\n {\r\n this.aGame = new Game();\r\n\r\n //NH2020 added = null\r\n this.aGame = null;\r\n this.aHeader = null;\r\n this.aDB = null;\r\n this.nGameNr = null;\r\n this.nFlags = null;\r\n };\r\n}\r\n\r\n\r\n\r\n","// mw 18.4.2013\r\n\r\n// ES6 Feb 2020\r\n\r\n\r\nexport class Timer\r\n{\r\n\tconstructor( handler )\r\n\t{\r\n\t\tthis.handler = handler;\r\n\t\tthis.active = false;\r\n\t};\r\n\r\n\tlaunch( handler )\r\n\t{\r\n\t\tthis.runOnce( 0, handler );\r\n\t};\r\n\r\n\trunOnce( timeout, handler )\r\n\t{\r\n\t\tif ( this.inHandler )\r\n\t\t{\r\n\t\t\tthis.fnAfterHandler = function()\r\n\t\t\t{\r\n\t\t\t\tthis.runOnce( timeout, handler );\r\n\t\t\t}.bind( this );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif ( typeof timeout == \"undefined\" || timeout == null )\r\n\t\t\t\ttimeout = 5000;\r\n\r\n\t\t\tif ( handler )\r\n\t\t\t\tthis.handler = handler;\r\n\t\t\tthis.stop();\r\n\t\t\tthis.isPeriodic = false;\r\n\t\t\tthis.active = true;\r\n\t\t\tthis.timeout = timeout;\r\n\t\t\tthis.timer = window.setTimeout( this.timeoutHandler.bind( this ), this.timeout );\r\n\t\t\tthis.tick = new Tick();\r\n\t\t}\r\n\t};\r\n\r\n\trunPeriodic( timeout, handler )\r\n\t{\r\n\t\tif ( handler )\r\n\t\t\tthis.handler = handler;\r\n\t\tthis.stop();\r\n\t\tthis.isPeriodic = true;\r\n\t\tthis.active = true;\r\n\t\tthis.timeout = timeout || 5000;\r\n\t\tthis.timer = window.setInterval( this.timeoutHandler.bind( this ), this.timeout );\r\n\t\tthis.tick = new Tick();\r\n\t};\r\n\r\n\trestart()\r\n\t{\r\n\t\tif ( this.active )\r\n\t\t{\r\n\t\t\tthis.stop();\r\n\t\t\tthis.active = true;\r\n\t\t\tif ( this.isPeriodic )\r\n\t\t\t\tthis.timer = window.setInterval( this.timeoutHandler.bind( this ), this.timeout );\r\n\t\t\telse\r\n\t\t\t\tthis.timer = window.setTimeout( this.timeoutHandler.bind( this ), this.timeout );\r\n\t\t\tthis.tick = new Tick();\r\n\t\t}\r\n\t};\r\n\r\n\tgetExpiredMS()\r\n\t{\r\n\t\tif ( this.tick )\r\n\t\t\treturn this.tick.getExpiredMS();\r\n\r\n\t\treturn 0;\r\n\t};\r\n\r\n\tstop()\r\n\t{\r\n\t\tif ( this.isPeriodic )\r\n\t\t\twindow.clearInterval( this.timer );\r\n\t\telse\r\n\t\t\twindow.clearTimeout( this.timer );\r\n\t\tthis.active = false;\r\n\t};\r\n\r\n\tisActive()\r\n\t{\r\n\t\treturn this.active;\r\n\t};\r\n\r\n\ttimeoutHandler()\r\n\t{\r\n\t\tthis.inHandler = true;\r\n\t\tif ( this.handler )\r\n\t\t\tthis.handler();\r\n\t\tthis.inHandler = false;\r\n\t\tthis.active = this.isPeriodic;\r\n\t\tif ( this.fnAfterHandler )\r\n\t\t{\r\n\t\t\tthis.fnAfterHandler();\r\n\t\t\tdelete this.fnAfterHandler;\r\n\t\t}\r\n\t};\r\n\r\n\tgetTimeoutMs()\r\n\t{\r\n\t\tif ( this.timeout )\r\n\t\t\treturn this.timeout;\r\n\t\treturn 0;\r\n\t};\r\n\r\n\t// static und böse:\r\n\tstatic busyWait = function( milliSecs )\r\n\t{\r\n\t\tmilliSecs += new Date().getTime();\r\n\t\twhile ( new Date() < milliSecs )\r\n\t\t{\r\n\t\t}\r\n\t};\r\n\r\n\tstatic launch = function( fn, milliSecs )\r\n\t{\r\n\t\tmilliSecs = milliSecs || 100;\r\n\t\tnew Timer().runOnce( milliSecs, fn );\r\n\t};\r\n}\r\n\r\n////////////////////////////////////////////////////////////////////\r\n\r\n// high resolution timer available in browser?\r\n\r\n\r\nexport class Tick\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.start();\r\n\t};\r\n\r\n\tstatic hasHiResTimer = window.performance && window.performance.now;\r\n\r\n\tstart()\r\n\t{\r\n\t\tif ( Tick.hasHiResTimer )\r\n\t\t\tthis.ticker = window.performance.now();\r\n\t\telse\r\n\t\t\tthis.ticker = new Date().valueOf();\r\n\t};\r\n\r\n\tgetExpired()\r\n\t{\r\n\t\tif ( Tick.hasHiResTimer )\r\n\t\t\treturn Math.round( ( window.performance.now() - this.ticker ) * 100 ) / 100;\r\n\t\telse\r\n\t\t\treturn new Date().valueOf() - this.ticker;\r\n\t};\r\n\r\n\tlogTime( txt )\r\n\t{\r\n\t\tvar strLog = \"\";\r\n\t\tif ( txt )\r\n\t\t\tstrLog = txt + \": \";\r\n\t\tstrLog += this.getExpired() + \"ms\";\r\n\t\tthis.start();\r\n\r\n\t\treturn strLog;\r\n\t};\r\n\r\n\tgetExpiredMS ()\r\n\t{\r\n\t\treturn Math.round( this.getExpired() );\r\n\t};\r\n\r\n\tstatic getTick ()\r\n\t{\r\n\t\tif ( Tick.hasHiResTimer )\r\n\t\t\treturn Math.round( window.performance.now() );\r\n\t\telse\r\n\t\t\treturn new Date().valueOf();\r\n\t};\r\n\r\n\tstatic getHiResTick = function()\r\n\t{\r\n\t\tif ( Tick.hasHiResTimer )\r\n\t\t\treturn window.performance.now();\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn new Date().valueOf();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n\r\n////////////////////////////////////////////////////////////////////\r\n\r\nexport class TimeSpan\r\n{\r\n\tconstructor( autoRestart )\r\n\t{\r\n\t\tif ( autoRestart !== undefined )\r\n\t\t\tthis.autoRestart = autoRestart;\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.autoRestart = true;\r\n\t\t}\r\n\t\tthis.start();\r\n\t};\r\n\r\n\tstart()\r\n\t{\r\n\t\tthis.tick = new Date().valueOf();\r\n\t};\r\n\r\n\tisElapsed( nSecs )\r\n\t{\r\n\t\tif ( this.getElapsedMilliSecs() > nSecs * 1000 )\r\n\t\t{\r\n\t\t\tif ( this.autoRestart )\r\n\t\t\t\tthis.start();\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tgetElapsedMilliSecs()\r\n\t{\r\n\t\treturn new Date().valueOf() - this.tick;\r\n\t};\r\n}\r\n\r\n////////////////////////////////////////////////////////////////\r\n// avoid e.g. fast repeat of a command click\r\n\r\nexport class RepeatGate\r\n{\r\n\texec( fn, milliSecs )\r\n\t{\r\n\t\tif ( this.timer )\r\n\t\t\tthis.timer.stop();\r\n\t\tthis.timer = new Timer( fn );\r\n\t\tthis.milliSecs = milliSecs;\r\n\t\tthis.timer.runOnce( milliSecs );\r\n\t};\r\n\r\n\tisActive()\r\n\t{\r\n\t\treturn this.timer && this.timer.isActive();\r\n\t};\r\n\r\n\tstop()\r\n\t{\r\n\t\tif ( this.timer )\r\n\t\t\tthis.timer.stop();\r\n\t}\r\n\r\n\trestart()\r\n\t{\r\n\t\tif ( this.isActive() )\r\n\t\t{\r\n\t\t\tthis.timer.stop();\r\n\t\t\tthis.timer.runOnce( this.milliSecs || 1000 );\r\n\t\t}\r\n\t};\r\n}\r\n","// mw 7.1.2014\r\n// ES6 3.3.2020\r\n\r\nimport { ObjUtil } from 'common/Patterns/ObjectUtil';\r\nimport { Piece } from 'common/Chess/Logic/Chess';\r\nimport { InvariantLocalization } from \"common/Chess/Logic/Notation\";\r\n// import { Log } from 'common/Tools/Log';\r\n\r\n\r\nexport var glLoc;\t\t// global localization object\r\nexport var lm;\t\t\t// get strings with lm.IDENTIFIER;\r\n\r\nexport class Localization\r\n{\r\n\tconstructor( locObjs )\r\n\t{\r\n\t\tglLoc = this;\r\n\r\n\t\tthis.locObjects = [].concat( locObjs );\r\n\t\tlm = this.locObjects[ 0 ];\r\n\r\n\t\tfor ( var i = 1; i < this.locObjects.length; i++ )\r\n\t\t{\r\n\t\t\tvar o = this.locObjects[ i ];\r\n\r\n\t\t\tfor ( var m in o )\r\n\t\t\t{\r\n\t\t\t\tif ( o.hasOwnProperty( m ) )\r\n\t\t\t\t\tlm[ m ] = o[ m ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar NotaLoc = ObjUtil.clone( InvariantLocalization );\r\n\r\n\t\tNotaLoc.arrStrPieces[ Piece.W_KING ] =\r\n\t\t\tNotaLoc.arrStrPieces[ Piece.B_KING ] = lm.NOTATION_KING;\r\n\r\n\t\tNotaLoc.arrStrPieces[ Piece.W_QUEEN ] =\r\n\t\t\tNotaLoc.arrStrPieces[ Piece.B_QUEEN ] = lm.NOTATION_QUEEN;\r\n\r\n\t\tNotaLoc.arrStrPieces[ Piece.W_ROOK ] =\r\n\t\t\tNotaLoc.arrStrPieces[ Piece.B_ROOK ] = lm.NOTATION_ROOK;\r\n\r\n\t\tNotaLoc.arrStrPieces[ Piece.W_BISHOP ] =\r\n\t\t\tNotaLoc.arrStrPieces[ Piece.B_BISHOP ] = lm.NOTATION_BISHOP;\r\n\r\n\t\tNotaLoc.arrStrPieces[ Piece.W_KNIGHT ] =\r\n\t\t\tNotaLoc.arrStrPieces[ Piece.B_KNIGHT ] = lm.NOTATION_KNIGHT;\r\n\r\n\t\tNotaLoc.arrStrPieces[ Piece.W_PAWN ] =\r\n\t\t\tNotaLoc.arrStrPieces[ Piece.B_PAWN ] = \"\";\r\n\r\n\t\tlm.NOTA_LOCALIZATION = NotaLoc;\r\n\t};\r\n}\r\n\r\nexport var Loc =\r\n{\r\n\tChess:\r\n\t{\r\n\t\t\r\n\t},\r\n\r\n\tMyMoves:\r\n\t{\r\n\r\n\t}\r\n}\r\n","// Queue, mw 21.1.2013\r\n// MW 5.3.2020\r\n\r\n\r\nexport class Queue\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.nOffset = 0;\r\n\t\tthis.queue = [];\r\n\t};\r\n\r\n\tgetLength()\r\n\t{\r\n\t\treturn ( this.queue.length - this.nOffset );\r\n\t}\r\n\tempty()\r\n\t{\r\n\t\treturn this.queue.length === 0;\r\n\t}\r\n\tpush( item )\r\n\t{\r\n\t\tthis.queue.push( item );\r\n\t}\r\n\tpop()\r\n\t{\r\n\t\tif ( this.queue.length === 0 )\r\n\t\t\treturn undefined;\r\n\t\tvar item = this.queue[ this.nOffset ];\r\n\t\tif ( ++this.nOffset * 2 >= this.queue.length )\r\n\t\t{\r\n\t\t\tthis.queue = this.queue.slice( this.nOffset );\r\n\t\t\tthis.nOffset = 0;\r\n\t\t}\r\n\t\treturn item;\r\n\t}\r\n\r\n\tfront()\r\n\t{\r\n\t\treturn ( this.queue.length > 0 ? this.queue[ this.nOffset ] : undefined );\r\n\t}\r\n\r\n}","// YourIdData, mw 22.2.2013\r\n// MW 5.3.2020\r\n\r\nimport { ConnectId } from \"common/WebClient/Connection\";\r\n\r\n\r\nexport class YourIdData\r\n{\r\n\tconstructor()\r\n\t{\r\n\t\tthis.nId = ConnectId.NONE;\r\n\t\tthis.nIdDefaultPlayingGroup = 0;\r\n\t\tthis.nIdBroadcastGroup = 0;\r\n\t\tthis.nIdCMSArchive = 0;\r\n\t\tthis.strToken = \"\";\r\n\t\tthis.strUserId = \"\";\r\n\t\tthis.accountType = 0;\r\n\t\tthis.nFlags = 0;\r\n\t};\r\n\r\n\tfromSocketsMsg( msg )\r\n\t{\r\n\t\tmsg.getBuf().rewind();\r\n\t\tthis.nIdDefaultPlayingGroup = msg.getBuf().readInt32();\t// irrelevant, its coming from the bridge.\r\n\t\tthis.nIdBroadcastGroup = msg.getBuf().readInt32();\r\n\t\tthis.nId = msg.getBuf().readInt32();\r\n\t\tthis.nIdCMSArchiv = msg.getBuf().readInt32();\r\n\t\tthis.strToken = msg.getBuf().readASCIIString( 200 );\r\n\t\tthis.accountType = msg.getBuf().readInt16();\r\n\t\tthis.strUserId = msg.getBuf().readASCIIString( 200 );\r\n\t\tthis.nFlags = msg.getBuf().readInt32();\r\n\t};\r\n\r\n\tisFromBridge()\r\n\t{\r\n\t\treturn ( this.nFlags & 2 ) !== 0;\r\n\t}\r\n}\r\n\r\n","// WebSockMessage, mw 21.2.2013\r\n// ES6 4.3.2020\r\n\r\nimport { DataBuffer } from 'common/Container/DataBuffer'\r\n// import { Log } from 'common/Tools/Log';\r\n\r\nexport var SockMsgId = \r\n{\r\n NONE: 0,\r\n\r\n WIN_INVALID_PASSWORD: 17,\r\n WIN_ACCESS_DENIED: 42,\r\n\r\n ALIVE: 7001,\r\n LOGON: 7002,\r\n LOGOFF: 7003,\r\n YOUR_ID: 7004,\r\n INVALID_PASSWORD: 7005,\r\n RECONNECT_OK: 7006,\r\n CLIENTPING: 7007,\r\n CLIENTECHO: 7008,\r\n BINDERTIMEOUT: 7009,\r\n ALREADYLOGGEDON: 7010,\r\n FORCE_LOGOFF: 7011,\r\n INVALIDPASSWORD: 7012,\r\n YOUR_LOGINTOKEN: 7013,\r\n ACCOUNT_LOCKOUT: 7014,\r\n IAMALIVE: 7015,\r\n LOGIN_OTHER_MACHINE: 7016,\r\n KICKEDOUT_OTHER_MACHINE: 7017,\r\n\tIDLE_CLIENT_LOGOFF: 7018,\r\n\r\n CHAT: 7020,\r\n STARTTYPINGCHAT: 7021,\r\n ALERT: 7022,\r\n\tPING_BY_NAME: 7023,\r\n\tRESPOND_PING_BY_NAME: 7024,\r\n\r\n USER: 7030,\r\n\r\n QUERY_SERVERALIVE: 7040,\r\n SERVER_IS_ALIVE: 7041,\r\n TEST: 7042,\r\n\r\n CLIENTLIST: 7050,\r\n ADDCLIENTS: 7051,\r\n REMOVECLIENTS: 7052,\r\n CLIENTDATACHANGE: 7053,\r\n LISTFRAGMENTRECEIVED: 7054,\r\n LISTUPDATECHANGE: 7055,\r\n CLIENTDATACHANGELIST: 7056,\r\n SESSIONSTATUSCHANGELIST: 7057,\r\n\tREQUESTCLIENTLIST: 7058,\r\n\r\n GROUPSTATUSCHANGE: 7060,\r\n CHANGEGROUP: 7061,\r\n DEFAULTGROUPS: 7062,\r\n\r\n CHANNELDATA: 7070,\r\n CHANNELSTATUSCHANGE: 7071,\r\n REQUESTCHANNELS: 7072,\r\n JOINCHANNEL: 7073,\r\n\r\n GETBROADCASTURLS: 7074,\r\n BROADCASTURLS_DATA: 7075,\r\n\r\n GETGEOLEADERBOARD: 7076,\r\n GEOLEADERBOARD_DATA: 7077,\r\n\r\n GETFRIENDSLEADERBOARD: 7078,\r\n GETFRIENDSLEADERBOARD_REPLY: 7079,\r\n\r\n REQUEST_STATISTICS: 7080,\r\n STATISTICS_DATA: 7081,\r\n\r\n RELAYFRIENDSMESSAGE: 7082,\r\n FRIENDSMESSAGE_DATA: 7083,\r\n\r\n GETACTIVEHLSSTREAMS: 7084,\r\n GETACTIVEHLSSTREAMS_REPLY: 7085,\r\n\r\n GROUPHTMLCHANGED: 7086,\r\n\r\n REQUESTCLIENTDATA: 7087,\r\n CLIENTDATA: 7088,\r\n\r\n REQUESTBROADCASTURLSEX:\t7089,\r\n REQUESTBROADCASTURLSEX_DATA: 7090,\r\n\r\n REQUESTGROUPS:7091,\r\n GROUPSDATA: 7092,\r\n\r\n QUERY_ONLINE_DB: 7100,\r\n REQUEST_ONLINE_DB_GAMES: 7101,\r\n REQUEST_ONLINE_DB_HEADERS: 7102,\r\n REQUEST_ONLINE_DB_STATISTICS: 7103,\r\n REQUEST_ONLINE_DB_USER_INFO: 7104,\r\n REQUEST_ONLINE_DB_ADMIN_INFO: 7105,\r\n ONLINE_DB_NUMBERS: 7106,\r\n ONLINE_DB_GAMES: 7107,\r\n ONLINE_DB_HEADERS: 7108,\r\n ONLINE_DB_STATISTICS: 7109,\r\n ONLINE_DB_MAINTENANCE: 7110,\r\n ONLINE_DB_USER_INFO: 7111,\r\n ONLINE_DB_ADMIN_INFO: 7112,\r\n MAINTENANCE_ONLINE_DB_UPDATE: 7113,\r\n\r\n PLAYER_BASE_USER: 7200,\r\n\r\n TERABRAIN_USER: 7300,\r\n TERABRAIN_ERROR: 7301,\r\n TERABRAIN_MAINTENANCE: 7302,\r\n REQUEST_TERABRAIN_POSITION: 7303,\t//\tdeprecated\r\n TERABRAIN_REQUEST: 7304,\r\n TERABRAIN_ENGINE_SEARCHDATA: 7305,\r\n TERABRAIN_BOOKINFO: 7306,\r\n TERABRAIN_TABLEDATA: 7307,\r\n\r\n CLOUD_USER: 7400,\r\n TRAINING_USER: 7401,\r\n\tANALYSIS_USER: 7402,\r\n\tLIVE_USER: 7403,\r\n\r\n toString:\r\n\t\t\t\tfunction ( n )\r\n\t\t\t\t{\r\n\t\t\t\t for ( var attr in this )\r\n\t\t\t\t {\r\n\t\t\t\t if ( this[attr] === n )\r\n\t\t\t\t return \"SockMsg:\" + attr;\r\n\t\t\t\t }\r\n\t\t\t\t return \"Unknown SockMsg: \" + n;\r\n\t\t\t\t},\r\n\ttoNumString:\r\n\t\t\tfunction ( n )\r\n\t\t\t{\r\n\t\t\t\treturn \"SockMsgId=\" + n;\r\n\t\t\t}\r\n};\r\n\r\nexport class WebSockMessage \r\n{\r\n constructor ( type )\r\n {\r\n this.type = type || SockMsgId.NONE;\r\n this._init();\r\n };\r\n\r\n\r\n getType()\r\n {\r\n return this.type;\r\n };\r\n\r\n setType( type )\r\n {\r\n \tthis.type = type;\r\n };\r\n\r\n getUserType()\r\n {\r\n return this.userType;\r\n };\r\n\r\n setUserType( t )\r\n {\r\n this.userType = t;\r\n };\r\n\r\n getIdReceiver()\r\n {\r\n return this.idReceiver;\r\n };\r\n\r\n setIdReceiver( idReceiver )\r\n {\r\n this.idReceiver = idReceiver;\r\n };\r\n\r\n getIdSender()\r\n {\r\n return this.idSender;\r\n };\r\n\r\n setIdSender( idSender )\r\n {\r\n this.idSender = idSender;\r\n };\r\n\r\n setVal( val )\r\n {\r\n this.nVal = val;\r\n };\r\n\r\n getVal()\r\n {\r\n return this.nVal;\r\n };\r\n\r\n address( idSender, idReceiver )\r\n {\r\n this.idSender = idSender;\r\n this.idReceiver = idReceiver;\r\n };\r\n\r\n getBuf()\r\n {\r\n return this.buf;\r\n };\r\n\r\n // NH2020 Added \"withCheckSum\"\r\n fillSendArrBuf( withMsgId, withCheckSum )\r\n {\r\n // console.log(\"With Msg ID: \" + withMsgId + \", With Check Sum: \" + withCheckSum);\r\n\r\n var hdrLen = 16;\r\n var checkSize = 0;\r\n if ( withMsgId )\r\n {\r\n hdrLen += 4;\r\n checkSize = withCheckSum ? 2 : 0; // int16\r\n }\r\n\t\tvar arrBuf = new ArrayBuffer( hdrLen + this.buf.getWriteSize() + checkSize );\r\n var view = new DataView( arrBuf );\r\n\r\n view.setInt16( 0, this.type );\r\n view.setInt32( 2, this.nVal );\r\n view.setInt32( 6, this.idSender );\r\n view.setInt16( 10, this.userType );\r\n view.setInt32( 12, this.idReceiver );\r\n if ( withMsgId )\r\n {\r\n \tview.setInt32( 16, this.msgId );\r\n var size = this.buf.writeToDataView( view, 20 );\r\n // console.log( \"BufSize=\" + size );\r\n if ( withCheckSum )\r\n view.setInt16( hdrLen + size, this.buf.getCheckSum16() ); // checkSize + magic number to avoid zero check sum.\r\n }\r\n\t\telse\r\n\t\t\tthis.buf.writeToDataView( view, 16 );\r\n\r\n return arrBuf;\r\n\r\n\r\n // NH2020 Old implementation\r\n \t// var hdrLen = 16;\r\n \t// if ( withMsgId )\r\n \t// \thdrLen += 4;\r\n\t\t// var arrBuf = new ArrayBuffer( hdrLen + this.buf.getWriteSize() );\r\n // var view = new DataView( arrBuf );\r\n // view.setInt16( 0, this.type );\r\n // view.setInt32( 2, this.nVal );\r\n // view.setInt32( 6, this.idSender );\r\n // view.setInt16( 10, this.userType );\r\n // view.setInt32( 12, this.idReceiver );\r\n // if ( withMsgId )\r\n // {\r\n // \tview.setInt32( 16, this.msgId );\r\n // \tthis.buf.writeToDataView( view, 20 );\r\n // }\r\n\t\t// else\r\n\t\t// \tthis.buf.writeToDataView( view, 16 );\r\n\r\n // return arrBuf;\r\n };\r\n\r\n fromReceiveBuf( arrBuf )\r\n {\r\n if ( arrBuf.byteLength >= 16 )\r\n {\r\n var view = new DataView( arrBuf );\r\n this.type = view.getInt16( 0 );\r\n this.nVal = view.getInt32( 2 );\r\n this.idSender = view.getInt32( 6 );\r\n this.userType = view.getInt16( 10 );\r\n this.idReceiver = view.getInt32( 12 );\r\n\r\n //Log.Log(\"Received: Type: \" + this.type + \", Val: \" + this.nVal + \", usrType: \" + this.userType + \" idrec: \" + this.idReceiver);\r\n\r\n if ( arrBuf.byteLength >= 20 )\r\n {\r\n this.buf.readFromDataView( view, 16 );\r\n this.buf.rewind();\r\n }\r\n }\r\n else\r\n {\r\n throw ( Error( \"Illegal Message received\" ) );\r\n }\r\n };\r\n\r\n toString()\r\n {\r\n var str = \"\";\r\n for ( var s in SockMsgId )\r\n {\r\n if ( this.type === SockMsgId[s] )\r\n {\r\n str += s;\r\n break;\r\n }\r\n }\r\n if ( this.userType )\r\n \tstr += \", usr=\" + this.userType;\r\n str += \", sender=\" + this.idSender + \", receiver=\" + this.idReceiver;\r\n if ( this.buf.getSize() )\r\n str += \", bufsize=\" + this.buf.getSize();\r\n return str;\r\n };\r\n\r\n // protected= //\r\n _init()\r\n {\r\n this.userType = 0;\r\n this.idReceiver = 0;\r\n this.idSender = 0;\r\n this.nVal = 0;\r\n this.buf = new DataBuffer();\r\n this.msgId = 0;\r\n };\r\n\r\n}","// Connection, mw 21.2.2013\r\n// ES6 5.3.2020\r\n\r\n// import { glApp } from \"common/App/App\"\r\nimport { Log } from 'common/Tools/Log'\r\nimport { Queue } from \"common/Container/Queue\";\r\nimport { Timer, Tick } from 'common/Tools/Timer'\r\nimport { YourIdData } from \"./Protocol/YourId\";\r\n\r\nimport { WebSockMessage, SockMsgId } from \"common/WebClient/Protocol/WebSockMessage\";\r\n// import { ColArrow } from \"common/Chess/Format/AnnoTypes\";\r\n\r\nexport var ConnectId = {\r\n\tNONE: 0,\r\n\tUNKNOWN: 0,\r\n\tSERVER: 1\r\n};\r\n\r\nexport var SockState = {\r\n\tCONNECTING: 0,\r\n\tCONNECTED: 1,\r\n\tCLOSING: 2,\r\n\tCLOSED: 3\r\n};\r\n\r\nexport class Connection\r\n{\r\n\tconstructor( lobby, uris )\r\n\t{\r\n\t\tthis.connectId = ConnectId.NONE;\r\n\t\tthis.uris = [].concat( uris );\t// make it an array, even if one string\r\n\t\tthis.nUri = 0;\r\n\r\n\t\t// NH2021D\r\n\t\t// e.g. playchess main client uses other default bridge than live blitz:\r\n\t\t// if ( glApp && glApp.config.nBridge !== undefined && glApp.config.nBridge < this.uris.length )\r\n\t\t// {\r\n\t\t// \tthis.nUri = glApp.config.nBridge;\r\n\t\t// }\r\n\r\n\t\tthis.wsUri = this.uris[ this.nUri ];\r\n\r\n\t\tthis.msgsWaitingToSend = new Queue();\r\n\t\tthis.msgsWaitingToSendNoId = new Queue();\r\n\t\tthis.onYourId = function( conn ) { };\r\n\t\tthis.onClose = function( conn ) { };\r\n\t\tthis.isFirstConnect = true;\r\n\t\tthis.firstConnectTries = 0;\r\n\r\n\t\tthis.onConnectionLoss = function() { };\r\n\t\tthis.onServerDown = function() { };\r\n\t\tthis.lobby = lobby;\r\n\t\tthis.reconnectTries = 0;\r\n\t\tthis.error = false;\r\n\t\tthis.isActiveTicker = new Tick();\r\n\t\tthis.weAreAliveTicker = new Tick();\r\n\t\tthis.tryTimer = new Timer( this.periodicHandler.bind( this ) );\t// only for errors\r\n\t\tthis.tryTimerPeriod = 200; // ms\r\n\r\n\t\tthis.msgCnt = 0;\r\n\t}\r\n\r\n\t//\tvar socket;\t!?\r\n\r\n\topen()\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif ( this.socket )\r\n\t\t\t\tthis.socket.close();\r\n\r\n\t\t\tLog.Log(\"Start Open Web Socket Uri: \" + this.wsUri);\r\n\t\t\tthis.socket = new WebSocket( this.wsUri );\r\n\t\t\tvar conn = this;\r\n\t\t\tthis.error = false;\r\n\r\n\t\t\t// Log.Log( \"Open: \" + conn.wsUri, \"\", \"conn\" );\r\n\t\t\t//alert( conn.wsUri );\r\n\t\t\t//console.log( \"open:\" + conn.wsUri );\r\n\r\n\t\t\t// NOTE: \"Closure\": Beim eigentlichen Callback zeigt \"this\" auf Websocket, daher wird Connection auf diese Weise übergeben.\r\n\r\n\t\t\tthis.socket.onopen =\r\n\t\t\t\tfunction()\r\n\t\t\t\t{\r\n\t\t\t\t\twhile ( !conn.msgsWaitingToSendNoId.empty() )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( conn.socket.readyState === SockState.CONNECTED )\r\n\t\t\t\t\t\t\tconn.sendMessage( conn.msgsWaitingToSendNoId.pop(), true /*noId*/ );\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconn.msgsWaitingToSendNoId.pop();\r\n\t\t\t\t\t\t\tLog.Log( \"YOU DID SOMETHING BAD, YOU ARE SENDING BUT HAVE NOT WAITED FOR CONNECTION TO COMPLETE\", \"LogException\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( !conn.msgsWaitingToSend.empty() )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif ( conn.socket.readyState === SockState.CONNECTED )\r\n\t\t\t\t\t\t\tconn.sendMessage( conn.msgsWaitingToSend.pop(), false /*noId*/ );\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconn.msgsWaitingToSend.pop();\r\n\t\t\t\t\t\t\tLog.Log( \"YOU DID SOMETHING BAD, YOU ARE SENDING BUT HAVE NOT WAITED FOR CONNECTION TO COMPLETE\", \"LogException\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// console.log( \"Connected:\" + conn.wsUri );\r\n\t\t\t\t\t// console.log(\"Ready State \" + conn.socket.readyState);\r\n\t\t\t\t\tthis.tryTimerPeriod = 200;\r\n\t\t\t\t\tnew Timer( function()\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconn.lobby.onConnect();\r\n\t\t\t\t\t} ).runOnce( 20 );\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.socket.onclose =\r\n\t\t\t\tfunction( ev )\r\n\t\t\t\t{\r\n\t\t\t\t\tLog.Log(\"Close Connection: \" + conn.wsUri + \" \" + ev.code);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// var closeCodes =\r\n\t\t\t\t\t// {\r\n\t\t\t\t\t// \t1000: \"Normal Close\",\r\n\t\t\t\t\t// \t1002: \"Protocol Error\",\r\n\t\t\t\t\t// \t1006: \"Abnormal Closure\",\r\n\t\t\t\t\t// \t1015: \"TLS Handshake\",\r\n\t\t\t\t\t// }\r\n\r\n\t\t\t\t\t// Log.Log( \"Closed: \" + conn.wsUri + \", \" + ev.code + \", \" + closeCodes[ ev.code ], \"\", \"conn\" );\r\n\t\t\t\t\t\r\n\t\t\t\t\tconn.onClose( conn );\r\n\t\t\t\t\t//conn.tryTimer.stop();\r\n\t\t\t\t\tif ( conn.onBroken !== undefined )\r\n\t\t\t\t\t\tconn.onBroken();\r\n\r\n\t\t\t\t\tif ( ev.Code > 1000 )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// NH2021D\r\n\t\t\t\t\t\t// glApp.LogConnection( conn.lobby.getName() + \"-Close=\" + ev.Code );\r\n\r\n\r\n\t\t\t\t\t\t// console.log( \"Close: \" + closeCodes[ ev.Code ] );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// https://developer.mozilla.org/de/docs/Web/API/CloseEvent\r\n\r\n\t\t\t\t\t// |Status Code | Meaning \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1000 | Normal Closure \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1001 | Going Away \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1002 | Protocol error \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1003 | Unsupported Data\r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1004 | ---Reserved---- \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1005 | No Status Rcvd \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1006 | Abnormal Closure\r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1007 | Invalid frame \r\n\t\t\t\t\t// | | payload data \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1008 | Policy Violation\r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1009 | Message Too Big \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1010 | Mandatory Ext. \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1011 | Internal Server \r\n\t\t\t\t\t// | | Error \r\n\t\t\t\t\t//-+------------+-----------------\r\n\t\t\t\t\t// | 1015 | TLS handshake \r\n\t\t\t\t\t//-+------------+-----------------\r\n\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.socket.onerror =\r\n\t\t\t\tfunction( error )\r\n\t\t\t\t{\r\n\t\t\t\t\tLog.Log( \"OnError : \" + conn.wsUri, \"LogError\", \"conn\" );\r\n\t\t\t\t\tconsole.log( \"Error: \" + conn.wsUri + \" \" + error );\r\n\t\t\t\t\t//if ( conn.wsUri )\r\n\t\t\t\t\t//\tglApp.panelMgr.chatOut( \"Not connected: \" + conn.wsUri );\r\n\r\n\t\t\t\t\tif ( conn.isFirstConnect && conn.uris.length > 1 && ++conn.firstConnectTries < 4 )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconn.switchConnection();\r\n\t\t\t\t\t\tconn.open();\r\n\t\t\t\t\t\t//\tglApp.panelMgr.chatOut( \"Server: \" + conn.wsUri );\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconn.error = true;\r\n\t\t\t\t\t\tconn.onSocketError( conn );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.socket.onmessage =\r\n\t\t\t\tfunction( evt )\r\n\t\t\t\t{\r\n\t\t\t\t\t//\tsetTimeout( function ()\r\n\t\t\t\t\t//\t{\r\n\t\t\t\t\tconn.tryTimer.stop();\r\n\t\t\t\t\t// console.log(\"Message received\");\r\n\t\t\t\t\tif ( evt.data instanceof ArrayBuffer )\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t//Log.Log(\"Receiving a buffer of size=\" + evt.data.byteLength);\r\n\t\t\t\t\t\t// console.log(\"Rec Buffer Size: \" + evt.data.byteLength);\r\n\t\t\t\t\t\tvar msg = new WebSockMessage();\r\n\t\t\t\t\t\ttry\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t// NH2020 Receiving a message here happens quite often.\r\n\t\t\t\t\t\t\t// console.log(evt.data);\r\n\t\t\t\t\t\t\tmsg.fromReceiveBuf( evt.data );\r\n\t\t\t\t\t\t\t// console.log(\"Msg: \" + msg.getType());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcatch ( x )\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tLog.Exception( x.toString() );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconn.handleReceivedMessage( msg );\r\n\r\n\t\t\t\t\t\tconn.weAreAliveTicker.start();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tLog.Log( evt.data, \"\", \"conn\" );\r\n\t\t\t\t\t\t// console.log( 'RESPONSE: ' + evt.data );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tconn.reconnectTries = 0;\r\n\r\n\t\t\t\t\t//\t}, 0 ); \r\n\t\t\t\t};\r\n\t\t}\r\n\t\tcatch ( x )\r\n\t\t{\r\n\t\t\tLog.LogException( \"Conn\", x );\r\n\t\t}\r\n\t}\r\n\r\n\tclose()\r\n\t{\r\n\t\tif ( this.isConnected() || this.isConnecting() )\r\n\t\t\tthis.socket.close();\r\n\t\tthis.tryTimer.stop();\r\n\t}\r\n\r\n\tisConnected()\r\n\t{\r\n\t\treturn this.socket && this.socket.readyState === SockState.CONNECTED;\r\n\t}\r\n\r\n\tisConnecting()\r\n\t{\r\n\t\treturn this.socket && this.socket.readyState === SockState.CONNECTING;\r\n\t}\r\n\r\n\tonSocketError()\r\n\t{\r\n\t\tif ( this.isFirstConnect )\r\n\t\t{\r\n\t\t\tthis.onServerDown();\r\n\t\t\tif ( this.lobby.periodicPingTimer )\r\n\t\t\t\tthis.lobby.periodicPingTimer.stop();\r\n\t\t\tthis.tryTimer.runPeriodic( 30000 );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.onConnectionLoss();\r\n\t\t\tthis.tryTimer.runPeriodic( this.tryTimerPeriod );\t// fast - > periodicHandler will set new frequency.\r\n\t\t}\r\n\t};\r\n\r\n\t// This gets a WebSockMessage with a buffer that has the Message information read in\r\n\thandleReceivedMessage( sockMsg )\r\n\t{\r\n\t\t// Log.Log( \"Msg: \" + sockMsg.getType() );\r\n\t\tthis.isFirstConnect = false;\r\n\t\tvar bDone = true;\r\n\t\tswitch ( sockMsg.getType() )\r\n\t\t{\r\n\t\t\tdefault:\r\n\t\t\t\tbDone = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase SockMsgId.YOUR_ID:\r\n\t\t\t\tthis.handleYourId( sockMsg );\r\n\t\t\t\tbreak;\r\n\t\t\tcase SockMsgId.ALIVE:\r\n\t\t\t\t// alert( \"Illegal alive, server should send PING frame\" );\r\n\t\t\t\tbDone = false;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif ( !bDone )\r\n\t\t{\r\n\t\t\tthis.lobby.handleReceived( sockMsg );\r\n\t\t\t// NH2020 Added this\r\n\t\t\tthis.error = false;\r\n\t\t}\r\n\t}\r\n\r\n\thandleYourId( sockMsg )\r\n\t{\r\n\t\tvar yourId = new YourIdData();\r\n\t\tyourId.fromSocketsMsg( sockMsg );\r\n\t\tthis.connectId = yourId.nId;\r\n\t\tthis.lobby.idReceived( yourId );\r\n\t\tthis.onYourId( this );\r\n\t}\r\n\r\n\t// NH2020 added \"noCheck\"\r\n\tsendMessage( sockMsg, noId, noCheck )\r\n\t{\r\n\t\tif ( !this.socket )\r\n\t\t\treturn;\r\n\r\n\t\tif ( !sockMsg.getType() )\r\n\t\t{\r\n\t\t\tthrow ( Error( \"Sending invalid sockMsg\" ) );\r\n\t\t}\r\n\r\n\t\tif ( noId )\r\n\t\t{\r\n\t\t\tsockMsg.msgId = 0;\r\n\t\t\tif ( this.msgCnt > 0 )\r\n\t\t\t{\r\n\t\t\t\t//\tLog.Log( \"NOID + \" + this.connectId );\r\n\t\t\t\t// \"#IFDEBUG\"\r\n\t\t\t\t// if ( sockMsg.type != 7002 )\t// logon\r\n\t\t\t\t// \talert( \"SOCKMSG NOID\" + \" \" + sockMsg );\r\n\t\t\t\t// \"#ENDIF\"\r\n\t\t\t}\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tsockMsg.msgId = ++this.msgCnt;\r\n\t\t\t//\tLog.Log( sockMsg.msgId + \" \" + sockMsg.type + \" \" + this.connectId );\r\n\t\t}\r\n\r\n\r\n\t\tif ( sockMsg.getIdReceiver() === ConnectId.NONE )\r\n\t\t\tsockMsg.setIdReceiver( ConnectId.SERVER );\r\n\t\tsockMsg.setIdSender( this.connectId );\r\n\t\tif ( this.socket.readyState === SockState.CONNECTED )\r\n\t\t{\r\n\t\t\tthis.socket.binaryType = \"arraybuffer\";\r\n\t\t\tvar arrBufSend = sockMsg.fillSendArrBuf( !noId, !noCheck ); // JS ArrayBuffer, not DataBuffer!\r\n\t\t\tthis.socket.send( arrBufSend );\r\n\t\t}\r\n\t\t// open called, but handshaking not finished:\r\n\t\telse if ( this.socket.readyState === SockState.CONNECTING )\r\n\t\t{\r\n\t\t\tif ( noId )\r\n\t\t\t\tthis.msgsWaitingToSendNoId.push( sockMsg );\r\n\t\t\telse\r\n\t\t\t\tthis.msgsWaitingToSend.push( sockMsg );\r\n\t\t\tLog.Log( \"MSGs WAITING TO SEND=\" + this.msgsWaitingToSend.getLength(), \"LogRed\" );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tif ( this.socket.readyState !== SockState.CLOSING && this.socket.readyState !== SockState.CLOSED )\r\n\t\t\t{\r\n\t\t\t\tthis.error = true;\r\n\t\t\t\tthis.onSocketError();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\r\n\t// debugging only:\r\n\tsendText( message )\r\n\t{\r\n\t\tif ( this.socket && this.socket.readyState === 1 )\r\n\t\t{\r\n\t\t\t// console.log( \"SENT: \" + message );\r\n\t\t\tthis.socket.send( message );\r\n\t\t}\r\n\t\telse\r\n\t\t\tLog.Log( \"Connection not open\" );\r\n\t}\r\n\r\n\tbreakForTesting()\r\n\t{\r\n\t\tLog.Log( \"Break Connection for Testing\" );\r\n\t\tthis.close();\r\n\t\t//\tthis.wsUri = \"ws://127.12.12.3:443\";\t// disable reconnects for testing.\r\n\t};\r\n\r\n\tperiodicHandler()\r\n\t{\r\n\t\tLog.Log( \"Conn Periodic, retries=\" + this.reconnectTries + \", \" + this.lobby.connectId, \"\", \"conn\" );\r\n\t\tthis.tryTimer.runPeriodic( 10000 );\r\n\t\tif ( this.socket && this.socket.readyState !== SockState.CONNECTED && this.error )\r\n\t\t{\r\n\t\t\tthis.reconnectTries += 1;\r\n\t\t\tif ( this.reconnectTries >= 1 && ( this.isFirstConnect || this.reconnectTries > 6 ) )\t// do not switch immediately\r\n\t\t\t{\r\n\t\t\t\t// try backup server:\r\n\t\t\t\tthis.switchConnection();\r\n\t\t\t}\r\n\t\t\tif ( this.lobby.pingServer )\t// can be torturer\r\n\t\t\t\tthis.lobby.pingServer( true /*silent*/, this.reconnectTries === 1 ? 2000 : 6000, true );\r\n\t\t\tif ( this.reconnectTries > 5 )\r\n\t\t\t{\r\n\t\t\t\tthis.tryTimer.runPeriodic( 50000 + Math.random() * 30000 );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tswitchConnection()\r\n\t{\r\n\t\tthis.nUri++;\r\n\t\tif ( this.uris && this.uris.length )\r\n\t\t{\r\n\t\t\tif ( this.nUri >= this.uris.length )\r\n\t\t\t\tthis.nUri = 0;\r\n\r\n\t\t\tLog.Log( \"nUri: \" + this.nUri, \"\", \"conn\" );\r\n\t\t\tthis.wsUri = this.uris[ this.nUri ];\r\n\t\t\tLog.Log( \"Switch Conn: \" + this.wsUri, \"\", \"conn\" );\r\n\t\t\t// console.log( \"Switch Conn: \" + this.wsUri );\r\n\r\n\t\t\tif ( this.lobby.onSwitchConn )\r\n\t\t\t\tthis.lobby.onSwitchConn( this.nUri );\r\n\t\t}\r\n\t};\r\n\r\n}\r\n","// LogonData, mw 21.2.2013\r\n// ES6 5.3.2020\r\n\r\n// import { glApp } from \"common/App/App\";\r\nimport { System } from \"common/Tools/System\";\r\nimport { strUtil } from 'common/Tools/Tools'\r\nimport { Language } from \"common/Tools/Language\";\r\nimport { WebSockMessage, SockMsgId } from \"./WebSockMessage\";\r\nimport { ConnectId } from \"common/WebClient/Connection\";\r\nimport { versionCode } from 'index'\r\n\r\nexport var LoginMode =\r\n{\r\n\tNORMAL: 1,\r\n\tGUEST: 2\r\n};\r\n\r\nexport var LogoffType =\r\n{\r\n\tDEFAULT: 0,\r\n\tREMOVE_WATCHER: 1,\r\n\tRESIGN: 2,\r\n\tABORT: 3\r\n};\r\n\r\nexport var LoginFlags = \r\n{\r\n\tYES2CHESS: 32,\r\n\tHASWEBSOCKIDS: 128,\r\n\tIS_WEAK_GUEST: 1024,\r\n\tSPRINT_REQUESTS_NEXT_POS: 2048,\r\n}\r\n\r\n//LOGINFLAG_IS_UTF8_NAME = ( 1 << 1 ),\r\n//LOGINFLAG_IS_MANIPULATED = ( 1 << 2 ),\r\n//LOGINFLAG_SLAVE_CONNECTION = ( 1 << 3 ),\t// on the connection to the slave in coupled servers\r\n//LOGINFLAG_BRIDGE = ( 1 << 4 ),\r\n//LOGINFLAG_YES2CHESS = ( 1 << 5 ),\r\n\r\n\r\nexport class LogonData\r\n{\r\n\tconstructor ( strName, strPassword, nLoginMode, guid, token, app )\r\n\t{\r\n\t\tthis.strName = strName;\r\n\t\tthis.strPass = strPassword;\r\n\t\tthis.nMode = nLoginMode;\r\n\t\tthis.version = /* glApp.versionCode */ versionCode;\r\n\t\tthis.guid = guid;\r\n\t\tthis.language = Language.getStrUserLanguage();\r\n\t\tthis.codepage = System.getWindowsCodePage();\r\n\t\tthis.strRoom = \"\";\r\n\t\tthis.strRoomUrl = document.referrer;\r\n\t\tthis.token = token || \"\";\r\n\t\tthis.app = app || \"\";\r\n\t\tthis.flags = 0;\r\n\t\tthis.documentUrl = \"\";\r\n\t};\r\n\r\n\tgetSocketsMsg( hasSockMsgIds )\r\n\t{\r\n\t\t// TODO: Testing only, switch to UTF-8 when server is ready.\r\n\r\n\t\tvar aMsg = new WebSockMessage( SockMsgId.LOGON );\r\n\t\taMsg.address( ConnectId.UNKNOWN, ConnectId.SERVER );\r\n\t\taMsg.getBuf().writeInt32( this.nMode );\r\n\t\tthis.version.toDataBuf( aMsg.getBuf() );\r\n\r\n\t\tvar name = this.strName;\r\n\t\tif ( strUtil.hasASCIIgreater127( name ) && !strUtil.mayBeUtf8( name ) )\r\n\t\t{\tname = strUtil.encodeUTF8( name );\r\n\t\t}\r\n\t\tvar pass = this.strPass;\r\n\t\tif ( strUtil.hasASCIIgreater127( pass ) && !strUtil.mayBeUtf8( pass ) )\r\n\t\t{\r\n\t\t\tname = strUtil.encodeUTF8( pass );\r\n\t\t}\r\n\r\n\t\taMsg.getBuf().writeUTFString( name );\t// no more conversion\r\n\t\taMsg.getBuf().writeUTFString( pass );\r\n\r\n\t\tthis.guid.toDataBuf( aMsg.getBuf() );\r\n\t\taMsg.getBuf().writeASCIIString( this.language );\r\n\t\taMsg.getBuf().writeASCIIString( navigator.platform );\r\n\t\taMsg.getBuf().writeInt32( this.codepage );\r\n\t\taMsg.getBuf().writeUTFString( this.strRoom );\r\n\t\taMsg.getBuf().writeASCIIString( this.token );\r\n\t\taMsg.getBuf().writeUTFString( this.strRoom.length > 0 ? this.strRoomUrl : \"\" );\r\n\t\taMsg.getBuf().writeASCIIString( this.app );\r\n\r\n\t\t\r\n\t\tif ( hasSockMsgIds )\r\n\t\t\tthis.flags |= LoginFlags.HASWEBSOCKIDS;\r\n\r\n\t\taMsg.getBuf().writeInt32( this.flags );\r\n\r\n\t\taMsg.getBuf().writeASCIIString( navigator.appVersion );\r\n\t\taMsg.getBuf().writeASCIIString( this.documentUrl );\r\n\r\n\t\treturn aMsg;\r\n\t};\r\n\r\n\tsetIsBeginner()\r\n\t{\r\n\t\tthis.flags |= LoginFlags.IS_WEAK_GUEST;\r\n\t};\r\n\r\n\tsetRequestsSprintPos()\r\n\t{\r\n\t\tthis.flags |= LoginFlags.SPRINT_REQUESTS_NEXT_POS;\r\n\t};\r\n}","\r\n//\"use strict\";\r\n\r\n// \"NOMINIFY=Date,setYear,getFullYear\"\r\n\r\n//CB.namespace( \"CB.DOM\" );\r\n\r\nimport { strUtil } from \"common/Tools/Tools\"\r\nimport { Log } from \"common/Tools/Log\"\r\nimport { System } from \"common/Tools/System\"\r\n// import { glApp } from \"common/App/App\"\r\n\r\nexport class DOM \r\n{\r\n\tstatic get ( id )\r\n\t{\r\n\t\treturn document.getElementById( id );\r\n\t};\r\n\r\n\tstatic inputAdd ( msg, className )\r\n\t{\r\n\t\t// NH2020\r\n\t\t/*\r\n\t\tvar node = document.createTextNode( msg ),\r\n\t\t\tdiv = document.createElement( 'div' );\r\n\t\tif ( className !== undefined )\r\n\t\t{\r\n\t\t\tdiv.className = className;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tclassName = \"Text\";\r\n\t\t}\r\n\t\tdocument.body.appendChild( div );\r\n\r\n\t\tdiv.appendChild( node );\r\n\t\t\r\n\t\tif ( CB.input !== undefined )\r\n\t\t{\r\n\t\t\tdocument.body.insertBefore( div, CB.input );\r\n\t\t}\r\n\t\telse \r\n\t\t{\r\n\t\t\tdocument.body.appendChild( div );\r\n\t\t}\r\n\t\t*/\r\n\t};\r\n\r\n\tstatic add ( text, header, className )\r\n\t{\r\n\t\tvar div = document.createElement( 'div' );\r\n\t\tvar node;\r\n\t\tif ( header && header.length )\r\n\t\t{\r\n\t\t\tnode = document.createElement( header );\r\n\t\t\tnode.innerText = text;\r\n\t\t}\r\n\t\telse\r\n\t\t\tnode = document.createTextNode( text );\r\n\r\n\t\tif ( className !== undefined )\r\n\t\t{\r\n\t\t\tdiv.className = className;\r\n\t\t}\r\n\t\tdiv.appendChild( node );\r\n\t\tdocument.body.appendChild( div );\r\n\t};\r\n\r\n\tstatic addUrl ( url, text, className )\r\n\t{\r\n\t\tvar div = document.createElement( 'div' );\r\n\t\tvar node = document.createElement( 'a' );\r\n\t\tnode.href = url;\r\n\t\tnode.target = \"_blank\";\r\n\t\tif ( text && text.length )\r\n\t\t\tnode.textContent = text;\r\n\t\tif ( className !== undefined )\r\n\t\t{\r\n\t\t\tdiv.className = className;\r\n\t\t}\r\n\t\tdiv.appendChild( node );\r\n\t\tdocument.body.appendChild( div );\r\n\t};\r\n\r\n\tstatic addBr ()\r\n\t{\r\n\t\tvar node = document.createElement( 'br' );\r\n\t\tdocument.body.appendChild( node );\r\n\t};\r\n\r\n\tstatic insertBefore ( msg, insertId, styleClass )\r\n\t{\r\n\t\tvar node = document.createTextNode( msg ),\r\n\t\t\tdiv = document.createElement( 'div' );\r\n\t\tif ( styleClass !== undefined )\r\n\t\t{\r\n\t\t\tdiv.className = styleClass;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tdiv.className = \"Text\";\r\n\t\t}\r\n\t\tdocument.body.appendChild( div );\r\n\r\n\t\t//var div = document.createElement(\"div\");\r\n\t\tdiv.appendChild( node );\r\n\t\tif ( document.getElementById( insertId ) !== undefined )\r\n\t\t{\r\n\t\t\tdocument.body.insertBefore( div, document.getElementById( insertId ) );\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tdocument.body.appendChild( div );\r\n\t\t}\r\n\t};\r\n\r\n\tstatic getCookie ( sName )\r\n\t{\r\n\t\tvar oCrumbles = document.cookie.split( ';' );\r\n\t\tfor ( var i = 0; i < oCrumbles.length; i++ )\r\n\t\t{\r\n\t\t\t//\t\talert( oCrumbles[i] );\r\n\t\t\tvar oPair = oCrumbles[i].split( '=' );\r\n\t\t\tvar sKey = oPair[0].trim(); // .toLowerCase();\r\n\t\t\tvar sValue = oPair.length > 1 ? oPair[1] : '';\r\n\t\t\tif ( sKey == sName )\r\n\t\t\t\treturn decodeURIComponent( sValue );\r\n\t\t}\r\n\t\treturn '';\r\n\t};\r\n\r\n\t//CB.DOM.getDecode64Cookie = function ( sName )\r\n\t//{\r\n\t//\tvar val;\r\n\r\n\t//\tvar oCrumbles = document.cookie.split( ';' );\r\n\t//\tfor ( var i = 0; i < oCrumbles.length; i++ )\r\n\t//\t{\r\n\t//\t\tvar oPair = oCrumbles[i].split( '=' );\r\n\t//\t\tvar sKey = oPair[0].trim(); // .toLowerCase();\r\n\t//\t\tvar sValue = oPair.length > 1 ? oPair[1] : '';\r\n\t//\t\tif ( sKey == sName && sValue )\r\n\t//\t\t\tval = sValue;\r\n\t//\t}\r\n\t//\tif ( val )\r\n\t//\t{\r\n\t//\t\ttry\r\n\t//\t\t{\r\n\t//\t\t\tval = CB.strUtil.base64.decode( val );\r\n\t//\t\t\t//\tval = decodeURIComponent( val );\r\n\t//\t\t\tval = CB.strUtil.htmlDecode( val );\r\n\t//\t\t}\r\n\t//\t\tcatch( x )\r\n\t//\t\t{\r\n\t//\t\t\tval = \"\";\r\n\t//\t\t}\r\n\t//\t}\r\n\t//\treturn val;\r\n\t//};\r\n\r\n\t//CB.DOM.setEncode64Cookie = function ( sName, sValue )\r\n\t//{\r\n\t//\t//\tvar val = encodeURIComponent( sValue );\r\n\t//\tvar val = CB.strUtil.htmlEncode( sValue );\t// compatible to cookie stored in Default.aspx.cs of PlaychessLogin\r\n\t//\tval = CB.strUtil.base64.encode( val );\r\n\t//\tvar oDate = new Date();\r\n\t//\toDate.setYear( oDate.getFullYear() + 1 );\r\n\r\n\t//\tvar domain = \".chessbase.com\";\r\n\t//\t\"#IFDEBUG\"\r\n\t//\tdomain = \"localhost\";\r\n\t//\t\"#ENDIF\"\r\n\r\n\t//\tvar sCookie = sName + '=' + val + ';expires=' + oDate.toGMTString() + ';path=/;';\r\n\r\n\t//\tif ( domain.length )\r\n\t//\t\tsCookie += 'domain=' + domain + ';';\r\n\r\n\t////\talert( sCookie );\r\n\r\n\t//\tdocument.cookie = sCookie;\r\n\r\n\t////\talert( document.cookie );\t\r\n\t//};\r\n\r\n\r\n\tstatic codeAccountName ( name )\r\n\t{\r\n\t\treturn strUtil.base64.encode( strUtil.htmlEncode( name ) );\r\n\t}\r\n\r\n\tstatic setAccountNameCookie ( name )\r\n\t{\r\n\t\tif ( name == \"guest\" )\r\n\t\t\treturn;\r\n\r\n\t\tDOM.setCodedCookie( \"AccountName64\", name );\r\n\r\n\t\t//var value = CB.strUtil.htmlEncode( name );\r\n\t\t//value = CB.strUtil.base64.encode( value );\r\n\t\t//CB.DOM.setCookie( \"AccountName64\", value );\r\n\t\t//if ( name.toLowerCase() != \"guest\" )\r\n\t\t//\tCB.DOM.setCookie( \"AccountName64\", this.codeAccountName( name ) );\r\n\t};\r\n\r\n\tstatic getAccountNameCookie ( doHtmlDecode )\r\n\t{\r\n\t\treturn DOM.getCodedCookie( \"AccountName64\", doHtmlDecode );\r\n\r\n\t\t//var value = CB.DOM.getCookie( \"AccountName64\" );\r\n\t\t//value = CB.strUtil.base64.decode( value );\r\n\t\t//if ( doHtmlDecode )\r\n\t\t//{\r\n\t\t//\tvalue = CB.strUtil.htmlDecode( value );\r\n\t\t//\tvalue = value.replace( \"%25\", \"%\" );\r\n\t\t//\tvalue = value.replace( \"%20\", \" \" );\r\n\t\t//}\r\n\r\n\t\t//return value;\r\n\t};\r\n\r\n\tstatic setCodedCookie ( name, value )\r\n\t{\r\n\t\tDOM.setCookie( name, DOM.codeAccountName( value ) );\r\n\t};\r\n\r\n\tstatic getCodedCookie ( name, doHtmlDecode )\r\n\t{\r\n\t\tvar value = DOM.getCookie( name );\r\n\t\tvalue = strUtil.base64.decode( value );\r\n\t\tif ( doHtmlDecode )\r\n\t\t{\r\n\t\t\tvalue = strUtil.htmlDecode( value );\r\n\t\t\tvalue = value.replace( \"%25\", \"%\" );\r\n\t\t\tvalue = value.replace( \"%20\", \" \" );\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t};\r\n\r\n\tstatic setCookie ( sName, sValue )\r\n\t{\r\n\t\tvar oDate = new Date();\r\n\t\tvar strExpires;\r\n\t\tif ( sValue )\r\n\t\t{\r\n\t\t\toDate.setYear( oDate.getFullYear() + 1 );\r\n\t\t\tstrExpires = oDate.toGMTString();\r\n\t\t}\r\n\t\telse\r\n\t\t\tstrExpires = 'Thu, 01 Jan 1970 00:00:01 GMT';\r\n\r\n\t\tvar domain = \".chessbase.com\";\r\n\t\tvar path = \"/\";\r\n\r\n\t\tif ( document.URL.search( /localhost/i ) != -1 )\r\n\t\t{\r\n\t\t\tdomain = \"localhost\";\r\n\t\t\t// domain = \"\";\r\n\t}\r\n\r\n\r\n\t\t//\"#IFDEBUG\"\r\n\t\t//// domain = \"localhost\";\r\n\t\t//domain = \"\";\t\t// creates duplicate cookies in Chrome, e.g. cookies with mygames.chessbase.com and *.chessbase.com.\r\n\t\t//\"#ENDIF\"\r\n\r\n\t\tvar sCookie = sName + '=' + encodeURIComponent( sValue ) + ';expires=' + strExpires + ';path=/;'\r\n\t\tvar cookieFront = sCookie;\r\n\t\tif ( domain.length )\r\n\t\t\tsCookie += 'domain=' + domain + ';';\r\n\r\n\t\tsCookie += 'SameSite=Lax;';\r\n\r\n\t//\talert( sCookie );\r\n\t\tdocument.cookie = sCookie;\r\n\t// alert( document.cookie );\r\n\t};\r\n\r\n\t// see developer.mozilla.org\r\n\r\n\t//CB.DOM.docCookies =\r\n\t//{\r\n\t//\tgetItem: function ( sKey )\r\n\t//\t{\r\n\t//\t\tif ( !sKey ) { return null; }\r\n\t//\t\treturn decodeURIComponent( document.cookie.replace( new RegExp( \"(?:(?:^|.*;)\\\\s*\" + encodeURIComponent( sKey ).replace( /[\\-\\.\\+\\*]/g, \"\\\\$&\" ) + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\" ), \"$1\" ) ) || null;\r\n\t//\t},\r\n\t//\tsetItem: function ( sKey, sValue, vEnd, sPath, sDomain, bSecure )\r\n\t//\t{\r\n\t//\t\tif ( !sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test( sKey ) ) { return false; }\r\n\t//\t\tvar sExpires = \"\";\r\n\t//\t\tif ( vEnd )\r\n\t//\t\t{\r\n\t//\t\t\tswitch ( vEnd.constructor )\r\n\t//\t\t\t{\r\n\t//\t\t\t\tcase Number:\r\n\t//\t\t\t\t\tsExpires = vEnd === Infinity ? \"; expires=Fri, 31 Dec 9999 23:59:59 GMT\" : \"; max-age=\" + vEnd;\r\n\t//\t\t\t\t\tbreak;\r\n\t//\t\t\t\tcase String:\r\n\t//\t\t\t\t\tsExpires = \"; expires=\" + vEnd;\r\n\t//\t\t\t\t\tbreak;\r\n\t//\t\t\t\tcase Date:\r\n\t//\t\t\t\t\tsExpires = \"; expires=\" + vEnd.toUTCString();\r\n\t//\t\t\t\t\tbreak;\r\n\t//\t\t\t}\r\n\t//\t\t}\r\n\t//\t\tdocument.cookie = encodeURIComponent( sKey ) + \"=\" + encodeURIComponent( sValue ) + sExpires + ( sDomain ? \"; domain=\" + sDomain : \"\" ) + ( sPath ? \"; path=\" + sPath : \"\" ) + ( bSecure ? \"; secure\" : \"\" );\r\n\t//\t\treturn true;\r\n\t//\t},\r\n\t//\tremoveItem: function ( sKey, sPath, sDomain )\r\n\t//\t{\r\n\t//\t\tif ( !this.hasItem( sKey ) ) { return false; }\r\n\t//\t\tdocument.cookie = encodeURIComponent( sKey ) + \"=; expires=Thu, 01 Jan 1970 00:00:00 GMT\" + ( sDomain ? \"; domain=\" + sDomain : \"\" ) + ( sPath ? \"; path=\" + sPath : \"\" );\r\n\t//\t\treturn true;\r\n\t//\t},\r\n\t//\thasItem: function ( sKey )\r\n\t//\t{\r\n\t//\t\tif ( !sKey ) { return false; }\r\n\t//\t\treturn ( new RegExp( \"(?:^|;\\\\s*)\" + encodeURIComponent( sKey ).replace( /[\\-\\.\\+\\*]/g, \"\\\\$&\" ) + \"\\\\s*\\\\=\" ) ).test( document.cookie );\r\n\t//\t},\r\n\t//\tkeys: function ()\r\n\t//\t{\r\n\t//\t\tvar aKeys = document.cookie.replace( /((?:^|\\s*;)[^\\=]+)(?=;|$)|^\\s*|\\s*(?:\\=[^;]*)?(?:\\1|$)/g, \"\" ).split( /\\s*(?:\\=[^;]*)?;\\s*/ );\r\n\t//\t\tfor ( var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++ ) { aKeys[nIdx] = decodeURIComponent( aKeys[nIdx] ); }\r\n\t//\t\treturn aKeys;\r\n\t//\t}\r\n\t//};\r\n\r\n\tstatic clearCookie ( sName )\r\n\t{\r\n\t\tDOM.setCookie( sName, '' );\r\n\t}\r\n\r\n\r\n\tstatic addCls ( el, cls )\r\n\t{\r\n\t\tif ( el === undefined )\r\n\t\t\treturn;\r\n\r\n\t\tif ( el.className.length > 0 )\r\n\t\t\tel.className += \" \" + cls;\r\n\t\telse\r\n\t\t\tel.className = cls;\r\n\t}\r\n\r\n\tstatic removeCls ( el, cls )\r\n\t{\r\n\t\tif ( el === undefined )\r\n\t\t\treturn;\r\n\r\n\t\tvar ex = new RegExp( \"\\b\" + cls + \"\\b\" );\r\n\t\tel.className = el.className.replace( ex, '' );\r\n\t}\r\n\r\n\tstatic resize ( el, w, h )\r\n\t{\r\n\t\tif ( typeof el === \"string\" || typeof el === \"number\" )\r\n\t\t\tel = document.getElementById( el );\r\n\t\tif ( el !== undefined )\r\n\t\t{\r\n\t\t\tel.style.width = w;\r\n\t\t\tel.style.height = h;\r\n\t\t}\r\n\t};\r\n\r\n\tstatic setText( el, txt )\r\n\t{\r\n\t\tif ( !el )\r\n\t\t\treturn;\r\n\t\tif ( typeof el.textContent == \"undefined\" )\r\n\t\t\tel.innerText = txt;\r\n\t\telse\r\n\t\t\tel.textContent = txt;\r\n\t};\r\n\r\n\tstatic textOut( msg, className )\r\n\t{\r\n\t\t// NH2020\r\n\t\t/*\r\n\t\tif ( CB.Logger )\r\n\t\t{\r\n\t\t\tLog.LOG( msg, className );\r\n\t\t}\r\n\t\t\r\n\t\telse\r\n\t\t{\r\n\t\t\tDOM.add( msg, \"\", className );\r\n\t\t\tif ( CB.input !== undefined )\r\n\t\t\t\tCB.input.scrollIntoView(); // input field in the HTML body\r\n\t\t}*/\r\n\r\n\t\tLog.Log(msg, className);\r\n\t}\r\n\r\n\tstatic TRACE( msg )\r\n\t{\r\n\t\t// NH2020 \r\n\r\n\t\t// if ( glApp.config.debug )\r\n\t\t// {\r\n\t\t// \tDOM.textOut( msg, \"LogTrace\" );\r\n\t\t// \t//CB.DOM.textAdd(msg, \"Trace\");\r\n\t\t// \t//CB.input.scrollIntoView();\r\n\t\t// }\r\n\t\t\r\n\t}\r\n\r\n\tstatic EXCEPTION( msg, caller )\r\n\t{\r\n\t\tvar str = msg;\r\n\t\tif ( caller !== undefined )\r\n\t\t{\r\n\t\t\tstr += \" (\" + caller + \")\";\r\n\t\t}\r\n\t\tDOM.textOut( str, \"LogException\" );\r\n\t}\r\n\r\n\tstatic CHAT( msg )\r\n\t{\r\n\t\tDOM.textOut( msg, \"LogChat\" );\r\n\t}\r\n\r\n}\r\n\r\n\r\nexport class CSS\r\n{\r\n\r\n\tconstructor ()\r\n\t{\r\n\t\t// NH2020 Changed Docstyle = null\r\n\t\tthis.docStyle = null;\r\n\t\tthis.iconCache = {}\r\n\t}\r\n\r\n\tgetStyleSheet ()\r\n\t{\r\n\t\t// NH2020 Changed Docstyle = null\r\n\t\tif ( this.docStyle === null )\r\n\t\t{\r\n\t\t\tvar style = document.createElement( \"style\" );\r\n\t\t\tstyle.setAttribute( \"media\", \"screen\" );\r\n\t\t\t// style.setAttribute(\"media\", \"@media only screen and (max-width : 1024px)\")\r\n\r\n\t\t\t// WebKit hack :(\r\n\t\t\tstyle.appendChild( document.createTextNode( \"\" ) );\r\n\r\n\t\t\t// Add the