From c579637eafb9e9eb7f83711569254bd8da6d09d2 Mon Sep 17 00:00:00 2001 From: comex Date: Tue, 29 Oct 2013 01:23:17 -0400 Subject: [PATCH] Run code through the advanced tool 'sed' to remove trailing whitespace. --- Source/Core/AudioCommon/Src/AOSoundStream.h | 4 +- .../Core/AudioCommon/Src/AlsaSoundStream.cpp | 36 +- Source/Core/AudioCommon/Src/AlsaSoundStream.h | 4 +- Source/Core/AudioCommon/Src/AudioCommon.cpp | 14 +- Source/Core/AudioCommon/Src/AudioCommon.h | 2 +- Source/Core/AudioCommon/Src/DSoundStream.h | 2 +- Source/Core/AudioCommon/Src/Mixer.cpp | 16 +- Source/Core/AudioCommon/Src/Mixer.h | 4 +- .../Core/AudioCommon/Src/OpenSLESStream.cpp | 2 +- .../Core/AudioCommon/Src/PulseAudioStream.h | 2 +- Source/Core/AudioCommon/Src/SoundStream.h | 4 +- Source/Core/AudioCommon/Src/WaveFile.cpp | 2 +- Source/Core/AudioCommon/Src/XAudio2Stream.h | 2 +- Source/Core/AudioCommon/Src/aldlist.cpp | 36 +- Source/Core/Common/Src/ArmCPUDetect.cpp | 20 +- Source/Core/Common/Src/ArmEmitter.cpp | 42 +- Source/Core/Common/Src/ArmEmitter.h | 24 +- Source/Core/Common/Src/BreakPoints.cpp | 2 +- Source/Core/Common/Src/ChunkFile.h | 5 +- Source/Core/Common/Src/CommonFuncs.h | 14 +- Source/Core/Common/Src/ConsoleListener.cpp | 24 +- Source/Core/Common/Src/Crypto/ec.cpp | 4 +- Source/Core/Common/Src/ExtendedTrace.cpp | 26 +- Source/Core/Common/Src/FPURoundMode.h | 4 +- Source/Core/Common/Src/FifoQueue.h | 2 +- Source/Core/Common/Src/FileUtil.cpp | 60 +- Source/Core/Common/Src/FileUtil.h | 12 +- Source/Core/Common/Src/Hash.cpp | 32 +- Source/Core/Common/Src/IniFile.cpp | 14 +- Source/Core/Common/Src/IniFile.h | 4 +- Source/Core/Common/Src/LinearDiskCache.h | 6 +- Source/Core/Common/Src/Log.h | 4 +- Source/Core/Common/Src/LogManager.cpp | 6 +- Source/Core/Common/Src/LogManager.h | 4 +- Source/Core/Common/Src/MathUtil.cpp | 12 +- Source/Core/Common/Src/MathUtil.h | 4 +- Source/Core/Common/Src/MemArena.cpp | 2 +- Source/Core/Common/Src/MsgHandler.h | 42 +- Source/Core/Common/Src/NandPaths.cpp | 2 +- Source/Core/Common/Src/StdConditionVariable.h | 2 +- Source/Core/Common/Src/StdMutex.h | 10 +- Source/Core/Common/Src/StdThread.h | 6 +- Source/Core/Common/Src/StringUtil.cpp | 16 +- Source/Core/Common/Src/StringUtil.h | 2 +- Source/Core/Common/Src/SysConf.cpp | 8 +- Source/Core/Common/Src/Thread.cpp | 6 +- Source/Core/Common/Src/Thread.h | 8 +- Source/Core/Common/Src/Version.cpp | 2 +- Source/Core/Common/Src/x64ABI.cpp | 34 +- Source/Core/Common/Src/x64ABI.h | 2 +- Source/Core/Common/Src/x64Analyzer.cpp | 34 +- Source/Core/Common/Src/x64CPUDetect.cpp | 14 +- Source/Core/Common/Src/x64Emitter.cpp | 46 +- Source/Core/Common/Src/x64Emitter.h | 156 +- Source/Core/Common/Src/x64FPURoundMode.cpp | 6 +- Source/Core/Core/Src/ActionReplay.cpp | 34 +- Source/Core/Core/Src/ArmMemTools.cpp | 2 +- Source/Core/Core/Src/Boot/Boot.cpp | 16 +- Source/Core/Core/Src/Boot/Boot_DOL.cpp | 8 +- Source/Core/Core/Src/Boot/Boot_ELF.cpp | 8 +- Source/Core/Core/Src/Boot/Boot_WiiWAD.cpp | 6 +- Source/Core/Core/Src/Boot/ElfReader.cpp | 10 +- Source/Core/Core/Src/Boot/ElfReader.h | 6 +- Source/Core/Core/Src/Boot/ElfTypes.h | 30 +- Source/Core/Core/Src/BootManager.cpp | 4 +- Source/Core/Core/Src/ConfigManager.cpp | 4 +- Source/Core/Core/Src/Core.h | 2 +- Source/Core/Core/Src/CoreTiming.cpp | 24 +- Source/Core/Core/Src/DSP/DSPAccelerator.cpp | 4 +- Source/Core/Core/Src/DSP/DSPAnalyzer.cpp | 18 +- Source/Core/Core/Src/DSP/DSPBreakpoints.h | 4 +- Source/Core/Core/Src/DSP/DSPCodeUtil.cpp | 8 +- Source/Core/Core/Src/DSP/DSPCore.cpp | 8 +- Source/Core/Core/Src/DSP/DSPCore.h | 2 +- Source/Core/Core/Src/DSP/DSPEmitter.cpp | 16 +- Source/Core/Core/Src/DSP/DSPEmitter.h | 2 +- Source/Core/Core/Src/DSP/DSPHWInterface.cpp | 6 +- Source/Core/Core/Src/DSP/DSPIntCCUtil.cpp | 12 +- Source/Core/Core/Src/DSP/DSPIntCCUtil.h | 2 +- Source/Core/Core/Src/DSP/DSPIntExtOps.cpp | 32 +- Source/Core/Core/Src/DSP/DSPIntExtOps.h | 6 +- Source/Core/Core/Src/DSP/DSPIntUtil.h | 22 +- Source/Core/Core/Src/DSP/DSPInterpreter.cpp | 16 +- Source/Core/Core/Src/DSP/DSPInterpreter.h | 2 +- Source/Core/Core/Src/DSP/DSPMemoryMap.cpp | 4 +- Source/Core/Core/Src/DSP/DSPTables.cpp | 10 +- Source/Core/Core/Src/DSP/DSPTables.h | 2 +- Source/Core/Core/Src/DSP/DspIntArithmetic.cpp | 40 +- Source/Core/Core/Src/DSP/DspIntBranch.cpp | 12 +- Source/Core/Core/Src/DSP/DspIntLoadStore.cpp | 22 +- Source/Core/Core/Src/DSP/DspIntMisc.cpp | 10 +- Source/Core/Core/Src/DSP/DspIntMultiplier.cpp | 30 +- .../Core/Src/DSP/Jit/DSPJitArithmetic.cpp | 30 +- Source/Core/Core/Src/DSP/Jit/DSPJitBranch.cpp | 12 +- Source/Core/Core/Src/DSP/Jit/DSPJitCCUtil.cpp | 8 +- Source/Core/Core/Src/DSP/Jit/DSPJitExtOps.cpp | 12 +- .../Core/Core/Src/DSP/Jit/DSPJitLoadStore.cpp | 20 +- Source/Core/Core/Src/DSP/Jit/DSPJitMisc.cpp | 6 +- .../Core/Src/DSP/Jit/DSPJitMultiplier.cpp | 8 +- .../Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp | 2 +- Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.h | 2 +- Source/Core/Core/Src/DSP/LabelMap.cpp | 2 +- Source/Core/Core/Src/DSP/assemble.cpp | 18 +- Source/Core/Core/Src/DSP/assemble.h | 2 +- Source/Core/Core/Src/DSPEmulator.cpp | 2 +- .../Core/Src/Debugger/Debugger_SymbolMap.cpp | 14 +- .../Core/Src/Debugger/Debugger_SymbolMap.h | 2 +- Source/Core/Core/Src/Debugger/Dump.cpp | 6 +- Source/Core/Core/Src/Debugger/Dump.h | 2 +- .../Core/Src/Debugger/PPCDebugInterface.cpp | 16 +- .../Core/Src/Debugger/PPCDebugInterface.h | 2 +- .../Core/Core/Src/FifoPlayer/FifoAnalyzer.cpp | 8 +- .../Core/Core/Src/FifoPlayer/FifoDataFile.cpp | 8 +- .../Core/Core/Src/FifoPlayer/FifoDataFile.h | 4 +- .../Core/Core/Src/FifoPlayer/FifoFileStruct.h | 2 +- .../Src/FifoPlayer/FifoPlaybackAnalyzer.cpp | 8 +- .../Src/FifoPlayer/FifoPlaybackAnalyzer.h | 2 +- .../Core/Core/Src/FifoPlayer/FifoPlayer.cpp | 6 +- Source/Core/Core/Src/FifoPlayer/FifoPlayer.h | 2 +- .../Src/FifoPlayer/FifoRecordAnalyzer.cpp | 4 +- .../Core/Src/FifoPlayer/FifoRecordAnalyzer.h | 2 +- .../Core/Core/Src/FifoPlayer/FifoRecorder.cpp | 12 +- .../Core/Core/Src/FifoPlayer/FifoRecorder.h | 2 +- Source/Core/Core/Src/GeckoCode.cpp | 4 +- Source/Core/Core/Src/GeckoCode.h | 2 +- Source/Core/Core/Src/HLE/HLE.cpp | 4 +- Source/Core/Core/Src/HW/AudioInterface.cpp | 16 +- Source/Core/Core/Src/HW/BBA-TAP/TAP_Unix.cpp | 4 +- Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp | 10 +- Source/Core/Core/Src/HW/CPU.cpp | 8 +- Source/Core/Core/Src/HW/CPU.h | 6 +- Source/Core/Core/Src/HW/DSP.cpp | 10 +- Source/Core/Core/Src/HW/DSP.h | 2 +- Source/Core/Core/Src/HW/DSPHLE/DSPHLE.cpp | 4 +- Source/Core/Core/Src/HW/DSPHLE/DSPHLE.h | 2 +- Source/Core/Core/Src/HW/DSPHLE/HLEMixer.h | 4 +- Source/Core/Core/Src/HW/DSPHLE/MailHandler.h | 2 +- .../Src/HW/DSPHLE/UCodes/UCode_AXStructs.h | 2 +- .../Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp | 14 +- .../Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h | 10 +- .../HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp | 8 +- .../HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp | 14 +- .../HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp | 40 +- .../Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h | 2 +- .../Core/Src/HW/DSPLLE/DSPDebugInterface.cpp | 18 +- .../Core/Src/HW/DSPLLE/DSPDebugInterface.h | 2 +- Source/Core/Core/Src/HW/DSPLLE/DSPHost.cpp | 2 +- Source/Core/Core/Src/HW/DSPLLE/DSPLLE.cpp | 6 +- .../Core/Core/Src/HW/DSPLLE/DSPLLEGlobals.h | 2 +- Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.cpp | 8 +- Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.h | 4 +- Source/Core/Core/Src/HW/DVDInterface.cpp | 24 +- Source/Core/Core/Src/HW/EXI_Device.cpp | 2 +- Source/Core/Core/Src/HW/EXI_DeviceAD16.cpp | 4 +- Source/Core/Core/Src/HW/EXI_DeviceAD16.h | 2 +- .../Core/Src/HW/EXI_DeviceAMBaseboard.cpp | 2 +- .../Core/Core/Src/HW/EXI_DeviceEthernet.cpp | 8 +- Source/Core/Core/Src/HW/EXI_DeviceEthernet.h | 8 +- Source/Core/Core/Src/HW/EXI_DeviceGecko.cpp | 14 +- Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp | 8 +- .../Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp | 32 +- .../Core/Core/Src/HW/EXI_DeviceMemoryCard.h | 10 +- Source/Core/Core/Src/HW/EXI_DeviceMic.cpp | 12 +- Source/Core/Core/Src/HW/EXI_DeviceMic.h | 2 +- Source/Core/Core/Src/HW/GCMemcard.cpp | 44 +- Source/Core/Core/Src/HW/GCMemcard.h | 6 +- Source/Core/Core/Src/HW/GCPad.cpp | 6 +- Source/Core/Core/Src/HW/GCPadEmu.cpp | 2 +- Source/Core/Core/Src/HW/GCPadEmu.h | 2 +- Source/Core/Core/Src/HW/GPFifo.cpp | 8 +- Source/Core/Core/Src/HW/Memmap.cpp | 4 +- Source/Core/Core/Src/HW/Memmap.h | 4 +- Source/Core/Core/Src/HW/MemmapFunctions.cpp | 72 +- Source/Core/Core/Src/HW/MemoryInterface.cpp | 2 +- Source/Core/Core/Src/HW/MemoryInterface.h | 2 +- .../Core/Core/Src/HW/ProcessorInterface.cpp | 20 +- Source/Core/Core/Src/HW/ProcessorInterface.h | 6 +- Source/Core/Core/Src/HW/SI.cpp | 6 +- Source/Core/Core/Src/HW/SI_Device.cpp | 2 +- .../Core/Core/Src/HW/SI_DeviceAMBaseboard.cpp | 12 +- Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp | 6 +- Source/Core/Core/Src/HW/SI_DeviceDanceMat.h | 4 +- Source/Core/Core/Src/HW/SI_DeviceGBA.cpp | 4 +- .../Core/Src/HW/SI_DeviceGCController.cpp | 6 +- .../Core/Core/Src/HW/SI_DeviceGCController.h | 4 +- .../Core/Src/HW/SI_DeviceGCSteeringWheel.cpp | 2 +- .../Core/Src/HW/SI_DeviceGCSteeringWheel.h | 4 +- Source/Core/Core/Src/HW/Sram.cpp | 4 +- Source/Core/Core/Src/HW/StreamADPCM.cpp | 2 +- Source/Core/Core/Src/HW/SystemTimers.cpp | 4 +- Source/Core/Core/Src/HW/VideoInterface.cpp | 2 +- Source/Core/Core/Src/HW/VideoInterface.h | 28 +- Source/Core/Core/Src/HW/WII_IPC.cpp | 2 +- Source/Core/Core/Src/HW/Wiimote.cpp | 6 +- .../Src/HW/WiimoteEmu/Attachment/Classic.cpp | 2 +- .../Src/HW/WiimoteEmu/Attachment/Nunchuk.cpp | 8 +- .../Src/HW/WiimoteEmu/Attachment/Nunchuk.h | 2 +- .../Core/Src/HW/WiimoteEmu/Encryption.cpp | 18 +- .../Core/Core/Src/HW/WiimoteEmu/MatrixMath.h | 6 +- .../Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp | 60 +- Source/Core/Core/Src/HW/WiimoteReal/IONix.cpp | 4 +- Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp | 76 +- .../Core/Src/HW/WiimoteReal/WiimoteReal.cpp | 62 +- .../Core/Src/HW/WiimoteReal/WiimoteReal.h | 10 +- Source/Core/Core/Src/Host.h | 2 +- Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.h | 4 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device.h | 50 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp | 14 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.h | 4 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp | 38 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.h | 2 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp | 50 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.h | 2 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp | 24 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.h | 2 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp | 2 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp | 8 +- .../IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp | 6 +- .../IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp | 6 +- .../IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.h | 4 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_stm.h | 6 +- .../Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp | 20 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h | 12 +- .../IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp | 20 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp | 8 +- .../Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.h | 10 +- Source/Core/Core/Src/IPC_HLE/WII_Socket.cpp | 62 +- .../Core/Src/IPC_HLE/WiiMote_HID_Attr.cpp | 156 +- .../Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.h | 2 +- Source/Core/Core/Src/IPC_HLE/hci.h | 2 +- Source/Core/Core/Src/Movie.cpp | 46 +- Source/Core/Core/Src/Movie.h | 2 +- Source/Core/Core/Src/NetPlayServer.cpp | 8 +- Source/Core/Core/Src/PatchEngine.cpp | 4 +- Source/Core/Core/Src/PowerPC/Gekko.h | 36 +- .../Src/PowerPC/Interpreter/Interpreter.h | 2 +- .../Interpreter/Interpreter_Branch.cpp | 2 +- .../PowerPC/Interpreter/Interpreter_FPUtils.h | 6 +- .../Interpreter/Interpreter_FloatingPoint.cpp | 42 +- .../Interpreter/Interpreter_Integer.cpp | 18 +- .../Interpreter/Interpreter_LoadStore.cpp | 22 +- .../Interpreter_LoadStorePaired.cpp | 28 +- .../Interpreter/Interpreter_Paired.cpp | 116 +- .../Interpreter_SystemRegisters.cpp | 16 +- .../Interpreter/Interpreter_Tables.cpp | 62 +- Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp | 28 +- Source/Core/Core/Src/PowerPC/Jit64/Jit.h | 2 +- .../Core/Src/PowerPC/Jit64/Jit64_Tables.cpp | 56 +- Source/Core/Core/Src/PowerPC/Jit64/JitAsm.cpp | 14 +- Source/Core/Core/Src/PowerPC/Jit64/JitAsm.h | 2 +- .../Core/Src/PowerPC/Jit64/JitRegCache.cpp | 8 +- .../Core/Core/Src/PowerPC/Jit64/JitRegCache.h | 12 +- .../Core/Src/PowerPC/Jit64/Jit_Branch.cpp | 14 +- .../Src/PowerPC/Jit64/Jit_FloatingPoint.cpp | 6 +- .../Core/Src/PowerPC/Jit64/Jit_Integer.cpp | 78 +- .../Core/Src/PowerPC/Jit64/Jit_LoadStore.cpp | 40 +- .../PowerPC/Jit64/Jit_LoadStoreFloating.cpp | 12 +- .../Src/PowerPC/Jit64/Jit_LoadStorePaired.cpp | 2 +- .../Core/Src/PowerPC/Jit64/Jit_Paired.cpp | 14 +- .../Src/PowerPC/Jit64/Jit_SystemRegisters.cpp | 2 +- .../Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp | 36 +- .../Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp | 28 +- Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h | 6 +- .../Core/Src/PowerPC/Jit64IL/JitILAsm.cpp | 16 +- .../Core/Core/Src/PowerPC/Jit64IL/JitILAsm.h | 2 +- .../Core/Src/PowerPC/Jit64IL/JitIL_Tables.cpp | 56 +- Source/Core/Core/Src/PowerPC/JitArm32/Jit.cpp | 34 +- Source/Core/Core/Src/PowerPC/JitArm32/Jit.h | 14 +- .../Src/PowerPC/JitArm32/JitArm_BackPatch.cpp | 12 +- .../Src/PowerPC/JitArm32/JitArm_Branch.cpp | 20 +- .../Src/PowerPC/JitArm32/JitArm_FPUtils.h | 4 +- .../PowerPC/JitArm32/JitArm_FloatingPoint.cpp | 70 +- .../Src/PowerPC/JitArm32/JitArm_Integer.cpp | 48 +- .../Src/PowerPC/JitArm32/JitArm_LoadStore.cpp | 40 +- .../JitArm32/JitArm_LoadStoreFloating.cpp | 30 +- .../JitArm32/JitArm_LoadStorePaired.cpp | 10 +- .../Src/PowerPC/JitArm32/JitArm_Paired.cpp | 112 +- .../JitArm32/JitArm_SystemRegisters.cpp | 18 +- .../Src/PowerPC/JitArm32/JitArm_Tables.cpp | 56 +- .../Core/Core/Src/PowerPC/JitArm32/JitAsm.cpp | 112 +- .../Core/Core/Src/PowerPC/JitArm32/JitAsm.h | 2 +- .../Core/Src/PowerPC/JitArm32/JitFPRCache.cpp | 12 +- .../Core/Src/PowerPC/JitArm32/JitFPRCache.h | 12 +- .../Core/Src/PowerPC/JitArm32/JitRegCache.cpp | 16 +- .../Core/Src/PowerPC/JitArm32/JitRegCache.h | 12 +- .../Core/Core/Src/PowerPC/JitArmIL/IR_Arm.cpp | 12 +- .../Core/Core/Src/PowerPC/JitArmIL/JitIL.cpp | 18 +- Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.h | 8 +- .../Core/Src/PowerPC/JitArmIL/JitILAsm.cpp | 24 +- .../Core/Core/Src/PowerPC/JitArmIL/JitILAsm.h | 6 +- .../Src/PowerPC/JitArmIL/JitIL_Branch.cpp | 6 +- .../Src/PowerPC/JitArmIL/JitIL_Tables.cpp | 56 +- .../Src/PowerPC/JitCommon/JitAsmCommon.cpp | 16 +- .../Src/PowerPC/JitCommon/JitBackpatch.cpp | 6 +- .../Core/Src/PowerPC/JitCommon/JitBase.cpp | 2 +- .../Core/Core/Src/PowerPC/JitCommon/JitBase.h | 6 +- .../Core/Src/PowerPC/JitCommon/JitCache.cpp | 16 +- .../Core/Src/PowerPC/JitCommon/JitCache.h | 4 +- .../Core/Core/Src/PowerPC/JitILCommon/IR.cpp | 46 +- Source/Core/Core/Src/PowerPC/JitILCommon/IR.h | 4 +- .../Core/Src/PowerPC/JitILCommon/JitILBase.h | 6 +- .../PowerPC/JitILCommon/JitILBase_Branch.cpp | 10 +- .../PowerPC/JitILCommon/JitILBase_Integer.cpp | 10 +- .../JitILCommon/JitILBase_LoadStore.cpp | 4 +- .../PowerPC/JitILCommon/JitILBase_Paired.cpp | 8 +- .../JitILCommon/JitILBase_SystemRegisters.cpp | 4 +- Source/Core/Core/Src/PowerPC/JitInterface.cpp | 14 +- Source/Core/Core/Src/PowerPC/JitInterface.h | 6 +- Source/Core/Core/Src/PowerPC/PPCAnalyst.cpp | 32 +- Source/Core/Core/Src/PowerPC/PPCAnalyst.h | 2 +- Source/Core/Core/Src/PowerPC/PPCCache.cpp | 4 +- Source/Core/Core/Src/PowerPC/PPCSymbolDB.cpp | 4 +- Source/Core/Core/Src/PowerPC/PPCSymbolDB.h | 2 +- Source/Core/Core/Src/PowerPC/PPCTables.cpp | 6 +- Source/Core/Core/Src/PowerPC/PPCTables.h | 2 +- Source/Core/Core/Src/PowerPC/PowerPC.cpp | 8 +- Source/Core/Core/Src/PowerPC/PowerPC.h | 6 +- Source/Core/Core/Src/PowerPC/Profiler.h | 10 +- Source/Core/Core/Src/PowerPC/SignatureDB.cpp | 14 +- Source/Core/Core/Src/PowerPC/SignatureDB.h | 2 +- Source/Core/Core/Src/State.cpp | 10 +- Source/Core/Core/Src/VolumeHandler.cpp | 2 +- Source/Core/DiscIO/Src/BannerLoaderGC.cpp | 2 +- Source/Core/DiscIO/Src/BannerLoaderGC.h | 2 +- Source/Core/DiscIO/Src/BannerLoaderWii.cpp | 14 +- Source/Core/DiscIO/Src/BannerLoaderWii.h | 2 +- Source/Core/DiscIO/Src/Blob.cpp | 2 +- Source/Core/DiscIO/Src/CISOBlob.cpp | 8 +- Source/Core/DiscIO/Src/CISOBlob.h | 8 +- Source/Core/DiscIO/Src/CompressedBlob.cpp | 2 +- Source/Core/DiscIO/Src/DiscScrubber.cpp | 2 +- Source/Core/DiscIO/Src/DriveBlob.cpp | 2 +- Source/Core/DiscIO/Src/FileMonitor.cpp | 2 +- Source/Core/DiscIO/Src/FileSystemGCWii.cpp | 6 +- Source/Core/DiscIO/Src/FileSystemGCWii.h | 2 +- Source/Core/DiscIO/Src/Filesystem.h | 2 +- Source/Core/DiscIO/Src/NANDContentLoader.cpp | 18 +- Source/Core/DiscIO/Src/Volume.h | 2 +- Source/Core/DiscIO/Src/VolumeCommon.cpp | 12 +- Source/Core/DiscIO/Src/VolumeCreator.cpp | 8 +- Source/Core/DiscIO/Src/VolumeDirectory.cpp | 26 +- Source/Core/DiscIO/Src/VolumeDirectory.h | 2 +- Source/Core/DiscIO/Src/VolumeGC.cpp | 2 +- Source/Core/DiscIO/Src/VolumeGC.h | 4 +- Source/Core/DiscIO/Src/VolumeWad.cpp | 8 +- Source/Core/DiscIO/Src/VolumeWad.h | 4 +- Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp | 12 +- Source/Core/DiscIO/Src/WbfsBlob.cpp | 6 +- Source/Core/DiscIO/Src/WbfsBlob.h | 2 +- Source/Core/DiscIO/Src/WiiWad.cpp | 8 +- Source/Core/DiscIO/Src/WiiWad.h | 4 +- Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp | 2 +- .../DolphinWX/Src/Android/ButtonManager.cpp | 14 +- .../DolphinWX/Src/Android/ButtonManager.h | 12 +- .../DolphinWX/Src/Android/TextureLoader.cpp | 30 +- Source/Core/DolphinWX/Src/CheatsWindow.cpp | 4 +- Source/Core/DolphinWX/Src/ConfigMain.cpp | 30 +- Source/Core/DolphinWX/Src/ConfigMain.h | 2 +- .../DolphinWX/Src/Debugger/BreakpointDlg.h | 2 +- .../DolphinWX/Src/Debugger/BreakpointView.cpp | 4 +- .../Src/Debugger/BreakpointWindow.cpp | 4 +- .../Core/DolphinWX/Src/Debugger/CodeView.cpp | 10 +- Source/Core/DolphinWX/Src/Debugger/CodeView.h | 2 +- .../DolphinWX/Src/Debugger/CodeWindow.cpp | 16 +- .../Src/Debugger/CodeWindowFunctions.cpp | 2 +- .../DolphinWX/Src/Debugger/DSPDebugWindow.cpp | 2 +- .../DolphinWX/Src/Debugger/DebuggerPanel.cpp | 2 +- .../DolphinWX/Src/Debugger/DebuggerPanel.h | 2 +- .../DolphinWX/Src/Debugger/MemoryCheckDlg.h | 2 +- .../DolphinWX/Src/Debugger/MemoryWindow.cpp | 2 +- .../DolphinWX/Src/Debugger/RegisterView.cpp | 4 +- Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp | 98 +- Source/Core/DolphinWX/Src/FifoPlayerDlg.h | 2 +- Source/Core/DolphinWX/Src/Frame.cpp | 8 +- Source/Core/DolphinWX/Src/Frame.h | 8 +- Source/Core/DolphinWX/Src/FrameAui.cpp | 6 +- Source/Core/DolphinWX/Src/FrameTools.cpp | 48 +- Source/Core/DolphinWX/Src/GLInterface/AGL.cpp | 4 +- Source/Core/DolphinWX/Src/GLInterface/EGL.cpp | 2 +- Source/Core/DolphinWX/Src/GLInterface/EGL.h | 2 +- Source/Core/DolphinWX/Src/GLInterface/GLX.h | 2 +- .../DolphinWX/Src/GLInterface/InterfaceBase.h | 4 +- .../DolphinWX/Src/GLInterface/Platform.cpp | 4 +- Source/Core/DolphinWX/Src/GLInterface/WGL.cpp | 2 +- Source/Core/DolphinWX/Src/GLInterface/WGL.h | 2 +- Source/Core/DolphinWX/Src/GameListCtrl.cpp | 24 +- Source/Core/DolphinWX/Src/GameListCtrl.h | 2 +- Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp | 8 +- Source/Core/DolphinWX/Src/Globals.h | 2 +- Source/Core/DolphinWX/Src/HotkeyDlg.cpp | 4 +- Source/Core/DolphinWX/Src/ISOFile.cpp | 12 +- Source/Core/DolphinWX/Src/ISOProperties.cpp | 46 +- Source/Core/DolphinWX/Src/ISOProperties.h | 2 +- Source/Core/DolphinWX/Src/InputConfigDiag.cpp | 10 +- Source/Core/DolphinWX/Src/InputConfigDiag.h | 4 +- .../DolphinWX/Src/InputConfigDiagBitmaps.cpp | 2 +- Source/Core/DolphinWX/Src/LogConfigWindow.cpp | 10 +- Source/Core/DolphinWX/Src/LogWindow.cpp | 12 +- Source/Core/DolphinWX/Src/Main.cpp | 12 +- Source/Core/DolphinWX/Src/MainAndroid.cpp | 16 +- Source/Core/DolphinWX/Src/MainNoGUI.cpp | 8 +- Source/Core/DolphinWX/Src/MemcardManager.cpp | 20 +- Source/Core/DolphinWX/Src/MemcardManager.h | 6 +- .../Src/MemoryCards/WiiSaveCrypted.cpp | 72 +- .../Src/MemoryCards/WiiSaveCrypted.h | 2 +- Source/Core/DolphinWX/Src/NetWindow.cpp | 20 +- Source/Core/DolphinWX/Src/PatchAddEdit.cpp | 14 +- Source/Core/DolphinWX/Src/TASInputDlg.cpp | 70 +- Source/Core/DolphinWX/Src/UDPConfigDiag.cpp | 2 +- Source/Core/DolphinWX/Src/VideoConfigDiag.cpp | 6 +- Source/Core/DolphinWX/Src/VideoConfigDiag.h | 2 +- .../Core/DolphinWX/Src/WiimoteConfigDiag.cpp | 26 +- Source/Core/DolphinWX/Src/X11Utils.cpp | 2 +- Source/Core/DolphinWX/resource.h | 2 +- .../Core/DolphinWX/resources/dolphin_logo.cpp | 5732 ++++++++--------- Source/Core/InputCommon/Src/ControllerEmu.h | 10 +- .../ControllerInterface.cpp | 4 +- .../ControllerInterface/ControllerInterface.h | 2 +- .../DInput/DInputJoystick.cpp | 16 +- .../DInput/DInputJoystick.h | 2 +- .../Src/ControllerInterface/SDL/SDL.cpp | 10 +- .../Src/ControllerInterface/XInput/XInput.cpp | 4 +- .../Src/ControllerInterface/Xlib/XInput2.cpp | 100 +- .../Src/ControllerInterface/Xlib/XInput2.h | 22 +- .../Src/ControllerInterface/Xlib/Xlib.cpp | 4 +- .../Src/ControllerInterface/Xlib/Xlib.h | 16 +- Source/Core/InputCommon/Src/UDPWiimote.cpp | 34 +- Source/Core/InputCommon/Src/UDPWiimote.h | 2 +- Source/Core/InputCommon/Src/UDPWrapper.cpp | 2 +- Source/Core/InputCommon/Src/X11InputBase.cpp | 12 +- Source/Core/VideoBackends/D3D/Src/D3DBase.h | 2 +- .../Core/VideoBackends/D3D/Src/D3DShader.cpp | 3 +- .../D3D/Src/FramebufferManager.cpp | 4 +- .../D3D/Src/LineGeometryShader.cpp | 2 +- .../D3D/Src/NativeVertexFormat.cpp | 4 +- .../D3D/Src/PSTextureEncoder.cpp | 64 +- .../VideoBackends/D3D/Src/PSTextureEncoder.h | 4 +- .../D3D/Src/PixelShaderCache.cpp | 12 +- .../D3D/Src/PointGeometryShader.cpp | 2 +- Source/Core/VideoBackends/D3D/Src/Render.cpp | 14 +- .../Core/VideoBackends/D3D/Src/Television.cpp | 2 +- .../VideoBackends/D3D/Src/TextureCache.cpp | 6 +- .../VideoBackends/D3D/Src/VertexManager.cpp | 16 +- .../VideoBackends/D3D/Src/VertexManager.h | 2 +- .../D3D/Src/VertexShaderCache.cpp | 6 +- .../VideoBackends/D3D/Src/VertexShaderCache.h | 4 +- Source/Core/VideoBackends/D3D/Src/stdafx.h | 2 +- .../OGL/Src/FramebufferManager.cpp | 46 +- .../OGL/Src/FramebufferManager.h | 6 +- .../VideoBackends/OGL/Src/GLFunctions.cpp | 4 +- Source/Core/VideoBackends/OGL/Src/GLUtil.cpp | 10 +- Source/Core/VideoBackends/OGL/Src/GLUtil.h | 8 +- .../OGL/Src/NativeVertexFormat.cpp | 10 +- .../Core/VideoBackends/OGL/Src/PerfQuery.cpp | 18 +- .../VideoBackends/OGL/Src/PostProcessing.cpp | 46 +- .../OGL/Src/ProgramShaderCache.cpp | 98 +- .../OGL/Src/ProgramShaderCache.h | 6 +- .../Core/VideoBackends/OGL/Src/RasterFont.cpp | 204 +- .../Core/VideoBackends/OGL/Src/RasterFont.h | 2 +- Source/Core/VideoBackends/OGL/Src/Render.cpp | 162 +- Source/Core/VideoBackends/OGL/Src/Render.h | 6 +- .../VideoBackends/OGL/Src/SamplerCache.cpp | 18 +- .../Core/VideoBackends/OGL/Src/SamplerCache.h | 22 +- .../VideoBackends/OGL/Src/StreamBuffer.cpp | 34 +- .../Core/VideoBackends/OGL/Src/StreamBuffer.h | 8 +- .../VideoBackends/OGL/Src/TextureCache.cpp | 22 +- .../OGL/Src/TextureConverter.cpp | 32 +- .../VideoBackends/OGL/Src/VertexManager.cpp | 44 +- .../VideoBackends/OGL/Src/VertexManager.h | 6 +- Source/Core/VideoBackends/OGL/Src/main.cpp | 8 +- Source/Core/VideoBackends/OGL/Src/stdafx.h | 2 +- .../Software/Src/BPMemLoader.cpp | 2 +- .../VideoBackends/Software/Src/Clipper.cpp | 24 +- .../VideoBackends/Software/Src/DebugUtil.h | 2 +- .../VideoBackends/Software/Src/EfbCopy.cpp | 2 +- .../Software/Src/EfbInterface.cpp | 4 +- .../Software/Src/HwRasterizer.cpp | 6 +- .../VideoBackends/Software/Src/HwRasterizer.h | 10 +- .../Software/Src/OpcodeDecoder.cpp | 12 +- .../Software/Src/SWCommandProcessor.cpp | 4 +- .../Software/Src/SWPixelEngine.cpp | 4 +- .../Software/Src/SWPixelEngine.h | 12 +- .../VideoBackends/Software/Src/SWRenderer.cpp | 14 +- .../Software/Src/SWVertexLoader.cpp | 10 +- .../Software/Src/SWVideoConfig.cpp | 2 +- .../Software/Src/SWVideoConfig.h | 2 +- .../VideoBackends/Software/Src/SWmain.cpp | 12 +- .../VideoBackends/Software/Src/SetupUnit.cpp | 2 +- .../Core/VideoBackends/Software/Src/Tev.cpp | 12 +- Source/Core/VideoBackends/Software/Src/Tev.h | 4 +- .../Software/Src/TextureEncoder.cpp | 24 +- .../Software/Src/TextureSampler.cpp | 2 +- .../Software/Src/TransformUnit.cpp | 4 +- Source/Core/VideoBackends/Software/Src/Vec3.h | 6 +- .../VideoBackends/Software/Src/VideoBackend.h | 4 +- .../Software/Src/VideoConfigDialog.cpp | 4 +- .../Software/Src/XFMemLoader.cpp | 2 +- .../VideoBackends/Software/Src/XFMemLoader.h | 4 +- .../Core/VideoBackends/Software/Src/stdafx.h | 2 +- Source/Core/VideoCommon/Src/AVIDump.cpp | 8 +- Source/Core/VideoCommon/Src/AVIDump.h | 2 +- Source/Core/VideoCommon/Src/BPMemory.h | 52 +- Source/Core/VideoCommon/Src/BPStructs.cpp | 26 +- Source/Core/VideoCommon/Src/CPMemory.h | 36 +- .../Core/VideoCommon/Src/CommandProcessor.cpp | 6 +- .../Core/VideoCommon/Src/CommandProcessor.h | 2 +- Source/Core/VideoCommon/Src/DataReader.h | 2 +- Source/Core/VideoCommon/Src/DriverDetails.cpp | 6 +- Source/Core/VideoCommon/Src/DriverDetails.h | 10 +- Source/Core/VideoCommon/Src/EmuWindow.cpp | 4 +- Source/Core/VideoCommon/Src/Fifo.cpp | 8 +- .../Core/VideoCommon/Src/GenericDLCache.cpp | 2 +- .../VideoCommon/Src/GenericTextureDecoder.cpp | 1332 ++-- Source/Core/VideoCommon/Src/HiresTextures.cpp | 2 +- Source/Core/VideoCommon/Src/ImageWrite.cpp | 2 +- .../Core/VideoCommon/Src/IndexGenerator.cpp | 30 +- Source/Core/VideoCommon/Src/IndexGenerator.h | 2 +- Source/Core/VideoCommon/Src/MainBase.cpp | 6 +- .../Core/VideoCommon/Src/NativeVertexFormat.h | 2 +- .../Core/VideoCommon/Src/OpcodeDecoding.cpp | 14 +- Source/Core/VideoCommon/Src/OpenCL.cpp | 4 +- Source/Core/VideoCommon/Src/PixelEngine.cpp | 20 +- Source/Core/VideoCommon/Src/PixelEngine.h | 20 +- .../Core/VideoCommon/Src/PixelShaderGen.cpp | 2 +- .../VideoCommon/Src/PixelShaderManager.cpp | 10 +- .../Core/VideoCommon/Src/PixelShaderManager.h | 2 +- Source/Core/VideoCommon/Src/ShaderGenCommon.h | 2 +- Source/Core/VideoCommon/Src/Statistics.h | 8 +- .../Core/VideoCommon/Src/TextureCacheBase.cpp | 28 +- .../Src/TextureConversionShader.cpp | 8 +- Source/Core/VideoCommon/Src/TextureDecoder.h | 2 +- Source/Core/VideoCommon/Src/VertexLoader.cpp | 36 +- Source/Core/VideoCommon/Src/VertexLoader.h | 4 +- .../VideoCommon/Src/VertexLoader_Color.cpp | 4 +- .../VideoCommon/Src/VertexLoader_Normal.cpp | 2 +- .../VideoCommon/Src/VertexLoader_Normal.h | 2 +- .../VideoCommon/Src/VertexLoader_Position.cpp | 2 +- .../Src/VertexLoader_TextCoord.cpp | 2 +- .../VideoCommon/Src/VertexManagerBase.cpp | 28 +- .../Core/VideoCommon/Src/VertexManagerBase.h | 16 +- .../Core/VideoCommon/Src/VertexShaderGen.cpp | 2 +- .../VideoCommon/Src/VertexShaderManager.cpp | 14 +- .../VideoCommon/Src/VertexShaderManager.h | 2 +- .../Core/VideoCommon/Src/VideoBackendBase.cpp | 2 +- .../Core/VideoCommon/Src/VideoBackendBase.h | 2 +- Source/Core/VideoCommon/Src/VideoConfig.h | 4 +- Source/Core/VideoCommon/Src/VideoState.cpp | 2 +- Source/Core/VideoCommon/Src/XFMemory.h | 14 +- Source/Core/VideoCommon/Src/XFStructs.cpp | 8 +- Source/Core/VideoCommon/Src/memcpy_amd.cpp | 10 +- Source/Core/VideoCommon/Src/x64DLCache.cpp | 48 +- .../VideoCommon/Src/x64TextureDecoder.cpp | 1356 ++-- Source/DSPSpy/dsp_interface.cpp | 2 +- Source/DSPSpy/dsp_interface.h | 2 +- Source/DSPSpy/main_spy.cpp | 18 +- Source/DSPSpy/mem_dump.h | 1024 +-- Source/DSPTool/Src/DSPTool.cpp | 40 +- Source/TestSuite/ASM/source/Init.cpp | 16 +- Source/TestSuite/ASM/source/asm_tables.cpp | 22 +- Source/TestSuite/ASM/source/asm_tables.h | 2 +- .../TestSuite/ASM/source/dolphintest_asm.cpp | 6 +- Source/TestSuite/AX/source/dolphintest_ax.cpp | 6 +- Source/TestSuite/FPU/source/asm.h | 30 +- .../TestSuite/PAD/source/dolphintest_pad.cpp | 2 +- .../WPAD/source/dolphintest_wpad.cpp | 2 +- Source/UnitTests/AudioJitTests.cpp | 28 +- Source/UnitTests/DSPJitTester.cpp | 6 +- Source/UnitTests/DSPJitTester.h | 36 +- 568 files changed, 8650 insertions(+), 8654 deletions(-) diff --git a/Source/Core/AudioCommon/Src/AOSoundStream.h b/Source/Core/AudioCommon/Src/AOSoundStream.h index f8fe67b727..1eb762492c 100644 --- a/Source/Core/AudioCommon/Src/AOSoundStream.h +++ b/Source/Core/AudioCommon/Src/AOSoundStream.h @@ -42,8 +42,8 @@ public: return true; } - virtual bool usesMixer() const { - return true; + virtual bool usesMixer() const { + return true; } virtual void Update(); diff --git a/Source/Core/AudioCommon/Src/AlsaSoundStream.cpp b/Source/Core/AudioCommon/Src/AlsaSoundStream.cpp index 2ccf4d22ae..4c84ae69e1 100644 --- a/Source/Core/AudioCommon/Src/AlsaSoundStream.cpp +++ b/Source/Core/AudioCommon/Src/AlsaSoundStream.cpp @@ -57,7 +57,7 @@ void AlsaSound::SoundLoop() // Underrun snd_pcm_prepare(handle); } - else if (rc < 0) + else if (rc < 0) { ERROR_LOG(AUDIO, "writei fail: %s", snd_strerror(rc)); } @@ -77,7 +77,7 @@ bool AlsaSound::AlsaInit() unsigned int periods; err = snd_pcm_open(&handle, "default", SND_PCM_STREAM_PLAYBACK, 0); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Audio open error: %s\n", snd_strerror(err)); return false; @@ -86,21 +86,21 @@ bool AlsaSound::AlsaInit() snd_pcm_hw_params_alloca(&hwparams); err = snd_pcm_hw_params_any(handle, hwparams); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Broken configuration for this PCM: %s\n", snd_strerror(err)); return false; } - + err = snd_pcm_hw_params_set_access(handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Access type not available: %s\n", snd_strerror(err)); return false; } err = snd_pcm_hw_params_set_format(handle, hwparams, SND_PCM_FORMAT_S16_LE); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Sample format not available: %s\n", snd_strerror(err)); return false; @@ -108,14 +108,14 @@ bool AlsaSound::AlsaInit() dir = 0; err = snd_pcm_hw_params_set_rate_near(handle, hwparams, &sample_rate, &dir); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Rate not available: %s\n", snd_strerror(err)); return false; } err = snd_pcm_hw_params_set_channels(handle, hwparams, 2); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Channels count not available: %s\n", snd_strerror(err)); return false; @@ -123,7 +123,7 @@ bool AlsaSound::AlsaInit() periods = BUFFER_SIZE_MAX / FRAME_COUNT_MIN; err = snd_pcm_hw_params_set_periods_max(handle, hwparams, &periods, &dir); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Cannot set Minimum periods: %s\n", snd_strerror(err)); return false; @@ -131,34 +131,34 @@ bool AlsaSound::AlsaInit() buffer_size_max = BUFFER_SIZE_MAX; err = snd_pcm_hw_params_set_buffer_size_max(handle, hwparams, &buffer_size_max); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Cannot set minimum buffer size: %s\n", snd_strerror(err)); return false; } err = snd_pcm_hw_params(handle, hwparams); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Unable to install hw params: %s\n", snd_strerror(err)); return false; } err = snd_pcm_hw_params_get_buffer_size(hwparams, &buffer_size); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Cannot get buffer size: %s\n", snd_strerror(err)); return false; } err = snd_pcm_hw_params_get_periods_max(hwparams, &periods, &dir); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Cannot get periods: %s\n", snd_strerror(err)); return false; } - //periods is the number of fragments alsa can wait for during one + //periods is the number of fragments alsa can wait for during one //buffer_size frames_to_deliver = buffer_size / periods; //limit the minimum size. pulseaudio advertises a minimum of 32 samples. @@ -172,28 +172,28 @@ bool AlsaSound::AlsaInit() snd_pcm_sw_params_alloca(&swparams); err = snd_pcm_sw_params_current(handle, swparams); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "cannot init sw params: %s\n", snd_strerror(err)); return false; } err = snd_pcm_sw_params_set_start_threshold(handle, swparams, 0U); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "cannot set start thresh: %s\n", snd_strerror(err)); return false; } err = snd_pcm_sw_params(handle, swparams); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "cannot set sw params: %s\n", snd_strerror(err)); return false; } err = snd_pcm_prepare(handle); - if (err < 0) + if (err < 0) { ERROR_LOG(AUDIO, "Unable to prepare: %s\n", snd_strerror(err)); return false; diff --git a/Source/Core/AudioCommon/Src/AlsaSoundStream.h b/Source/Core/AudioCommon/Src/AlsaSoundStream.h index 47c9e7ae82..56ab4176b9 100644 --- a/Source/Core/AudioCommon/Src/AlsaSoundStream.h +++ b/Source/Core/AudioCommon/Src/AlsaSoundStream.h @@ -28,8 +28,8 @@ public: static bool isValid() { return true; } - virtual bool usesMixer() const { - return true; + virtual bool usesMixer() const { + return true; } virtual void Update(); diff --git a/Source/Core/AudioCommon/Src/AudioCommon.cpp b/Source/Core/AudioCommon/Src/AudioCommon.cpp index 3c40661a77..acb9f95067 100644 --- a/Source/Core/AudioCommon/Src/AudioCommon.cpp +++ b/Source/Core/AudioCommon/Src/AudioCommon.cpp @@ -22,7 +22,7 @@ SoundStream *soundStream = nullptr; namespace AudioCommon -{ +{ SoundStream *InitSoundStream(CMixer *mixer) { // TODO: possible memleak with mixer @@ -51,7 +51,7 @@ namespace AudioCommon soundStream = new PulseAudio(mixer); else if (backend == BACKEND_OPENSLES && OpenSLESStream::isValid()) soundStream = new OpenSLESStream(mixer); - + if (!soundStream && NullSound::isValid()) { WARN_LOG(DSPHLE, "Could not initialize backend %s, using %s instead.", @@ -83,11 +83,11 @@ namespace AudioCommon return nullptr; } - void ShutdownSoundStream() + void ShutdownSoundStream() { INFO_LOG(DSPHLE, "Shutting down sound stream"); - if (soundStream) + if (soundStream) { soundStream->Stop(); if (SConfig::GetInstance().m_DumpAudio) @@ -97,10 +97,10 @@ namespace AudioCommon soundStream = nullptr; } - INFO_LOG(DSPHLE, "Done shutting down sound stream"); + INFO_LOG(DSPHLE, "Done shutting down sound stream"); } - std::vector GetSoundBackends() + std::vector GetSoundBackends() { std::vector backends; @@ -125,7 +125,7 @@ namespace AudioCommon return backends; } - bool UseJIT() + bool UseJIT() { if (!Movie::IsDSPHLE() && Movie::IsPlayingInput() && Movie::IsConfigSaved()) { diff --git a/Source/Core/AudioCommon/Src/AudioCommon.h b/Source/Core/AudioCommon/Src/AudioCommon.h index b5ab16cae3..8ff5ff38e1 100644 --- a/Source/Core/AudioCommon/Src/AudioCommon.h +++ b/Source/Core/AudioCommon/Src/AudioCommon.h @@ -38,7 +38,7 @@ union UDSPControl UDSPControl(u16 _Hex = 0) : Hex(_Hex) {} }; -namespace AudioCommon +namespace AudioCommon { SoundStream *InitSoundStream(CMixer *mixer); void ShutdownSoundStream(); diff --git a/Source/Core/AudioCommon/Src/DSoundStream.h b/Source/Core/AudioCommon/Src/DSoundStream.h index c244c91008..8778c7e863 100644 --- a/Source/Core/AudioCommon/Src/DSoundStream.h +++ b/Source/Core/AudioCommon/Src/DSoundStream.h @@ -59,7 +59,7 @@ public: {} virtual ~DSound() {} - + virtual bool Start(); virtual void SoundLoop(); virtual void SetVolume(int volume); diff --git a/Source/Core/AudioCommon/Src/Mixer.cpp b/Source/Core/AudioCommon/Src/Mixer.cpp index fb29f4902f..61b4604dc1 100644 --- a/Source/Core/AudioCommon/Src/Mixer.cpp +++ b/Source/Core/AudioCommon/Src/Mixer.cpp @@ -52,7 +52,7 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples) // interpolation loop. u32 indexR = Common::AtomicLoad(m_indexR); u32 indexW = Common::AtomicLoad(m_indexW); - + if (m_AIplaying) { numLeft = (numLeft > numSamples) ? numSamples : numLeft; @@ -125,8 +125,8 @@ unsigned int CMixer::Mix(short* samples, unsigned int numSamples) *(u32*)(samples+i) = *(u32*)(s); // memset(&samples[numLeft * 2], 0, (numSamples - numLeft) * 4); } - - // Flush cached variable + + // Flush cached variable Common::AtomicStore(m_indexR, indexR); //when logging, also throttle HLE audio @@ -158,13 +158,13 @@ void CMixer::PushSamples(const short *samples, unsigned int num_samples) // indexR isn't allowed to cache in the audio throttling loop as it // needs to get updates to not deadlock. u32 indexW = Common::AtomicLoad(m_indexW); - + if (m_throttle) { // The auto throttle function. This loop will put a ceiling on the CPU MHz. while (num_samples * 2 + ((indexW - Common::AtomicLoad(m_indexR)) & INDEX_MASK) >= MAX_SAMPLES * 2) { - if (*PowerPC::GetStatePtr() != PowerPC::CPU_RUNNING || soundStream->IsMuted()) + if (*PowerPC::GetStatePtr() != PowerPC::CPU_RUNNING || soundStream->IsMuted()) break; // Shortcut key for Throttle Skipping if (Host_GetKeyState('\t')) @@ -192,9 +192,9 @@ void CMixer::PushSamples(const short *samples, unsigned int num_samples) { memcpy(&m_buffer[indexW & INDEX_MASK], samples, num_samples * 4); } - + Common::AtomicAdd(m_indexW, num_samples * 2); - + return; } @@ -206,7 +206,7 @@ unsigned int CMixer::GetNumSamples() // We also can't say the current interpolation state (specially // the frac), so to be sure, subtract one again to be sure not // to underflow the fifo. - + u32 numSamples = ((Common::AtomicLoad(m_indexW) - Common::AtomicLoad(m_indexR)) & INDEX_MASK) / 2; if (AudioInterface::GetAIDSampleRate() == m_sampleRate) diff --git a/Source/Core/AudioCommon/Src/Mixer.h b/Source/Core/AudioCommon/Src/Mixer.h index 6d797d5c3e..144d22a183 100644 --- a/Source/Core/AudioCommon/Src/Mixer.h +++ b/Source/Core/AudioCommon/Src/Mixer.h @@ -14,7 +14,7 @@ #define RESERVED_SAMPLES (256) class CMixer { - + public: CMixer(unsigned int AISampleRate = 48000, unsigned int DACSampleRate = 48000, unsigned int BackendSampleRate = 32000) : m_aiSampleRate(AISampleRate) @@ -89,7 +89,7 @@ protected: int m_channels; WaveFileWriter g_wave_writer; - + bool m_HLEready; bool m_logAudio; diff --git a/Source/Core/AudioCommon/Src/OpenSLESStream.cpp b/Source/Core/AudioCommon/Src/OpenSLESStream.cpp index 26391d5d72..67e77a4d86 100644 --- a/Source/Core/AudioCommon/Src/OpenSLESStream.cpp +++ b/Source/Core/AudioCommon/Src/OpenSLESStream.cpp @@ -21,7 +21,7 @@ static SLPlayItf bqPlayerPlay; static SLAndroidSimpleBufferQueueItf bqPlayerBufferQueue; static SLMuteSoloItf bqPlayerMuteSolo; static SLVolumeItf bqPlayerVolume; -static CMixer *g_mixer; +static CMixer *g_mixer; #define BUFFER_SIZE 512 #define BUFFER_SIZE_IN_SAMPLES (BUFFER_SIZE / 2) diff --git a/Source/Core/AudioCommon/Src/PulseAudioStream.h b/Source/Core/AudioCommon/Src/PulseAudioStream.h index 62b7e86f82..8be8eae11d 100644 --- a/Source/Core/AudioCommon/Src/PulseAudioStream.h +++ b/Source/Core/AudioCommon/Src/PulseAudioStream.h @@ -24,7 +24,7 @@ public: PulseAudio(CMixer *mixer); virtual bool Start(); - virtual void Stop(); + virtual void Stop(); static bool isValid() {return true;} diff --git a/Source/Core/AudioCommon/Src/SoundStream.h b/Source/Core/AudioCommon/Src/SoundStream.h index fa4499d1a2..b7b0b20a58 100644 --- a/Source/Core/AudioCommon/Src/SoundStream.h +++ b/Source/Core/AudioCommon/Src/SoundStream.h @@ -21,11 +21,11 @@ protected: WaveFileWriter g_wave_writer; bool m_muted; -public: +public: SoundStream(CMixer *mixer) : m_mixer(mixer), threadData(0), m_logAudio(false), m_muted(false) {} virtual ~SoundStream() { delete m_mixer; } - static bool isValid() { return false; } + static bool isValid() { return false; } virtual CMixer *GetMixer() const { return m_mixer; } virtual bool Start() { return false; } virtual void SetVolume(int) {} diff --git a/Source/Core/AudioCommon/Src/WaveFile.cpp b/Source/Core/AudioCommon/Src/WaveFile.cpp index 7eabbb3b48..6443d1c112 100644 --- a/Source/Core/AudioCommon/Src/WaveFile.cpp +++ b/Source/Core/AudioCommon/Src/WaveFile.cpp @@ -121,7 +121,7 @@ void WaveFileWriter::AddStereoSamplesBE(const short *sample_data, u32 count) if (count > BUF_SIZE * 2) PanicAlert("WaveFileWriter - buffer too small (count = %u).", count); - if (skip_silence) + if (skip_silence) { bool all_zero = true; diff --git a/Source/Core/AudioCommon/Src/XAudio2Stream.h b/Source/Core/AudioCommon/Src/XAudio2Stream.h index 6221304865..d85aafc4f7 100644 --- a/Source/Core/AudioCommon/Src/XAudio2Stream.h +++ b/Source/Core/AudioCommon/Src/XAudio2Stream.h @@ -52,7 +52,7 @@ private: public: XAudio2(CMixer *mixer); virtual ~XAudio2(); - + virtual bool Start(); virtual void Stop(); diff --git a/Source/Core/AudioCommon/Src/aldlist.cpp b/Source/Core/AudioCommon/Src/aldlist.cpp index 42fbb71002..577ed733fe 100644 --- a/Source/Core/AudioCommon/Src/aldlist.cpp +++ b/Source/Core/AudioCommon/Src/aldlist.cpp @@ -1,17 +1,17 @@ /* * Copyright (c) 2006, Creative Labs Inc. * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without modification, are permitted provided * that the following conditions are met: - * + * * * Redistributions of source code must retain the above copyright notice, this list of conditions and * the following disclaimer. * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions * and the following disclaimer in the documentation and/or other materials provided with the distribution. * * Neither the name of Creative Labs Inc. nor the names of its contributors may be used to endorse or * promote products derived from this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR @@ -36,7 +36,7 @@ #endif -/* +/* * Init call */ ALDeviceList::ALDeviceList() @@ -61,30 +61,30 @@ ALDeviceList::ALDeviceList() defaultDeviceName = (char *)alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER); index = 0; // go through device list (each device terminated with a single NULL, list terminated with double NULL) - while (devices != NULL && strlen(devices) > 0) + while (devices != NULL && strlen(devices) > 0) { - if (strcmp(defaultDeviceName, devices) == 0) + if (strcmp(defaultDeviceName, devices) == 0) { defaultDeviceIndex = index; } ALCdevice *device = alcOpenDevice(devices); - if (device) + if (device) { ALCcontext *context = alcCreateContext(device, NULL); - if (context) + if (context) { alcMakeContextCurrent(context); // if new actual device name isn't already in the list, then add it... actualDeviceName = alcGetString(device, ALC_DEVICE_SPECIFIER); bool bNewName = true; - for (s32 i = 0; i < GetNumDevices(); i++) + for (s32 i = 0; i < GetNumDevices(); i++) { - if (strcmp(GetDeviceName(i), actualDeviceName) == 0) + if (strcmp(GetDeviceName(i), actualDeviceName) == 0) { bNewName = false; } } - if ((bNewName) && (actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) + if ((bNewName) && (actualDeviceName != NULL) && (strlen(actualDeviceName) > 0)) { ALDeviceInfo.bSelected = true; ALDeviceInfo.strDeviceName = actualDeviceName; @@ -107,7 +107,7 @@ ALDeviceList::ALDeviceList() ALDeviceInfo.pvstrExtensions->push_back("AL_EXT_LINEAR_DISTANCE"); if (alIsExtensionPresent("AL_EXT_EXPONENT_DISTANCE") == AL_TRUE) ALDeviceInfo.pvstrExtensions->push_back("AL_EXT_EXPONENT_DISTANCE"); - + if (alIsExtensionPresent("EAX2.0") == AL_TRUE) ALDeviceInfo.pvstrExtensions->push_back("EAX2.0"); if (alIsExtensionPresent("EAX3.0") == AL_TRUE) @@ -139,7 +139,7 @@ ALDeviceList::ALDeviceList() ResetFilters(); } -/* +/* * Exit call */ ALDeviceList::~ALDeviceList() @@ -159,10 +159,10 @@ ALDeviceList::~ALDeviceList() */ s32 ALDeviceList::GetNumDevices() { - return (s32)vDeviceInfo.size(); + return (s32)vDeviceInfo.size(); } -/* +/* * Returns the device name at an index in the complete device list */ char * ALDeviceList::GetDeviceName(s32 index) @@ -210,7 +210,7 @@ bool ALDeviceList::IsExtensionSupported(s32 index, char *szExtName) if (!strcasecmp(ext.c_str(), szExtName)) { bReturn = true; break; - } + } } } @@ -225,7 +225,7 @@ s32 ALDeviceList::GetDefaultDevice() return defaultDeviceIndex; } -/* +/* * Deselects devices which don't have the specified minimum version */ void ALDeviceList::FilterDevicesMinVer(s32 major, s32 minor) @@ -239,7 +239,7 @@ void ALDeviceList::FilterDevicesMinVer(s32 major, s32 minor) } } -/* +/* * Deselects devices which don't have the specified maximum version */ void ALDeviceList::FilterDevicesMaxVer(s32 major, s32 minor) diff --git a/Source/Core/Common/Src/ArmCPUDetect.cpp b/Source/Core/Common/Src/ArmCPUDetect.cpp index ef49d6efb1..f04d7d9b49 100644 --- a/Source/Core/Common/Src/ArmCPUDetect.cpp +++ b/Source/Core/Common/Src/ArmCPUDetect.cpp @@ -34,7 +34,7 @@ char *GetCPUString() auto const fp = file.GetHandle(); if (!fp) return 0; - + while (fgets(buf, sizeof(buf), fp)) { if (strncmp(buf, marker, sizeof(marker) - 1)) @@ -43,7 +43,7 @@ char *GetCPUString() cpu_string = strndup(cpu_string, strlen(cpu_string) - 1); // Strip the newline break; } - + return cpu_string; } @@ -110,7 +110,7 @@ bool CheckCPUFeature(const char *feature) auto const fp = file.GetHandle(); if (!fp) return 0; - + while (fgets(buf, sizeof(buf), fp)) { if (strncmp(buf, marker, sizeof(marker) - 1)) @@ -120,11 +120,11 @@ bool CheckCPUFeature(const char *feature) while (token != NULL) { if (strstr(token, feature)) - return true; + return true; token = strtok(NULL, " "); } } - + return false; } #endif @@ -144,14 +144,14 @@ int GetCoreCount() auto const fp = file.GetHandle(); if (!fp) return 0; - + while (fgets(buf, sizeof(buf), fp)) { if (strncmp(buf, marker, sizeof(marker) - 1)) continue; ++cores; } - + return cores; #endif } @@ -170,10 +170,10 @@ void CPUInfo::Detect() HTT = false; OS64bit = false; CPU64bit = false; - Mode64bit = false; + Mode64bit = false; vendor = VENDOR_ARM; - - // Get the information about the CPU + + // Get the information about the CPU num_cores = GetCoreCount(); #if defined(__SYMBIAN32__) || defined(BLACKBERRY) || defined(IOS) bool isVFP3 = false; diff --git a/Source/Core/Common/Src/ArmEmitter.cpp b/Source/Core/Common/Src/ArmEmitter.cpp index bb90097f0f..98b6d7fb48 100644 --- a/Source/Core/Common/Src/ArmEmitter.cpp +++ b/Source/Core/Common/Src/ArmEmitter.cpp @@ -104,7 +104,7 @@ bool ARMXEmitter::TrySetValue_TwoOp(ARMReg reg, u32 val) } if (ops > 2) return false; - + bool first = true; for (int i = 0; i < 16; i++, val >>=2) { if (val & 0x3) { @@ -418,7 +418,7 @@ void ARMXEmitter::SetJumpTarget(FixupBranch const &branch) branch.ptr); if(branch.type == 0) // B *(u32*)branch.ptr = (u32)(branch.condition | (10 << 24) | ((distance >> 2) & - 0x00FFFFFF)); + 0x00FFFFFF)); else // BL *(u32*)branch.ptr = (u32)(branch.condition | 0x0B000000 | ((distance >> 2) & 0x00FFFFFF)); @@ -497,7 +497,7 @@ void ARMXEmitter::WriteShiftedDataOp(u32 op, bool SetFlags, ARMReg dest, ARMReg Write32(condition | (13 << 21) | (SetFlags << 20) | (dest << 12) | op2.Imm5() | (op << 4) | src); } -// IMM, REG, IMMSREG, RSR +// IMM, REG, IMMSREG, RSR // -1 for invalid if the instruction doesn't support that const s32 InstOps[][4] = {{16, 0, 0, 0}, // AND(s) {17, 1, 1, 1}, // EOR(s) @@ -517,7 +517,7 @@ const s32 InstOps[][4] = {{16, 0, 0, 0}, // AND(s) {31, 15, 15, 15}, // MVN(s) {24, -1, -1, -1}, // MOVW {26, -1, -1, -1}, // MOVT - }; + }; const char *InstNames[] = { "AND", "EOR", @@ -586,7 +586,7 @@ void ARMXEmitter::WriteInstruction (u32 Op, ARMReg Rd, ARMReg Rn, Operand2 Rm, b } } if (op == -1) - _dbg_assert_msg_(DYNA_REC, false, "%s not yet support %d", InstNames[Op], Rm.GetType()); + _dbg_assert_msg_(DYNA_REC, false, "%s not yet support %d", InstNames[Op], Rm.GetType()); Write32(condition | (op << 21) | (SetFlags ? (1 << 20) : 0) | Rn << 16 | Rd << 12 | Data); } @@ -678,7 +678,7 @@ void ARMXEmitter::SXTH (ARMReg dest, ARMReg op2, u8 rotation) { SXTAH(dest, (ARMReg)15, op2, rotation); } -void ARMXEmitter::SXTAH(ARMReg dest, ARMReg src, ARMReg op2, u8 rotation) +void ARMXEmitter::SXTAH(ARMReg dest, ARMReg src, ARMReg op2, u8 rotation) { // bits ten and 11 are the rotation amount, see 8.8.232 for more // information @@ -688,7 +688,7 @@ void ARMXEmitter::RBIT(ARMReg dest, ARMReg src) { Write32(condition | (0x6F << 20) | (0xF << 16) | (dest << 12) | (0xF3 << 4) | src); } -void ARMXEmitter::REV (ARMReg dest, ARMReg src) +void ARMXEmitter::REV (ARMReg dest, ARMReg src) { Write32(condition | (0x6BF << 16) | (dest << 12) | (0xF3 << 4) | src); } @@ -768,7 +768,7 @@ void ARMXEmitter::WriteStoreOp(u32 Op, ARMReg Rt, ARMReg Rn, Operand2 Rm, bool R bool SignedLoad = false; if (op == -1) - _dbg_assert_msg_(DYNA_REC, false, "%s does not support %d", LoadStoreNames[Op], Rm.GetType()); + _dbg_assert_msg_(DYNA_REC, false, "%s does not support %d", LoadStoreNames[Op], Rm.GetType()); switch (Op) { @@ -910,7 +910,7 @@ u32 EncodeVn(ARMReg Vn) { bool quad_reg = Vn >= Q0; bool double_reg = Vn >= D0; - + ARMReg Reg = SubBase(Vn); if (quad_reg) return ((Reg & 0xF) << 16) | ((Reg & 0x10) << 3); @@ -980,7 +980,7 @@ void ARMXEmitter::WriteVFPDataOp(u32 Op, ARMReg Vd, ARMReg Vn, ARMReg Vm) VFPEnc enc = VFPOps[Op][quad_reg]; if (enc.opc1 == -1 && enc.opc2 == -1) - _dbg_assert_msg_(DYNA_REC, false, "%s does not support %s", VFPOpNames[Op], quad_reg ? "NEON" : "VFP"); + _dbg_assert_msg_(DYNA_REC, false, "%s does not support %s", VFPOpNames[Op], quad_reg ? "NEON" : "VFP"); u32 VdEnc = EncodeVd(Vd); u32 VnEnc = EncodeVn(Vn); u32 VmEnc = EncodeVm(Vm); @@ -995,7 +995,7 @@ void ARMXEmitter::WriteVFPDataOp6bit(u32 Op, ARMReg Vd, ARMReg Vn, ARMReg Vm, u3 VFPEnc enc = VFPOps[Op][quad_reg]; if (enc.opc1 == -1 && enc.opc2 == -1) - _dbg_assert_msg_(DYNA_REC, false, "%s does not support %s", VFPOpNames[Op], quad_reg ? "NEON" : "VFP"); + _dbg_assert_msg_(DYNA_REC, false, "%s does not support %s", VFPOpNames[Op], quad_reg ? "NEON" : "VFP"); u32 VdEnc = EncodeVd(Vd); u32 VnEnc = EncodeVn(Vn); u32 VmEnc = EncodeVm(Vm); @@ -1112,7 +1112,7 @@ void ARMXEmitter::VMOV(ARMReg Dest, ARMReg Src) if (Dest < D0) { // Moving to a Neon register FROM ARM Reg - Dest = (ARMReg)(Dest - S0); + Dest = (ARMReg)(Dest - S0); Write32(condition | (0xE0 << 20) | ((Dest & 0x1E) << 15) | (Src << 12) \ | (0xA << 8) | ((Dest & 0x1) << 7) | (1 << 4)); return; @@ -1121,9 +1121,9 @@ void ARMXEmitter::VMOV(ARMReg Dest, ARMReg Src) { // Move 64bit from Arm reg ARMReg Src2 = (ARMReg)(Src + 1); - Dest = SubBase(Dest); + Dest = SubBase(Dest); Write32(condition | (0xC4 << 20) | (Src2 << 16) | (Src << 12) \ - | (0xB << 8) | ((Dest & 0x10) << 1) | (1 << 4) | (Dest & 0xF)); + | (0xB << 8) | ((Dest & 0x10) << 1) | (1 << 4) | (Dest & 0xF)); return; } } @@ -1146,7 +1146,7 @@ void ARMXEmitter::VMOV(ARMReg Dest, ARMReg Src) ARMReg Dest2 = (ARMReg)(Dest + 1); Src = SubBase(Src); Write32(condition | (0xC5 << 20) | (Dest2 << 16) | (Dest << 12) \ - | (0xB << 8) | ((Dest & 0x10) << 1) | (1 << 4) | (Src & 0xF)); + | (0xB << 8) | ((Dest & 0x10) << 1) | (1 << 4) | (Src & 0xF)); return; } } @@ -1178,7 +1178,7 @@ void ARMXEmitter::VMOV(ARMReg Dest, ARMReg Src) // Double and quad if (Quad) { - _dbg_assert_msg_(DYNA_REC, cpu_info.bNEON, "Trying to use quad registers when you don't support ASIMD."); + _dbg_assert_msg_(DYNA_REC, cpu_info.bNEON, "Trying to use quad registers when you don't support ASIMD."); // Gets encoded as a Double register Write32((0xF2 << 24) | ((Dest & 0x10) << 18) | (2 << 20) | ((Src & 0xF) << 16) \ | ((Dest & 0xF) << 12) | (1 << 8) | ((Src & 0x10) << 3) | (1 << 6) \ @@ -1728,11 +1728,11 @@ void NEONXEmitter::VSUB(NEONElementType Size, ARMReg Vd, ARMReg Vn, ARMReg Vm) void NEONXEmitter::VLD1(NEONElementType Size, ARMReg Vd, ARMReg Rn, NEONAlignment align, ARMReg Rm) { - u32 spacing = 0x7; // Only support loading to 1 reg + u32 spacing = 0x7; // Only support loading to 1 reg // Gets encoded as a double register Vd = SubBase(Vd); - Write32((0xF4 << 24) | ((Vd & 0x10) << 18) | (1 << 21) | (Rn << 16) + Write32((0xF4 << 24) | ((Vd & 0x10) << 18) | (1 << 21) | (Rn << 16) | ((Vd & 0xF) << 12) | (spacing << 8) | (encodedSize(Size) << 6) | (align << 4) | Rm); } @@ -1743,7 +1743,7 @@ void NEONXEmitter::VLD2(NEONElementType Size, ARMReg Vd, ARMReg Rn, NEONAlignmen // Gets encoded as a double register Vd = SubBase(Vd); - Write32((0xF4 << 24) | ((Vd & 0x10) << 18) | (1 << 21) | (Rn << 16) + Write32((0xF4 << 24) | ((Vd & 0x10) << 18) | (1 << 21) | (Rn << 16) | ((Vd & 0xF) << 12) | (spacing << 8) | (encodedSize(Size) << 6) | (align << 4) | Rm); } @@ -1754,7 +1754,7 @@ void NEONXEmitter::VST1(NEONElementType Size, ARMReg Vd, ARMReg Rn, NEONAlignmen // Gets encoded as a double register Vd = SubBase(Vd); - Write32((0xF4 << 24) | ((Vd & 0x10) << 18) | (Rn << 16) + Write32((0xF4 << 24) | ((Vd & 0x10) << 18) | (Rn << 16) | ((Vd & 0xF) << 12) | (spacing << 8) | (encodedSize(Size) << 6) | (align << 4) | Rm); } @@ -1805,7 +1805,7 @@ void NEONXEmitter::VORR(ARMReg Vd, ARMReg Vn, ARMReg Vm) Vm = SubBase(Vm); Write32((0xF2 << 24) | (0x1 << 21) | ((Vd & 0x10) << 18) | ((Vn & 0xF) << 16) - | ((Vd & 0xF) << 12) | (1 << 8) | ((Vn & 0x10) << 3) + | ((Vd & 0xF) << 12) | (1 << 8) | ((Vn & 0x10) << 3) | (register_quad << 6) | ((Vm & 0x10) << 1) | (1 << 4) | (Vm & 0xF)); } diff --git a/Source/Core/Common/Src/ArmEmitter.h b/Source/Core/Common/Src/ArmEmitter.h index 9f9727e4a4..cdfddd8d7e 100644 --- a/Source/Core/Common/Src/ArmEmitter.h +++ b/Source/Core/Common/Src/ArmEmitter.h @@ -66,7 +66,7 @@ enum ARMReg D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, - + // ASIMD Quad-Word registers Q0, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, @@ -142,11 +142,11 @@ public: { return Type; } - Operand2() {} + Operand2() {} Operand2(u32 imm, OpType type = TYPE_IMM) - { - Type = type; - Value = imm; + { + Type = type; + Value = imm; Rotation = 0; } @@ -343,7 +343,7 @@ u32 EncodeVd(ARMReg Vd); u32 EncodeVn(ARMReg Vn); u32 EncodeVm(ARMReg Vm); // Subtracts the base from the register to give us the real one -ARMReg SubBase(ARMReg Reg); +ARMReg SubBase(ARMReg Reg); class ARMXEmitter { @@ -474,7 +474,7 @@ public: void MOVW(ARMReg dest, Operand2 op2); void MOVT(ARMReg dest, Operand2 op2, bool TopBits = false); - // UDIV and SDIV are only available on CPUs that have + // UDIV and SDIV are only available on CPUs that have // the idiva hardare capacity void UDIV(ARMReg dest, ARMReg dividend, ARMReg divisor); void SDIV(ARMReg dest, ARMReg dividend, ARMReg divisor); @@ -526,7 +526,7 @@ public: // None of these will be created with conditional since ARM // is deprecating conditional execution of ASIMD instructions. // ASIMD instructions don't even have a conditional encoding. - + // VFP Only void VLDR(ARMReg Dest, ARMReg Base, s16 offset); void VSTR(ARMReg Src, ARMReg Base, s16 offset); @@ -574,7 +574,7 @@ public: enum NEONElementType { - I_8 = (1 << 0), + I_8 = (1 << 0), I_16 = (1 << 1), I_32 = (1 << 2), I_64 = (1 << 3), @@ -597,7 +597,7 @@ class NEONXEmitter private: ARMXEmitter *_emit; inline void Write32(u32 value) { _emit->Write32(value); } - + inline u32 encodedSize(u32 value) { if (value & I_8) @@ -612,7 +612,7 @@ private: _dbg_assert_msg_(DYNA_REC, false, "Passed invalid size to integer NEON instruction"); return 0; } - + void VREVX(u32 size, NEONElementType Size, ARMReg Vd, ARMReg Vm); public: @@ -703,7 +703,7 @@ public: // Always clear code space with breakpoints, so that if someone accidentally executes // uninitialized, it just breaks into the debugger. - void ClearCodeSpace() + void ClearCodeSpace() { // x86/64: 0xCC = breakpoint memset(region, 0xCC, region_size); diff --git a/Source/Core/Common/Src/BreakPoints.cpp b/Source/Core/Common/Src/BreakPoints.cpp index 425ceae881..1dee12ffd1 100644 --- a/Source/Core/Common/Src/BreakPoints.cpp +++ b/Source/Core/Common/Src/BreakPoints.cpp @@ -107,7 +107,7 @@ void BreakPoints::Clear() } ); } - + m_BreakPoints.clear(); } diff --git a/Source/Core/Common/Src/ChunkFile.h b/Source/Core/Common/Src/ChunkFile.h index a765369ff1..5192b4332e 100644 --- a/Source/Core/Common/Src/ChunkFile.h +++ b/Source/Core/Common/Src/ChunkFile.h @@ -180,7 +180,6 @@ public: void Do(T& x) { static_assert(IsTriviallyCopyable(T), "Only sane for trivially copyable types"); - DoVoid((void*)&x, sizeof(x)); } @@ -321,7 +320,7 @@ public: if (!File::Exists(_rFilename)) return false; - + // Check file size const u64 fileSize = File::GetSize(_rFilename); static const u64 headerSize = sizeof(SChunkHeader); @@ -374,7 +373,7 @@ public: u8* ptr = &buffer[0]; PointerWrap p(&ptr, PointerWrap::MODE_READ); _class.DoState(p); - + INFO_LOG(COMMON, "ChunkReader: Done loading %s" , _rFilename.c_str()); return true; } diff --git a/Source/Core/Common/Src/CommonFuncs.h b/Source/Core/Common/Src/CommonFuncs.h index daf135373e..bf50a1756f 100644 --- a/Source/Core/Common/Src/CommonFuncs.h +++ b/Source/Core/Common/Src/CommonFuncs.h @@ -27,7 +27,7 @@ struct ArraySizeImpl : public std::extent #define b2(x) ( (x) | ( (x) >> 1) ) #define b4(x) ( b2(x) | ( b2(x) >> 2) ) #define b8(x) ( b4(x) | ( b4(x) >> 4) ) -#define b16(x) ( b8(x) | ( b8(x) >> 8) ) +#define b16(x) ( b8(x) | ( b8(x) >> 8) ) #define b32(x) (b16(x) | (b16(x) >>16) ) #define ROUND_UP_POW2(x) (b32(x - 1) + 1) @@ -95,12 +95,12 @@ inline u64 _rotr64(u64 x, unsigned int shift){ #define unlink _unlink #define snprintf _snprintf #define vscprintf _vscprintf - + // Locale Cross-Compatibility #define locale_t _locale_t #define freelocale _free_locale #define newlocale(mask, locale, base) _create_locale(mask, locale) - + #define LC_GLOBAL_LOCALE ((locale_t)-1) #define LC_ALL_MASK LC_ALL #define LC_COLLATE_MASK LC_COLLATE @@ -108,7 +108,7 @@ inline u64 _rotr64(u64 x, unsigned int shift){ #define LC_MONETARY_MASK LC_MONETARY #define LC_NUMERIC_MASK LC_NUMERIC #define LC_TIME_MASK LC_TIME - + inline locale_t uselocale(locale_t new_locale) { // Retrieve the current per thread locale setting @@ -184,8 +184,8 @@ inline u16 swap16(u16 _data) {return _byteswap_ushort(_data);} inline u32 swap32(u32 _data) {return _byteswap_ulong (_data);} inline u64 swap64(u64 _data) {return _byteswap_uint64(_data);} #elif _M_ARM -inline u16 swap16 (u16 _data) { u32 data = _data; __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data)); return (u16)data;} -inline u32 swap32 (u32 _data) {__asm__ ("rev %0, %1\n" : "=l" (_data) : "l" (_data)); return _data;} +inline u16 swap16 (u16 _data) { u32 data = _data; __asm__ ("rev16 %0, %1\n" : "=l" (data) : "l" (data)); return (u16)data;} +inline u32 swap32 (u32 _data) {__asm__ ("rev %0, %1\n" : "=l" (_data) : "l" (_data)); return _data;} inline u64 swap64(u64 _data) {return ((u64)swap32(_data) << 32) | swap32(_data >> 32);} #elif __linux__ inline u16 swap16(u16 _data) {return bswap_16(_data);} @@ -242,7 +242,7 @@ template inline T FromBigEndian(T data) { //static_assert(std::is_arithmetic::value, "function only makes sense with arithmetic types"); - + swap(reinterpret_cast(&data)); return data; } diff --git a/Source/Core/Common/Src/ConsoleListener.cpp b/Source/Core/Common/Src/ConsoleListener.cpp index d793f7261b..fa8780d598 100644 --- a/Source/Core/Common/Src/ConsoleListener.cpp +++ b/Source/Core/Common/Src/ConsoleListener.cpp @@ -87,7 +87,7 @@ bool ConsoleListener::IsOpen() /* LetterSpace: SetConsoleScreenBufferSize and SetConsoleWindowInfo are - dependent on each other, that's the reason for the additional checks. + dependent on each other, that's the reason for the additional checks. */ void ConsoleListener::BufferWidthHeight(int BufferWidth, int BufferHeight, int ScreenWidth, int ScreenHeight, bool BufferFirst) { @@ -226,7 +226,7 @@ void ConsoleListener::PixelSpace(int Left, int Top, int Width, int Height, bool BytesWritten += cAttrWritten; coordScreen = GetCoordinates(BytesWritten, LBufWidth); - } + } const int OldCursor = ConInfo.dwCursorPosition.Y * ConInfo.dwSize.X + ConInfo.dwCursorPosition.X; COORD Coo = GetCoordinates(OldCursor, LBufWidth); @@ -311,23 +311,23 @@ void ConsoleListener::Log(LogTypes::LOG_LEVELS Level, const char *Text) } // Clear console screen void ConsoleListener::ClearScreen(bool Cursor) -{ +{ #if defined(_WIN32) - COORD coordScreen = { 0, 0 }; - DWORD cCharsWritten; - CONSOLE_SCREEN_BUFFER_INFO csbi; - DWORD dwConSize; + COORD coordScreen = { 0, 0 }; + DWORD cCharsWritten; + CONSOLE_SCREEN_BUFFER_INFO csbi; + DWORD dwConSize; - HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); + HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); - GetConsoleScreenBufferInfo(hConsole, &csbi); + GetConsoleScreenBufferInfo(hConsole, &csbi); dwConSize = csbi.dwSize.X * csbi.dwSize.Y; // Write space to the entire console - FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten); - GetConsoleScreenBufferInfo(hConsole, &csbi); + FillConsoleOutputCharacter(hConsole, TEXT(' '), dwConSize, coordScreen, &cCharsWritten); + GetConsoleScreenBufferInfo(hConsole, &csbi); FillConsoleOutputAttribute(hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten); // Reset cursor - if (Cursor) SetConsoleCursorPosition(hConsole, coordScreen); + if (Cursor) SetConsoleCursorPosition(hConsole, coordScreen); #endif } diff --git a/Source/Core/Common/Src/Crypto/ec.cpp b/Source/Core/Common/Src/Crypto/ec.cpp index 6580dfb5ff..d360a5b659 100644 --- a/Source/Core/Common/Src/Crypto/ec.cpp +++ b/Source/Core/Common/Src/Crypto/ec.cpp @@ -323,7 +323,7 @@ void point_mul(u8 *d, const u8 *a, u8 *b) // a is bignum } } -void silly_random(u8 * rndArea, u8 count) +void silly_random(u8 * rndArea, u8 count) { u16 i; srand((unsigned) (time(NULL))); @@ -331,7 +331,7 @@ void silly_random(u8 * rndArea, u8 count) for(i=0;iName, lpszNonUnicodeUnDSymbol, BUFFERSIZE, - UNDNAME_COMPLETE | + UnDecorateSymbolName( pSym->Name, lpszNonUnicodeUnDSymbol, BUFFERSIZE, + UNDNAME_COMPLETE | UNDNAME_NO_THISTYPE | UNDNAME_NO_SPECIAL_SYMS | UNDNAME_NO_MEMBER_TYPE | @@ -224,7 +224,7 @@ static BOOL GetFunctionInfoFromAddresses( ULONG fnAddress, ULONG stackAddress, L _tcscat( lpszSymbol, lpszParsed ); ret = TRUE; - } + } GlobalFree( pSym ); return ret; @@ -330,14 +330,14 @@ void StackTrace( HANDLE hThread, const char* lpszMessage, FILE *file ) PrintFunctionAndSourceInfo(file, callStack); - for( ULONG index = 0; ; index++ ) + for( ULONG index = 0; ; index++ ) { bResult = StackWalk( IMAGE_FILE_MACHINE_I386, hProcess, hThread, &callStack, - NULL, + NULL, NULL, SymFunctionTableAccess, SymGetModuleBase, @@ -346,7 +346,7 @@ void StackTrace( HANDLE hThread, const char* lpszMessage, FILE *file ) if ( index == 0 ) continue; - if( !bResult || callStack.AddrFrame.Offset == 0 ) + if( !bResult || callStack.AddrFrame.Offset == 0 ) break; PrintFunctionAndSourceInfo(file, callStack); @@ -387,14 +387,14 @@ void StackTrace(HANDLE hThread, const char* lpszMessage, FILE *file, DWORD eip, PrintFunctionAndSourceInfo(file, callStack); - for( ULONG index = 0; ; index++ ) + for( ULONG index = 0; ; index++ ) { bResult = StackWalk( IMAGE_FILE_MACHINE_I386, hProcess, hThread, &callStack, - NULL, + NULL, NULL, SymFunctionTableAccess, SymGetModuleBase, @@ -403,7 +403,7 @@ void StackTrace(HANDLE hThread, const char* lpszMessage, FILE *file, DWORD eip, if ( index == 0 ) continue; - if( !bResult || callStack.AddrFrame.Offset == 0 ) + if( !bResult || callStack.AddrFrame.Offset == 0 ) break; PrintFunctionAndSourceInfo(file, callStack); diff --git a/Source/Core/Common/Src/FPURoundMode.h b/Source/Core/Common/Src/FPURoundMode.h index 4dc18012dd..fad4d5d6aa 100644 --- a/Source/Core/Common/Src/FPURoundMode.h +++ b/Source/Core/Common/Src/FPURoundMode.h @@ -35,12 +35,12 @@ namespace FPURoundMode void SetRoundMode(u32 mode); void SetPrecisionMode(u32 mode); - + void SetSIMDMode(u32 mode); /* * There are two different flavors of float to int conversion: - * _mm_cvtps_epi32() and _mm_cvttps_epi32(). + * _mm_cvtps_epi32() and _mm_cvttps_epi32(). * * The first rounds according to the MXCSR rounding bits. * The second one always uses round towards zero. diff --git a/Source/Core/Common/Src/FifoQueue.h b/Source/Core/Common/Src/FifoQueue.h index 19687e8a4e..c3d15ff7d8 100644 --- a/Source/Core/Common/Src/FifoQueue.h +++ b/Source/Core/Common/Src/FifoQueue.h @@ -48,7 +48,7 @@ public: // create the element, add it to the queue m_write_ptr->current = std::forward(t); // set the next pointer to a new element ptr - // then advance the write pointer + // then advance the write pointer ElementPtr* new_ptr = new ElementPtr(); AtomicStoreRelease(m_write_ptr->next, new_ptr); m_write_ptr = new_ptr; diff --git a/Source/Core/Common/Src/FileUtil.cpp b/Source/Core/Common/Src/FileUtil.cpp index 84a48599da..22f8df849b 100644 --- a/Source/Core/Common/Src/FileUtil.cpp +++ b/Source/Core/Common/Src/FileUtil.cpp @@ -92,7 +92,7 @@ bool IsDirectory(const std::string &filename) #endif if (result < 0) { - WARN_LOG(COMMON, "IsDirectory: stat failed on %s: %s", + WARN_LOG(COMMON, "IsDirectory: stat failed on %s: %s", filename.c_str(), GetLastErrorMsg()); return false; } @@ -106,7 +106,7 @@ bool Delete(const std::string &filename) { INFO_LOG(COMMON, "Delete: file %s", filename.c_str()); - // Return true because we care about the file no + // Return true because we care about the file no // being there, not the actual delete. if (!Exists(filename)) { @@ -124,13 +124,13 @@ bool Delete(const std::string &filename) #ifdef _WIN32 if (!DeleteFile(UTF8ToTStr(filename).c_str())) { - WARN_LOG(COMMON, "Delete: DeleteFile failed on %s: %s", + WARN_LOG(COMMON, "Delete: DeleteFile failed on %s: %s", filename.c_str(), GetLastErrorMsg()); return false; } #else if (unlink(filename.c_str()) == -1) { - WARN_LOG(COMMON, "Delete: unlink failed on %s: %s", + WARN_LOG(COMMON, "Delete: unlink failed on %s: %s", filename.c_str(), GetLastErrorMsg()); return false; } @@ -234,10 +234,10 @@ bool DeleteDir(const std::string &filename) return false; } -// renames file srcFilename to destFilename, returns true on success +// renames file srcFilename to destFilename, returns true on success bool Rename(const std::string &srcFilename, const std::string &destFilename) { - INFO_LOG(COMMON, "Rename: %s --> %s", + INFO_LOG(COMMON, "Rename: %s --> %s", srcFilename.c_str(), destFilename.c_str()); #ifdef _WIN32 auto sf = UTF8ToTStr(srcFilename); @@ -256,7 +256,7 @@ bool Rename(const std::string &srcFilename, const std::string &destFilename) if (rename(srcFilename.c_str(), destFilename.c_str()) == 0) return true; #endif - ERROR_LOG(COMMON, "Rename: failed %s --> %s: %s", + ERROR_LOG(COMMON, "Rename: failed %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); return false; } @@ -296,16 +296,16 @@ bool RenameSync(const std::string &srcFilename, const std::string &destFilename) return true; } -// copies file srcFilename to destFilename, returns true on success +// copies file srcFilename to destFilename, returns true on success bool Copy(const std::string &srcFilename, const std::string &destFilename) { - INFO_LOG(COMMON, "Copy: %s --> %s", + INFO_LOG(COMMON, "Copy: %s --> %s", srcFilename.c_str(), destFilename.c_str()); #ifdef _WIN32 if (CopyFile(UTF8ToTStr(srcFilename).c_str(), UTF8ToTStr(destFilename).c_str(), FALSE)) return true; - ERROR_LOG(COMMON, "Copy: failed %s --> %s: %s", + ERROR_LOG(COMMON, "Copy: failed %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); return false; #else @@ -319,7 +319,7 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename) FILE *input = fopen(srcFilename.c_str(), "rb"); if (!input) { - ERROR_LOG(COMMON, "Copy: input failed %s --> %s: %s", + ERROR_LOG(COMMON, "Copy: input failed %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); return false; } @@ -329,7 +329,7 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename) if (!output) { fclose(input); - ERROR_LOG(COMMON, "Copy: output failed %s --> %s: %s", + ERROR_LOG(COMMON, "Copy: output failed %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); return false; } @@ -343,8 +343,8 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename) { if (ferror(input) != 0) { - ERROR_LOG(COMMON, - "Copy: failed reading from source, %s --> %s: %s", + ERROR_LOG(COMMON, + "Copy: failed reading from source, %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); goto bail; } @@ -354,8 +354,8 @@ bool Copy(const std::string &srcFilename, const std::string &destFilename) int wnum = fwrite(buffer, sizeof(char), rnum, output); if (wnum != rnum) { - ERROR_LOG(COMMON, - "Copy: failed writing to output, %s --> %s: %s", + ERROR_LOG(COMMON, + "Copy: failed writing to output, %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); goto bail; } @@ -387,7 +387,7 @@ u64 GetSize(const std::string &filename) WARN_LOG(COMMON, "GetSize: failed %s: is a directory", filename.c_str()); return 0; } - + struct stat64 buf; #ifdef _WIN32 if (_tstat64(UTF8ToTStr(filename).c_str(), &buf) == 0) @@ -436,10 +436,10 @@ u64 GetSize(FILE *f) return size; } -// creates an empty file filename, returns true on success +// creates an empty file filename, returns true on success bool CreateEmptyFile(const std::string &filename) { - INFO_LOG(COMMON, "CreateEmptyFile: %s", filename.c_str()); + INFO_LOG(COMMON, "CreateEmptyFile: %s", filename.c_str()); if (!File::IOFile(filename, "wb")) { @@ -489,7 +489,7 @@ u32 ScanDirectoryTree(const std::string &directory, FSTEntry& parentEntry) #endif // check for "." and ".." if (((virtualName[0] == '.') && (virtualName[1] == '\0')) || - ((virtualName[0] == '.') && (virtualName[1] == '.') && + ((virtualName[0] == '.') && (virtualName[1] == '.') && (virtualName[2] == '\0'))) continue; entry.virtualName = virtualName; @@ -504,14 +504,14 @@ u32 ScanDirectoryTree(const std::string &directory, FSTEntry& parentEntry) foundEntries += (u32)entry.size; } else - { // is a file + { // is a file entry.isDirectory = false; entry.size = GetSize(entry.physicalName.c_str()); } ++foundEntries; // Push into the tree - parentEntry.children.push_back(entry); -#ifdef _WIN32 + parentEntry.children.push_back(entry); +#ifdef _WIN32 } while (FindNextFile(hFind, &ffd) != 0); FindClose(hFind); #else @@ -556,7 +556,7 @@ bool DeleteDirRecursively(const std::string &directory) // check for "." and ".." if (((virtualName[0] == '.') && (virtualName[1] == '\0')) || - ((virtualName[0] == '.') && (virtualName[1] == '.') && + ((virtualName[0] == '.') && (virtualName[1] == '.') && (virtualName[2] == '\0'))) continue; @@ -592,7 +592,7 @@ bool DeleteDirRecursively(const std::string &directory) closedir(dirp); #endif File::DeleteDir(directory); - + return true; } @@ -653,7 +653,7 @@ void CopyDir(const std::string &source_path, const std::string &dest_path) std::string GetCurrentDir() { char *dir; - // Get the current working directory (getcwd uses malloc) + // Get the current working directory (getcwd uses malloc) if (!(dir = __getcwd(NULL, 0))) { ERROR_LOG(COMMON, "GetCurrentDirectory failed: %s", @@ -687,7 +687,7 @@ std::string GetTempFilenameForAtomicWrite(const std::string &path) } #if defined(__APPLE__) -std::string GetBundleDirectory() +std::string GetBundleDirectory() { CFURLRef BundleRef; char AppBundlePath[MAXPATHLEN]; @@ -798,8 +798,8 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new if (File::Exists(ROOT_DIR DIR_SEP USERDATA_DIR)) paths[D_USER_IDX] = ROOT_DIR DIR_SEP USERDATA_DIR DIR_SEP; else - paths[D_USER_IDX] = std::string(getenv("HOME") ? - getenv("HOME") : getenv("PWD") ? + paths[D_USER_IDX] = std::string(getenv("HOME") ? + getenv("HOME") : getenv("PWD") ? getenv("PWD") : "") + DIR_SEP DOLPHIN_DATA_DIR DIR_SEP; #endif @@ -917,7 +917,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string &new paths[D_WIIUSER_IDX] = paths[D_WIIROOT_IDX] + DIR_SEP; paths[D_WIIWC24_IDX] = paths[D_WIIUSER_IDX] + WII_WC24CONF_DIR DIR_SEP; - paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR + DIR_SEP; + paths[D_WIISYSCONF_IDX] = paths[D_WIIUSER_IDX] + WII_SYSCONF_DIR + DIR_SEP; paths[F_WIISYSCONF_IDX] = paths[D_WIISYSCONF_IDX] + WII_SYSCONF; } diff --git a/Source/Core/Common/Src/FileUtil.h b/Source/Core/Common/Src/FileUtil.h index 8de525d64a..43482ffb32 100644 --- a/Source/Core/Common/Src/FileUtil.h +++ b/Source/Core/Common/Src/FileUtil.h @@ -56,7 +56,7 @@ enum { namespace File { -// FileSystem tree node/ +// FileSystem tree node/ struct FSTEntry { bool isDirectory; @@ -94,16 +94,16 @@ bool Delete(const std::string &filename); // Deletes a directory filename, returns true on success bool DeleteDir(const std::string &filename); -// renames file srcFilename to destFilename, returns true on success +// renames file srcFilename to destFilename, returns true on success bool Rename(const std::string &srcFilename, const std::string &destFilename); // ditto, but syncs the source file and, on Unix, syncs the directories after rename bool RenameSync(const std::string &srcFilename, const std::string &destFilename); -// copies file srcFilename to destFilename, returns true on success +// copies file srcFilename to destFilename, returns true on success bool Copy(const std::string &srcFilename, const std::string &destFilename); -// creates an empty file filename, returns true on success +// creates an empty file filename, returns true on success bool CreateEmptyFile(const std::string &filename); // Scans the directory tree gets, starting from _Directory and adds the @@ -157,10 +157,10 @@ public: IOFile(const std::string& filename, const char openmode[]); ~IOFile(); - + IOFile(IOFile&& other); IOFile& operator=(IOFile&& other); - + void Swap(IOFile& other); bool Open(const std::string& filename, const char openmode[]); diff --git a/Source/Core/Common/Src/Hash.cpp b/Source/Core/Common/Src/Hash.cpp index 2e221ee396..ab017347e8 100644 --- a/Source/Core/Common/Src/Hash.cpp +++ b/Source/Core/Common/Src/Hash.cpp @@ -115,15 +115,15 @@ inline u64 getblock(const u64 * p, int i) inline void bmix64(u64 & h1, u64 & h2, u64 & k1, u64 & k2, u64 & c1, u64 & c2) { - k1 *= c1; - k1 = _rotl64(k1,23); + k1 *= c1; + k1 = _rotl64(k1,23); k1 *= c2; h1 ^= k1; h1 += h2; h2 = _rotl64(h2,41); - k2 *= c2; + k2 *= c2; k2 = _rotl64(k2,23); k2 *= c1; h2 ^= k2; @@ -250,7 +250,7 @@ u64 GetCRC32(const u8 *src, int len, u32 samples) } -/* +/* * NOTE: This hash function is used for custom texture loading/dumping, so * it should not be changed, which would require all custom textures to be * recalculated for their new hash values. If the hashing function is @@ -273,7 +273,7 @@ u64 GetHashHiresTexture(const u8 *src, int len, u32 samples) u64 k = data[0]; data+=Step; k *= m; - k ^= k >> r; + k ^= k >> r; k *= m; h ^= k; h *= m; @@ -292,13 +292,13 @@ u64 GetHashHiresTexture(const u8 *src, int len, u32 samples) case 1: h ^= u64(data2[0]); h *= m; }; - + h ^= h >> r; h *= m; h ^= h >> r; return h; -} +} #else // CRC32 hash using the SSE4.2 instruction u64 GetCRC32(const u8 *src, int len, u32 samples) @@ -351,15 +351,15 @@ inline u32 fmix32(u32 h) inline void bmix32(u32 & h1, u32 & h2, u32 & k1, u32 & k2, u32 & c1, u32 & c2) { - k1 *= c1; - k1 = _rotl(k1,11); + k1 *= c1; + k1 = _rotl(k1,11); k1 *= c2; h1 ^= k1; h1 += h2; h2 = _rotl(h2,17); - k2 *= c2; + k2 *= c2; k2 = _rotl(k2,11); k2 *= c1; h2 ^= k2; @@ -405,7 +405,7 @@ u64 GetMurmurHash3(const u8* src, int len, u32 samples) //---------- // tail - + const u8 * tail = (const u8*)(data + nblocks*8); u32 k1 = 0; @@ -439,7 +439,7 @@ u64 GetMurmurHash3(const u8* src, int len, u32 samples) out[0] = h1; out[1] = h2; - + return *((u64 *)&out); } @@ -463,11 +463,11 @@ u64 GetHashHiresTexture(const u8 *src, int len, u32 samples) { u64 k = data[0]; data+=Step; - k *= m; - k ^= k >> r; + k *= m; + k ^= k >> r; k *= m; h ^= k; - h *= m; + h *= m; } const u8 * data2 = (const u8*)end; @@ -483,7 +483,7 @@ u64 GetHashHiresTexture(const u8 *src, int len, u32 samples) case 1: h ^= u64(data2[0]); h *= m; }; - + h ^= h >> r; h *= m; h ^= h >> r; diff --git a/Source/Core/Common/Src/IniFile.cpp b/Source/Core/Common/Src/IniFile.cpp index ebbde7ac7c..a1a10ab372 100644 --- a/Source/Core/Common/Src/IniFile.cpp +++ b/Source/Core/Common/Src/IniFile.cpp @@ -81,10 +81,10 @@ void IniFile::Section::Set(const char* key, bool newValue, bool defaultValue) Delete(key); } -void IniFile::Section::Set(const char* key, const std::vector& newValues) +void IniFile::Section::Set(const char* key, const std::vector& newValues) { std::string temp; - // Join the strings with , + // Join the strings with , std::vector::const_iterator it; for (it = newValues.begin(); it != newValues.end(); ++it) { @@ -124,13 +124,13 @@ bool IniFile::Section::Get(const char* key, std::vector& out) size_t subStart = temp.find_first_not_of(","); size_t subEnd; - // split by , + // split by , while (subStart != std::string::npos) { - // Find next , + // Find next , subEnd = temp.find_first_of(",", subStart); - if (subStart != subEnd) - // take from first char until next , + if (subStart != subEnd) + // take from first char until next , out.push_back(StripSpaces(temp.substr(subStart, subEnd - subStart))); // Find the next non , char subStart = temp.find_first_not_of(",", subEnd); @@ -435,7 +435,7 @@ bool IniFile::Get(const char* sectionName, const char* key, std::string* value, return section->Get(key, value, defaultValue); } -bool IniFile::Get(const char *sectionName, const char* key, std::vector& values) +bool IniFile::Get(const char *sectionName, const char* key, std::vector& values) { Section *section = GetSection(sectionName); if (!section) diff --git a/Source/Core/Common/Src/IniFile.h b/Source/Core/Common/Src/IniFile.h index 0cf4ab902b..abfb58b0a6 100644 --- a/Source/Core/Common/Src/IniFile.h +++ b/Source/Core/Common/Src/IniFile.h @@ -53,12 +53,12 @@ public: void Set(const char* key, double newValue) { Set(key, StringFromFormat("%f", newValue).c_str()); } - + void Set(const char* key, int newValue, int defaultValue); void Set(const char* key, int newValue) { Set(key, StringFromInt(newValue).c_str()); } - + void Set(const char* key, bool newValue, bool defaultValue); void Set(const char* key, bool newValue) { Set(key, StringFromBool(newValue).c_str()); diff --git a/Source/Core/Common/Src/LinearDiskCache.h b/Source/Core/Common/Src/LinearDiskCache.h index 527dfd7036..e139b064f3 100644 --- a/Source/Core/Common/Src/LinearDiskCache.h +++ b/Source/Core/Common/Src/LinearDiskCache.h @@ -63,7 +63,7 @@ public: m_file.seekg(0, std::ios::beg); std::fstream::pos_type start_pos = m_file.tellg(); std::streamoff file_size = end_pos - start_pos; - + if (m_file.is_open() && ValidateHeader()) { // good header, read some key/value pairs @@ -86,7 +86,7 @@ public: // read key/value and pass to reader if (Read(&key) && - Read(value, value_size) && + Read(value, value_size) && Read(&entry_number) && entry_number == m_num_entries+1) { @@ -114,7 +114,7 @@ public: WriteHeader(); return 0; } - + void Sync() { m_file.flush(); diff --git a/Source/Core/Common/Src/Log.h b/Source/Core/Common/Src/Log.h index 7ad70b779a..b0f3519579 100644 --- a/Source/Core/Common/Src/Log.h +++ b/Source/Core/Common/Src/Log.h @@ -6,7 +6,7 @@ #define _LOG_H_ #define NOTICE_LEVEL 1 // VERY important information that is NOT errors. Like startup and OSReports. -#define ERROR_LEVEL 2 // Critical errors +#define ERROR_LEVEL 2 // Critical errors #define WARNING_LEVEL 3 // Something is suspicious. #define INFO_LEVEL 4 // General information. #define DEBUG_LEVEL 5 // Detailed debugging - might make things slow. @@ -40,7 +40,7 @@ enum LOG_TYPE MEMMAP, MEMCARD_MANAGER, OSREPORT, - PAD, + PAD, PROCESSORINTERFACE, PIXELENGINE, SERIALINTERFACE, diff --git a/Source/Core/Common/Src/LogManager.cpp b/Source/Core/Common/Src/LogManager.cpp index 30b6b4a92a..50c6ab400a 100644 --- a/Source/Core/Common/Src/LogManager.cpp +++ b/Source/Core/Common/Src/LogManager.cpp @@ -13,7 +13,7 @@ #include "Thread.h" #include "FileUtil.h" -void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, +void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char* fmt, ...) { va_list args; @@ -110,7 +110,7 @@ LogManager::~LogManager() delete m_debuggerLog; } -void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, +void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char *format, va_list args) { char temp[MAX_MSGLEN]; @@ -128,7 +128,7 @@ void LogManager::Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, file, line, level_to_char[(int)level], log->GetShortName(), temp); #ifdef ANDROID - Host_SysMessage(msg); + Host_SysMessage(msg); #endif log->Trigger(level, msg); } diff --git a/Source/Core/Common/Src/LogManager.h b/Source/Core/Common/Src/LogManager.h index 120d7b5f98..101be5fc13 100644 --- a/Source/Core/Common/Src/LogManager.h +++ b/Source/Core/Common/Src/LogManager.h @@ -55,7 +55,7 @@ class LogContainer { public: LogContainer(const char* shortName, const char* fullName, bool enable = false); - + const char* GetShortName() const { return m_shortName; } const char* GetFullName() const { return m_fullName; } @@ -99,7 +99,7 @@ public: static u32 GetMaxLevel() { return MAX_LOGLEVEL; } - void Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, + void Log(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char *fmt, va_list args); void SetLogLevel(LogTypes::LOG_TYPE type, LogTypes::LOG_LEVELS level) diff --git a/Source/Core/Common/Src/MathUtil.cpp b/Source/Core/Common/Src/MathUtil.cpp index 435f18ab09..c92e659890 100644 --- a/Source/Core/Common/Src/MathUtil.cpp +++ b/Source/Core/Common/Src/MathUtil.cpp @@ -17,7 +17,7 @@ u32 ClassifyDouble(double dvalue) value.d = dvalue; u64 sign = value.i & DOUBLE_SIGN; u64 exp = value.i & DOUBLE_EXP; - if (exp > DOUBLE_ZERO && exp < DOUBLE_EXP) + if (exp > DOUBLE_ZERO && exp < DOUBLE_EXP) { // Nice normalized number. return sign ? PPC_FPCLASS_NN : PPC_FPCLASS_PN; @@ -57,7 +57,7 @@ u32 ClassifyFloat(float fvalue) value.f = fvalue; u32 sign = value.i & FLOAT_SIGN; u32 exp = value.i & FLOAT_EXP; - if (exp > FLOAT_ZERO && exp < FLOAT_EXP) + if (exp > FLOAT_ZERO && exp < FLOAT_EXP) { // Nice normalized number. return sign ? PPC_FPCLASS_NN : PPC_FPCLASS_PN; @@ -76,13 +76,13 @@ u32 ClassifyFloat(float fvalue) // Denormalized number. return sign ? PPC_FPCLASS_ND : PPC_FPCLASS_PD; } - } - else if (exp) + } + else if (exp) { // Infinite return sign ? PPC_FPCLASS_NINF : PPC_FPCLASS_PINF; - } - else + } + else { //Zero return sign ? PPC_FPCLASS_NZ : PPC_FPCLASS_PZ; diff --git a/Source/Core/Common/Src/MathUtil.h b/Source/Core/Common/Src/MathUtil.h index c0221836e3..31772c3c60 100644 --- a/Source/Core/Common/Src/MathUtil.h +++ b/Source/Core/Common/Src/MathUtil.h @@ -105,7 +105,7 @@ struct Rectangle Rectangle(T theLeft, T theTop, T theRight, T theBottom) : left(theLeft), top(theTop), right(theRight), bottom(theBottom) { } - + bool operator==(const Rectangle& r) { return left==r.left && top==r.top && right==r.right && bottom==r.bottom; } T GetWidth() const { return abs(right - left); } @@ -123,7 +123,7 @@ struct Rectangle // If the rectangle is in a coordinate system with an upper-left origin, // use this Clamp. - void ClampUL(T x1, T y1, T x2, T y2) + void ClampUL(T x1, T y1, T x2, T y2) { if (left < x1) left = x1; if (right > x2) right = x2; diff --git a/Source/Core/Common/Src/MemArena.cpp b/Source/Core/Common/Src/MemArena.cpp index 2383c011c3..6b69b63860 100644 --- a/Source/Core/Common/Src/MemArena.cpp +++ b/Source/Core/Common/Src/MemArena.cpp @@ -257,7 +257,7 @@ u8 *MemoryMap_Setup(const MemoryView *views, int num_views, u32 flags, MemArena { base_attempts++; base = (u8 *)base_addr; - if (Memory_TryBase(base, views, num_views, flags, arena)) + if (Memory_TryBase(base, views, num_views, flags, arena)) { INFO_LOG(MEMMAP, "Found valid memory base at %p after %i tries.", base, base_attempts); base_attempts = 0; diff --git a/Source/Core/Common/Src/MsgHandler.h b/Source/Core/Common/Src/MsgHandler.h index 7de10c7b0a..f6e2f0f1dc 100644 --- a/Source/Core/Common/Src/MsgHandler.h +++ b/Source/Core/Common/Src/MsgHandler.h @@ -16,7 +16,7 @@ enum MSG_TYPE CRITICAL }; -typedef bool (*MsgAlertHandler)(const char* caption, const char* text, +typedef bool (*MsgAlertHandler)(const char* caption, const char* text, bool yes_no, int Style); typedef std::string (*StringTranslator)(const char* text); @@ -32,29 +32,29 @@ void SetEnableAlert(bool enable); #ifndef GEKKO #ifdef _WIN32 - #define SuccessAlert(format, ...) MsgAlert(false, INFORMATION, format, __VA_ARGS__) - #define PanicAlert(format, ...) MsgAlert(false, WARNING, format, __VA_ARGS__) - #define PanicYesNo(format, ...) MsgAlert(true, WARNING, format, __VA_ARGS__) - #define AskYesNo(format, ...) MsgAlert(true, QUESTION, format, __VA_ARGS__) - #define CriticalAlert(format, ...) MsgAlert(false, CRITICAL, format, __VA_ARGS__) + #define SuccessAlert(format, ...) MsgAlert(false, INFORMATION, format, __VA_ARGS__) + #define PanicAlert(format, ...) MsgAlert(false, WARNING, format, __VA_ARGS__) + #define PanicYesNo(format, ...) MsgAlert(true, WARNING, format, __VA_ARGS__) + #define AskYesNo(format, ...) MsgAlert(true, QUESTION, format, __VA_ARGS__) + #define CriticalAlert(format, ...) MsgAlert(false, CRITICAL, format, __VA_ARGS__) // Use these macros (that do the same thing) if the message should be translated. - #define SuccessAlertT(format, ...) MsgAlert(false, INFORMATION, format, __VA_ARGS__) - #define PanicAlertT(format, ...) MsgAlert(false, WARNING, format, __VA_ARGS__) - #define PanicYesNoT(format, ...) MsgAlert(true, WARNING, format, __VA_ARGS__) - #define AskYesNoT(format, ...) MsgAlert(true, QUESTION, format, __VA_ARGS__) - #define CriticalAlertT(format, ...) MsgAlert(false, CRITICAL, format, __VA_ARGS__) + #define SuccessAlertT(format, ...) MsgAlert(false, INFORMATION, format, __VA_ARGS__) + #define PanicAlertT(format, ...) MsgAlert(false, WARNING, format, __VA_ARGS__) + #define PanicYesNoT(format, ...) MsgAlert(true, WARNING, format, __VA_ARGS__) + #define AskYesNoT(format, ...) MsgAlert(true, QUESTION, format, __VA_ARGS__) + #define CriticalAlertT(format, ...) MsgAlert(false, CRITICAL, format, __VA_ARGS__) #else - #define SuccessAlert(format, ...) MsgAlert(false, INFORMATION, format, ##__VA_ARGS__) - #define PanicAlert(format, ...) MsgAlert(false, WARNING, format, ##__VA_ARGS__) - #define PanicYesNo(format, ...) MsgAlert(true, WARNING, format, ##__VA_ARGS__) - #define AskYesNo(format, ...) MsgAlert(true, QUESTION, format, ##__VA_ARGS__) - #define CriticalAlert(format, ...) MsgAlert(false, CRITICAL, format, ##__VA_ARGS__) + #define SuccessAlert(format, ...) MsgAlert(false, INFORMATION, format, ##__VA_ARGS__) + #define PanicAlert(format, ...) MsgAlert(false, WARNING, format, ##__VA_ARGS__) + #define PanicYesNo(format, ...) MsgAlert(true, WARNING, format, ##__VA_ARGS__) + #define AskYesNo(format, ...) MsgAlert(true, QUESTION, format, ##__VA_ARGS__) + #define CriticalAlert(format, ...) MsgAlert(false, CRITICAL, format, ##__VA_ARGS__) // Use these macros (that do the same thing) if the message should be translated. - #define SuccessAlertT(format, ...) MsgAlert(false, INFORMATION, format, ##__VA_ARGS__) - #define PanicAlertT(format, ...) MsgAlert(false, WARNING, format, ##__VA_ARGS__) - #define PanicYesNoT(format, ...) MsgAlert(true, WARNING, format, ##__VA_ARGS__) - #define AskYesNoT(format, ...) MsgAlert(true, QUESTION, format, ##__VA_ARGS__) - #define CriticalAlertT(format, ...) MsgAlert(false, CRITICAL, format, ##__VA_ARGS__) + #define SuccessAlertT(format, ...) MsgAlert(false, INFORMATION, format, ##__VA_ARGS__) + #define PanicAlertT(format, ...) MsgAlert(false, WARNING, format, ##__VA_ARGS__) + #define PanicYesNoT(format, ...) MsgAlert(true, WARNING, format, ##__VA_ARGS__) + #define AskYesNoT(format, ...) MsgAlert(true, QUESTION, format, ##__VA_ARGS__) + #define CriticalAlertT(format, ...) MsgAlert(false, CRITICAL, format, ##__VA_ARGS__) #endif #else // GEKKO diff --git a/Source/Core/Common/Src/NandPaths.cpp b/Source/Core/Common/Src/NandPaths.cpp index 601d2a51ee..3ca5550d40 100644 --- a/Source/Core/Common/Src/NandPaths.cpp +++ b/Source/Core/Common/Src/NandPaths.cpp @@ -58,7 +58,7 @@ bool CheckTitleTMD(u64 _titleID) bool CheckTitleTIK(u64 _titleID) { - const std::string ticketFileName = Common::GetTicketFileName(_titleID); + const std::string ticketFileName = Common::GetTicketFileName(_titleID); if (File::Exists(ticketFileName)) { File::IOFile pTIKFile(ticketFileName, "rb"); diff --git a/Source/Core/Common/Src/StdConditionVariable.h b/Source/Core/Common/Src/StdConditionVariable.h index 8f7d6e65b2..1a05ce45e3 100644 --- a/Source/Core/Common/Src/StdConditionVariable.h +++ b/Source/Core/Common/Src/StdConditionVariable.h @@ -9,7 +9,7 @@ #define __has_include(s) 0 #endif -#if GCC_VERSION >= GCC_VER(4,4,0) && __GXX_EXPERIMENTAL_CXX0X__ +#if GCC_VERSION >= GCC_VER(4,4,0) && __GXX_EXPERIMENTAL_CXX0X__ // GCC 4.4 provides #include diff --git a/Source/Core/Common/Src/StdMutex.h b/Source/Core/Common/Src/StdMutex.h index c1cdb04799..4d3348d458 100644 --- a/Source/Core/Common/Src/StdMutex.h +++ b/Source/Core/Common/Src/StdMutex.h @@ -108,7 +108,7 @@ public: return (0 != TryEnterCriticalSection(&m_handle)); #else return !pthread_mutex_trylock(&m_handle); -#endif +#endif } native_handle_type native_handle() @@ -283,10 +283,10 @@ public: swap(other); return *this; } - + #ifdef USE_RVALUE_REFERENCES unique_lock(const unique_lock&) /*= delete*/; - + unique_lock(unique_lock&& other) : pm(NULL), owns(false) { @@ -295,7 +295,7 @@ public: : pm(NULL), owns(false) { // ugly const_cast to get around lack of rvalue references - unique_lock& other = const_cast(u); + unique_lock& other = const_cast(u); #endif swap(other); } @@ -316,7 +316,7 @@ public: //bool try_lock_for(const chrono::duration& rel_time); //template //bool try_lock_until(const chrono::time_point& abs_time); - + void unlock() { mutex()->unlock(); diff --git a/Source/Core/Common/Src/StdThread.h b/Source/Core/Common/Src/StdThread.h index 7db2851eaf..9e589061b1 100644 --- a/Source/Core/Common/Src/StdThread.h +++ b/Source/Core/Common/Src/StdThread.h @@ -213,7 +213,7 @@ public: std::swap(m_handle, other.m_handle); #endif } - + static unsigned hardware_concurrency() { #ifdef _WIN32 @@ -227,7 +227,7 @@ public: private: id m_id; - + #ifdef _WIN32 native_handle_type m_handle; #endif @@ -247,7 +247,7 @@ private: m_id = id(); #endif } - + template class Func { diff --git a/Source/Core/Common/Src/StringUtil.cpp b/Source/Core/Common/Src/StringUtil.cpp index 16cf890ad6..5243b24260 100644 --- a/Source/Core/Common/Src/StringUtil.cpp +++ b/Source/Core/Common/Src/StringUtil.cpp @@ -109,11 +109,11 @@ std::string ArrayToString(const u8 *data, u32 size, int line_len, bool spaces) { std::ostringstream oss; oss << std::setfill('0') << std::hex; - + for (int line = 0; size; ++data, --size) { oss << std::setw(2) << (int)*data; - + if (line_len == ++line) { oss << '\n'; @@ -156,7 +156,7 @@ bool TryParse(const std::string &str, u32 *const output) errno = 0; unsigned long value = strtoul(str.c_str(), &endptr, 0); - + if (!endptr || *endptr) return false; @@ -284,7 +284,7 @@ std::string ReplaceAll(std::string result, const std::string& src, const std::st //#include //#include -const char HEX2DEC[256] = +const char HEX2DEC[256] = { /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ /* 0 */ 16,16,16,16, 16,16,16,16, 16,16,16,16, 16,16,16,16, @@ -317,7 +317,7 @@ std::string UriDecode(const std::string & sSrc) const unsigned char * pSrc = (const unsigned char *)sSrc.c_str(); const size_t SRC_LEN = sSrc.length(); const unsigned char * const SRC_END = pSrc + SRC_LEN; - const unsigned char * const SRC_LAST_DEC = SRC_END - 2; // last decodable '%' + const unsigned char * const SRC_LAST_DEC = SRC_END - 2; // last decodable '%' char * const pStart = new char[SRC_LEN]; char * pEnd = pStart; @@ -384,7 +384,7 @@ std::string UriEncode(const std::string & sSrc) for (; pSrc < SRC_END; ++pSrc) { - if (SAFE[*pSrc]) + if (SAFE[*pSrc]) *pEnd++ = *pSrc; else { @@ -494,10 +494,10 @@ std::string CodeToUTF8(const char* fromcode, const std::basic_string& input) out_buffer.resize(out_buffer_size - dst_bytes); out_buffer.swap(result); - + iconv_close(conv_desc); } - + return result; } diff --git a/Source/Core/Common/Src/StringUtil.h b/Source/Core/Common/Src/StringUtil.h index 56c223641b..46ed382724 100644 --- a/Source/Core/Common/Src/StringUtil.h +++ b/Source/Core/Common/Src/StringUtil.h @@ -58,7 +58,7 @@ template static bool TryParse(const std::string &str, N *const output) { std::istringstream iss(str); - + N tmp = 0; if (iss >> tmp) { diff --git a/Source/Core/Common/Src/SysConf.cpp b/Source/Core/Common/Src/SysConf.cpp index 41bf4e82b0..e1c3eb8abb 100644 --- a/Source/Core/Common/Src/SysConf.cpp +++ b/Source/Core/Common/Src/SysConf.cpp @@ -38,11 +38,11 @@ bool SysConf::LoadFromFile(const char *filename) GenerateSysConf(); return true; } - + u64 size = File::GetSize(filename); if (size != SYSCONF_SIZE) { - if (AskYesNoT("Your SYSCONF file is the wrong size.\nIt should be 0x%04x (but is 0x%04llx)\nDo you want to generate a new one?", + if (AskYesNoT("Your SYSCONF file is the wrong size.\nIt should be 0x%04x (but is 0x%04llx)\nDo you want to generate a new one?", SYSCONF_SIZE, size)) { GenerateSysConf(); @@ -314,7 +314,7 @@ void SysConf::GenerateSysConf() } const u16 end_data_offset = Common::swap16(current_offset); g.WriteBytes(&end_data_offset, 2); - + // Write the items const u8 null_byte = 0; for (int i = 0; i != 27; ++i) @@ -398,7 +398,7 @@ void SysConf::UpdateLocation() if (m_IsValid) Save(); - // Clear the old filename and set the default filename to the new user path + // Clear the old filename and set the default filename to the new user path // So that it can be generated if the file does not exist in the new location m_Filename.clear(); m_FilenameDefault = File::GetUserPath(F_WIISYSCONF_IDX); diff --git a/Source/Core/Common/Src/Thread.cpp b/Source/Core/Common/Src/Thread.cpp index 4040d04e42..740750a8ea 100644 --- a/Source/Core/Common/Src/Thread.cpp +++ b/Source/Core/Common/Src/Thread.cpp @@ -28,7 +28,7 @@ int CurrentThreadId() return 0; #endif } - + #ifdef _WIN32 void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) @@ -55,7 +55,7 @@ void SwitchCurrentThread() // Sets the debugger-visible name of the current thread. // Uses undocumented (actually, it is now documented) trick. // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsdebug/html/vxtsksettingthreadname.asp - + // This is implemented much nicer in upcoming msvc++, see: // http://msdn.microsoft.com/en-us/library/xcb2z8hs(VS.100).aspx void SetCurrentThreadName(const char* szThreadName) @@ -84,7 +84,7 @@ void SetCurrentThreadName(const char* szThreadName) __except(EXCEPTION_CONTINUE_EXECUTION) {} } - + #else // !WIN32, so must be POSIX threads void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask) diff --git a/Source/Core/Common/Src/Thread.h b/Source/Core/Common/Src/Thread.h index b0328f7a1f..bfd7ea0308 100644 --- a/Source/Core/Common/Src/Thread.h +++ b/Source/Core/Common/Src/Thread.h @@ -32,7 +32,7 @@ int CurrentThreadId(); void SetThreadAffinity(std::thread::native_handle_type thread, u32 mask); void SetCurrentThreadAffinity(u32 mask); - + class Event { public: @@ -137,7 +137,7 @@ private: const size_t m_count; volatile size_t m_waiting; }; - + void SleepCurrentThread(int ms); void SwitchCurrentThread(); // On Linux, this is equal to sleep 1ms @@ -148,9 +148,9 @@ inline void YieldCPU() { std::this_thread::yield(); } - + void SetCurrentThreadName(const char *name); - + } // namespace Common #endif // _THREAD_H_ diff --git a/Source/Core/Common/Src/Version.cpp b/Source/Core/Common/Src/Version.cpp index 944cc55906..09bfa9b1af 100644 --- a/Source/Core/Common/Src/Version.cpp +++ b/Source/Core/Common/Src/Version.cpp @@ -29,7 +29,7 @@ const char *scm_rev_str = "Dolphin " #else #ifdef _M_ARM #define NP_ARCH "ARM" -#else +#else #define NP_ARCH "x86" #endif #endif diff --git a/Source/Core/Common/Src/x64ABI.cpp b/Source/Core/Common/Src/x64ABI.cpp index b590282a0b..6cced10084 100644 --- a/Source/Core/Common/Src/x64ABI.cpp +++ b/Source/Core/Common/Src/x64ABI.cpp @@ -13,7 +13,7 @@ unsigned int XEmitter::ABI_GetAlignedFrameSize(unsigned int frameSize, bool noPr // On platforms other than Windows 32-bit: At the beginning of a function, // the stack pointer is 4/8 bytes less than a multiple of 16; however, the // function prolog immediately subtracts an appropriate amount to align - // it, so no alignment is required around a call. + // it, so no alignment is required around a call. // In the functions generated by ThunkManager::ProtectFunction and some // others, we add the necessary subtraction (and 0x20 bytes shadow space // for Win64) into this rather than having a separate prolog. @@ -497,12 +497,12 @@ void XEmitter::ABI_PushAllCalleeSavedRegsAndAdjustStack() { //we only want to do this once PUSH(RBP); MOV(64, R(RBP), R(RSP)); - PUSH(RBX); - PUSH(RSI); + PUSH(RBX); + PUSH(RSI); PUSH(RDI); - PUSH(R12); - PUSH(R13); - PUSH(R14); + PUSH(R12); + PUSH(R13); + PUSH(R14); PUSH(R15); SUB(64, R(RSP), Imm8(0x28)); //TODO: Also preserve XMM0-3? @@ -511,12 +511,12 @@ void XEmitter::ABI_PushAllCalleeSavedRegsAndAdjustStack() { void XEmitter::ABI_PopAllCalleeSavedRegsAndAdjustStack() { ADD(64, R(RSP), Imm8(0x28)); POP(R15); - POP(R14); - POP(R13); + POP(R14); + POP(R13); POP(R12); POP(RDI); - POP(RSI); - POP(RBX); + POP(RSI); + POP(RBX); POP(RBP); } @@ -526,10 +526,10 @@ void XEmitter::ABI_PopAllCalleeSavedRegsAndAdjustStack() { void XEmitter::ABI_PushAllCalleeSavedRegsAndAdjustStack() { PUSH(RBP); MOV(64, R(RBP), R(RSP)); - PUSH(RBX); - PUSH(R12); - PUSH(R13); - PUSH(R14); + PUSH(RBX); + PUSH(R12); + PUSH(R13); + PUSH(R14); PUSH(R15); SUB(64, R(RSP), Imm8(8)); } @@ -537,10 +537,10 @@ void XEmitter::ABI_PushAllCalleeSavedRegsAndAdjustStack() { void XEmitter::ABI_PopAllCalleeSavedRegsAndAdjustStack() { ADD(64, R(RSP), Imm8(8)); POP(R15); - POP(R14); - POP(R13); + POP(R14); + POP(R13); POP(R12); - POP(RBX); + POP(RBX); POP(RBP); } diff --git a/Source/Core/Common/Src/x64ABI.h b/Source/Core/Common/Src/x64ABI.h index e06cdbcc0b..c315c9cdd0 100644 --- a/Source/Core/Common/Src/x64ABI.h +++ b/Source/Core/Common/Src/x64ABI.h @@ -48,7 +48,7 @@ #else // 64 bit calling convention -#ifdef _WIN32 // 64-bit Windows - the really exotic calling convention +#ifdef _WIN32 // 64-bit Windows - the really exotic calling convention #define ABI_PARAM1 RCX #define ABI_PARAM2 RDX diff --git a/Source/Core/Common/Src/x64Analyzer.cpp b/Source/Core/Common/Src/x64Analyzer.cpp index e41b8ce5dd..eac178ff21 100644 --- a/Source/Core/Common/Src/x64Analyzer.cpp +++ b/Source/Core/Common/Src/x64Analyzer.cpp @@ -10,7 +10,7 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo *info) u8 rex = 0; u8 codeByte = 0; u8 codeByte2 = 0; - + //Check for regular prefix info->operandSize = 4; info->zeroExtend = false; @@ -28,7 +28,7 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo *info) { info->operandSize = 2; codePtr++; - } + } else if (*codePtr == 0x67) { codePtr++; @@ -47,17 +47,17 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo *info) codeByte = *codePtr++; - // Skip two-byte opcode byte - bool twoByte = false; - if(codeByte == 0x0F) + // Skip two-byte opcode byte + bool twoByte = false; + if(codeByte == 0x0F) { - twoByte = true; + twoByte = true; codeByte2 = *codePtr++; } if (!twoByte) { - if ((codeByte & 0xF0) == 0x80 || + if ((codeByte & 0xF0) == 0x80 || ((codeByte & 0xF8) == 0xC0 && (codeByte & 0x0E) != 0x02)) { modRMbyte = *codePtr++; @@ -66,20 +66,20 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo *info) } else { - if (((codeByte2 & 0xF0) == 0x00 && (codeByte2 & 0x0F) >= 0x04 && (codeByte2 & 0x0D) != 0x0D) || - (codeByte2 & 0xF0) == 0x30 || - codeByte2 == 0x77 || - (codeByte2 & 0xF0) == 0x80 || - ((codeByte2 & 0xF0) == 0xA0 && (codeByte2 & 0x07) <= 0x02) || - (codeByte2 & 0xF8) == 0xC8) + if (((codeByte2 & 0xF0) == 0x00 && (codeByte2 & 0x0F) >= 0x04 && (codeByte2 & 0x0D) != 0x0D) || + (codeByte2 & 0xF0) == 0x30 || + codeByte2 == 0x77 || + (codeByte2 & 0xF0) == 0x80 || + ((codeByte2 & 0xF0) == 0xA0 && (codeByte2 & 0x07) <= 0x02) || + (codeByte2 & 0xF8) == 0xC8) { - // No mod R/M byte + // No mod R/M byte } - else + else { modRMbyte = *codePtr++; hasModRM = true; - } + } } if (hasModRM) @@ -99,7 +99,7 @@ bool DisassembleMov(const unsigned char *codePtr, InstructionInfo *info) } else { - //info->scaledReg = + //info->scaledReg = } } if (mrm.mod == 1 || mrm.mod == 2) diff --git a/Source/Core/Common/Src/x64CPUDetect.cpp b/Source/Core/Common/Src/x64CPUDetect.cpp index 43c93ae8d6..07b35cb968 100644 --- a/Source/Core/Common/Src/x64CPUDetect.cpp +++ b/Source/Core/Common/Src/x64CPUDetect.cpp @@ -114,19 +114,19 @@ void CPUInfo::Detect() OS64bit = (f64 == TRUE) ? true : false; #endif #endif - + // Set obvious defaults, for extra safety if (Mode64bit) { bSSE = true; bSSE2 = true; bLongMode = true; } - + // Assume CPU supports the CPUID instruction. Those that don't can barely // boot modern OS:es anyway. int cpu_id[4]; memset(cpu_string, 0, sizeof(cpu_string)); - + // Detect CPU's CPUID capabilities, and grab cpu string __cpuid(cpu_id, 0x00000000); u32 max_std_fn = cpu_id[0]; // EAX @@ -141,10 +141,10 @@ void CPUInfo::Detect() vendor = VENDOR_AMD; else vendor = VENDOR_OTHER; - + // Set reasonable default brand string even if brand string not available. strcpy(brand_string, cpu_string); - + // Detect family and other misc stuff. bool ht = false; HTT = ht; @@ -189,7 +189,7 @@ void CPUInfo::Detect() } num_cores = (logical_cpu_count == 0) ? 1 : logical_cpu_count; - + if (max_ex_fn >= 0x80000008) { // Get number of cores. This is a bit complicated. Following AMD manual here. __cpuid(cpu_id, 0x80000008); @@ -210,7 +210,7 @@ void CPUInfo::Detect() // Use AMD's new method. num_cores = (cpu_id[2] & 0xFF) + 1; } - } + } } // Turn the cpu info into a string we can show diff --git a/Source/Core/Common/Src/x64Emitter.cpp b/Source/Core/Common/Src/x64Emitter.cpp index a5d7cb2f0f..8b3002b26a 100644 --- a/Source/Core/Common/Src/x64Emitter.cpp +++ b/Source/Core/Common/Src/x64Emitter.cpp @@ -16,7 +16,7 @@ struct NormalOpDef u8 toRm8, toRm32, fromRm8, fromRm32, imm8, imm32, simm8, ext; }; -static const NormalOpDef nops[11] = +static const NormalOpDef nops[11] = { {0x00, 0x01, 0x02, 0x03, 0x80, 0x81, 0x83, 0}, //ADD {0x10, 0x11, 0x12, 0x13, 0x80, 0x81, 0x83, 2}, //ADC @@ -230,7 +230,7 @@ void OpArg::WriteRest(XEmitter *emit, int extraBytes, X64Reg _operandReg, SIB = true; } - if (scale == SCALE_ATREG && ((_offsetOrBaseReg & 7) == 4)) + if (scale == SCALE_ATREG && ((_offsetOrBaseReg & 7) == 4)) { SIB = true; ireg = _offsetOrBaseReg; @@ -255,7 +255,7 @@ void OpArg::WriteRest(XEmitter *emit, int extraBytes, X64Reg _operandReg, int oreg = _offsetOrBaseReg; if (SIB) oreg = 4; - + // TODO(ector): WTF is this if about? I don't remember writing it :-) //if (RIP) // oreg = 5; @@ -268,7 +268,7 @@ void OpArg::WriteRest(XEmitter *emit, int extraBytes, X64Reg _operandReg, int ss; switch (scale) { - case SCALE_NONE: _offsetOrBaseReg = 4; ss = 0; break; //RSP + case SCALE_NONE: _offsetOrBaseReg = 4; ss = 0; break; //RSP case SCALE_1: ss = 0; break; case SCALE_2: ss = 1; break; case SCALE_4: ss = 2; break; @@ -299,7 +299,7 @@ void OpArg::WriteRest(XEmitter *emit, int extraBytes, X64Reg _operandReg, // B = base register# upper bit void XEmitter::Rex(int w, int r, int x, int b) { - w = w ? 1 : 0; + w = w ? 1 : 0; r = r ? 1 : 0; x = x ? 1 : 0; b = b ? 1 : 0; @@ -495,7 +495,7 @@ void XEmitter::NOP(int count) } break; } -} +} void XEmitter::PAUSE() {Write8(0xF3); NOP();} //use in tight spinloops for energy saving on some cpu void XEmitter::CLC() {Write8(0xF8);} //clear carry @@ -557,8 +557,8 @@ void XEmitter::CBW(int bits) void XEmitter::PUSH(X64Reg reg) {WriteSimple1Byte(32, 0x50, reg);} void XEmitter::POP(X64Reg reg) {WriteSimple1Byte(32, 0x58, reg);} -void XEmitter::PUSH(int bits, const OpArg ®) -{ +void XEmitter::PUSH(int bits, const OpArg ®) +{ if (reg.IsSimpleReg()) PUSH(reg.GetSimpleReg()); else if (reg.IsImm()) @@ -594,7 +594,7 @@ void XEmitter::PUSH(int bits, const OpArg ®) } void XEmitter::POP(int /*bits*/, const OpArg ®) -{ +{ if (reg.IsSimpleReg()) POP(reg.GetSimpleReg()); else @@ -787,7 +787,7 @@ void XEmitter::WriteShift(int bits, OpArg dest, OpArg &shift, int ext) } if ((shift.IsSimpleReg() && shift.GetSimpleReg() != ECX) || (shift.IsImm() && shift.GetImmBits() != 8)) { - _assert_msg_(DYNA_REC, 0, "WriteShift - illegal argument"); + _assert_msg_(DYNA_REC, 0, "WriteShift - illegal argument"); } dest.operandReg = ext; if (bits == 16) Write8(0x66); @@ -834,7 +834,7 @@ void XEmitter::WriteBitTest(int bits, OpArg &dest, OpArg &index, int ext) } if ((index.IsImm() && index.GetImmBits() != 8)) { - _assert_msg_(DYNA_REC, 0, "WriteBitTest - illegal argument"); + _assert_msg_(DYNA_REC, 0, "WriteBitTest - illegal argument"); } if (bits == 16) Write8(0x66); if (index.IsImm()) @@ -871,7 +871,7 @@ void XEmitter::SHRD(int bits, OpArg dest, OpArg src, OpArg shift) } if ((shift.IsSimpleReg() && shift.GetSimpleReg() != ECX) || (shift.IsImm() && shift.GetImmBits() != 8)) { - _assert_msg_(DYNA_REC, 0, "SHRD - illegal shift"); + _assert_msg_(DYNA_REC, 0, "SHRD - illegal shift"); } if (bits == 16) Write8(0x66); X64Reg operand = src.GetSimpleReg(); @@ -901,7 +901,7 @@ void XEmitter::SHLD(int bits, OpArg dest, OpArg src, OpArg shift) } if ((shift.IsSimpleReg() && shift.GetSimpleReg() != ECX) || (shift.IsImm() && shift.GetImmBits() != 8)) { - _assert_msg_(DYNA_REC, 0, "SHLD - illegal shift"); + _assert_msg_(DYNA_REC, 0, "SHLD - illegal shift"); } if (bits == 16) Write8(0x66); X64Reg operand = src.GetSimpleReg(); @@ -954,13 +954,13 @@ void OpArg::WriteNormalOp(XEmitter *emit, bool toRM, NormalOp op, const OpArg &o _assert_msg_(DYNA_REC, 0, "WriteNormalOp - Writing to Imm (!toRM)"); } - if (operand.scale == SCALE_IMM8 && bits == 8) + if (operand.scale == SCALE_IMM8 && bits == 8) { emit->Write8(nops[op].imm8); immToWrite = 8; } else if ((operand.scale == SCALE_IMM16 && bits == 16) || - (operand.scale == SCALE_IMM32 && bits == 32) || + (operand.scale == SCALE_IMM32 && bits == 32) || (operand.scale == SCALE_IMM32 && bits == 64)) { emit->Write8(nops[op].imm32); @@ -1056,11 +1056,11 @@ void XEmitter::SBB (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(t void XEmitter::AND (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(this, bits, nrmAND, a1, a2);} void XEmitter::OR (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(this, bits, nrmOR , a1, a2);} void XEmitter::XOR (int bits, const OpArg &a1, const OpArg &a2) {WriteNormalOp(this, bits, nrmXOR, a1, a2);} -void XEmitter::MOV (int bits, const OpArg &a1, const OpArg &a2) +void XEmitter::MOV (int bits, const OpArg &a1, const OpArg &a2) { #ifdef _DEBUG - _assert_msg_(DYNA_REC, !a1.IsSimpleReg() || !a2.IsSimpleReg() || a1.GetSimpleReg() != a2.GetSimpleReg(), "Redundant MOV @ %p - bug in JIT?", - code); + _assert_msg_(DYNA_REC, !a1.IsSimpleReg() || !a2.IsSimpleReg() || a1.GetSimpleReg() != a2.GetSimpleReg(), "Redundant MOV @ %p - bug in JIT?", + code); #endif WriteNormalOp(this, bits, nrmMOV, a1, a2); } @@ -1188,7 +1188,7 @@ void XEmitter::MOVQ_xmm(OpArg arg, X64Reg src) { void XEmitter::WriteMXCSR(OpArg arg, int ext) { - if (arg.IsImm() || arg.IsSimpleReg()) + if (arg.IsImm() || arg.IsSimpleReg()) _assert_msg_(DYNA_REC, 0, "MXCSR - invalid operand"); arg.operandReg = ext; @@ -1248,8 +1248,8 @@ void XEmitter::MAXPD(X64Reg regOp, OpArg arg) {WriteSSEOp(64, sseMAX, true, re void XEmitter::SQRTPS(X64Reg regOp, OpArg arg) {WriteSSEOp(32, sseSQRT, true, regOp, arg);} void XEmitter::SQRTPD(X64Reg regOp, OpArg arg) {WriteSSEOp(64, sseSQRT, true, regOp, arg);} void XEmitter::RSQRTPS(X64Reg regOp, OpArg arg) {WriteSSEOp(32, sseRSQRT, true, regOp, arg);} -void XEmitter::SHUFPS(X64Reg regOp, OpArg arg, u8 shuffle) {WriteSSEOp(32, sseSHUF, true, regOp, arg,1); Write8(shuffle);} -void XEmitter::SHUFPD(X64Reg regOp, OpArg arg, u8 shuffle) {WriteSSEOp(64, sseSHUF, true, regOp, arg,1); Write8(shuffle);} +void XEmitter::SHUFPS(X64Reg regOp, OpArg arg, u8 shuffle) {WriteSSEOp(32, sseSHUF, true, regOp, arg,1); Write8(shuffle);} +void XEmitter::SHUFPD(X64Reg regOp, OpArg arg, u8 shuffle) {WriteSSEOp(64, sseSHUF, true, regOp, arg,1); Write8(shuffle);} void XEmitter::COMISS(X64Reg regOp, OpArg arg) {WriteSSEOp(32, sseCOMIS, true, regOp, arg);} //weird that these should be packed void XEmitter::COMISD(X64Reg regOp, OpArg arg) {WriteSSEOp(64, sseCOMIS, true, regOp, arg);} //ordered @@ -1300,7 +1300,7 @@ void XEmitter::UNPCKHPS(X64Reg dest, OpArg arg) {WriteSSEOp(32, 0x15, true, dest void XEmitter::UNPCKLPD(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x14, true, dest, arg);} void XEmitter::UNPCKHPD(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x15, true, dest, arg);} -void XEmitter::MOVDDUP(X64Reg regOp, OpArg arg) +void XEmitter::MOVDDUP(X64Reg regOp, OpArg arg) { if (cpu_info.bSSE3) { @@ -1456,7 +1456,7 @@ void XEmitter::FWAIT() } void XEmitter::RTDSC() { Write8(0x0F); Write8(0x31); } - + // helper routines for setting pointers void XEmitter::CallCdeclFunction3(void* fnptr, u32 arg0, u32 arg1, u32 arg2) { diff --git a/Source/Core/Common/Src/x64Emitter.h b/Source/Core/Common/Src/x64Emitter.h index 94938b290a..6ce16abcce 100644 --- a/Source/Core/Common/Src/x64Emitter.h +++ b/Source/Core/Common/Src/x64Emitter.h @@ -17,7 +17,7 @@ enum X64Reg { EAX = 0, EBX = 3, ECX = 1, EDX = 2, ESI = 6, EDI = 7, EBP = 5, ESP = 4, - + RAX = 0, RBX = 3, RCX = 1, RDX = 2, RSI = 6, RDI = 7, RBP = 5, RSP = 4, R8 = 8, R9 = 9, R10 = 10,R11 = 11, @@ -30,7 +30,7 @@ enum X64Reg AX = 0, BX = 3, CX = 1, DX = 2, SI = 6, DI = 7, BP = 5, SP = 4, - XMM0=0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, + XMM0=0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, INVALID_REG = 0xFFFFFFFF @@ -43,7 +43,7 @@ enum CCFlags CC_B = 2, CC_C = 2, CC_NAE = 2, CC_NB = 3, CC_NC = 3, CC_AE = 3, CC_Z = 4, CC_E = 4, - CC_NZ = 5, CC_NE = 5, + CC_NZ = 5, CC_NE = 5, CC_BE = 6, CC_NA = 6, CC_NBE = 7, CC_A = 7, CC_S = 8, @@ -264,7 +264,7 @@ public: u8 *GetWritableCodePtr(); // Looking for one of these? It's BANNED!! Some instructions are slow on modern CPU - // INC, DEC, LOOP, LOOPNE, LOOPE, ENTER, LEAVE, XCHG, XLAT, REP MOVSB/MOVSD, REP SCASD + other string instr., + // INC, DEC, LOOP, LOOPNE, LOOPE, ENTER, LEAVE, XCHG, XLAT, REP MOVSB/MOVSD, REP SCASD + other string instr., // INC and DEC are slow on Intel Core, but not on AMD. They create a // false flag dependency because they only update a subset of the flags. // XCHG is SLOW and should be avoided. @@ -353,7 +353,7 @@ public: void DIV(int bits, OpArg src); void IDIV(int bits, OpArg src); - // Shift + // Shift void ROL(int bits, OpArg dest, OpArg shift); void ROR(int bits, OpArg dest, OpArg shift); void RCL(int bits, OpArg dest, OpArg shift); @@ -408,7 +408,7 @@ public: // Sign/zero extension void MOVSX(int dbits, int sbits, X64Reg dest, OpArg src); //automatically uses MOVSXD if necessary - void MOVZX(int dbits, int sbits, X64Reg dest, OpArg src); + void MOVZX(int dbits, int sbits, X64Reg dest, OpArg src); // WARNING - These two take 11-13 cycles and are VectorPath! (AMD64) void STMXCSR(OpArg memloc); @@ -422,40 +422,40 @@ public: void FWAIT(); // SSE/SSE2: Floating point arithmetic - void ADDSS(X64Reg regOp, OpArg arg); - void ADDSD(X64Reg regOp, OpArg arg); - void SUBSS(X64Reg regOp, OpArg arg); - void SUBSD(X64Reg regOp, OpArg arg); - void MULSS(X64Reg regOp, OpArg arg); - void MULSD(X64Reg regOp, OpArg arg); - void DIVSS(X64Reg regOp, OpArg arg); - void DIVSD(X64Reg regOp, OpArg arg); - void MINSS(X64Reg regOp, OpArg arg); - void MINSD(X64Reg regOp, OpArg arg); - void MAXSS(X64Reg regOp, OpArg arg); - void MAXSD(X64Reg regOp, OpArg arg); - void SQRTSS(X64Reg regOp, OpArg arg); - void SQRTSD(X64Reg regOp, OpArg arg); + void ADDSS(X64Reg regOp, OpArg arg); + void ADDSD(X64Reg regOp, OpArg arg); + void SUBSS(X64Reg regOp, OpArg arg); + void SUBSD(X64Reg regOp, OpArg arg); + void MULSS(X64Reg regOp, OpArg arg); + void MULSD(X64Reg regOp, OpArg arg); + void DIVSS(X64Reg regOp, OpArg arg); + void DIVSD(X64Reg regOp, OpArg arg); + void MINSS(X64Reg regOp, OpArg arg); + void MINSD(X64Reg regOp, OpArg arg); + void MAXSS(X64Reg regOp, OpArg arg); + void MAXSD(X64Reg regOp, OpArg arg); + void SQRTSS(X64Reg regOp, OpArg arg); + void SQRTSD(X64Reg regOp, OpArg arg); void RSQRTSS(X64Reg regOp, OpArg arg); // SSE/SSE2: Floating point bitwise (yes) - void CMPSS(X64Reg regOp, OpArg arg, u8 compare); - void CMPSD(X64Reg regOp, OpArg arg, u8 compare); - void ANDSS(X64Reg regOp, OpArg arg); - void ANDSD(X64Reg regOp, OpArg arg); - void ANDNSS(X64Reg regOp, OpArg arg); - void ANDNSD(X64Reg regOp, OpArg arg); - void ORSS(X64Reg regOp, OpArg arg); - void ORSD(X64Reg regOp, OpArg arg); - void XORSS(X64Reg regOp, OpArg arg); - void XORSD(X64Reg regOp, OpArg arg); + void CMPSS(X64Reg regOp, OpArg arg, u8 compare); + void CMPSD(X64Reg regOp, OpArg arg, u8 compare); + void ANDSS(X64Reg regOp, OpArg arg); + void ANDSD(X64Reg regOp, OpArg arg); + void ANDNSS(X64Reg regOp, OpArg arg); + void ANDNSD(X64Reg regOp, OpArg arg); + void ORSS(X64Reg regOp, OpArg arg); + void ORSD(X64Reg regOp, OpArg arg); + void XORSS(X64Reg regOp, OpArg arg); + void XORSD(X64Reg regOp, OpArg arg); // SSE/SSE2: Floating point packed arithmetic (x4 for float, x2 for double) - void ADDPS(X64Reg regOp, OpArg arg); - void ADDPD(X64Reg regOp, OpArg arg); - void SUBPS(X64Reg regOp, OpArg arg); - void SUBPD(X64Reg regOp, OpArg arg); - void CMPPS(X64Reg regOp, OpArg arg, u8 compare); + void ADDPS(X64Reg regOp, OpArg arg); + void ADDPD(X64Reg regOp, OpArg arg); + void SUBPS(X64Reg regOp, OpArg arg); + void SUBPD(X64Reg regOp, OpArg arg); + void CMPPS(X64Reg regOp, OpArg arg, u8 compare); void CMPPD(X64Reg regOp, OpArg arg, u8 compare); void MULPS(X64Reg regOp, OpArg arg); void MULPD(X64Reg regOp, OpArg arg); @@ -470,8 +470,8 @@ public: void RSQRTPS(X64Reg regOp, OpArg arg); // SSE/SSE2: Floating point packed bitwise (x4 for float, x2 for double) - void ANDPS(X64Reg regOp, OpArg arg); - void ANDPD(X64Reg regOp, OpArg arg); + void ANDPS(X64Reg regOp, OpArg arg); + void ANDPD(X64Reg regOp, OpArg arg); void ANDNPS(X64Reg regOp, OpArg arg); void ANDNPD(X64Reg regOp, OpArg arg); void ORPS(X64Reg regOp, OpArg arg); @@ -480,9 +480,9 @@ public: void XORPD(X64Reg regOp, OpArg arg); // SSE/SSE2: Shuffle components. These are tricky - see Intel documentation. - void SHUFPS(X64Reg regOp, OpArg arg, u8 shuffle); - void SHUFPD(X64Reg regOp, OpArg arg, u8 shuffle); - + void SHUFPS(X64Reg regOp, OpArg arg, u8 shuffle); + void SHUFPD(X64Reg regOp, OpArg arg, u8 shuffle); + // SSE/SSE2: Useful alternative to shuffle in some cases. void MOVDDUP(X64Reg regOp, OpArg arg); @@ -554,51 +554,51 @@ public: void PUNPCKLDQ(X64Reg dest, const OpArg &arg); void PAND(X64Reg dest, OpArg arg); - void PANDN(X64Reg dest, OpArg arg); - void PXOR(X64Reg dest, OpArg arg); - void POR(X64Reg dest, OpArg arg); + void PANDN(X64Reg dest, OpArg arg); + void PXOR(X64Reg dest, OpArg arg); + void POR(X64Reg dest, OpArg arg); void PADDB(X64Reg dest, OpArg arg); - void PADDW(X64Reg dest, OpArg arg); - void PADDD(X64Reg dest, OpArg arg); - void PADDQ(X64Reg dest, OpArg arg); + void PADDW(X64Reg dest, OpArg arg); + void PADDD(X64Reg dest, OpArg arg); + void PADDQ(X64Reg dest, OpArg arg); - void PADDSB(X64Reg dest, OpArg arg); - void PADDSW(X64Reg dest, OpArg arg); - void PADDUSB(X64Reg dest, OpArg arg); - void PADDUSW(X64Reg dest, OpArg arg); + void PADDSB(X64Reg dest, OpArg arg); + void PADDSW(X64Reg dest, OpArg arg); + void PADDUSB(X64Reg dest, OpArg arg); + void PADDUSW(X64Reg dest, OpArg arg); - void PSUBB(X64Reg dest, OpArg arg); - void PSUBW(X64Reg dest, OpArg arg); - void PSUBD(X64Reg dest, OpArg arg); - void PSUBQ(X64Reg dest, OpArg arg); + void PSUBB(X64Reg dest, OpArg arg); + void PSUBW(X64Reg dest, OpArg arg); + void PSUBD(X64Reg dest, OpArg arg); + void PSUBQ(X64Reg dest, OpArg arg); - void PSUBSB(X64Reg dest, OpArg arg); - void PSUBSW(X64Reg dest, OpArg arg); - void PSUBUSB(X64Reg dest, OpArg arg); - void PSUBUSW(X64Reg dest, OpArg arg); + void PSUBSB(X64Reg dest, OpArg arg); + void PSUBSW(X64Reg dest, OpArg arg); + void PSUBUSB(X64Reg dest, OpArg arg); + void PSUBUSW(X64Reg dest, OpArg arg); - void PAVGB(X64Reg dest, OpArg arg); - void PAVGW(X64Reg dest, OpArg arg); + void PAVGB(X64Reg dest, OpArg arg); + void PAVGW(X64Reg dest, OpArg arg); - void PCMPEQB(X64Reg dest, OpArg arg); - void PCMPEQW(X64Reg dest, OpArg arg); - void PCMPEQD(X64Reg dest, OpArg arg); + void PCMPEQB(X64Reg dest, OpArg arg); + void PCMPEQW(X64Reg dest, OpArg arg); + void PCMPEQD(X64Reg dest, OpArg arg); - void PCMPGTB(X64Reg dest, OpArg arg); - void PCMPGTW(X64Reg dest, OpArg arg); - void PCMPGTD(X64Reg dest, OpArg arg); + void PCMPGTB(X64Reg dest, OpArg arg); + void PCMPGTW(X64Reg dest, OpArg arg); + void PCMPGTD(X64Reg dest, OpArg arg); void PEXTRW(X64Reg dest, OpArg arg, u8 subreg); void PINSRW(X64Reg dest, OpArg arg, u8 subreg); - void PMADDWD(X64Reg dest, OpArg arg); - void PSADBW(X64Reg dest, OpArg arg); + void PMADDWD(X64Reg dest, OpArg arg); + void PSADBW(X64Reg dest, OpArg arg); - void PMAXSW(X64Reg dest, OpArg arg); - void PMAXUB(X64Reg dest, OpArg arg); - void PMINSW(X64Reg dest, OpArg arg); - void PMINUB(X64Reg dest, OpArg arg); + void PMAXSW(X64Reg dest, OpArg arg); + void PMAXUB(X64Reg dest, OpArg arg); + void PMINSW(X64Reg dest, OpArg arg); + void PMINUB(X64Reg dest, OpArg arg); void PMOVMSKB(X64Reg dest, OpArg arg); void PSHUFB(X64Reg dest, OpArg arg); @@ -625,7 +625,7 @@ public: void ABI_CallFunctionC16(void *func, u16 param1); void ABI_CallFunctionCC16(void *func, u32 param1, u16 param2); - + // These only support u32 parameters, but that's enough for a lot of uses. // These will destroy the 1 or 2 first "parameter regs". void ABI_CallFunctionC(void *func, u32 param1); @@ -666,12 +666,12 @@ public: void CallCdeclFunction5(void* fnptr, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4); void CallCdeclFunction6(void* fnptr, u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4, u32 arg5); -#if defined(_M_IX86) +#if defined(_M_IX86) #define CallCdeclFunction3_I(a,b,c,d) CallCdeclFunction3((void *)(a), (b), (c), (d)) - #define CallCdeclFunction4_I(a,b,c,d,e) CallCdeclFunction4((void *)(a), (b), (c), (d), (e)) - #define CallCdeclFunction5_I(a,b,c,d,e,f) CallCdeclFunction5((void *)(a), (b), (c), (d), (e), (f)) - #define CallCdeclFunction6_I(a,b,c,d,e,f,g) CallCdeclFunction6((void *)(a), (b), (c), (d), (e), (f), (g)) + #define CallCdeclFunction4_I(a,b,c,d,e) CallCdeclFunction4((void *)(a), (b), (c), (d), (e)) + #define CallCdeclFunction5_I(a,b,c,d,e,f) CallCdeclFunction5((void *)(a), (b), (c), (d), (e), (f)) + #define CallCdeclFunction6_I(a,b,c,d,e,f,g) CallCdeclFunction6((void *)(a), (b), (c), (d), (e), (f), (g)) #define DECLARE_IMPORT(x) @@ -722,7 +722,7 @@ public: // Always clear code space with breakpoints, so that if someone accidentally executes // uninitialized, it just breaks into the debugger. - void ClearCodeSpace() + void ClearCodeSpace() { // x86/64: 0xCC = breakpoint memset(region, 0xCC, region_size); diff --git a/Source/Core/Common/Src/x64FPURoundMode.cpp b/Source/Core/Common/Src/x64FPURoundMode.cpp index 0a2dc3acb5..2c950ade96 100644 --- a/Source/Core/Common/Src/x64FPURoundMode.cpp +++ b/Source/Core/Common/Src/x64FPURoundMode.cpp @@ -30,7 +30,7 @@ namespace FPURoundMode #ifdef _M_IX86 // This shouldn't really be needed anymore since we use SSE #ifdef _WIN32 - const int table[4] = + const int table[4] = { _RC_NEAR, _RC_CHOP, @@ -39,7 +39,7 @@ namespace FPURoundMode }; _set_controlfp(_MCW_RC, table[mode]); #else - const unsigned short table[4] = + const unsigned short table[4] = { FPU_ROUND_NEAR, FPU_ROUND_CHOP, @@ -81,7 +81,7 @@ namespace FPURoundMode } void SetSIMDMode(u32 mode) { - static const u32 ssetable[4] = + static const u32 ssetable[4] = { (0 << 13) | MASKS, (3 << 13) | MASKS, diff --git a/Source/Core/Core/Src/ActionReplay.cpp b/Source/Core/Core/Src/ActionReplay.cpp index 505c67ddc2..e07f297e09 100644 --- a/Source/Core/Core/Src/ActionReplay.cpp +++ b/Source/Core/Core/Src/ActionReplay.cpp @@ -38,13 +38,13 @@ enum { // Zero Code Types ZCODE_END = 0x00, - ZCODE_NORM = 0x02, - ZCODE_ROW = 0x03, + ZCODE_NORM = 0x02, + ZCODE_ROW = 0x03, ZCODE_04 = 0x04, // Conditional Codes CONDTIONAL_EQUAL = 0x01, - CONDTIONAL_NOT_EQUAL = 0x02, + CONDTIONAL_NOT_EQUAL = 0x02, CONDTIONAL_LESS_THAN_SIGNED = 0x03, CONDTIONAL_GREATER_THAN_SIGNED = 0x04, CONDTIONAL_LESS_THAN_UNSIGNED = 0x05, @@ -59,14 +59,14 @@ enum // Data Types DATATYPE_8BIT = 0x00, - DATATYPE_16BIT = 0x01, - DATATYPE_32BIT = 0x02, + DATATYPE_16BIT = 0x01, + DATATYPE_32BIT = 0x02, DATATYPE_32BIT_FLOAT = 0x03, // Normal Code 0 Subtypes SUB_RAM_WRITE = 0x00, - SUB_WRITE_POINTER = 0x01, - SUB_ADD_CODE = 0x02, + SUB_WRITE_POINTER = 0x01, + SUB_ADD_CODE = 0x02, SUB_MASTER_CODE = 0x03, }; @@ -114,8 +114,8 @@ bool CompareValues(const u32 val1, const u32 val2, const int type); void LoadCodes(IniFile &globalIni, IniFile &localIni, bool forceLoad) { // Parses the Action Replay section of a game ini file. - if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats - && !forceLoad) + if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats + && !forceLoad) return; arCodes.clear(); @@ -196,7 +196,7 @@ void LoadCodes(IniFile &globalIni, IniFile &localIni, bool forceLoad) else { SplitString(line, '-', pieces); - if (pieces.size() == 3 && pieces[0].size() == 4 && pieces[1].size() == 4 && pieces[2].size() == 5) + if (pieces.size() == 3 && pieces[0].size() == 4 && pieces[1].size() == 4 && pieces[2].size() == 5) { // Encrypted AR code // Decryption is done in "blocks", so we must push blocks into a vector, @@ -231,7 +231,7 @@ void LoadCodes(std::vector &_arCodes, IniFile &globalIni, IniFile& local void LogInfo(const char *format, ...) { - if (!b_RanOnce) + if (!b_RanOnce) { if (LogManager::GetMaxLevel() >= LogTypes::LINFO || logSelf) { @@ -257,7 +257,7 @@ void RunAllActive() { if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats) { - for (auto& activeCode : activeCodes) + for (auto& activeCode : activeCodes) { if (activeCode.active) { @@ -390,7 +390,7 @@ bool RunCode(const ARCode &arcode) doMemoryCopy = true; val_last = data; } - else + else { LogInfo("ZCode: Fill And Slide"); doFillNSlide = true; @@ -398,9 +398,9 @@ bool RunCode(const ARCode &arcode) } break; - default: + default: LogInfo("ZCode: Unknown"); - PanicAlertT("Zero code unknown to dolphin: %08x", zcode); + PanicAlertT("Zero code unknown to dolphin: %08x", zcode); return false; break; } @@ -702,7 +702,7 @@ bool ZeroCode_FillAndSlide(const u32 val_last, const ARAddr addr, const u32 data case DATATYPE_8BIT: LogInfo("8-bit Write"); LogInfo("--------"); - for (int i = 0; i < write_num; ++i) + for (int i = 0; i < write_num; ++i) { Memory::Write_U8(val & 0xFF, curr_addr); curr_addr += addr_incr; @@ -766,7 +766,7 @@ bool ZeroCode_MemoryCopy(const u32 val_last, const ARAddr addr, const u32 data) LogInfo("Size: %08x", num_bytes); if ((data & ~0x7FFF) == 0x0000) - { + { if ((data >> 24) != 0x0) { // Memory Copy With Pointers Support LogInfo("Memory Copy With Pointers Support"); diff --git a/Source/Core/Core/Src/ArmMemTools.cpp b/Source/Core/Core/Src/ArmMemTools.cpp index d2c003060f..262c59fc53 100644 --- a/Source/Core/Core/Src/ArmMemTools.cpp +++ b/Source/Core/Core/Src/ArmMemTools.cpp @@ -66,7 +66,7 @@ void sigsegv_handler(int signal, siginfo_t *info, void *raw_context) void *fault_memory_ptr = (void*)ctx->arm_r10; u8 *fault_instruction_ptr = (u8 *)ctx->arm_pc; - + if (!JitInterface::IsInCodeSpace(fault_instruction_ptr)) { // Let's not prevent debugging. return; diff --git a/Source/Core/Core/Src/Boot/Boot.cpp b/Source/Core/Core/Src/Boot/Boot.cpp index dc4daec2a9..97888c995c 100644 --- a/Source/Core/Core/Src/Boot/Boot.cpp +++ b/Source/Core/Core/Src/Boot/Boot.cpp @@ -41,11 +41,11 @@ void CBoot::Load_FST(bool _bIsWii) return; // copy first 20 bytes of disc to start of Mem 1 - VolumeHandler::ReadToPtr(Memory::GetPointer(0x80000000), 0, 0x20); + VolumeHandler::ReadToPtr(Memory::GetPointer(0x80000000), 0, 0x20); // copy of game id Memory::Write_U32(Memory::Read_U32(0x80000000), 0x80003180); - + u32 shift = 0; if (_bIsWii) shift = 2; @@ -137,7 +137,7 @@ bool CBoot::LoadMapFromFilename() return false; } -// If ipl.bin is not found, this function does *some* of what BS1 does: +// If ipl.bin is not found, this function does *some* of what BS1 does: // loading IPL(BS2) and jumping to it. // It does not initialize the hardware or anything else like BS1 does. bool CBoot::Load_BS2(const std::string& _rBootROMFilename) @@ -190,7 +190,7 @@ bool CBoot::Load_BS2(const std::string& _rBootROMFilename) // Third boot step after BootManager and Core. See Call schedule in BootManager.cpp bool CBoot::BootUp() { - SCoreStartupParameter& _StartupPara = + SCoreStartupParameter& _StartupPara = SConfig::GetInstance().m_LocalCoreStartupParameter; NOTICE_LOG(BOOT, "Booting %s", _StartupPara.m_strFilename.c_str()); @@ -295,7 +295,7 @@ bool CBoot::BootUp() NOTICE_LOG(BOOT, "Setting DVDRoot %s", _StartupPara.m_strDVDRoot.c_str()); VolumeHandler::SetVolumeDirectory(_StartupPara.m_strDVDRoot, dolWii, _StartupPara.m_strApploader, _StartupPara.m_strFilename); BS2Success = EmulatedBS2(dolWii); - } + } DVDInterface::SetDiscInside(VolumeHandler::IsValid()); @@ -326,7 +326,7 @@ bool CBoot::BootUp() if (elfWii != _StartupPara.bWii) { PanicAlertT("Warning - starting ELF in wrong console mode!"); - } + } bool BS2Success = false; @@ -347,7 +347,7 @@ bool CBoot::BootUp() // TODO: auto-convert elf to dol, so we can load them :) VolumeHandler::SetVolumeDirectory(_StartupPara.m_strDVDRoot, elfWii); BS2Success = EmulatedBS2(elfWii); - } + } else if (!_StartupPara.m_strDefaultGCM.empty()) { NOTICE_LOG(BOOT, "Loading default ISO %s", _StartupPara.m_strDefaultGCM.c_str()); @@ -364,7 +364,7 @@ bool CBoot::BootUp() else // Poor man's bootup { Load_FST(elfWii); - Boot_ELF(_StartupPara.m_strFilename.c_str()); + Boot_ELF(_StartupPara.m_strFilename.c_str()); } UpdateDebugger_MapLoaded(); Dolphin_Debugger::AddAutoBreakpoints(); diff --git a/Source/Core/Core/Src/Boot/Boot_DOL.cpp b/Source/Core/Core/Src/Boot/Boot_DOL.cpp index 10e7f20dd2..58316576a5 100644 --- a/Source/Core/Core/Src/Boot/Boot_DOL.cpp +++ b/Source/Core/Core/Src/Boot/Boot_DOL.cpp @@ -20,7 +20,7 @@ CDolLoader::CDolLoader(const char* _szFilename) u8* const tmpBuffer = new u8[(size_t)size]; { - File::IOFile pStream(_szFilename, "rb"); + File::IOFile pStream(_szFilename, "rb"); pStream.ReadBytes(tmpBuffer, (size_t)size); } @@ -44,19 +44,19 @@ CDolLoader::~CDolLoader() } void CDolLoader::Initialize(u8* _pBuffer, u32 _Size) -{ +{ memcpy(&m_dolheader, _pBuffer, sizeof(SDolHeader)); // swap memory u32* p = (u32*)&m_dolheader; - for (size_t i = 0; i < (sizeof(SDolHeader)/sizeof(u32)); i++) + for (size_t i = 0; i < (sizeof(SDolHeader)/sizeof(u32)); i++) p[i] = Common::swap32(p[i]); for (auto& sect : text_section) sect = NULL; for (auto& sect : data_section) sect = NULL; - + u32 HID4_pattern = 0x7c13fba6; u32 HID4_mask = 0xfc1fffff; diff --git a/Source/Core/Core/Src/Boot/Boot_ELF.cpp b/Source/Core/Core/Src/Boot/Boot_ELF.cpp index 99b0c3c0a3..725332685b 100644 --- a/Source/Core/Core/Src/Boot/Boot_ELF.cpp +++ b/Source/Core/Core/Src/Boot/Boot_ELF.cpp @@ -21,10 +21,10 @@ bool CBoot::IsElfWii(const char *filename) File::IOFile f(filename, "rb"); f.ReadBytes(mem, (size_t)filesize); } - + // Use the same method as the DOL loader uses: search for mfspr from HID4, // which should only be used in Wii ELFs. - // + // // Likely to have some false positives/negatives, patches implementing a // better heuristic are welcome. @@ -63,7 +63,7 @@ bool CBoot::Boot_ELF(const char *filename) File::IOFile f(filename, "rb"); f.ReadBytes(mem, (size_t)filesize); } - + ElfReader reader(mem); reader.LoadInto(0x80000000); if (!reader.LoadSymbols()) @@ -75,7 +75,7 @@ bool CBoot::Boot_ELF(const char *filename) { HLE::PatchFunctions(); } - + PC = reader.GetEntryPoint(); delete[] mem; diff --git a/Source/Core/Core/Src/Boot/Boot_WiiWAD.cpp b/Source/Core/Core/Src/Boot/Boot_WiiWAD.cpp index 42d1b72708..ac950d5038 100644 --- a/Source/Core/Core/Src/Boot/Boot_WiiWAD.cpp +++ b/Source/Core/Core/Src/Boot/Boot_WiiWAD.cpp @@ -45,7 +45,7 @@ typedef struct { bool CBoot::Boot_WiiWAD(const char* _pFilename) { - + std::string state_filename(Common::GetTitleDataPath(TITLEID_SYSMENU) + WII_STATE); if (File::Exists(state_filename)) @@ -53,7 +53,7 @@ bool CBoot::Boot_WiiWAD(const char* _pFilename) File::IOFile state_file(state_filename, "r+b"); StateFlags state; state_file.ReadBytes(&state, sizeof(StateFlags)); - + state.type = 0x03; // TYPE_RETURN state.checksum = state_checksum((u32*)&state.flags, sizeof(StateFlags)-4); @@ -79,7 +79,7 @@ bool CBoot::Boot_WiiWAD(const char* _pFilename) u64 titleID = ContentLoader.GetTitleID(); // create data directory File::CreateFullPath(Common::GetTitleDataPath(titleID)); - + if (titleID == TITLEID_SYSMENU) HLE_IPC_CreateVirtualFATFilesystem(); // setup wii mem diff --git a/Source/Core/Core/Src/Boot/ElfReader.cpp b/Source/Core/Core/Src/Boot/ElfReader.cpp index 5aa0e2b78d..bfbeb91a3b 100644 --- a/Source/Core/Core/Src/Boot/ElfReader.cpp +++ b/Source/Core/Core/Src/Boot/ElfReader.cpp @@ -64,7 +64,7 @@ ElfReader::ElfReader(void *ptr) byteswapHeader(*header); segments = (Elf32_Phdr *)(base + header->e_phoff); - sections = (Elf32_Shdr *)(base + header->e_shoff); + sections = (Elf32_Shdr *)(base + header->e_shoff); for (int i = 0; i < GetNumSegments(); i++) { @@ -98,7 +98,7 @@ bool ElfReader::LoadInto(u32 vaddr) // sectionOffsets = new u32[GetNumSections()]; // sectionAddrs = new u32[GetNumSections()]; - + // Should we relocate? bRelocate = (header->e_type != ET_EXEC); @@ -123,7 +123,7 @@ bool ElfReader::LoadInto(u32 vaddr) Elf32_Phdr *p = segments + i; INFO_LOG(MASTER_LOG, "Type: %i Vaddr: %08x Filesz: %i Memsz: %i ", p->p_type, p->p_vaddr, p->p_filesz, p->p_memsz); - + if (p->p_type == PT_LOAD) { segmentVAddr[i] = baseAddress + p->p_vaddr; @@ -154,7 +154,7 @@ bool ElfReader::LoadInto(u32 vaddr) { Elf32_Shdr *s = §ions[i]; const char *name = GetSectionName(i); - + u32 writeAddr = s->sh_addr + baseAddress; sectionOffsets[i] = writeAddr - vaddr; sectionAddrs[i] = writeAddr; @@ -162,7 +162,7 @@ bool ElfReader::LoadInto(u32 vaddr) if (s->sh_flags & SHF_ALLOC) { LOG(MASTER_LOG,"Data Section found: %s Sitting at %08x, size %08x", name, writeAddr, s->sh_size); - + } else { diff --git a/Source/Core/Core/Src/Boot/ElfReader.h b/Source/Core/Core/Src/Boot/ElfReader.h index 47a4ef7103..c5befc7226 100644 --- a/Source/Core/Core/Src/Boot/ElfReader.h +++ b/Source/Core/Core/Src/Boot/ElfReader.h @@ -26,15 +26,15 @@ private: Elf32_Ehdr *header; Elf32_Phdr *segments; Elf32_Shdr *sections; - + u32 *sectionAddrs; bool bRelocate; u32 entryPoint; -public: +public: ElfReader(void *ptr); ~ElfReader() { } - + u32 Read32(int off) const { return base32[off>>2]; } // Quick accessors diff --git a/Source/Core/Core/Src/Boot/ElfTypes.h b/Source/Core/Core/Src/Boot/ElfTypes.h index c696b24a07..543c0de10c 100644 --- a/Source/Core/Core/Src/Boot/ElfTypes.h +++ b/Source/Core/Core/Src/Boot/ElfTypes.h @@ -107,12 +107,12 @@ enum ElfSectionFlags SHF_MASKPROC =0xF0000000, }; -// Symbol binding -#define STB_LOCAL 0 -#define STB_GLOBAL 1 -#define STB_WEAK 2 -#define STB_LOPROC 13 -#define STB_HIPROC 15 +// Symbol binding +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_LOPROC 13 +#define STB_HIPROC 15 // Symbol types #define STT_NOTYPE 0 @@ -191,7 +191,7 @@ typedef unsigned int Elf32_Word; // ELF file header -struct Elf32_Ehdr +struct Elf32_Ehdr { unsigned char e_ident[EI_NIDENT]; Elf32_Half e_type; @@ -210,7 +210,7 @@ struct Elf32_Ehdr }; // Section header -struct Elf32_Shdr +struct Elf32_Shdr { Elf32_Word sh_name; Elf32_Word sh_type; @@ -225,7 +225,7 @@ struct Elf32_Shdr }; // Segment header -struct Elf32_Phdr +struct Elf32_Phdr { Elf32_Word p_type; Elf32_Off p_offset; @@ -238,7 +238,7 @@ struct Elf32_Phdr }; // Symbol table entry -struct Elf32_Sym +struct Elf32_Sym { Elf32_Word st_name; Elf32_Addr st_value; @@ -253,13 +253,13 @@ struct Elf32_Sym #define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf)) // Relocation entries -struct Elf32_Rel +struct Elf32_Rel { Elf32_Addr r_offset; Elf32_Word r_info; }; -struct Elf32_Rela +struct Elf32_Rela { Elf32_Addr r_offset; Elf32_Word r_info; @@ -271,13 +271,13 @@ struct Elf32_Rela #define ELF32_R_INFO(s,t) (((s)<<8 )+(unsigned char)(t)) -struct Elf32_Dyn +struct Elf32_Dyn { Elf32_Sword d_tag; - union + union { Elf32_Word d_val; - Elf32_Addr d_ptr; + Elf32_Addr d_ptr; } d_un; }; diff --git a/Source/Core/Core/Src/BootManager.cpp b/Source/Core/Core/Src/BootManager.cpp index 99491ae2f4..6b9a42fa9c 100644 --- a/Source/Core/Core/Src/BootManager.cpp +++ b/Source/Core/Core/Src/BootManager.cpp @@ -9,7 +9,7 @@ // Call sequence: This file has one of the first function called when a game is booted, // the boot sequence in the code is: - + // DolphinWX: FrameTools.cpp StartGame // Core BootManager.cpp BootCore // Core.cpp Init Thread creation @@ -141,7 +141,7 @@ bool BootCore(const std::string& _rFilename) // Flush possible changes to SYSCONF to file SConfig::GetInstance().m_SYSCONF->Save(); } - } + } // movie settings if (Movie::IsPlayingInput() && Movie::IsConfigSaved()) diff --git a/Source/Core/Core/Src/ConfigManager.cpp b/Source/Core/Core/Src/ConfigManager.cpp index d87fdcc0b5..f28dfa5d21 100644 --- a/Source/Core/Core/Src/ConfigManager.cpp +++ b/Source/Core/Core/Src/ConfigManager.cpp @@ -171,8 +171,8 @@ void SConfig::SaveSettings() #ifdef USE_GDBSTUB ini.Set("General", "GDBPort", m_LocalCoreStartupParameter.iGDBPort); #endif - - // Interface + + // Interface ini.Set("Interface", "ConfirmStop", m_LocalCoreStartupParameter.bConfirmStop); ini.Set("Interface", "UsePanicHandlers", m_LocalCoreStartupParameter.bUsePanicHandlers); ini.Set("Interface", "OnScreenDisplayMessages", m_LocalCoreStartupParameter.bOnScreenDisplayMessages); diff --git a/Source/Core/Core/Src/Core.h b/Source/Core/Core/Src/Core.h index 8de14caa7f..2b966ea1db 100644 --- a/Source/Core/Core/Src/Core.h +++ b/Source/Core/Core/Src/Core.h @@ -66,7 +66,7 @@ inline void DisplayMessage(const std::string &message, int time_in_ms) { DisplayMessage(message.c_str(), time_in_ms); } - + std::string GetStateFileName(); void SetStateFileName(std::string val); diff --git a/Source/Core/Core/Src/CoreTiming.cpp b/Source/Core/Core/Src/CoreTiming.cpp index a753f96add..c17e46fc80 100644 --- a/Source/Core/Core/Src/CoreTiming.cpp +++ b/Source/Core/Core/Src/CoreTiming.cpp @@ -113,7 +113,7 @@ void Init() slicelength = maxSliceLength; globalTimer = 0; idledCycles = 0; - + ev_lost = RegisterEvent("_lost_event", &EmptyTimedCallback); } @@ -187,7 +187,7 @@ void DoState(PointerWrap &p) u64 GetTicks() { - return (u64)globalTimer; + return (u64)globalTimer; } u64 GetIdleTicks() @@ -251,7 +251,7 @@ void AddEventToQueue(Event* ne) // This must be run ONLY from within the cpu thread // cyclesIntoFuture may be VERY inaccurate if called from anything else -// than Advance +// than Advance void ScheduleEvent(int cyclesIntoFuture, int event_type, u64 userdata) { Event *ne = GetNewEvent(); @@ -266,7 +266,7 @@ void RegisterAdvanceCallback(void (*callback)(int cyclesExecuted)) advanceCallback = callback; } -bool IsScheduled(int event_type) +bool IsScheduled(int event_type) { if (!first) return false; @@ -297,7 +297,7 @@ void RemoveEvent(int event_type) break; } } - + if (!first) return; @@ -394,7 +394,7 @@ void Advance() { if (first->time <= globalTimer) { -// LOG(POWERPC, "[Scheduler] %s (%lld, %lld) ", +// LOG(POWERPC, "[Scheduler] %s (%lld, %lld) ", // event_types[first->type].name ? event_types[first->type].name : "?", (u64)globalTimer, (u64)first->time); Event* evt = first; first = first->next; @@ -407,7 +407,7 @@ void Advance() } } - if (!first) + if (!first) { WARN_LOG(POWERPC, "WARNING - no events in queue. Setting downcount to 10000"); downcount += 10000; @@ -437,9 +437,9 @@ void LogPendingEvents() void Idle() { //DEBUG_LOG(POWERPC, "Idle"); - + //When the FIFO is processing data we must not advance because in this way - //the VI will be desynchronized. So, We are waiting until the FIFO finish and + //the VI will be desynchronized. So, We are waiting until the FIFO finish and //while we process only the events required by the FIFO. while (g_video_backend->Video_IsPossibleWaitingSetDrawDone()) { @@ -449,7 +449,7 @@ void Idle() idledCycles += downcount; downcount = 0; - + Advance(); } @@ -463,11 +463,11 @@ std::string GetScheduledEventsSummary() unsigned int t = ptr->type; if (t >= event_types.size()) PanicAlertT("Invalid event type %i", t); - + const char *name = event_types[ptr->type].name; if (!name) name = "[unknown]"; - + text += StringFromFormat("%s : %i %08x%08x\n", event_types[ptr->type].name, ptr->time, ptr->userdata >> 32, ptr->userdata); ptr = ptr->next; } diff --git a/Source/Core/Core/Src/DSP/DSPAccelerator.cpp b/Source/Core/Core/Src/DSP/DSPAccelerator.cpp index 71b3f91294..8b493e0599 100644 --- a/Source/Core/Core/Src/DSP/DSPAccelerator.cpp +++ b/Source/Core/Core/Src/DSP/DSPAccelerator.cpp @@ -73,7 +73,7 @@ u16 dsp_read_aram_d3() break; } - if (Address >= EndAddress) + if (Address >= EndAddress) { // Set address back to start address. (never seen this here!) Address = (g_dsp.ifx_regs[DSP_ACSAH] << 16) | g_dsp.ifx_regs[DSP_ACSAL]; @@ -131,7 +131,7 @@ u16 dsp_read_accelerator() Address++; break; case 0x19: // 8-bit PCM audio - val = DSPHost_ReadHostMemory(Address) << 8; + val = DSPHost_ReadHostMemory(Address) << 8; g_dsp.ifx_regs[DSP_YN2] = g_dsp.ifx_regs[DSP_YN1]; g_dsp.ifx_regs[DSP_YN1] = val; Address++; diff --git a/Source/Core/Core/Src/DSP/DSPAnalyzer.cpp b/Source/Core/Core/Src/DSP/DSPAnalyzer.cpp index 1e5f727fa1..c682cdf415 100644 --- a/Source/Core/Core/Src/DSP/DSPAnalyzer.cpp +++ b/Source/Core/Core/Src/DSP/DSPAnalyzer.cpp @@ -43,20 +43,20 @@ const u16 idle_skip_sigs[NUM_IDLE_SIGS][MAX_IDLE_SIG_SIZE + 1] = { 0x26fc, // lrs $AC0.M, @DMBH 0x02a0, 0x8000, // andf $AC0.M, #0x8000 0x029c, 0xFFFF, // jlnz 0x???? - 0, 0 }, + 0, 0 }, { 0x27fc, // lrs $AC1.M, @DMBH 0x03a0, 0x8000, // andf $AC1.M, #0x8000 0x029c, 0xFFFF, // jlnz 0x???? - 0, 0 }, + 0, 0 }, // From Zelda: { 0x00de, 0xFFFE, // LR $AC0.M, @CMBH - 0x02c0, 0x8000, // ANDCF $AC0.M, #0x8000 + 0x02c0, 0x8000, // ANDCF $AC0.M, #0x8000 0x029c, 0xFFFF, // JLNZ 0x05cf 0 }, // From Zelda - experimental { 0x00da, 0x0352, // lr $AX0.H, @0x0352 0x8600, // tstaxh $AX0.H - 0x0295, 0xFFFF, // jz 0x???? + 0x0295, 0xFFFF, // jz 0x???? 0, 0 } }; @@ -112,11 +112,11 @@ void AnalyzeRange(int start_addr, int end_addr) // If an instruction potentially raises exceptions, mark the following // instruction as needing to check for exceptions - if (opcode->opcode == 0x00c0 || - opcode->opcode == 0x1800 || - opcode->opcode == 0x1880 || - opcode->opcode == 0x1900 || - opcode->opcode == 0x1980 || + if (opcode->opcode == 0x00c0 || + opcode->opcode == 0x1800 || + opcode->opcode == 0x1880 || + opcode->opcode == 0x1900 || + opcode->opcode == 0x1980 || opcode->opcode == 0x2000 || opcode->extended ) diff --git a/Source/Core/Core/Src/DSP/DSPBreakpoints.h b/Source/Core/Core/Src/DSP/DSPBreakpoints.h index 625c25cf67..6c3eb8be45 100644 --- a/Source/Core/Core/Src/DSP/DSPBreakpoints.h +++ b/Source/Core/Core/Src/DSP/DSPBreakpoints.h @@ -16,7 +16,7 @@ public: { Clear(); } - + // is address breakpoint bool IsAddressBreakPoint(u32 addr) { @@ -27,7 +27,7 @@ public: bool Add(u32 addr, bool temp=false) { bool was_one = b[addr] != 0; - + if (!was_one) { b[addr] = temp ? 2 : 1; diff --git a/Source/Core/Core/Src/DSP/DSPCodeUtil.cpp b/Source/Core/Core/Src/DSP/DSPCodeUtil.cpp index 73e2c1f8b4..e769723b1d 100644 --- a/Source/Core/Core/Src/DSP/DSPCodeUtil.cpp +++ b/Source/Core/Core/Src/DSP/DSPCodeUtil.cpp @@ -54,7 +54,7 @@ bool Disassemble(const std::vector &code, bool line_numbers, std::string &t } bool Compare(const std::vector &code1, const std::vector &code2) -{ +{ if (code1.size() != code2.size()) printf("Size difference! 1=%i 2=%i\n", (int)code1.size(), (int)code2.size()); u32 count_equal = 0; @@ -94,7 +94,7 @@ bool Compare(const std::vector &code1, const std::vector &code2) return code1.size() == code2.size() && code1.size() == count_equal; } -void GenRandomCode(u32 size, std::vector &code) +void GenRandomCode(u32 size, std::vector &code) { code.resize(size); for (u32 i = 0; i < size; i++) @@ -149,7 +149,7 @@ void CodesToHeader(const std::vector *codes, const std::vector reserveSize += (u32)codes_padded.at(i).size(); } - + header.clear(); header.reserve(reserveSize * 4); sprintf(buffer, "#define NUM_UCODES %u\n\n", numCodes); @@ -172,7 +172,7 @@ void CodesToHeader(const std::vector *codes, const std::vector continue; header.append("\t{\n\t\t"); - for (u32 j = 0; j < codes_padded.at(i).size(); j++) + for (u32 j = 0; j < codes_padded.at(i).size(); j++) { if (j && ((j & 15) == 0)) header.append("\n\t\t"); diff --git a/Source/Core/Core/Src/DSP/DSPCore.cpp b/Source/Core/Core/Src/DSP/DSPCore.cpp index 64206b3ee0..377e21fba8 100644 --- a/Source/Core/Core/Src/DSP/DSPCore.cpp +++ b/Source/Core/Core/Src/DSP/DSPCore.cpp @@ -52,7 +52,7 @@ static bool LoadRom(const char *fname, int size_in_words, u16 *rom) { pFile.ReadArray(rom, size_in_words); pFile.Close(); - + // Byteswap the rom. for (int i = 0; i < size_in_words; i++) rom[i] = Common::swap16(rom[i]); @@ -139,7 +139,7 @@ bool DSPCore_Init(const char *irom_filename, const char *coef_filename, cyclesLeft = 0; init_hax = false; dspjit = NULL; - + g_dsp.irom = (u16*)AllocateMemoryPages(DSP_IROM_BYTE_SIZE); g_dsp.iram = (u16*)AllocateMemoryPages(DSP_IRAM_BYTE_SIZE); g_dsp.dram = (u16*)AllocateMemoryPages(DSP_DRAM_BYTE_SIZE); @@ -198,7 +198,7 @@ bool DSPCore_Init(const char *irom_filename, const char *coef_filename, WriteProtectMemory(g_dsp.iram, DSP_IRAM_BYTE_SIZE, false); // Initialize JIT, if necessary - if(bUsingJIT) + if(bUsingJIT) dspjit = new DSPEmitter(); core_state = DSPCORE_RUNNING; @@ -250,7 +250,7 @@ void DSPCore_CheckExternalInterrupt() // Signal the SPU about new mail DSPCore_SetException(EXP_INT); - + g_dsp.cr &= ~CR_EXTERNAL_INT; } diff --git a/Source/Core/Core/Src/DSP/DSPCore.h b/Source/Core/Core/Src/DSP/DSPCore.h index de5b309e13..7b6805bd52 100644 --- a/Source/Core/Core/Src/DSP/DSPCore.h +++ b/Source/Core/Core/Src/DSP/DSPCore.h @@ -222,7 +222,7 @@ struct SDSP #if PROFILE u16 err_pc; #endif - + // This is NOT the same cr as r.cr. // This register is shared with the main emulation, see DSP.cpp // The engine has control over 0x0C07 of this reg. diff --git a/Source/Core/Core/Src/DSP/DSPEmitter.cpp b/Source/Core/Core/Src/DSP/DSPEmitter.cpp index 7113f420af..d0d842b7aa 100644 --- a/Source/Core/Core/Src/DSP/DSPEmitter.cpp +++ b/Source/Core/Core/Src/DSP/DSPEmitter.cpp @@ -25,7 +25,7 @@ DSPEmitter::DSPEmitter() : gpr(*this), storeIndex(-1), storeIndex2(-1) blocks = new DSPCompiledCode[MAX_BLOCKS]; blockLinks = new Block[MAX_BLOCKS]; blockSize = new u16[MAX_BLOCKS]; - + compileSR = 0; compileSR |= SR_INT_ENABLE; compileSR |= SR_EXT_INT_ENABLE; @@ -42,7 +42,7 @@ DSPEmitter::DSPEmitter() : gpr(*this), storeIndex(-1), storeIndex2(-1) } } -DSPEmitter::~DSPEmitter() +DSPEmitter::~DSPEmitter() { delete[] blocks; delete[] blockLinks; @@ -62,7 +62,7 @@ void DSPEmitter::ClearIRAM() g_dsp.reset_dspjit_codespace = true; } -void DSPEmitter::ClearIRAMandDSPJITCodespaceReset() +void DSPEmitter::ClearIRAMandDSPJITCodespaceReset() { ClearCodeSpace(); CompileDispatcher(); @@ -101,9 +101,9 @@ void DSPEmitter::checkExceptions(u32 retval) bool DSPEmitter::FlagsNeeded() { - if (!(DSPAnalyzer::code_flags[compilePC] & DSPAnalyzer::CODE_START_OF_INST) || - (DSPAnalyzer::code_flags[compilePC] & DSPAnalyzer::CODE_UPDATE_SR)) - return true; + if (!(DSPAnalyzer::code_flags[compilePC] & DSPAnalyzer::CODE_START_OF_INST) || + (DSPAnalyzer::code_flags[compilePC] & DSPAnalyzer::CODE_UPDATE_SR)) + return true; else return false; } @@ -168,7 +168,7 @@ void DSPEmitter::EmitInstruction(UDSPInstruction inst) } } } - + // Main instruction if (!opTable[inst]->jitFunc) { @@ -352,7 +352,7 @@ void DSPEmitter::Compile(u16 start_addr) } } - if (blockSize[start_addr] == 0) + if (blockSize[start_addr] == 0) { // just a safeguard, should never happen anymore. // if it does we might get stuck over in RunForCycles. diff --git a/Source/Core/Core/Src/DSP/DSPEmitter.h b/Source/Core/Core/Src/DSP/DSPEmitter.h index cf3331a339..f44dcc6774 100644 --- a/Source/Core/Core/Src/DSP/DSPEmitter.h +++ b/Source/Core/Core/Src/DSP/DSPEmitter.h @@ -264,7 +264,7 @@ private: // The index of the last stored ext value (compile time). int storeIndex; int storeIndex2; - + // Counts down. // int cycles; diff --git a/Source/Core/Core/Src/DSP/DSPHWInterface.cpp b/Source/Core/Core/Src/DSP/DSPHWInterface.cpp index 56e998d3c0..92d9c5d67a 100644 --- a/Source/Core/Core/Src/DSP/DSPHWInterface.cpp +++ b/Source/Core/Core/Src/DSP/DSPHWInterface.cpp @@ -120,7 +120,7 @@ void gdsp_ifx_write(u32 addr, u32 val) case DSP_DIRQ: if (val & 0x1) DSPHost_InterruptRequest(); - else + else INFO_LOG(DSPLLE, "Unknown Interrupt Request pc=%04x (%04x)", g_dsp.pc, val); break; @@ -156,7 +156,7 @@ void gdsp_ifx_write(u32 addr, u32 val) case DSP_GAIN: if (val) { - INFO_LOG(DSPLLE,"Gain Written: 0x%04x", val); + INFO_LOG(DSPLLE,"Gain Written: 0x%04x", val); } case DSP_DSPA: case DSP_DSMAH: @@ -241,7 +241,7 @@ static void gdsp_idma_in(u16 dsp_addr, u32 addr, u32 size) u8* dst = ((u8*)g_dsp.iram); for (u32 i = 0; i < size; i += 2) - { + { *(u16*)&dst[dsp_addr + i] = Common::swap16(*(const u16*)&g_dsp.cpu_ram[(addr + i) & 0x0fffffff]); } WriteProtectMemory(g_dsp.iram, DSP_IRAM_BYTE_SIZE, false); diff --git a/Source/Core/Core/Src/DSP/DSPIntCCUtil.cpp b/Source/Core/Core/Src/DSP/DSPIntCCUtil.cpp index af75aedcc3..d2631d2685 100644 --- a/Source/Core/Core/Src/DSP/DSPIntCCUtil.cpp +++ b/Source/Core/Core/Src/DSP/DSPIntCCUtil.cpp @@ -27,7 +27,7 @@ void Update_SR_Register64(s64 _Value, bool carry, bool overflow) if (overflow) { g_dsp.r.sr |= SR_OVERFLOW; - g_dsp.r.sr |= SR_OVERFLOW_STICKY; + g_dsp.r.sr |= SR_OVERFLOW_STICKY; } // 0x04 @@ -79,14 +79,14 @@ void Update_SR_Register16(s16 _Value, bool carry, bool overflow, bool overS32) g_dsp.r.sr |= SR_ARITH_ZERO; } - // 0x08 + // 0x08 if (_Value < 0) { g_dsp.r.sr |= SR_SIGN; } // 0x10 - if (overS32) + if (overS32) { g_dsp.r.sr |= SR_OVER_S32; } @@ -100,7 +100,7 @@ void Update_SR_Register16(s16 _Value, bool carry, bool overflow, bool overS32) void Update_SR_LZ(bool value) { - if (value == true) + if (value == true) g_dsp.r.sr |= SR_LOGIC_ZERO; else g_dsp.r.sr &= ~SR_LOGIC_ZERO; @@ -156,11 +156,11 @@ bool CheckCondition(u8 _Condition) return isLess() || isZero(); case 0x4: // NZ - Not Zero return !isZero(); - case 0x5: // Z - Zero + case 0x5: // Z - Zero return isZero(); case 0x6: // NC - Not carry return !isCarry(); - case 0x7: // C - Carry + case 0x7: // C - Carry return isCarry(); case 0x8: // ? - Not over s32 return !isOverS32(); diff --git a/Source/Core/Core/Src/DSP/DSPIntCCUtil.h b/Source/Core/Core/Src/DSP/DSPIntCCUtil.h index e98c0d905d..0f747cf2f0 100644 --- a/Source/Core/Core/Src/DSP/DSPIntCCUtil.h +++ b/Source/Core/Core/Src/DSP/DSPIntCCUtil.h @@ -26,7 +26,7 @@ inline bool isCarry(u64 val, u64 result) { } inline bool isCarry2(u64 val, u64 result) { - return (val>=result); + return (val>=result); } inline bool isOverflow(s64 val1, s64 val2, s64 res) { diff --git a/Source/Core/Core/Src/DSP/DSPIntExtOps.cpp b/Source/Core/Core/Src/DSP/DSPIntExtOps.cpp index bc448233ba..a628b9b4d1 100644 --- a/Source/Core/Core/Src/DSP/DSPIntExtOps.cpp +++ b/Source/Core/Core/Src/DSP/DSPIntExtOps.cpp @@ -7,7 +7,7 @@ #include "DSPIntExtOps.h" //not needed for game ucodes (it slows down interpreter/dspjit32 + easier to compare int VS dspjit64 without it) -//#define PRECISE_BACKLOG +//#define PRECISE_BACKLOG // Extended opcodes do not exist on their own. These opcodes can only be // attached to opcodes that allow extending (8 (or 7) lower bits of opcode not used by @@ -29,7 +29,7 @@ inline static void writeToBackLog(int i, int idx, u16 value) namespace DSPInterpreter { -namespace Ext +namespace Ext { inline bool IsSameMemArea(u16 a, u16 b) @@ -63,7 +63,7 @@ void ir(const UDSPInstruction opc) void nr(const UDSPInstruction opc) { u8 reg = opc & 0x3; - + writeToBackLog(0, reg, dsp_increase_addr_reg(reg, (s16)g_dsp.r.ix[reg])); } @@ -87,7 +87,7 @@ void mv(const UDSPInstruction opc) break; } } - + // S @$arD, $acS.S // xxxx xxxx 001s s0dd // Store value of $acS.S in the memory pointed by register $arD. @@ -136,14 +136,14 @@ void sn(const UDSPInstruction opc) // L $axD.D, @$arS // xxxx xxxx 01dd d0ss -// Load $axD.D/$acD.D with value from memory pointed by register $arS. +// Load $axD.D/$acD.D with value from memory pointed by register $arS. // Post increment register $arS. void l(const UDSPInstruction opc) { u8 sreg = opc & 0x3; u8 dreg = ((opc >> 3) & 0x7) + DSP_REG_AXL0; - - if ((dreg >= DSP_REG_ACM0) && (g_dsp.r.sr & SR_40_MODE_BIT)) + + if ((dreg >= DSP_REG_ACM0) && (g_dsp.r.sr & SR_40_MODE_BIT)) { u16 val = dsp_dmem_read(g_dsp.r.ar[sreg]); writeToBackLog(0, dreg - DSP_REG_ACM0 + DSP_REG_ACH0, (val & 0x8000) ? 0xFFFF : 0x0000); @@ -160,14 +160,14 @@ void l(const UDSPInstruction opc) // LN $axD.D, @$arS // xxxx xxxx 01dd d0ss -// Load $axD.D/$acD.D with value from memory pointed by register $arS. +// Load $axD.D/$acD.D with value from memory pointed by register $arS. // Add indexing register $ixS to register $arS. void ln(const UDSPInstruction opc) { u8 sreg = opc & 0x3; u8 dreg = ((opc >> 3) & 0x7) + DSP_REG_AXL0; - if ((dreg >= DSP_REG_ACM0) && (g_dsp.r.sr & SR_40_MODE_BIT)) + if ((dreg >= DSP_REG_ACM0) && (g_dsp.r.sr & SR_40_MODE_BIT)) { u16 val = dsp_dmem_read(g_dsp.r.ar[sreg]); writeToBackLog(0, dreg - DSP_REG_ACM0 + DSP_REG_ACH0, (val & 0x8000) ? 0xFFFF : 0x0000); @@ -196,7 +196,7 @@ void ls(const UDSPInstruction opc) writeToBackLog(0, dreg, dsp_dmem_read(g_dsp.r.ar[0])); writeToBackLog(1, DSP_REG_AR3, dsp_increment_addr_reg(DSP_REG_AR3)); - writeToBackLog(2, DSP_REG_AR0, dsp_increment_addr_reg(DSP_REG_AR0)); + writeToBackLog(2, DSP_REG_AR0, dsp_increment_addr_reg(DSP_REG_AR0)); } @@ -269,7 +269,7 @@ void sl(const UDSPInstruction opc) writeToBackLog(0, dreg, dsp_dmem_read(g_dsp.r.ar[3])); writeToBackLog(1, DSP_REG_AR3, dsp_increment_addr_reg(DSP_REG_AR3)); - writeToBackLog(2, DSP_REG_AR0, dsp_increment_addr_reg(DSP_REG_AR0)); + writeToBackLog(2, DSP_REG_AR0, dsp_increment_addr_reg(DSP_REG_AR0)); } // SLN $acS.m, $axD.D @@ -329,7 +329,7 @@ void slnm(const UDSPInstruction opc) // LD $ax0.d, $ax1.r, @$arS // xxxx xxxx 11dr 00ss // example for "nx'ld $AX0.L, $AX1.L, @$AR3" -// Loads the word pointed by AR0 to AX0.H, then loads the word pointed by AR3 to AX0.L. +// Loads the word pointed by AR0 to AX0.H, then loads the word pointed by AR3 to AX0.L. // Increments AR0 and AR3. // If AR0 and AR3 point into the same memory page (upper 6 bits of addr are the same -> games are not doing that!) // then the value pointed by AR0 is loaded to BOTH AX0.H and AX0.L. @@ -545,18 +545,18 @@ void zeroWriteBackLog() #endif } -void zeroWriteBackLogPreserveAcc(u8 acc) +void zeroWriteBackLogPreserveAcc(u8 acc) { #ifdef PRECISE_BACKLOG for (int i = 0; writeBackLogIdx[i] != -1; i++) { // acc0 - if ((acc == 0) && + if ((acc == 0) && ((writeBackLogIdx[i] == DSP_REG_ACL0) || (writeBackLogIdx[i] == DSP_REG_ACM0) || (writeBackLogIdx[i] == DSP_REG_ACH0))) continue; - + // acc1 - if ((acc == 1) && + if ((acc == 1) && ((writeBackLogIdx[i] == DSP_REG_ACL1) || (writeBackLogIdx[i] == DSP_REG_ACM1) || (writeBackLogIdx[i] == DSP_REG_ACH1))) continue; diff --git a/Source/Core/Core/Src/DSP/DSPIntExtOps.h b/Source/Core/Core/Src/DSP/DSPIntExtOps.h index fa6d22edba..d4f3a8dd01 100644 --- a/Source/Core/Core/Src/DSP/DSPIntExtOps.h +++ b/Source/Core/Core/Src/DSP/DSPIntExtOps.h @@ -30,12 +30,12 @@ // Extended opcode support. // Many opcode have the lower 0xFF (some only 0x7f) free - there, an opcode extension -// can be stored. +// can be stored. namespace DSPInterpreter { namespace Ext -{ +{ void l(const UDSPInstruction opc); void ln(const UDSPInstruction opc); void ls(const UDSPInstruction opc); @@ -61,7 +61,7 @@ void dr(const UDSPInstruction opc); void ir(const UDSPInstruction opc); void nr(const UDSPInstruction opc); void nop(const UDSPInstruction opc); - + } // end namespace Ext } // end namespace DSPinterpeter diff --git a/Source/Core/Core/Src/DSP/DSPIntUtil.h b/Source/Core/Core/Src/DSP/DSPIntUtil.h index 7299d7e8c9..0e48ee77e4 100644 --- a/Source/Core/Core/Src/DSP/DSPIntUtil.h +++ b/Source/Core/Core/Src/DSP/DSPIntUtil.h @@ -57,7 +57,7 @@ static inline u16 dsp_increase_addr_reg(u16 reg, s16 _ix) u32 ar = g_dsp.r.ar[reg]; u32 wr = g_dsp.r.wr[reg]; s32 ix = _ix; - + u32 mx = (wr | 1) << 1; u32 nar = ar + ix; u32 dar = (nar ^ ar ^ ix) & mx; @@ -75,7 +75,7 @@ static inline u16 dsp_increase_addr_reg(u16 reg, s16 _ix) return nar; } -static inline u16 dsp_decrease_addr_reg(u16 reg, s16 _ix) +static inline u16 dsp_decrease_addr_reg(u16 reg, s16 _ix) { u32 ar = g_dsp.r.ar[reg]; u32 wr = g_dsp.r.wr[reg]; @@ -98,23 +98,23 @@ static inline u16 dsp_decrease_addr_reg(u16 reg, s16 _ix) return nar; } -static inline u16 dsp_increment_addr_reg(u16 reg) +static inline u16 dsp_increment_addr_reg(u16 reg) { u32 ar = g_dsp.r.ar[reg]; u32 wr = g_dsp.r.wr[reg]; u32 nar = ar + 1; - + if ((nar ^ ar) > ((wr | 1) << 1)) nar -= wr + 1; return nar; } -static inline u16 dsp_decrement_addr_reg(u16 reg) +static inline u16 dsp_decrement_addr_reg(u16 reg) { u32 ar = g_dsp.r.ar[reg]; u32 wr = g_dsp.r.wr[reg]; - + u32 nar = ar + wr; if (((nar ^ ar) & ((wr | 1) << 1)) > wr) @@ -244,9 +244,9 @@ static inline void dsp_op_write_reg(int _reg, u16 val) } } -static inline void dsp_conditional_extend_accum(int reg) +static inline void dsp_conditional_extend_accum(int reg) { - switch (reg) + switch (reg) { case DSP_REG_ACM0: case DSP_REG_ACM1: @@ -344,12 +344,12 @@ inline u16 dsp_op_read_reg_and_saturate(u8 _reg) if (g_dsp.r.sr & SR_40_MODE_BIT) { s64 acc = dsp_get_long_acc(_reg); - - if (acc != (s32)acc) + + if (acc != (s32)acc) { if (acc > 0) return 0x7fff; - else + else return 0x8000; } else diff --git a/Source/Core/Core/Src/DSP/DSPInterpreter.cpp b/Source/Core/Core/Src/DSP/DSPInterpreter.cpp index d7a4eb1be4..19edffd785 100644 --- a/Source/Core/Core/Src/DSP/DSPInterpreter.cpp +++ b/Source/Core/Core/Src/DSP/DSPInterpreter.cpp @@ -36,7 +36,7 @@ volatile u32 gdsp_running; // NOTE: These have nothing to do with g_dsp.r.cr ! -void WriteCR(u16 val) +void WriteCR(u16 val) { // reset if (val & 1) @@ -96,7 +96,7 @@ void Step() u16 opc = dsp_fetch_code(); ExecuteInstruction(UDSPInstruction(opc)); - + if (DSPAnalyzer::code_flags[g_dsp.pc - 1] & DSPAnalyzer::CODE_LOOP_END) HandleLoop(); } @@ -107,7 +107,7 @@ int RunCyclesThread(int cycles) while (true) { if (g_dsp.cr & CR_HALT) - return 0; + return 0; if (g_dsp.external_interrupt_waiting) { @@ -129,7 +129,7 @@ int RunCyclesDebug(int cycles) for (int i = 0; i < 8; i++) { if (g_dsp.cr & CR_HALT) - return 0; + return 0; if (dsp_breakpoints.IsAddressBreakPoint(g_dsp.pc)) { DSPCore_SetState(DSPCORE_STEPPING); @@ -163,7 +163,7 @@ int RunCyclesDebug(int cycles) return 0; } - // Now, lets run some more without idle skipping. + // Now, lets run some more without idle skipping. for (int i = 0; i < 200; i++) { if (dsp_breakpoints.IsAddressBreakPoint(g_dsp.pc)) @@ -189,7 +189,7 @@ int RunCycles(int cycles) for (int i = 0; i < 8; i++) { if (g_dsp.cr & CR_HALT) - return 0; + return 0; Step(); cycles--; if (cycles < 0) @@ -213,8 +213,8 @@ int RunCycles(int cycles) return 0; } - // Now, lets run some more without idle skipping. - for (int i = 0; i < 200; i++) + // Now, lets run some more without idle skipping. + for (int i = 0; i < 200; i++) { Step(); cycles--; diff --git a/Source/Core/Core/Src/DSP/DSPInterpreter.h b/Source/Core/Core/Src/DSP/DSPInterpreter.h index c2e144a682..7252cd4760 100644 --- a/Source/Core/Core/Src/DSP/DSPInterpreter.h +++ b/Source/Core/Core/Src/DSP/DSPInterpreter.h @@ -106,7 +106,7 @@ void asr16(const UDSPInstruction opc); void lsl(const UDSPInstruction opc); void lsr(const UDSPInstruction opc); void asl(const UDSPInstruction opc); -void asr(const UDSPInstruction opc); +void asr(const UDSPInstruction opc); void lsrn(const UDSPInstruction opc); void asrn(const UDSPInstruction opc); void dar(const UDSPInstruction opc); diff --git a/Source/Core/Core/Src/DSP/DSPMemoryMap.cpp b/Source/Core/Core/Src/DSP/DSPMemoryMap.cpp index 7a56c2618f..542823257a 100644 --- a/Source/Core/Core/Src/DSP/DSPMemoryMap.cpp +++ b/Source/Core/Core/Src/DSP/DSPMemoryMap.cpp @@ -50,14 +50,14 @@ u16 dsp_dmem_read(u16 addr) { case 0x0: // 0xxx DRAM return g_dsp.dram[addr & DSP_DRAM_MASK]; - + case 0x1: // 1xxx COEF DEBUG_LOG(DSPLLE, "%04x : Coefficient Read @ %04x", g_dsp.pc, addr); return g_dsp.coef[addr & DSP_COEF_MASK]; case 0xf: // Fxxx HW regs return gdsp_ifx_read(addr); - + default: // Unmapped/non-existing memory ERROR_LOG(DSPLLE, "%04x DSP ERROR: Read from UNKNOWN (%04x) memory", g_dsp.pc, addr); return 0; diff --git a/Source/Core/Core/Src/DSP/DSPTables.cpp b/Source/Core/Core/Src/DSP/DSPTables.cpp index 2a6912ee3b..20d27d468e 100644 --- a/Source/Core/Core/Src/DSP/DSPTables.cpp +++ b/Source/Core/Core/Src/DSP/DSPTables.cpp @@ -19,7 +19,7 @@ void nop(const UDSPInstruction opc) ERROR_LOG(DSPLLE, "LLE: Unrecognized opcode 0x%04x", opc); } } - + const DSPOPCTemplate opcodes[] = { {"NOP", 0x0000, 0xfffc, nop, &DSPEmitter::nop, 1, 0, {}, false, false, false, false, false}, @@ -47,7 +47,7 @@ const DSPOPCTemplate opcodes[] = {"RETLZ", 0x02dd, 0xffff, DSPInterpreter::ret, &DSPEmitter::ret, 1, 0, {}, false, true, false, true, false}, {"RETO", 0x02de, 0xffff, DSPInterpreter::ret, &DSPEmitter::ret, 1, 0, {}, false, true, false, true, false}, {"RET", 0x02df, 0xffff, DSPInterpreter::ret, &DSPEmitter::ret, 1, 0, {}, false, true, true, false, false}, - + {"RTI", 0x02ff, 0xffff, DSPInterpreter::rti, &DSPEmitter::rti, 1, 0, {}, false, true, true, false, false}, {"CALLGE", 0x02b0, 0xffff, DSPInterpreter::call, &DSPEmitter::call, 2, 1, {{P_ADDR_I, 2, 1, 0, 0xffff}}, false, true, false, true, false}, @@ -142,7 +142,7 @@ const DSPOPCTemplate opcodes[] = {"LSR", 0x1440, 0xfec0, DSPInterpreter::lsr, &DSPEmitter::lsr, 1, 2, {{P_ACC, 1, 0, 8, 0x0100}, {P_IMM, 1, 0, 0, 0x003f}}, false, false, false, false, true}, {"ASL", 0x1480, 0xfec0, DSPInterpreter::asl, &DSPEmitter::asl, 1, 2, {{P_ACC, 1, 0, 8, 0x0100}, {P_IMM, 1, 0, 0, 0x003f}}, false, false, false, false, true}, {"ASR", 0x14c0, 0xfec0, DSPInterpreter::asr, &DSPEmitter::asr, 1, 2, {{P_ACC, 1, 0, 8, 0x0100}, {P_IMM, 1, 0, 0, 0x003f}}, false, false, false, false, true}, - + {"LSRN", 0x02ca, 0xffff, DSPInterpreter::lsrn, &DSPEmitter::lsrn, 1, 0, {}, false, false, false, false, true}, // discovered by ector! {"ASRN", 0x02cb, 0xffff, DSPInterpreter::asrn, &DSPEmitter::asrn, 1, 0, {}, false, false, false, false, true}, // discovered by ector! @@ -288,7 +288,7 @@ const DSPOPCTemplate opcodes[] = {"MOVPZ", 0xfe00, 0xfe00, DSPInterpreter::movpz, &DSPEmitter::movpz, 1, 1, {{P_ACC, 1, 0, 8, 0x0100}}, true, false, false, false, true}, }; -const DSPOPCTemplate cw = +const DSPOPCTemplate cw = {"CW", 0x0000, 0x0000, nop, NULL, 1, 1, {{P_VAL, 2, 0, 0, 0xffff}}, false, false, false, false, false}; // extended opcodes @@ -556,7 +556,7 @@ void InitInstructionTable() if (opTable[i] == &cw) opTable[i] = &opcode; else - ERROR_LOG(DSPLLE, "opcode table place %d already in use for %s", i, opcode.name); + ERROR_LOG(DSPLLE, "opcode table place %d already in use for %s", i, opcode.name); } } } diff --git a/Source/Core/Core/Src/DSP/DSPTables.h b/Source/Core/Core/Src/DSP/DSPTables.h index fdad92bc2b..140b4b427b 100644 --- a/Source/Core/Core/Src/DSP/DSPTables.h +++ b/Source/Core/Core/Src/DSP/DSPTables.h @@ -29,7 +29,7 @@ enum partype_t P_ADDR_D = 0x0006, P_REG = 0x8000, P_REG04 = P_REG | 0x0400, // IX - P_REG08 = P_REG | 0x0800, + P_REG08 = P_REG | 0x0800, P_REG18 = P_REG | 0x1800, P_REGM18 = P_REG | 0x1810, // used in multiply instructions P_REG19 = P_REG | 0x1900, diff --git a/Source/Core/Core/Src/DSP/DspIntArithmetic.cpp b/Source/Core/Core/Src/DSP/DspIntArithmetic.cpp index 4d2b5be3ac..7de0327491 100644 --- a/Source/Core/Core/Src/DSP/DspIntArithmetic.cpp +++ b/Source/Core/Core/Src/DSP/DspIntArithmetic.cpp @@ -119,7 +119,7 @@ void cmp(const UDSPInstruction opc) s64 acc0 = dsp_get_long_acc(0); s64 acc1 = dsp_get_long_acc(1); s64 res = dsp_convert_long_acc(acc0 - acc1); - + Update_SR_Register64(res, isCarry2(acc0, res), isOverflow(acc0, -acc1, res)); // CF -> influence on ABS/0xa100 zeroWriteBackLog(); } @@ -139,7 +139,7 @@ void cmpar(const UDSPInstruction opc) s64 rr = (s16)g_dsp.r.ax[rreg-DSP_REG_AXH0].h; rr <<= 16; s64 res = dsp_convert_long_acc(sr - rr); - + Update_SR_Register64(res, isCarry2(sr, res), isOverflow(sr, -rr, res)); zeroWriteBackLog(); } @@ -147,7 +147,7 @@ void cmpar(const UDSPInstruction opc) // CMPI $amD, #I // 0000 001r 1000 0000 // iiii iiii iiii iiii -// Compares mid accumulator $acD.hm ($amD) with sign extended immediate value I. +// Compares mid accumulator $acD.hm ($amD) with sign extended immediate value I. // Although flags are being set regarding whole accumulator register. // // flags out: x-xx xxxx @@ -175,7 +175,7 @@ void cmpis(const UDSPInstruction opc) s64 acc = dsp_get_long_acc(areg); s64 val = (s8)opc; - val <<= 16; + val <<= 16; s64 res = dsp_convert_long_acc(acc - val); Update_SR_Register64(res, isCarry2(acc, res), isOverflow(acc, -val, res)); @@ -477,7 +477,7 @@ void addaxl(const UDSPInstruction opc) Update_SR_Register64((s64)res, isCarry(acc, res), isOverflow((s64)acc, (s64)acx, (s64)res)); } -// ADDI $amR, #I +// ADDI $amR, #I // 0000 001r 0000 0000 // iiii iiii iiii iiii // Adds immediate (16-bit sign extended) to mid accumulator $acD.hm. @@ -530,7 +530,7 @@ void incm(const UDSPInstruction opc) s64 res = acc + sub; zeroWriteBackLog(); - + dsp_set_long_acc(dreg, res); res = dsp_get_long_acc(dreg); Update_SR_Register64(res, isCarry(acc, res), isOverflow(acc, sub, res)); @@ -546,7 +546,7 @@ void inc(const UDSPInstruction opc) u8 dreg = (opc >> 8) & 0x1; s64 acc = dsp_get_long_acc(dreg); - s64 res = acc + 1; + s64 res = acc + 1; zeroWriteBackLog(); @@ -615,7 +615,7 @@ void subax(const UDSPInstruction opc) // SUB $acD, $ac(1-D) // 0101 110d xxxx xxxx -// Subtracts accumulator $ac(1-D) from accumulator register $acD. +// Subtracts accumulator $ac(1-D) from accumulator register $acD. // // flags out: x-xx xxxx void sub(const UDSPInstruction opc) @@ -667,9 +667,9 @@ void decm(const UDSPInstruction opc) s64 res = acc - sub; zeroWriteBackLog(); - + dsp_set_long_acc(dreg, res); - res = dsp_get_long_acc(dreg); + res = dsp_get_long_acc(dreg); Update_SR_Register64(res, isCarry2(acc, res), isOverflow(acc, -sub, res)); } @@ -702,7 +702,7 @@ void dec(const UDSPInstruction opc) void neg(const UDSPInstruction opc) { u8 dreg = (opc >> 8) & 0x1; - + s64 acc = dsp_get_long_acc(dreg); acc = 0 - acc; @@ -713,7 +713,7 @@ void neg(const UDSPInstruction opc) } // ABS $acD -// 1010 d001 xxxx xxxx +// 1010 d001 xxxx xxxx // absolute value of $acD // // flags out: --xx xx00 @@ -725,7 +725,7 @@ void abs(const UDSPInstruction opc) if (acc < 0) acc = 0 - acc; - + zeroWriteBackLog(); dsp_set_long_acc(dreg, acc); @@ -770,7 +770,7 @@ void movr(const UDSPInstruction opc) // MOVAX $acD, $axS // 0110 10sd xxxx xxxx -// Moves secondary accumulator $axS to accumulator $axD. +// Moves secondary accumulator $axS to accumulator $axD. // // flags out: --xx xx00 void movax(const UDSPInstruction opc) @@ -833,7 +833,7 @@ void lsr16(const UDSPInstruction opc) u64 acc = dsp_get_long_acc(areg); acc &= 0x000000FFFFFFFFFFULL; // Lop off the extraneous sign extension our 64-bit fake accum causes - acc >>= 16; + acc >>= 16; zeroWriteBackLog(); @@ -864,10 +864,10 @@ void asr16(const UDSPInstruction opc) // Logically shifts left accumulator $acR by number specified by value I. // // flags out: --xx xx00 -void lsl(const UDSPInstruction opc) +void lsl(const UDSPInstruction opc) { u8 rreg = (opc >> 8) & 0x01; - u16 shift = opc & 0x3f; + u16 shift = opc & 0x3f; u64 acc = dsp_get_long_acc(rreg); acc <<= shift; @@ -895,7 +895,7 @@ void lsr(const UDSPInstruction opc) shift = 0x40 - (opc & 0x3f); acc >>= shift; - + dsp_set_long_acc(rreg, (s64)acc); Update_SR_Register64(dsp_get_long_acc(rreg)); } @@ -912,7 +912,7 @@ void asl(const UDSPInstruction opc) u64 acc = dsp_get_long_acc(rreg); acc <<= shift; - + dsp_set_long_acc(rreg, acc); Update_SR_Register64(dsp_get_long_acc(rreg)); } @@ -949,7 +949,7 @@ void asr(const UDSPInstruction opc) // flags out: --xx xx00 void lsrn(const UDSPInstruction opc) { - s16 shift; + s16 shift; u16 accm = (u16)dsp_get_acc_m(1); u64 acc = dsp_get_long_acc(0); acc &= 0x000000FFFFFFFFFFULL; diff --git a/Source/Core/Core/Src/DSP/DspIntBranch.cpp b/Source/Core/Core/Src/DSP/DspIntBranch.cpp index a4c861c814..ecd1314e10 100644 --- a/Source/Core/Core/Src/DSP/DspIntBranch.cpp +++ b/Source/Core/Core/Src/DSP/DspIntBranch.cpp @@ -35,8 +35,8 @@ void call(const UDSPInstruction opc) // Generic callr implementation // CALLRcc $R // 0001 0111 rrr1 cccc -// Call function if condition cc has been met. Push program counter of -// instruction following "call" to call stack $st0. Set program counter to +// Call function if condition cc has been met. Push program counter of +// instruction following "call" to call stack $st0. Set program counter to // register $R. void callr(const UDSPInstruction opc) { @@ -87,7 +87,7 @@ void jmprcc(const UDSPInstruction opc) { u8 reg = (opc >> 5) & 0x7; g_dsp.pc = dsp_op_read_reg(reg); - } + } } // Generic ret implementation @@ -116,7 +116,7 @@ void rti(const UDSPInstruction opc) } // HALT -// 0000 0000 0020 0001 +// 0000 0000 0020 0001 // Stops execution of DSP code. Sets bit DSP_CR_HALT in register DREG_CR. void halt(const UDSPInstruction opc) { @@ -133,7 +133,7 @@ void halt(const UDSPInstruction opc) // continues at next opcode. void HandleLoop() { - // Handle looping hardware. + // Handle looping hardware. const u16 rCallAddress = g_dsp.r.st[0]; const u16 rLoopAddress = g_dsp.r.st[2]; u16& rLoopCounter = g_dsp.r.st[3]; @@ -254,7 +254,7 @@ void bloopi(const UDSPInstruction opc) u16 cnt = opc & 0xff; u16 loop_pc = dsp_fetch_code(); - if (cnt) + if (cnt) { dsp_reg_store_stack(0, g_dsp.pc); dsp_reg_store_stack(2, loop_pc); diff --git a/Source/Core/Core/Src/DSP/DspIntLoadStore.cpp b/Source/Core/Core/Src/DSP/DspIntLoadStore.cpp index b1a8f1b868..0b72b21290 100644 --- a/Source/Core/Core/Src/DSP/DspIntLoadStore.cpp +++ b/Source/Core/Core/Src/DSP/DspIntLoadStore.cpp @@ -13,15 +13,15 @@ namespace DSPInterpreter { // SRS @M, $(0x18+S) // 0010 1sss mmmm mmmm -// Move value from register $(0x18+D) to data memory pointed by address -// CR[0-7] | M. That is, the upper 8 bits of the address are the -// bottom 8 bits from CR, and the lower 8 bits are from the 8-bit immediate. +// Move value from register $(0x18+D) to data memory pointed by address +// CR[0-7] | M. That is, the upper 8 bits of the address are the +// bottom 8 bits from CR, and the lower 8 bits are from the 8-bit immediate. // Note: pc+=2 in duddie's doc seems wrong void srs(const UDSPInstruction opc) { u8 reg = ((opc >> 8) & 0x7) + 0x18; u16 addr = (g_dsp.r.cr << 8) | (opc & 0xFF); - + if (reg >= DSP_REG_ACM0) dsp_dmem_write(addr, dsp_op_read_reg_and_saturate(reg-DSP_REG_ACM0)); else @@ -97,7 +97,7 @@ void lrr(const UDSPInstruction opc) // LRRD $D, @$S // 0001 1000 1ssd dddd // Move value from data memory pointed by addressing register $S toregister $D. -// Decrement register $S. +// Decrement register $S. void lrrd(const UDSPInstruction opc) { u8 sreg = (opc >> 5) & 0x3; @@ -112,7 +112,7 @@ void lrrd(const UDSPInstruction opc) // LRRI $D, @$S // 0001 1001 0ssd dddd // Move value from data memory pointed by addressing register $S to register $D. -// Increment register $S. +// Increment register $S. void lrri(const UDSPInstruction opc) { u8 sreg = (opc >> 5) & 0x3; @@ -127,7 +127,7 @@ void lrri(const UDSPInstruction opc) // LRRN $D, @$S // 0001 1001 1ssd dddd // Move value from data memory pointed by addressing register $S to register $D. -// Add indexing register $(0x4+S) to register $S. +// Add indexing register $(0x4+S) to register $S. void lrrn(const UDSPInstruction opc) { u8 sreg = (opc >> 5) & 0x3; @@ -141,8 +141,8 @@ void lrrn(const UDSPInstruction opc) // SRR @$D, $S // 0001 1010 0dds ssss -// Store value from source register $S to a memory location pointed by -// addressing register $D. +// Store value from source register $S to a memory location pointed by +// addressing register $D. void srr(const UDSPInstruction opc) { u8 dreg = (opc >> 5) & 0x3; @@ -157,7 +157,7 @@ void srr(const UDSPInstruction opc) // SRRD @$D, $S // 0001 1010 1dds ssss // Store value from source register $S to a memory location pointed by -// addressing register $D. Decrement register $D. +// addressing register $D. Decrement register $D. void srrd(const UDSPInstruction opc) { u8 dreg = (opc >> 5) & 0x3; @@ -174,7 +174,7 @@ void srrd(const UDSPInstruction opc) // SRRI @$D, $S // 0001 1011 0dds ssss // Store value from source register $S to a memory location pointed by -// addressing register $D. Increment register $D. +// addressing register $D. Increment register $D. void srri(const UDSPInstruction opc) { u8 dreg = (opc >> 5) & 0x3; diff --git a/Source/Core/Core/Src/DSP/DspIntMisc.cpp b/Source/Core/Core/Src/DSP/DspIntMisc.cpp index 93d04d15b0..aec554d7fb 100644 --- a/Source/Core/Core/Src/DSP/DspIntMisc.cpp +++ b/Source/Core/Core/Src/DSP/DspIntMisc.cpp @@ -24,14 +24,14 @@ void mrr(const UDSPInstruction opc) dsp_op_write_reg(dreg, dsp_op_read_reg_and_saturate(sreg-DSP_REG_ACM0)); else dsp_op_write_reg(dreg, dsp_op_read_reg(sreg)); - + dsp_conditional_extend_accum(dreg); } // LRI $D, #I // 0000 0000 100d dddd // iiii iiii iiii iiii -// Load immediate value I to register $D. +// Load immediate value I to register $D. // // DSPSpy discovery: This, and possibly other instructions that load a // register, has a different behaviour in S40 mode if loaded to AC0.M: The @@ -47,7 +47,7 @@ void lri(const UDSPInstruction opc) // LRIS $(0x18+D), #I // 0000 1ddd iiii iiii -// Load immediate value I (8-bit sign extended) to accumulator register. +// Load immediate value I (8-bit sign extended) to accumulator register. void lris(const UDSPInstruction opc) { u8 reg = ((opc >> 8) & 0x7) + DSP_REG_AXL0; @@ -86,7 +86,7 @@ void iar(const UDSPInstruction opc) g_dsp.r.ar[opc & 0x3] = dsp_increment_addr_reg(opc & 0x3); } -// SUBARN $arD +// SUBARN $arD // 0000 0000 0000 11dd // Subtract indexing register $ixD from an addressing register $arD. // used only in IPL-NTSC ucode @@ -129,7 +129,7 @@ void sbset(const UDSPInstruction opc) g_dsp.r.sr |= (1 << bit); } -// This is a bunch of flag setters, flipping bits in SR. +// This is a bunch of flag setters, flipping bits in SR. void srbith(const UDSPInstruction opc) { zeroWriteBackLog(); diff --git a/Source/Core/Core/Src/DSP/DspIntMultiplier.cpp b/Source/Core/Core/Src/DSP/DspIntMultiplier.cpp index 5a1b98e4b7..a1380879e8 100644 --- a/Source/Core/Core/Src/DSP/DspIntMultiplier.cpp +++ b/Source/Core/Core/Src/DSP/DspIntMultiplier.cpp @@ -32,7 +32,7 @@ inline s64 dsp_get_multiply_prod(u16 a, u16 b, u8 sign) return prod; } - + inline s64 dsp_multiply(u16 a, u16 b, u8 sign = 0) { s64 prod = dsp_get_multiply_prod(a, b, sign); @@ -120,7 +120,7 @@ void movp(const UDSPInstruction opc) } // MOVNP $acD -// 0111 111d xxxx xxxx +// 0111 111d xxxx xxxx // Moves negative of multiply product from $prod register to accumulator // $acD register. // @@ -160,7 +160,7 @@ void movpz(const UDSPInstruction opc) // Adds secondary accumulator $axS to product register and stores result // in accumulator register. Low 16-bits of $acD ($acD.l) are set (round) to 0. // -// TODO: ugly code and still small error here (+/- 1 in .m - randomly) +// TODO: ugly code and still small error here (+/- 1 in .m - randomly) // flags out: --xx xx0x void addpaxz(const UDSPInstruction opc) { @@ -176,20 +176,20 @@ void addpaxz(const UDSPInstruction opc) dsp_set_long_acc(dreg, res); res = dsp_get_long_acc(dreg); - Update_SR_Register64(res, isCarry(oldprod, res), false); + Update_SR_Register64(res, isCarry(oldprod, res), false); } //---- // MULAXH // 1000 0011 xxxx xxxx -// Multiply $ax0.h by $ax0.h +// Multiply $ax0.h by $ax0.h void mulaxh(const UDSPInstruction opc) { s64 prod = dsp_multiply(dsp_get_ax_h(0), dsp_get_ax_h(0)); zeroWriteBackLog(); - + dsp_set_long_prod(prod); } @@ -206,7 +206,7 @@ void mul(const UDSPInstruction opc) u16 axl = dsp_get_ax_l(sreg); u16 axh = dsp_get_ax_h(sreg); s64 prod = dsp_multiply(axh, axl); - + zeroWriteBackLog(); dsp_set_long_prod(prod); @@ -277,7 +277,7 @@ void mulmvz(const UDSPInstruction opc) u16 axl = dsp_get_ax_l(sreg); u16 axh = dsp_get_ax_h(sreg); s64 prod = dsp_multiply(axl, axh); - + zeroWriteBackLog(); dsp_set_long_prod(prod); @@ -418,7 +418,7 @@ void mulcac(const UDSPInstruction opc) u16 accm = dsp_get_acc_m(sreg); u16 axh = dsp_get_ax_h(treg); s64 prod = dsp_multiply(accm, axh); - + zeroWriteBackLog(); dsp_set_long_prod(prod); @@ -444,7 +444,7 @@ void mulcmv(const UDSPInstruction opc) u16 accm = dsp_get_acc_m(sreg); u16 axh = dsp_get_ax_h(treg); s64 prod = dsp_multiply(accm, axh); - + zeroWriteBackLog(); dsp_set_long_prod(prod); @@ -457,7 +457,7 @@ void mulcmv(const UDSPInstruction opc) // (fixed possible bug in duddie's description, s->t) // Multiply mid part of accumulator register $acS.m by high part $axT.h of // secondary accumulator $axT (treat them both as signed). Move product -// register before multiplication to accumulator $acR, set (round) low part of +// register before multiplication to accumulator $acR, set (round) low part of // accumulator $acR.l to zero. // // flags out: --xx xx0x @@ -494,7 +494,7 @@ void maddx(const UDSPInstruction opc) u16 val1 = (sreg == 0) ? dsp_get_ax_l(0) : dsp_get_ax_h(0); u16 val2 = (treg == 0) ? dsp_get_ax_l(1) : dsp_get_ax_h(1); s64 prod = dsp_multiply_add(val1, val2); - + zeroWriteBackLog(); dsp_set_long_prod(prod); @@ -547,7 +547,7 @@ void msubc(const UDSPInstruction opc) { u8 treg = (opc >> 8) & 0x1; u8 sreg = (opc >> 9) & 0x1; - + u16 accm = dsp_get_acc_m(sreg); u16 axh = dsp_get_ax_h(treg); s64 prod = dsp_multiply_sub(accm, axh); @@ -565,7 +565,7 @@ void msubc(const UDSPInstruction opc) void madd(const UDSPInstruction opc) { u8 sreg = (opc >> 8) & 0x1; - + u16 axl = dsp_get_ax_l(sreg); u16 axh = dsp_get_ax_h(sreg); s64 prod = dsp_multiply_add(axl, axh); @@ -583,7 +583,7 @@ void madd(const UDSPInstruction opc) void msub(const UDSPInstruction opc) { u8 sreg = (opc >> 8) & 0x1; - + u16 axl = dsp_get_ax_l(sreg); u16 axh = dsp_get_ax_h(sreg); s64 prod = dsp_multiply_sub(axl, axh); diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitArithmetic.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitArithmetic.cpp index bc8b4bb843..5e2dfe7c14 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitArithmetic.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitArithmetic.cpp @@ -77,7 +77,7 @@ void DSPEmitter::andcf(const UDSPInstruction opc) // u16 val = dsp_get_acc_m(reg); get_acc_m(reg); // Update_SR_LZ(((val & imm) == imm) ? true : false); -// if ((val & imm) == imm) +// if ((val & imm) == imm) // g_dsp.r.sr |= SR_LOGIC_ZERO; // else // g_dsp.r.sr &= ~SR_LOGIC_ZERO; @@ -117,7 +117,7 @@ void DSPEmitter::andf(const UDSPInstruction opc) // u16 val = dsp_get_acc_m(reg); get_acc_m(reg); // Update_SR_LZ(((val & imm) == 0) ? true : false); -// if ((val & imm) == 0) +// if ((val & imm) == 0) // g_dsp.r.sr |= SR_LOGIC_ZERO; // else // g_dsp.r.sr &= ~SR_LOGIC_ZERO; @@ -250,7 +250,7 @@ void DSPEmitter::cmpar(const UDSPInstruction opc) // CMPI $amD, #I // 0000 001r 1000 0000 // iiii iiii iiii iiii -// Compares mid accumulator $acD.hm ($amD) with sign extended immediate value I. +// Compares mid accumulator $acD.hm ($amD) with sign extended immediate value I. // Although flags are being set regarding whole accumulator register. // // flags out: x-xx xxxx @@ -791,7 +791,7 @@ void DSPEmitter::addaxl(const UDSPInstruction opc) #endif } -// ADDI $amR, #I +// ADDI $amR, #I // 0000 001r 0000 0000 // iiii iiii iiii iiii // Adds immediate (16-bit sign extended) to mid accumulator $acD.hm. @@ -1033,7 +1033,7 @@ void DSPEmitter::subax(const UDSPInstruction opc) // SUB $acD, $ac(1-D) // 0101 110d xxxx xxxx -// Subtracts accumulator $ac(1-D) from accumulator register $acD. +// Subtracts accumulator $ac(1-D) from accumulator register $acD. // // flags out: x-xx xxxx void DSPEmitter::sub(const UDSPInstruction opc) @@ -1125,7 +1125,7 @@ void DSPEmitter::decm(const UDSPInstruction opc) // s64 res = acc - sub; SUB(64, R(RAX), Imm32((u32)subtract)); // dsp_set_long_acc(dreg, res); -// res = dsp_get_long_acc(dreg); +// res = dsp_get_long_acc(dreg); // Update_SR_Register64(res, isCarry2(acc, res), isOverflow(acc, -subtract, res)); if (FlagsNeeded()) { @@ -1155,7 +1155,7 @@ void DSPEmitter::dec(const UDSPInstruction opc) u8 dreg = (opc >> 8) & 0x01; X64Reg tmp1; gpr.getFreeXReg(tmp1); -// s64 acc = dsp_get_long_acc(dreg); +// s64 acc = dsp_get_long_acc(dreg); get_long_acc(dreg, tmp1); MOV(64, R(RAX), R(tmp1)); // s64 res = acc - 1; @@ -1208,7 +1208,7 @@ void DSPEmitter::neg(const UDSPInstruction opc) } // ABS $acD -// 1010 d001 xxxx xxxx +// 1010 d001 xxxx xxxx // absolute value of $acD // // flags out: --xx xx00 @@ -1217,7 +1217,7 @@ void DSPEmitter::abs(const UDSPInstruction opc) #ifdef _M_X64 u8 dreg = (opc >> 11) & 0x1; -// s64 acc = dsp_get_long_acc(dreg); +// s64 acc = dsp_get_long_acc(dreg); get_long_acc(dreg); // if (acc < 0) acc = 0 - acc; CMP(64, R(RAX), Imm8(0)); @@ -1267,7 +1267,7 @@ void DSPEmitter::movr(const UDSPInstruction opc) // MOVAX $acD, $axS // 0110 10sd xxxx xxxx -// Moves secondary accumulator $axS to accumulator $axD. +// Moves secondary accumulator $axS to accumulator $axD. // // flags out: --xx xx00 void DSPEmitter::movax(const UDSPInstruction opc) @@ -1353,7 +1353,7 @@ void DSPEmitter::lsr16(const UDSPInstruction opc) // u64 acc = dsp_get_long_acc(areg); get_long_acc(areg); // acc &= 0x000000FFFFFFFFFFULL; // Lop off the extraneous sign extension our 64-bit fake accum causes -// acc >>= 16; +// acc >>= 16; SHR(64, R(RAX), Imm8(16)); AND(64, R(RAX), Imm32(0xffffff)); // dsp_set_long_acc(areg, (s64)acc); @@ -1399,11 +1399,11 @@ void DSPEmitter::asr16(const UDSPInstruction opc) // Logically shifts left accumulator $acR by number specified by value I. // // flags out: --xx xx00 -void DSPEmitter::lsl(const UDSPInstruction opc) +void DSPEmitter::lsl(const UDSPInstruction opc) { #ifdef _M_X64 u8 rreg = (opc >> 8) & 0x01; - u16 shift = opc & 0x3f; + u16 shift = opc & 0x3f; // u64 acc = dsp_get_long_acc(rreg); get_long_acc(rreg); @@ -1448,7 +1448,7 @@ void DSPEmitter::lsr(const UDSPInstruction opc) // acc >>= shift; SHR(64, R(RAX), Imm8(shift + 24)); } - + // dsp_set_long_acc(rreg, (s64)acc); set_long_acc(rreg); // Update_SR_Register64(dsp_get_long_acc(rreg)); @@ -1531,7 +1531,7 @@ void DSPEmitter::asr(const UDSPInstruction opc) void DSPEmitter::lsrn(const UDSPInstruction opc) { #ifdef _M_X64 -// s16 shift; +// s16 shift; // u16 accm = (u16)dsp_get_acc_m(1); get_acc_m(1); // u64 acc = dsp_get_long_acc(0); diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitBranch.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitBranch.cpp index f368560112..49c94114b2 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitBranch.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitBranch.cpp @@ -38,11 +38,11 @@ static void ReJitConditional(const UDSPInstruction opc, DSPEmitter& emitter) emitter.TEST(16, R(EAX), Imm16(0x10)); break; case 0x4: // NZ - Not Zero - case 0x5: // Z - Zero + case 0x5: // Z - Zero emitter.TEST(16, R(EAX), Imm16(SR_ARITH_ZERO)); break; case 0x6: // NC - Not carry - case 0x7: // C - Carry + case 0x7: // C - Carry emitter.TEST(16, R(EAX), Imm16(SR_CARRY)); break; case 0x8: // ? - Not over s32 @@ -200,8 +200,8 @@ void r_callr(const UDSPInstruction opc, DSPEmitter& emitter) // Generic callr implementation // CALLRcc $R // 0001 0111 rrr1 cccc -// Call function if condition cc has been met. Push program counter of -// instruction following "call" to call stack $st0. Set program counter to +// Call function if condition cc has been met. Push program counter of +// instruction following "call" to call stack $st0. Set program counter to // register $R. // NOTE: Cannot use Default(opc) here because of the need to write branch exit void DSPEmitter::callr(const UDSPInstruction opc) @@ -261,7 +261,7 @@ void DSPEmitter::rti(const UDSPInstruction opc) } // HALT -// 0000 0000 0020 0001 +// 0000 0000 0020 0001 // Stops execution of DSP code. Sets bit DSP_CR_HALT in register DREG_CR. void DSPEmitter::halt(const UDSPInstruction opc) { @@ -429,7 +429,7 @@ void DSPEmitter::bloopi(const UDSPInstruction opc) // u16 loop_pc = dsp_fetch_code(); u16 loop_pc = dsp_imem_read(compilePC + 1); - if (cnt) + if (cnt) { MOV(16, R(RDX), Imm16(compilePC + 2)); dsp_reg_store_stack(0); diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitCCUtil.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitCCUtil.cpp index e8cd349d1c..62540ffe4f 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitCCUtil.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitCCUtil.cpp @@ -220,8 +220,8 @@ void DSPEmitter::Update_SR_Register16_OverS32(Gen::X64Reg val) //void DSPEmitter::Update_SR_LZ(bool value) { -// if (value == true) -// g_dsp.r[DSP_REG_SR] |= SR_LOGIC_ZERO; +// if (value == true) +// g_dsp.r[DSP_REG_SR] |= SR_LOGIC_ZERO; // else // g_dsp.r[DSP_REG_SR] &= ~SR_LOGIC_ZERO; //} @@ -276,11 +276,11 @@ void DSPEmitter::Update_SR_Register16_OverS32(Gen::X64Reg val) // return isLess() || isZero(); // case 0x4: // NZ - Not Zero // return !isZero(); -// case 0x5: // Z - Zero +// case 0x5: // Z - Zero // return isZero(); // case 0x6: // NC - Not carry // return !isCarry(); -// case 0x7: // C - Carry +// case 0x7: // C - Carry // return isCarry(); // case 0x8: // ? - Not over s32 // return !isOverS32(); diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitExtOps.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitExtOps.cpp index c76daf250c..f18bc3de84 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitExtOps.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitExtOps.cpp @@ -44,8 +44,8 @@ void DSPEmitter::ir(const UDSPInstruction opc) // Add corresponding indexing register $ixR to addressing register $arR. void DSPEmitter::nr(const UDSPInstruction opc) { - u8 reg = opc & 0x3; - + u8 reg = opc & 0x3; + increase_addr_reg(reg, reg); } @@ -106,7 +106,7 @@ void DSPEmitter::sn(const UDSPInstruction opc) // L $axD.D, @$arS // xxxx xxxx 01dd d0ss -// Load $axD.D/$acD.D with value from memory pointed by register $arS. +// Load $axD.D/$acD.D with value from memory pointed by register $arS. // Post increment register $arS. void DSPEmitter::l(const UDSPInstruction opc) { @@ -130,7 +130,7 @@ void DSPEmitter::l(const UDSPInstruction opc) // LN $axD.D, @$arS // xxxx xxxx 01dd d0ss -// Load $axD.D/$acD.D with value from memory pointed by register $arS. +// Load $axD.D/$acD.D with value from memory pointed by register $arS. // Add indexing register $ixS to register $arS. void DSPEmitter::ln(const UDSPInstruction opc) { @@ -174,7 +174,7 @@ void DSPEmitter::ls(const UDSPInstruction opc) pushExtValueFromMem(dreg, DSP_REG_AR0); increment_addr_reg(DSP_REG_AR3); - increment_addr_reg(DSP_REG_AR0); + increment_addr_reg(DSP_REG_AR0); } @@ -199,7 +199,7 @@ void DSPEmitter::lsn(const UDSPInstruction opc) gpr.putXReg(tmp1); pushExtValueFromMem(dreg, DSP_REG_AR0); - + increment_addr_reg(DSP_REG_AR3); increase_addr_reg(DSP_REG_AR0, DSP_REG_AR0); } diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitLoadStore.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitLoadStore.cpp index 74e04b3e55..765ecb39e4 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitLoadStore.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitLoadStore.cpp @@ -12,9 +12,9 @@ using namespace Gen; // SRS @M, $(0x18+S) // 0010 1sss mmmm mmmm -// Move value from register $(0x18+D) to data memory pointed by address -// CR[0-7] | M. That is, the upper 8 bits of the address are the -// bottom 8 bits from CR, and the lower 8 bits are from the 8-bit immediate. +// Move value from register $(0x18+D) to data memory pointed by address +// CR[0-7] | M. That is, the upper 8 bits of the address are the +// bottom 8 bits from CR, and the lower 8 bits are from the 8-bit immediate. // Note: pc+=2 in duddie's doc seems wrong void DSPEmitter::srs(const UDSPInstruction opc) { @@ -130,7 +130,7 @@ void DSPEmitter::lrr(const UDSPInstruction opc) // LRRD $D, @$S // 0001 1000 1ssd dddd // Move value from data memory pointed by addressing register $S toregister $D. -// Decrement register $S. +// Decrement register $S. void DSPEmitter::lrrd(const UDSPInstruction opc) { u8 sreg = (opc >> 5) & 0x3; @@ -152,7 +152,7 @@ void DSPEmitter::lrrd(const UDSPInstruction opc) // LRRI $D, @$S // 0001 1001 0ssd dddd // Move value from data memory pointed by addressing register $S to register $D. -// Increment register $S. +// Increment register $S. void DSPEmitter::lrri(const UDSPInstruction opc) { u8 sreg = (opc >> 5) & 0x3; @@ -174,7 +174,7 @@ void DSPEmitter::lrri(const UDSPInstruction opc) // LRRN $D, @$S // 0001 1001 1ssd dddd // Move value from data memory pointed by addressing register $S to register $D. -// Add indexing register $(0x4+S) to register $S. +// Add indexing register $(0x4+S) to register $S. void DSPEmitter::lrrn(const UDSPInstruction opc) { u8 sreg = (opc >> 5) & 0x3; @@ -195,8 +195,8 @@ void DSPEmitter::lrrn(const UDSPInstruction opc) // SRR @$D, $S // 0001 1010 0dds ssss -// Store value from source register $S to a memory location pointed by -// addressing register $D. +// Store value from source register $S to a memory location pointed by +// addressing register $D. void DSPEmitter::srr(const UDSPInstruction opc) { u8 dreg = (opc >> 5) & 0x3; @@ -215,7 +215,7 @@ void DSPEmitter::srr(const UDSPInstruction opc) // SRRD @$D, $S // 0001 1010 1dds ssss // Store value from source register $S to a memory location pointed by -// addressing register $D. Decrement register $D. +// addressing register $D. Decrement register $D. void DSPEmitter::srrd(const UDSPInstruction opc) { u8 dreg = (opc >> 5) & 0x3; @@ -236,7 +236,7 @@ void DSPEmitter::srrd(const UDSPInstruction opc) // SRRI @$D, $S // 0001 1011 0dds ssss // Store value from source register $S to a memory location pointed by -// addressing register $D. Increment register $D. +// addressing register $D. Increment register $D. void DSPEmitter::srri(const UDSPInstruction opc) { u8 dreg = (opc >> 5) & 0x3; diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitMisc.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitMisc.cpp index bfcb6a6e44..6da5b646f4 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitMisc.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitMisc.cpp @@ -80,7 +80,7 @@ void DSPEmitter::iar(const UDSPInstruction opc) increment_addr_reg(opc & 0x3); } -// SUBARN $arD +// SUBARN $arD // 0000 0000 0000 11dd // Subtract indexing register $ixD from an addressing register $arD. // used only in IPL-NTSC ucode @@ -110,7 +110,7 @@ void DSPEmitter::addarn(const UDSPInstruction opc) void DSPEmitter::setCompileSR(u16 bit) { - + // g_dsp.r[DSP_REG_SR] |= bit OpArg sr_reg; gpr.getReg(DSP_REG_SR,sr_reg); @@ -122,7 +122,7 @@ void DSPEmitter::setCompileSR(u16 bit) void DSPEmitter::clrCompileSR(u16 bit) { - + // g_dsp.r[DSP_REG_SR] &= bit OpArg sr_reg; gpr.getReg(DSP_REG_SR,sr_reg); diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitMultiplier.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitMultiplier.cpp index 3cb86e38f9..00cec82e76 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitMultiplier.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitMultiplier.cpp @@ -209,7 +209,7 @@ void DSPEmitter::movp(const UDSPInstruction opc) } // MOVNP $acD -// 0111 111d xxxx xxxx +// 0111 111d xxxx xxxx // Moves negative of multiply product from $prod register to accumulator // $acD register. @@ -286,7 +286,7 @@ void DSPEmitter::addpaxz(const UDSPInstruction opc) // s64 oldprod = dsp_get_long_prod(); // dsp_set_long_acc(dreg, res); // res = dsp_get_long_acc(dreg); -// Update_SR_Register64(res, isCarry(oldprod, res), false); +// Update_SR_Register64(res, isCarry(oldprod, res), false); if (FlagsNeeded()) { get_long_prod(RDX); @@ -308,7 +308,7 @@ void DSPEmitter::addpaxz(const UDSPInstruction opc) // MULAXH // 1000 0011 xxxx xxxx -// Multiply $ax0.h by $ax0.h +// Multiply $ax0.h by $ax0.h void DSPEmitter::mulaxh(const UDSPInstruction opc) { #ifdef _M_X64 @@ -702,7 +702,7 @@ void DSPEmitter::mulcmv(const UDSPInstruction opc) // (fixed possible bug in duddie's description, s->t) // Multiply mid part of accumulator register $acS.m by high part $axT.h of // secondary accumulator $axT (treat them both as signed). Move product -// register before multiplication to accumulator $acR, set (round) low part of +// register before multiplication to accumulator $acR, set (round) low part of // accumulator $acR.l to zero. // flags out: --xx xx0x diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp b/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp index 2c51b31e05..6950daa6d1 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.cpp @@ -613,7 +613,7 @@ void DSPJitRegCache::movToHostReg(int reg, bool load) tmp = regs[reg].host_reg; else tmp = findSpillFreeXReg(); - + if (tmp == INVALID_REG) return; diff --git a/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.h b/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.h index 727361b828..075be9d99d 100644 --- a/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.h +++ b/Source/Core/Core/Src/DSP/Jit/DSPJitRegCache.h @@ -48,7 +48,7 @@ private: int guest_reg; //including DSPJitRegSpecial bool pushed; }; - + struct DynamicReg { Gen::OpArg loc; diff --git a/Source/Core/Core/Src/DSP/LabelMap.cpp b/Source/Core/Core/Src/DSP/LabelMap.cpp index 75f6cf4b33..1c836e7a69 100644 --- a/Source/Core/Core/Src/DSP/LabelMap.cpp +++ b/Source/Core/Core/Src/DSP/LabelMap.cpp @@ -27,7 +27,7 @@ void LabelMap::RegisterDefaults() void LabelMap::RegisterLabel(const std::string &label, u16 lval, LabelType type) { u16 old_value; - if (GetLabelValue(label, &old_value) && old_value != lval) + if (GetLabelValue(label, &old_value) && old_value != lval) { printf("WARNING: Redefined label %s to %04x - old value %04x\n", label.c_str(), lval, old_value); diff --git a/Source/Core/Core/Src/DSP/assemble.cpp b/Source/Core/Core/Src/DSP/assemble.cpp index 8deef98ed9..a8ddebf113 100644 --- a/Source/Core/Core/Src/DSP/assemble.cpp +++ b/Source/Core/Core/Src/DSP/assemble.cpp @@ -78,7 +78,7 @@ static const char *err_string[] = "Number out of range" }; -DSPAssembler::DSPAssembler(const AssemblerSettings &settings) : +DSPAssembler::DSPAssembler(const AssemblerSettings &settings) : gdg_buffer(NULL), m_cur_addr(0), m_cur_pass(0), @@ -150,7 +150,7 @@ void DSPAssembler::ShowError(err_t err_code, const char *extra_info) if (m_current_param == 0) buf_ptr += sprintf(buf_ptr, "ERROR: %s Line: %d : %s\n", err_string[err_code], code_line, extra_info); - else + else buf_ptr += sprintf(buf_ptr, "ERROR: %s Line: %d Param: %d : %s\n", err_string[err_code], code_line, m_current_param, extra_info); last_error_str = error_buffer; @@ -525,7 +525,7 @@ bool DSPAssembler::VerifyParams(const opc_t *opc, param_t *par, int count, bool // modified by Hermes: test the register range switch ((unsigned)opc->params[i].type) - { + { case P_REG18: case P_REG19: case P_REG1A: @@ -775,27 +775,27 @@ bool DSPAssembler::AssembleFile(const char *fname, int pass) fsrc.getline(line, LINEBUF_SIZE); if(fsrc.fail()) break; - + cur_line = line; //printf("A: %s\n", line); code_line++; param_t params[10] = {{0, P_NONE, NULL}}; param_t params_ext[10] = {{0, P_NONE, NULL}}; - + bool upper = true; for (int i = 0; i < LINEBUF_SIZE; i++) { char c = line[i]; // This stuff handles /**/ and // comments. - // modified by Hermes : added // and /* */ for long commentaries + // modified by Hermes : added // and /* */ for long commentaries if (c == '/') { if (i < 1023) { if (line[i+1] == '/') c = 0x00; - else if (line[i+1] == '*') + else if (line[i+1] == '*') { // toggle comment mode. disable_text = !disable_text; @@ -916,7 +916,7 @@ bool DSPAssembler::AssembleFile(const char *fname, int pass) { char *tmpstr; u32 thisCodeline = code_line; - + if (include_dir.size()) { tmpstr = (char *)malloc(include_dir.size() + strlen(params[0].str) + 2); @@ -927,7 +927,7 @@ bool DSPAssembler::AssembleFile(const char *fname, int pass) tmpstr = (char *)malloc(strlen(params[0].str) + 1); strcpy(tmpstr, params[0].str); } - + AssembleFile(tmpstr, pass); code_line = thisCodeline; diff --git a/Source/Core/Core/Src/DSP/assemble.h b/Source/Core/Core/Src/DSP/assemble.h index f140d0e69e..5a15ed2ded 100644 --- a/Source/Core/Core/Src/DSP/assemble.h +++ b/Source/Core/Core/Src/DSP/assemble.h @@ -119,7 +119,7 @@ private: u32 m_cur_addr; int m_totalSize; u8 m_cur_pass; - + LabelMap labels; u32 code_line; diff --git a/Source/Core/Core/Src/DSPEmulator.cpp b/Source/Core/Core/Src/DSPEmulator.cpp index 96e1a1107e..52cae0d492 100644 --- a/Source/Core/Core/Src/DSPEmulator.cpp +++ b/Source/Core/Core/Src/DSPEmulator.cpp @@ -7,7 +7,7 @@ #include "HW/DSPLLE/DSPLLE.h" #include "HW/DSPHLE/DSPHLE.h" -DSPEmulator *CreateDSPEmulator(bool HLE) +DSPEmulator *CreateDSPEmulator(bool HLE) { if (HLE) { diff --git a/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.cpp b/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.cpp index dc8f0d9adf..d4f1a4044f 100644 --- a/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.cpp +++ b/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.cpp @@ -35,7 +35,7 @@ void AddAutoBreakpoints() // Returns callstack "formatted for debugging" - meaning that it // includes LR as the last item, and all items are the last step, // instead of "pointing ahead" -bool GetCallstack(std::vector &output) +bool GetCallstack(std::vector &output) { if (Core::GetState() == Core::CORE_UNINITIALIZED) return false; @@ -90,9 +90,9 @@ void PrintCallstack() u32 addr = Memory::ReadUnchecked_U32(PowerPC::ppcState.gpr[1]); // SP printf("== STACK TRACE - SP = %08x ==", PowerPC::ppcState.gpr[1]); - + if (LR == 0) { - printf(" LR = 0 - this is bad"); + printf(" LR = 0 - this is bad"); } int count = 1; if (g_symbolDB.GetDescription(PowerPC::ppcState.pc) != g_symbolDB.GetDescription(LR)) @@ -117,16 +117,16 @@ void PrintCallstack(LogTypes::LOG_TYPE type, LogTypes::LOG_LEVELS level) { u32 addr = Memory::ReadUnchecked_U32(PowerPC::ppcState.gpr[1]); // SP - GENERIC_LOG(type, level, "== STACK TRACE - SP = %08x ==", + GENERIC_LOG(type, level, "== STACK TRACE - SP = %08x ==", PowerPC::ppcState.gpr[1]); if (LR == 0) { - GENERIC_LOG(type, level, " LR = 0 - this is bad"); + GENERIC_LOG(type, level, " LR = 0 - this is bad"); } int count = 1; if (g_symbolDB.GetDescription(PowerPC::ppcState.pc) != g_symbolDB.GetDescription(LR)) { - GENERIC_LOG(type, level, " * %s [ LR = %08x ]", + GENERIC_LOG(type, level, " * %s [ LR = %08x ]", g_symbolDB.GetDescription(LR), LR); count++; } @@ -145,7 +145,7 @@ void PrintCallstack(LogTypes::LOG_TYPE type, LogTypes::LOG_LEVELS level) void PrintDataBuffer(LogTypes::LOG_TYPE type, u8* _pData, size_t _Size, const char* _title) { - GENERIC_LOG(type, LogTypes::LDEBUG, "%s", _title); + GENERIC_LOG(type, LogTypes::LDEBUG, "%s", _title); for (u32 j = 0; j < _Size;) { std::string Temp; diff --git a/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.h b/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.h index fac79b2959..2d470e2059 100644 --- a/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.h +++ b/Source/Core/Core/Src/Debugger/Debugger_SymbolMap.h @@ -13,7 +13,7 @@ namespace Dolphin_Debugger { -struct CallstackEntry +struct CallstackEntry { std::string Name; u32 vAddress; diff --git a/Source/Core/Core/Src/Debugger/Dump.cpp b/Source/Core/Core/Src/Debugger/Dump.cpp index 8a9a87c2b8..8c4a23ca1a 100644 --- a/Source/Core/Core/Src/Debugger/Dump.cpp +++ b/Source/Core/Core/Src/Debugger/Dump.cpp @@ -37,7 +37,7 @@ CDump::GetNumberOfSteps(void) return (int)(m_size / STRUCTUR_SIZE); } -u32 +u32 CDump::GetGPR(int _step, int _gpr) { u32 offset = _step * STRUCTUR_SIZE; @@ -48,7 +48,7 @@ CDump::GetGPR(int _step, int _gpr) return Read32(offset + OFFSET_GPR + (_gpr * 4)); } -u32 +u32 CDump::GetPC(int _step) { u32 offset = _step * STRUCTUR_SIZE; @@ -59,7 +59,7 @@ CDump::GetPC(int _step) return Read32(offset + OFFSET_PC); } -u32 +u32 CDump::Read32(u32 _pos) { u32 result = (m_pData[_pos+0] << 24) | diff --git a/Source/Core/Core/Src/Debugger/Dump.h b/Source/Core/Core/Src/Debugger/Dump.h index d2764714c0..57244c2572 100644 --- a/Source/Core/Core/Src/Debugger/Dump.h +++ b/Source/Core/Core/Src/Debugger/Dump.h @@ -17,7 +17,7 @@ public: CDump(const char* _szFilename); ~CDump(); - + int GetNumberOfSteps(); u32 GetGPR(int _step, int _gpr); u32 GetPC(int _step); diff --git a/Source/Core/Core/Src/Debugger/PPCDebugInterface.cpp b/Source/Core/Core/Src/Debugger/PPCDebugInterface.cpp index f2e36ee1ee..4b224d5677 100644 --- a/Source/Core/Core/Src/Debugger/PPCDebugInterface.cpp +++ b/Source/Core/Core/Src/Debugger/PPCDebugInterface.cpp @@ -15,7 +15,7 @@ #include "../PowerPC/JitCommon/JitBase.h" #include "../PowerPC/PPCSymbolDB.h" -void PPCDebugInterface::disasm(unsigned int address, char *dest, int max_size) +void PPCDebugInterface::disasm(unsigned int address, char *dest, int max_size) { // Memory::ReadUnchecked_U32 seemed to crash on shutdown if (PowerPC::GetState() == PowerPC::CPU_POWERDOWN) return; @@ -93,7 +93,7 @@ bool PPCDebugInterface::isAlive() return Core::GetState() != Core::CORE_UNINITIALIZED; } -bool PPCDebugInterface::isBreakpoint(unsigned int address) +bool PPCDebugInterface::isBreakpoint(unsigned int address) { return PowerPC::breakpoints.IsAddressBreakPoint(address); } @@ -146,7 +146,7 @@ void PPCDebugInterface::toggleMemCheck(unsigned int address) PowerPC::memchecks.Remove(address); } -void PPCDebugInterface::insertBLR(unsigned int address, unsigned int value) +void PPCDebugInterface::insertBLR(unsigned int address, unsigned int value) { Memory::Write_U32(value, address); } @@ -165,7 +165,7 @@ int PPCDebugInterface::getColor(unsigned int address) if (!Memory::IsRAMAddress(address, true, true)) return 0xeeeeee; static const int colors[6] = - { + { 0xd0FFFF, // light cyan 0xFFd0d0, // light red 0xd8d8FF, // light blue @@ -183,22 +183,22 @@ int PPCDebugInterface::getColor(unsigned int address) // ============= -std::string PPCDebugInterface::getDescription(unsigned int address) +std::string PPCDebugInterface::getDescription(unsigned int address) { return g_symbolDB.GetDescription(address); } -unsigned int PPCDebugInterface::getPC() +unsigned int PPCDebugInterface::getPC() { return PowerPC::ppcState.pc; } -void PPCDebugInterface::setPC(unsigned int address) +void PPCDebugInterface::setPC(unsigned int address) { PowerPC::ppcState.pc = address; } -void PPCDebugInterface::showJitResults(unsigned int address) +void PPCDebugInterface::showJitResults(unsigned int address) { Host_ShowJitResults(address); } diff --git a/Source/Core/Core/Src/Debugger/PPCDebugInterface.h b/Source/Core/Core/Src/Debugger/PPCDebugInterface.h index e7d08ddd3a..575121b983 100644 --- a/Source/Core/Core/Src/Debugger/PPCDebugInterface.h +++ b/Source/Core/Core/Src/Debugger/PPCDebugInterface.h @@ -14,7 +14,7 @@ class PPCDebugInterface : public DebugInterface { public: - PPCDebugInterface(){} + PPCDebugInterface(){} virtual void disasm(unsigned int address, char *dest, int max_size); virtual void getRawMemoryString(int memory, unsigned int address, char *dest, int max_size); virtual int getInstructionSize(int /*instruction*/) {return 4;} diff --git a/Source/Core/Core/Src/FifoPlayer/FifoAnalyzer.cpp b/Source/Core/Core/Src/FifoPlayer/FifoAnalyzer.cpp index b9f45d4c8c..2bdbd88074 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoAnalyzer.cpp +++ b/Source/Core/Core/Src/FifoPlayer/FifoAnalyzer.cpp @@ -124,7 +124,7 @@ void LoadCPReg(u32 subCmd, u32 value, CPMemory &cpMem) u32 CalculateVertexSize(int vatIndex, const CPMemory &cpMem) { u32 vertexSize = 0; - + int sizes[21]; CalculateVertexElementSizes(sizes, vatIndex, cpMem); @@ -145,14 +145,14 @@ void CalculateVertexElementSizes(int sizes[], int vatIndex, const CPMemory &cpMe const u32 tcElements[8] = { - vtxAttr.g0.Tex0CoordElements, vtxAttr.g1.Tex1CoordElements, vtxAttr.g1.Tex2CoordElements, + vtxAttr.g0.Tex0CoordElements, vtxAttr.g1.Tex1CoordElements, vtxAttr.g1.Tex2CoordElements, vtxAttr.g1.Tex3CoordElements, vtxAttr.g1.Tex4CoordElements, vtxAttr.g2.Tex5CoordElements, vtxAttr.g2.Tex6CoordElements, vtxAttr.g2.Tex7CoordElements }; const u32 tcFormat[8] = { - vtxAttr.g0.Tex0CoordFormat, vtxAttr.g1.Tex1CoordFormat, vtxAttr.g1.Tex2CoordFormat, + vtxAttr.g0.Tex0CoordFormat, vtxAttr.g1.Tex1CoordFormat, vtxAttr.g1.Tex2CoordFormat, vtxAttr.g1.Tex3CoordFormat, vtxAttr.g1.Tex4CoordFormat, vtxAttr.g2.Tex5CoordFormat, vtxAttr.g2.Tex6CoordFormat, vtxAttr.g2.Tex7CoordFormat }; @@ -171,7 +171,7 @@ void CalculateVertexElementSizes(int sizes[], int vatIndex, const CPMemory &cpMe // Normals if (vtxDesc.Normal != NOT_PRESENT) { - sizes[10] = VertexLoader_Normal::GetSize(vtxDesc.Normal, vtxAttr.g0.NormalFormat, vtxAttr.g0.NormalElements, vtxAttr.g0.NormalIndex3); + sizes[10] = VertexLoader_Normal::GetSize(vtxDesc.Normal, vtxAttr.g0.NormalFormat, vtxAttr.g0.NormalElements, vtxAttr.g0.NormalIndex3); } else { diff --git a/Source/Core/Core/Src/FifoPlayer/FifoDataFile.cpp b/Source/Core/Core/Src/FifoPlayer/FifoDataFile.cpp index ca980bc3cc..118511af92 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoDataFile.cpp +++ b/Source/Core/Core/Src/FifoPlayer/FifoDataFile.cpp @@ -99,7 +99,7 @@ bool FifoDataFile::Save(const char *filename) const FifoFrameInfo &srcFrame = m_Frames[i]; // Write FIFO data - file.Seek(0, SEEK_END); + file.Seek(0, SEEK_END); u64 dataOffset = file.Tell(); file.WriteBytes(srcFrame.fifoData, srcFrame.fifoDataSize); @@ -116,7 +116,7 @@ bool FifoDataFile::Save(const char *filename) // Write frame info u64 frameOffset = frameListOffset + (i * sizeof(FileFrameInfo)); file.Seek(frameOffset, SEEK_SET); - file.WriteBytes(&dstFrame, sizeof(FileFrameInfo)); + file.WriteBytes(&dstFrame, sizeof(FileFrameInfo)); } if (!file.Close()) @@ -150,7 +150,7 @@ FifoDataFile *FifoDataFile::Load(const std::string &filename, bool flagsOnly) file.Close(); return dataFile; } - + u32 size = std::min((u32)BP_MEM_SIZE, header.bpMemSize); file.Seek(header.bpMemOffset, SEEK_SET); file.ReadArray(dataFile->m_BPMem, size); @@ -230,7 +230,7 @@ u64 FifoDataFile::WriteMemoryUpdates(const std::vector &memUpdates file.Seek(0, SEEK_END); u64 dataOffset = file.Tell(); file.WriteBytes(srcUpdate.data, srcUpdate.size); - + FileMemoryUpdate dstUpdate; dstUpdate.address = srcUpdate.address; dstUpdate.dataOffset = dataOffset; diff --git a/Source/Core/Core/Src/FifoPlayer/FifoDataFile.h b/Source/Core/Core/Src/FifoPlayer/FifoDataFile.h index d13568a21b..c5dc6aee8e 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoDataFile.h +++ b/Source/Core/Core/Src/FifoPlayer/FifoDataFile.h @@ -54,7 +54,7 @@ public: }; FifoDataFile(); - ~FifoDataFile(); + ~FifoDataFile(); void SetIsWii(bool isWii); bool GetIsWii() const; @@ -77,7 +77,7 @@ private: { FLAG_IS_WII = 1 }; - + void PadFile(u32 numBytes, File::IOFile &file); void SetFlag(u32 flag, bool set); diff --git a/Source/Core/Core/Src/FifoPlayer/FifoFileStruct.h b/Source/Core/Core/Src/FifoPlayer/FifoFileStruct.h index 0e606cc465..1eeada1160 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoFileStruct.h +++ b/Source/Core/Core/Src/FifoPlayer/FifoFileStruct.h @@ -21,7 +21,7 @@ enum union FileHeader { - struct + struct { u32 fileId; u32 file_version; diff --git a/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.cpp b/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.cpp index 0afd253807..1e606e52e4 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.cpp +++ b/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.cpp @@ -45,7 +45,7 @@ void FifoPlaybackAnalyzer::AnalyzeFrames(FifoDataFile *file, std::vectorGetFrameCount()); @@ -208,7 +208,7 @@ u32 FifoPlaybackAnalyzer::DecodeCommand(u8 *data) BPCmd bp = FifoAnalyzer::DecodeBPCmd(cmd2, m_BpMem); FifoAnalyzer::LoadBPReg(bp, m_BpMem); - + if (bp.address == BPMEM_TRIGGER_EFB_COPY) StoreEfbCopyRegion(); } @@ -284,7 +284,7 @@ void FifoPlaybackAnalyzer::StoreWrittenRegion(u32 address, u32 size) { u32 end = address + size; vector::iterator newRangeIter = m_WrittenMemory.end(); - + // Search for overlapping memory regions and expand them to include the new region for (vector::iterator iter = m_WrittenMemory.begin(); iter != m_WrittenMemory.end();) { @@ -293,7 +293,7 @@ void FifoPlaybackAnalyzer::StoreWrittenRegion(u32 address, u32 size) if (range.begin < end && range.end > address) { // range at iterator and new range overlap - + if (newRangeIter == m_WrittenMemory.end()) { // Expand range to include the written region diff --git a/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.h b/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.h index f6df506947..e58acbd62a 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.h +++ b/Source/Core/Core/Src/FifoPlayer/FifoPlaybackAnalyzer.h @@ -33,7 +33,7 @@ private: }; void AddMemoryUpdate(MemoryUpdate memUpdate, AnalyzedFrameInfo &frameInfo); - + u32 DecodeCommand(u8 *data); void LoadBP(u32 value0); diff --git a/Source/Core/Core/Src/FifoPlayer/FifoPlayer.cpp b/Source/Core/Core/Src/FifoPlayer/FifoPlayer.cpp index e249bcd109..0f65c6a966 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoPlayer.cpp +++ b/Source/Core/Core/Src/FifoPlayer/FifoPlayer.cpp @@ -92,7 +92,7 @@ bool FifoPlayer::Play() if (m_EarlyMemoryUpdates && m_CurrentFrame == m_FrameRangeStart) WriteAllMemoryUpdates(); - WriteFrame(m_File->GetFrame(m_CurrentFrame), m_FrameInfo[m_CurrentFrame]); + WriteFrame(m_File->GetFrame(m_CurrentFrame), m_FrameInfo[m_CurrentFrame]); ++m_CurrentFrame; } @@ -310,7 +310,7 @@ void FifoPlayer::SetupFifo() const FifoFrameInfo& frame = m_File->GetFrame(m_CurrentFrame); - // Set fifo bounds + // Set fifo bounds WriteCP(0x20, frame.fifoStart); WriteCP(0x22, frame.fifoStart >> 16); WriteCP(0x24, frame.fifoEnd); @@ -368,7 +368,7 @@ void FifoPlayer::LoadMemory() LoadCPReg(0x80 + i, regs[0x80 + i]); LoadCPReg(0x90 + i, regs[0x90 + i]); } - + for (int i = 0; i < 16; ++i) { LoadCPReg(0xa0 + i, regs[0xa0 + i]); diff --git a/Source/Core/Core/Src/FifoPlayer/FifoPlayer.h b/Source/Core/Core/Src/FifoPlayer/FifoPlayer.h index bad936cca9..b99093f164 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoPlayer.h +++ b/Source/Core/Core/Src/FifoPlayer/FifoPlayer.h @@ -106,7 +106,7 @@ private: FifoDataFile *m_File; - std::vector m_FrameInfo; + std::vector m_FrameInfo; }; #endif diff --git a/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.cpp b/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.cpp index 293e062b2c..d628e9bfbf 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.cpp +++ b/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.cpp @@ -60,7 +60,7 @@ void FifoRecordAnalyzer::DecodeOpcode(u8 *data) u32 value = ReadFifo32(data); FifoAnalyzer::LoadCPReg(cmd2, value, m_CpMem); } - + break; case GX_LOAD_XF_REG: @@ -98,7 +98,7 @@ void FifoRecordAnalyzer::DecodeOpcode(u8 *data) u32 cmd2 = ReadFifo32(data); BPCmd bp = FifoAnalyzer::DecodeBPCmd(cmd2, *m_BpMem); - + if (bp.address == BPMEM_LOADTLUT1) ProcessLoadTlut1(); if (bp.address == BPMEM_PRELOAD_MODE) diff --git a/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.h b/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.h index 94e53b17ed..af7d1c997d 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.h +++ b/Source/Core/Core/Src/FifoPlayer/FifoRecordAnalyzer.h @@ -38,7 +38,7 @@ private: bool m_DrawingObject; BPMemory *m_BpMem; - FifoAnalyzer::CPMemory m_CpMem; + FifoAnalyzer::CPMemory m_CpMem; }; #endif diff --git a/Source/Core/Core/Src/FifoPlayer/FifoRecorder.cpp b/Source/Core/Core/Src/FifoPlayer/FifoRecorder.cpp index 26fb661162..fb98205d27 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoRecorder.cpp +++ b/Source/Core/Core/Src/FifoPlayer/FifoRecorder.cpp @@ -22,7 +22,7 @@ FifoRecorder::FifoRecorder() : m_File(NULL), m_SkipNextData(true), m_SkipFutureData(true), - m_FrameEnded(false), + m_FrameEnded(false), m_Ram(NULL), m_ExRam(NULL) { @@ -53,7 +53,7 @@ void FifoRecorder::StartRecording(s32 numFrames, CallbackFunc finishedCb) if (!m_IsRecording) { m_WasRecording = false; - m_IsRecording = true; + m_IsRecording = true; m_RecordFramesRemaining = numFrames; } @@ -88,7 +88,7 @@ void FifoRecorder::WriteGPCommand(u8 *data, u32 size) memcpy(m_CurrentFrame.fifoData, &m_FifoData[0], dataSize); sMutex.lock(); - + // Copy frame to file // The file will be responsible for freeing the memory allocated for each frame's fifoData m_File->AddFrame(m_CurrentFrame); @@ -132,11 +132,11 @@ void FifoRecorder::WriteMemory(u32 address, u32 size, MemoryUpdate::Type type) memUpdate.fifoPosition = m_FifoData.size(); memUpdate.size = size; memUpdate.type = type; - memUpdate.data = new u8[size]; + memUpdate.data = new u8[size]; memcpy(memUpdate.data, newData, size); m_CurrentFrame.memoryUpdates.push_back(memUpdate); - } + } } void FifoRecorder::EndFrame(u32 fifoStart, u32 fifoEnd) @@ -149,7 +149,7 @@ void FifoRecorder::EndFrame(u32 fifoStart, u32 fifoEnd) m_CurrentFrame.fifoStart = fifoStart; m_CurrentFrame.fifoEnd = fifoEnd; - + if (m_WasRecording) { // If recording a fixed number of frames then check if the end of the recording was reached diff --git a/Source/Core/Core/Src/FifoPlayer/FifoRecorder.h b/Source/Core/Core/Src/FifoPlayer/FifoRecorder.h index 7641a9d7f1..25cad32579 100644 --- a/Source/Core/Core/Src/FifoPlayer/FifoRecorder.h +++ b/Source/Core/Core/Src/FifoPlayer/FifoRecorder.h @@ -27,7 +27,7 @@ public: void WriteGPCommand(u8 *data, u32 size); void WriteMemory(u32 address, u32 size, MemoryUpdate::Type type); - + void EndFrame(u32 fifoStart, u32 fifoEnd); // This function must be called before writing GP commands diff --git a/Source/Core/Core/Src/GeckoCode.cpp b/Source/Core/Core/Src/GeckoCode.cpp index f8359e1bc5..c791eeb31d 100644 --- a/Source/Core/Core/Src/GeckoCode.cpp +++ b/Source/Core/Core/Src/GeckoCode.cpp @@ -764,7 +764,7 @@ bool RegisterOps() dst_addr += new_data; else src_addr += new_data; - + while (count--) Memory::Write_U8(Memory::Read_U8(src_addr++), dst_addr++); } @@ -922,7 +922,7 @@ bool SpecialIf() result = (left_val < right_val); break; } - } + } else if (code.subtype & 0x4) { // counters get reset if code execution is off diff --git a/Source/Core/Core/Src/GeckoCode.h b/Source/Core/Core/Src/GeckoCode.h index 4156be8cbb..c04005494d 100644 --- a/Source/Core/Core/Src/GeckoCode.h +++ b/Source/Core/Core/Src/GeckoCode.h @@ -52,7 +52,7 @@ namespace Gecko u32 data; //struct //{ - // + // //}; }; diff --git a/Source/Core/Core/Src/HLE/HLE.cpp b/Source/Core/Core/Src/HLE/HLE.cpp index 3d3d8d6052..24180fc6b5 100644 --- a/Source/Core/Core/Src/HLE/HLE.cpp +++ b/Source/Core/Core/Src/HLE/HLE.cpp @@ -38,8 +38,8 @@ struct SPatch int flags; }; -static const SPatch OSPatches[] = -{ +static const SPatch OSPatches[] = +{ { "FAKE_TO_SKIP_0", HLE_Misc::UnimplementedFunction, HLE_HOOK_REPLACE, HLE_TYPE_GENERIC }, { "PanicAlert", HLE_Misc::HLEPanicAlert, HLE_HOOK_REPLACE, HLE_TYPE_DEBUG }, diff --git a/Source/Core/Core/Src/HW/AudioInterface.cpp b/Source/Core/Core/Src/HW/AudioInterface.cpp index e9ef2eed03..b86482d58f 100644 --- a/Source/Core/Core/Src/HW/AudioInterface.cpp +++ b/Source/Core/Core/Src/HW/AudioInterface.cpp @@ -88,13 +88,13 @@ union AICR { AICR() { hex = 0;} AICR(u32 _hex) { hex = _hex;} - struct + struct { u32 PSTAT : 1; // sample counter/playback enable u32 AISFR : 1; // AIS Frequency (0=32khz 1=48khz) u32 AIINTMSK : 1; // 0=interrupt masked 1=interrupt enabled u32 AIINT : 1; // audio interrupt status - u32 AIINTVLD : 1; // This bit controls whether AIINT is affected by the Interrupt Timing register + u32 AIINTVLD : 1; // This bit controls whether AIINT is affected by the Interrupt Timing register // matching the sample counter. Once set, AIINT will hold its last value u32 SCRESET : 1; // write to reset counter u32 AIDFR : 1; // AID Frequency (0=48khz 1=32khz) @@ -206,7 +206,7 @@ void Write32(const u32 _Value, const u32 _Address) case AI_CONTROL_REGISTER: { AICR tmpAICtrl(_Value); - + m_Control.AIINTMSK = tmpAICtrl.AIINTMSK; m_Control.AIINTVLD = tmpAICtrl.AIINTVLD; @@ -250,7 +250,7 @@ void Write32(const u32 _Value, const u32 _Address) } // Sample Count Reset - if (tmpAICtrl.SCRESET) + if (tmpAICtrl.SCRESET) { DEBUG_LOG(AUDIO_INTERFACE, "Reset AIS sample counter"); m_SampleCounter = 0; @@ -360,7 +360,7 @@ unsigned int Callback_GetStreaming(short* _pDestBuffer, unsigned int _numSamples static s16 l1 = 0; static s16 l2 = 0; - + if ( frac >= 0x10000 || frac == 0) { frac &= 0xffff; @@ -388,7 +388,7 @@ unsigned int Callback_GetStreaming(short* _pDestBuffer, unsigned int _numSamples } else //1:1 no resampling - { + { pcm_l = (((int)pcm[pos*2] * lvolume) >> 8) + (int)(*_pDestBuffer); if (pcm_l > 32767) pcm_l = 32767; else if (pcm_l < -32767) pcm_l = -32767; @@ -398,11 +398,11 @@ unsigned int Callback_GetStreaming(short* _pDestBuffer, unsigned int _numSamples if (pcm_r > 32767) pcm_r = 32767; else if (pcm_r < -32767) pcm_r = -32767; *_pDestBuffer++ = pcm_r; - + pos++; } - if (pos == NGCADPCM::SAMPLES_PER_BLOCK) + if (pos == NGCADPCM::SAMPLES_PER_BLOCK) pos = 0; } } diff --git a/Source/Core/Core/Src/HW/BBA-TAP/TAP_Unix.cpp b/Source/Core/Core/Src/HW/BBA-TAP/TAP_Unix.cpp index 97c73eeb40..1140ef72e0 100644 --- a/Source/Core/Core/Src/HW/BBA-TAP/TAP_Unix.cpp +++ b/Source/Core/Core/Src/HW/BBA-TAP/TAP_Unix.cpp @@ -88,7 +88,7 @@ void CEXIETHERNET::Deactivate() } bool CEXIETHERNET::IsActivated() -{ +{ #ifdef __linux__ return fd != -1 ? true : false; #else @@ -96,7 +96,7 @@ bool CEXIETHERNET::IsActivated() #endif } -bool CEXIETHERNET::SendFrame(u8* frame, u32 size) +bool CEXIETHERNET::SendFrame(u8* frame, u32 size) { #ifdef __linux__ INFO_LOG(SP1, "SendFrame %x\n%s", size, ArrayToString(frame, size, 0x10).c_str()); diff --git a/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp b/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp index a444ca63cb..dd7ad20d5b 100644 --- a/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp +++ b/Source/Core/Core/Src/HW/BBA-TAP/TAP_Win32.cpp @@ -95,7 +95,7 @@ bool GetGUIDs(std::vector>& guids) if (status != ERROR_SUCCESS) return false; - + while (!found_all) { TCHAR enum_name[256]; @@ -240,7 +240,7 @@ void CEXIETHERNET::Deactivate() } bool CEXIETHERNET::IsActivated() -{ +{ return mHAdapter != INVALID_HANDLE_VALUE; } @@ -266,14 +266,14 @@ bool CEXIETHERNET::SendFrame(u8 *frame, u32 size) // Always report the packet as being sent successfully, even though it might be a lie SendComplete(); - + return true; } VOID CALLBACK CEXIETHERNET::ReadWaitCallback(PVOID lpParameter, BOOLEAN TimerFired) { CEXIETHERNET* self = (CEXIETHERNET*)lpParameter; - + GetOverlappedResult(self->mHAdapter, &self->mReadOverlapped, (LPDWORD)&self->mRecvBufferLength, false); @@ -332,7 +332,7 @@ void CEXIETHERNET::RecvStop() return; UnregisterWaitEx(mHReadWait, INVALID_HANDLE_VALUE); - + CloseHandle(mHRecvEvent); mHRecvEvent = INVALID_HANDLE_VALUE; } diff --git a/Source/Core/Core/Src/HW/CPU.cpp b/Source/Core/Core/Src/HW/CPU.cpp index f013c9ee7d..dc81955f13 100644 --- a/Source/Core/Core/Src/HW/CPU.cpp +++ b/Source/Core/Core/Src/HW/CPU.cpp @@ -75,7 +75,7 @@ reswitch: case PowerPC::CPU_POWERDOWN: //1: Exit loop!! - return; + return; } } } @@ -96,7 +96,7 @@ void CCPU::Reset() } -void CCPU::StepOpcode(Common::Event *event) +void CCPU::StepOpcode(Common::Event *event) { m_StepEvent.Set(); if (PowerPC::GetState() == PowerPC::CPU_STEPPING) @@ -106,7 +106,7 @@ void CCPU::StepOpcode(Common::Event *event) } void CCPU::EnableStepping(const bool _bStepping) -{ +{ if (_bStepping) { PowerPC::Pause(); @@ -123,7 +123,7 @@ void CCPU::EnableStepping(const bool _bStepping) } } -void CCPU::Break() +void CCPU::Break() { EnableStepping(true); } diff --git a/Source/Core/Core/Src/HW/CPU.h b/Source/Core/Core/Src/HW/CPU.h index 0b5508a94a..219df48370 100644 --- a/Source/Core/Core/Src/HW/CPU.h +++ b/Source/Core/Core/Src/HW/CPU.h @@ -14,7 +14,7 @@ namespace Common { class CCPU { public: - // init + // init static void Init(int cpu_core); // shutdown @@ -24,7 +24,7 @@ public: static void Run(); // causes shutdown - static void Stop(); + static void Stop(); // Reset static void Reset(); @@ -35,7 +35,7 @@ public: static void SingleStep(); // Enable or Disable Stepping - static void EnableStepping(const bool _bStepping); + static void EnableStepping(const bool _bStepping); // break, same as EnableStepping(true). static void Break(); diff --git a/Source/Core/Core/Src/HW/DSP.cpp b/Source/Core/Core/Src/HW/DSP.cpp index 3ef62e5aaa..51ca22d388 100644 --- a/Source/Core/Core/Src/HW/DSP.cpp +++ b/Source/Core/Core/Src/HW/DSP.cpp @@ -554,7 +554,7 @@ void Read32(u32& _uReturnValue, const u32 _iAddress) case AR_DMA_CNT_H: _uReturnValue = g_arDMA.Cnt.Hex; break; - + case AR_DMA_MMADDR_H: _uReturnValue = g_arDMA.MMAddr; break; @@ -592,7 +592,7 @@ void Write32(const u32 _iValue, const u32 _iAddress) g_arDMA.ARAddr = _iValue & ~31; break; - case AR_DMA_CNT_H: + case AR_DMA_CNT_H: g_arDMA.Cnt.Hex = _iValue & ~31; Do_ARAM_DMA(); break; @@ -665,7 +665,7 @@ void UpdateAudioDMA() // external audio fifo in the emulator, to be mixed with the disc // streaming output. If that audio queue fills up, we delay the // emulator. - + g_audioDMA.BlocksLeft--; g_audioDMA.ReadAddress += 32; @@ -811,10 +811,10 @@ u8 ReadARAM(u32 _iAddress) { //NOTICE_LOG(DSPINTERFACE, "ReadARAM 0x%08x", _iAddress); if (g_ARAM.wii_mode) - { + { if (_iAddress & 0x10000000) return g_ARAM.ptr[_iAddress & g_ARAM.mask]; - else + else return Memory::Read_U8(_iAddress & Memory::RAM_MASK); } else diff --git a/Source/Core/Core/Src/HW/DSP.h b/Source/Core/Core/Src/HW/DSP.h index 68d83edabb..8feabf4876 100644 --- a/Source/Core/Core/Src/HW/DSP.h +++ b/Source/Core/Core/Src/HW/DSP.h @@ -38,7 +38,7 @@ void GenerateDSPInterruptFromDSPEmu(DSPInterruptType _DSPInterruptType, bool _bS // Read32 void Read16(u16& _uReturnValue, const u32 _uAddress); -void Read32(u32& _uReturnValue, const u32 _uAddress); +void Read32(u32& _uReturnValue, const u32 _uAddress); // Write void Write16(const u16 _uValue, const u32 _uAddress); diff --git a/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.cpp b/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.cpp index 763ab787a7..3897fd6e86 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.cpp @@ -252,7 +252,7 @@ void DSPHLE::DSP_WriteMailBoxLow(bool _CPUMailbox, unsigned short _Value) m_dspState.CPUMailbox = (m_dspState.CPUMailbox & 0xFFFF0000) | _Value; SendMailToDSP(m_dspState.CPUMailbox); // Mail sent so clear MSB to show that it is progressed - m_dspState.CPUMailbox &= 0x7FFFFFFF; + m_dspState.CPUMailbox &= 0x7FFFFFFF; } else { @@ -333,5 +333,5 @@ void DSPHLE::DSP_ClearAudioBuffer(bool mute) void DSPHLE::PauseAndLock(bool doLock, bool unpauseOnUnlock) { if (doLock || unpauseOnUnlock) - DSP_ClearAudioBuffer(doLock); + DSP_ClearAudioBuffer(doLock); } diff --git a/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.h b/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.h index b6f2d5d874..b420070f58 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.h +++ b/Source/Core/Core/Src/HW/DSPHLE/DSPHLE.h @@ -49,7 +49,7 @@ private: // Declarations and definitions void *m_hWnd; bool m_bWii; - + bool m_InitMixer; // Fake mailbox utility diff --git a/Source/Core/Core/Src/HW/DSPHLE/HLEMixer.h b/Source/Core/Core/Src/HW/DSPHLE/HLEMixer.h index 3d0369d452..4437887603 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/HLEMixer.h +++ b/Source/Core/Core/Src/HW/DSPHLE/HLEMixer.h @@ -9,12 +9,12 @@ class DSPHLE; -class HLEMixer : public CMixer +class HLEMixer : public CMixer { public: HLEMixer(DSPHLE *dsp_hle, unsigned int AISampleRate = 48000, unsigned int DACSampleRate = 48000, unsigned int BackendSampleRate = 32000) : CMixer(AISampleRate, DACSampleRate, BackendSampleRate), m_DSPHLE(dsp_hle) {}; - + virtual void Premix(short *samples, unsigned int numSamples); private: DSPHLE *m_DSPHLE; diff --git a/Source/Core/Core/Src/HW/DSPHLE/MailHandler.h b/Source/Core/Core/Src/HW/DSPHLE/MailHandler.h index efc512012f..b203c8c587 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/MailHandler.h +++ b/Source/Core/Core/Src/HW/DSPHLE/MailHandler.h @@ -26,7 +26,7 @@ public: u16 ReadDSPMailboxLow(); u32 GetNextMail() - { + { if (m_Mails.size()) { return m_Mails.front(); diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXStructs.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXStructs.h index 54a7dce6e9..58039fc2f9 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXStructs.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_AXStructs.h @@ -237,7 +237,7 @@ struct AXPB u16 is_stream; // 1 = stream, 0 = one shot PBMixer mixer; - PBInitialTimeDelay initial_time_delay; + PBInitialTimeDelay initial_time_delay; PBUpdates updates; PBDpop dpop; PBVolumeEnvelope vol_env; diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp index b1627a0cd7..899a7d902f 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.cpp @@ -18,7 +18,7 @@ CUCode_Zelda::CUCode_Zelda(DSPHLE *dsp_hle, u32 _CRC) - : + : IUCode(dsp_hle, _CRC), m_bSyncInProgress(false), @@ -60,7 +60,7 @@ CUCode_Zelda::CUCode_Zelda(DSPHLE *dsp_hle, u32 _CRC) if (IsLightVersion()) { NOTICE_LOG(DSPHLE, "Luigi Stylee!"); - m_rMailHandler.PushMail(0x88881111); + m_rMailHandler.PushMail(0x88881111); } else { @@ -125,7 +125,7 @@ void CUCode_Zelda::HandleMail(u32 _uMail) void CUCode_Zelda::HandleMail_LightVersion(u32 _uMail) { - //ERROR_LOG(DSPHLE, "Light version mail %08X, list in progress: %s, step: %i/%i", + //ERROR_LOG(DSPHLE, "Light version mail %08X, list in progress: %s, step: %i/%i", // _uMail, m_bListInProgress ? "yes":"no", m_step, m_numSteps); if (m_bSyncCmdPending) @@ -322,7 +322,7 @@ void CUCode_Zelda::HandleMail_NormalVersion(u32 _uMail) m_rMailHandler.PushMail(DSP_SYNC); DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); m_rMailHandler.PushMail(0xF355FF00 | m_CurBuffer); - + m_CurVoice = 0; if (m_CurBuffer == m_NumBuffers) @@ -371,10 +371,10 @@ void CUCode_Zelda::HandleMail_NormalVersion(u32 _uMail) // - 00000000, 000X0000 - Sync mails // - CDD1XXXX - comes after DsyncFrame completed, seems to be debugging stuff - if (_uMail == 0) + if (_uMail == 0) { m_bSyncInProgress = true; - } + } else if ((_uMail >> 16) == 0) { m_bListInProgress = true; @@ -542,7 +542,7 @@ void CUCode_Zelda::ExecuteList() { if (m_bSyncCmdPending) m_rMailHandler.PushMail(0x80000000 | m_NumBuffers); // after CMD_2 - else + else m_rMailHandler.PushMail(0x80000000 | Sync); // after CMD_0, CMD_1 } else diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h index 29a9678ed2..9b4d82136d 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda.h @@ -15,11 +15,11 @@ union ZeldaVoicePB { - struct + struct { // Read-Write part u16 Status; // 0x00 | 1 = play, 0 = stop - u16 KeyOff; // 0x01 | writing 1 stops voice? + u16 KeyOff; // 0x01 | writing 1 stops voice? u16 RatioInt; // 0x02 | Position delta (playback speed) u16 Unk03; // 0x03 | unknown u16 NeedsReset; // 0x04 | indicates if some values in PB need to be reset @@ -48,10 +48,10 @@ union ZeldaVoicePB u16 Unk17; // 0x17 | unknown u16 Unk18[0x10]; // 0x18 | unknown - u16 Unk28; // 0x28 | unknown + u16 Unk28; // 0x28 | unknown u16 Unk29; // 0x29 | unknown // multiplied by 0x2a @ 0d21/ZWW u16 Unk2a; // 0x2A | unknown // loaded at 0d2e/ZWW - u16 Unk2b; // 0x2B | unknown + u16 Unk2b; // 0x2B | unknown u16 VolumeMode; // 0x2C | unknown // See 0337/ZWW u16 Unk2D; // 0x2D | unknown u16 Unk2E; // 0x2E | unknown @@ -75,7 +75,7 @@ union ZeldaVoicePB u16 FilterState1; // 0x78 | unknown // ZWW: 0c84_FilterBufferInPlace loads and stores. Simply, the filter state. u16 FilterState2; // 0x79 | unknown // ZWW: same as above. these two are active if 0x04a8 != 0. u16 Unk7A; // 0x7A | unknown - u16 Unk7B; // 0x7B | unknown + u16 Unk7B; // 0x7B | unknown u16 Unk7C; // 0x7C | unknown u16 Unk7D; // 0x7D | unknown u16 Unk7E; // 0x7E | unknown diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp index 2cd0bd9c17..3ff7a55546 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_ADPCM.cpp @@ -22,7 +22,7 @@ void CUCode_Zelda::AFCdecodebuffer(const s16 *coef, const char *src, signed shor src++; } for (auto& nibble : nibbles) { - if (nibble >= 8) + if (nibble >= 8) nibble = nibble - 16; nibble <<= 11; } @@ -41,9 +41,9 @@ void CUCode_Zelda::AFCdecodebuffer(const s16 *coef, const char *src, signed shor src++; } - for (auto& nibble : nibbles) + for (auto& nibble : nibbles) { - if (nibble >= 2) + if (nibble >= 2) nibble = nibble - 4; nibble <<= 13; } @@ -65,4 +65,4 @@ void CUCode_Zelda::AFCdecodebuffer(const s16 *coef, const char *src, signed shor } *histp = hist; *hist2p = hist2; -} +} diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp index cc7fd68ea0..261ff64d8e 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Synth.cpp @@ -18,9 +18,9 @@ void CUCode_Zelda::RenderSynth_RectWave(ZeldaVoicePB &PB, s32* _Buffer, int _Siz s64 TrueSamplePosition = PB.CurSampleFrac; // PB.Format == 0x3 -> Rectangular Wave, 0x0 -> Square Wave - unsigned int mask = PB.Format ? 3 : 1; + unsigned int mask = PB.Format ? 3 : 1; // int shift = PB.Format ? 2 : 1; // Unused? - + u32 pos[2] = {0, 0}; int i = 0; @@ -55,7 +55,7 @@ _lRestart: } } - while(i < _Size) + while(i < _Size) { s16 sample = ((pos[1] & mask) == mask) ? 0xc000 : 0x4000; @@ -84,12 +84,12 @@ _lRestart: PB.CurSampleFrac = TrueSamplePosition & 0xFFFF; } -void CUCode_Zelda::RenderSynth_SawWave(ZeldaVoicePB &PB, s32* _Buffer, int _Size) +void CUCode_Zelda::RenderSynth_SawWave(ZeldaVoicePB &PB, s32* _Buffer, int _Size) { s32 ratio = (s32)ceil((float)PB.RatioInt / 3); s64 pos = PB.CurSampleFrac; - for (int i = 0; i < _Size; i++) + for (int i = 0; i < _Size; i++) { pos += ratio; _Buffer[i] = pos & 0xFFFF; @@ -161,10 +161,10 @@ void CUCode_Zelda::RenderSynth_WaveTable(ZeldaVoicePB &PB, s32* _Buffer, int _Si address = AddValueToReg(address, ((ACC0 >> 16) & 0xffff)); ACC0 &= 0xffff0000ffffULL; - for(int i = 0; i < 0x50; i++) + for(int i = 0; i < 0x50; i++) { _Buffer[i] = m_MiscTable[address]; - + ACC0 += PB.RatioInt << 5; address = AddValueToReg(address, ((ACC0 >> 16) & 0xffff)); diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp index 9c3fedddb3..ab3a4bef2c 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCode_Zelda_Voice.cpp @@ -77,7 +77,7 @@ void CUCode_Zelda::Resample(ZeldaVoicePB &PB, int size, s16 *in, s32 *out, bool int ratio = ConvertRatio(PB.RatioInt); int in_size = SizeForResampling(PB, size, ratio); - + int position = PB.CurSampleFrac; for (int i = 0; i < size; i++) { @@ -110,7 +110,7 @@ void CUCode_Zelda::RenderVoice_PCM16(ZeldaVoicePB &PB, s16 *_Buffer, int _Size) if (PB.NeedsReset) { UpdateSampleCounters10(PB); - for (int i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) PB.ResamplerOldData[i] = 0; // Doesn't belong here, but dunno where to do it. } if (PB.ReachedEnd) @@ -168,7 +168,7 @@ void CUCode_Zelda::RenderVoice_PCM8(ZeldaVoicePB &PB, s16 *_Buffer, int _Size) if (PB.NeedsReset) { UpdateSampleCounters8(PB); - for (int i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) PB.ResamplerOldData[i] = 0; // Doesn't belong here, but dunno where to do it. } if (PB.ReachedEnd) @@ -211,8 +211,8 @@ clear_buffer: PB.CurAddr += rem_samples; } -template -void PrintObject(const T &Obj) +template +void PrintObject(const T &Obj) { std::stringstream ss; u8 *o = (u8 *)&Obj; @@ -248,11 +248,11 @@ void CUCode_Zelda::RenderVoice_AFC(ZeldaVoicePB &PB, s16 *_Buffer, int _Size) { // This is 0717_ReadOutPBStuff // increment 4fb - // zelda: + // zelda: // perhaps init or "has played before" PB.CurBlock = 0x00; - PB.YN2 = 0x00; // history1 - PB.YN1 = 0x00; // history2 + PB.YN2 = 0x00; // history1 + PB.YN1 = 0x00; // history2 // Length in samples. PB.RemLength = PB.Length; @@ -261,7 +261,7 @@ void CUCode_Zelda::RenderVoice_AFC(ZeldaVoicePB &PB, s16 *_Buffer, int _Size) PB.ReachedEnd = 0; PB.CurSampleFrac = 0; - for (int i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) PB.ResamplerOldData[i] = 0; } @@ -300,7 +300,7 @@ restart: PB.KeyOff = 1; PB.RemLength = 0; PB.CurAddr = PB.StartAddr + PB.RestartPos + PB.Length; - + while (sampleCount < _RealSize) _Buffer[sampleCount++] = 0; return; @@ -413,7 +413,7 @@ void CUCode_Zelda::RenderVoice_Raw(ZeldaVoicePB &PB, s16 *_Buffer, int _Size) u64 ACC1 = (u32)(PB.raw[0x34 ^ 1] << 16); // 0x34 // ERROR_LOG(DSPHLE, "%08x %08x", (u32)ACC0, (u32)ACC1); - + ACC0 -= ACC1; PB.Unk36[0] = (u16)(ACC0 >> 16); @@ -461,7 +461,7 @@ void Decoder21_ReadAudio(ZeldaVoicePB &PB, int size, s16 *_Buffer) #endif // ACC0 is the address // ACC1 is the read size - + const u32 ram_mask = 0x1FFFFFF; const u8 *source = Memory::GetPointer(0x80000000); const u16 *src = (u16 *)(source + (ACC0 & ram_mask)); @@ -525,12 +525,12 @@ void CUCode_Zelda::RenderAddVoice(ZeldaVoicePB &PB, s32* _LeftBuffer, s32* _Righ break; case 0x0021: - // Raw sound from RAM. Important for Zelda WW. Cutscenes use the music + // Raw sound from RAM. Important for Zelda WW. Cutscenes use the music // to let the game know they ended RenderVoice_Raw(PB, m_ResampleBuffer + 4, _Size); Resample(PB, _Size, m_ResampleBuffer + 4, m_VoiceBuffer, true); break; - + default: // Second jump table // TODO: Cases to find examples of: @@ -546,7 +546,7 @@ void CUCode_Zelda::RenderAddVoice(ZeldaVoicePB &PB, s32* _LeftBuffer, s32* _Righ RenderSynth_RectWave(PB, m_VoiceBuffer, _Size); break; - case 0x0001: // Example: "Denied" sound when trying to pull out a sword + case 0x0001: // Example: "Denied" sound when trying to pull out a sword // indoors in ZWW RenderSynth_SawWave(PB, m_VoiceBuffer, _Size); break; @@ -577,7 +577,7 @@ void CUCode_Zelda::RenderAddVoice(ZeldaVoicePB &PB, s32* _LeftBuffer, s32* _Righ } ContinueWithBlock: - + if (PB.FilterEnable) { // 0x04a8 for (int i = 0; i < _Size; i++) @@ -590,7 +590,7 @@ ContinueWithBlock: { // TODO? } - + // Apply volume. There are two different modes. if (PB.VolumeMode != 0) { @@ -629,7 +629,7 @@ ContinueWithBlock: } // ZWW 0d34 - + int diff = (s16)PB.raw[0x2b] - (s16)PB.raw[0x2a]; PB.raw[0x2a] = PB.raw[0x2b]; @@ -649,7 +649,7 @@ ContinueWithBlock: // We just mix to the first two and call it stereo :p int value = b00[0x4 + count]; //int delta = b00[0xC + count] << 11; // Unused? - + int ramp = value << 16; for (int i = 0; i < _Size; i++) { @@ -730,7 +730,7 @@ ContinueWithBlock: } // Update the PB with the volume actually reached. PB.raw[addr++] = ramp >> 16; - + addr++; } } diff --git a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h index cd8e8f9552..7737a8a59b 100644 --- a/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h +++ b/Source/Core/Core/Src/HW/DSPHLE/UCodes/UCodes.h @@ -90,7 +90,7 @@ protected: // Some ucodes (notably zelda) require a resume mail to be // sent if they are be started via PrepareBootUCode. - // The HLE can use this to + // The HLE can use this to bool NeedsResumeMail(); void DoStateShared(PointerWrap &p); diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.cpp b/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.cpp index 1aa64aa190..9343fa7089 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.cpp +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.cpp @@ -10,7 +10,7 @@ #include "DSPSymbols.h" #include "DSP/DSPMemoryMap.h" -void DSPDebugInterface::disasm(unsigned int address, char *dest, int max_size) +void DSPDebugInterface::disasm(unsigned int address, char *dest, int max_size) { // we'll treat addresses as line numbers. strncpy(dest, DSPSymbols::GetLineText(address), max_size); @@ -72,7 +72,7 @@ bool DSPDebugInterface::isAlive() return true; //Core::GetState() != Core::CORE_UNINITIALIZED; } -bool DSPDebugInterface::isBreakpoint(unsigned int address) +bool DSPDebugInterface::isBreakpoint(unsigned int address) { int real_addr = DSPSymbols::Line2Addr(address); if (real_addr >= 0) @@ -97,7 +97,7 @@ void DSPDebugInterface::setBreakpoint(unsigned int address) void DSPDebugInterface::clearBreakpoint(unsigned int address) { int real_addr = DSPSymbols::Line2Addr(address); - + if (real_addr >= 0) { if (dsp_breakpoints.Remove(real_addr)) @@ -134,7 +134,7 @@ void DSPDebugInterface::toggleMemCheck(unsigned int address) PanicAlert("MemCheck functionality not supported in DSP module."); } -void DSPDebugInterface::insertBLR(unsigned int address, unsigned int value) +void DSPDebugInterface::insertBLR(unsigned int address, unsigned int value) { PanicAlert("insertBLR functionality not supported in DSP module."); } @@ -145,7 +145,7 @@ void DSPDebugInterface::insertBLR(unsigned int address, unsigned int value) int DSPDebugInterface::getColor(unsigned int address) { static const int colors[6] = - { + { 0xd0FFFF, // light cyan 0xFFd0d0, // light red 0xd8d8FF, // light blue @@ -175,24 +175,24 @@ int DSPDebugInterface::getColor(unsigned int address) // ============= -std::string DSPDebugInterface::getDescription(unsigned int address) +std::string DSPDebugInterface::getDescription(unsigned int address) { return ""; // g_symbolDB.GetDescription(address); } -unsigned int DSPDebugInterface::getPC() +unsigned int DSPDebugInterface::getPC() { return DSPSymbols::Addr2Line(g_dsp.pc); } -void DSPDebugInterface::setPC(unsigned int address) +void DSPDebugInterface::setPC(unsigned int address) { int new_pc = DSPSymbols::Line2Addr(address); if (new_pc > 0) g_dsp.pc = new_pc; } -void DSPDebugInterface::runToBreakpoint() +void DSPDebugInterface::runToBreakpoint() { } diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.h b/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.h index 2773b86870..ac34991149 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.h +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPDebugInterface.h @@ -14,7 +14,7 @@ class DSPDebugInterface : public DebugInterface { public: - DSPDebugInterface(){} + DSPDebugInterface(){} virtual void disasm(unsigned int address, char *dest, int max_size); virtual void getRawMemoryString(int memory, unsigned int address, char *dest, int max_size); virtual int getInstructionSize(int instruction) {return 1;} diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPHost.cpp b/Source/Core/Core/Src/HW/DSPLLE/DSPHost.cpp index 26e7110d6e..4b25f4ba20 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPHost.cpp +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPHost.cpp @@ -58,7 +58,7 @@ void DSPHost_CodeLoaded(const u8 *ptr, int size) DSPSymbols::Clear(); // Auto load text file - if none just disassemble. - + NOTICE_LOG(DSPLLE, "g_dsp.iram_crc: %08x", g_dsp.iram_crc); DSPSymbols::Clear(); diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPLLE.cpp b/Source/Core/Core/Src/HW/DSPLLE/DSPLLE.cpp index c718fd9e1c..9b9364947b 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPLLE.cpp +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPLLE.cpp @@ -184,7 +184,7 @@ void DSPLLE::InitMixer() unsigned int AISampleRate, DACSampleRate; AudioInterface::Callback_GetSampleRate(AISampleRate, DACSampleRate); delete soundStream; - soundStream = AudioCommon::InitSoundStream(new CMixer(AISampleRate, DACSampleRate, 48000)); + soundStream = AudioCommon::InitSoundStream(new CMixer(AISampleRate, DACSampleRate, 48000)); if(!soundStream) PanicAlert("Error starting up sound stream"); // Mixer is initialized m_InitMixer = true; @@ -293,7 +293,7 @@ void DSPLLE::DSP_Update(int cycles) cycles_between_ss_update = 121500000 / 200; else cycles_between_ss_update = 81000000 / 200; - + m_cycle_count += cycles; if (m_cycle_count > cycles_between_ss_update) { @@ -349,7 +349,7 @@ void DSPLLE::DSP_ClearAudioBuffer(bool mute) void DSPLLE::PauseAndLock(bool doLock, bool unpauseOnUnlock) { if (doLock || unpauseOnUnlock) - DSP_ClearAudioBuffer(doLock); + DSP_ClearAudioBuffer(doLock); if (doLock) m_csDSPThreadActive.lock(); diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPLLEGlobals.h b/Source/Core/Core/Src/HW/DSPLLE/DSPLLEGlobals.h index 281402297e..4b3902c635 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPLLEGlobals.h +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPLLEGlobals.h @@ -12,7 +12,7 @@ #define PROFILE 0 -#if PROFILE +#if PROFILE void ProfilerDump(u64 _count); void ProfilerInit(); void ProfilerAddDelta(int _addr, int _delta); diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.cpp b/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.cpp index 52b9ba04a0..90beaed796 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.cpp +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.cpp @@ -108,7 +108,7 @@ bool IsAlpha(char c) void DisasssembleRange(u16 start, u16 end) { - + } bool ReadAnnotatedAssembly(const char *filename) @@ -120,9 +120,9 @@ bool ReadAnnotatedAssembly(const char *filename) return false; } char line[512]; - + int last_addr = 0; - + lines.reserve(3000); // Symbol generation @@ -229,7 +229,7 @@ bool ReadAnnotatedAssembly(const char *filename) return false; } } - else + else { // if (line_counter >= 200 && line_counter <= 220) // NOTICE_LOG(DSPLLE, "Got Hex Digit %04x from %s, line %i", hex, line, line_counter); diff --git a/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.h b/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.h index d4d8cdd242..da739a008e 100644 --- a/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.h +++ b/Source/Core/Core/Src/HW/DSPLLE/DSPSymbols.h @@ -10,12 +10,12 @@ namespace DSPSymbols { -class DSPSymbolDB : public SymbolDB +class DSPSymbolDB : public SymbolDB { public: DSPSymbolDB() {} ~DSPSymbolDB() {} - + Symbol *GetSymbolFromAddr(u32 addr); }; diff --git a/Source/Core/Core/Src/HW/DVDInterface.cpp b/Source/Core/Core/Src/HW/DVDInterface.cpp index bc6c44f7dd..fc326fec90 100644 --- a/Source/Core/Core/Src/HW/DVDInterface.cpp +++ b/Source/Core/Core/Src/HW/DVDInterface.cpp @@ -36,7 +36,7 @@ enum DI_COMMAND_1 = 0x0C, DI_COMMAND_2 = 0x10, DI_DMA_ADDRESS_REGISTER = 0x14, - DI_DMA_LENGTH_REGISTER = 0x18, + DI_DMA_LENGTH_REGISTER = 0x18, DI_DMA_CONTROL_REGISTER = 0x1C, DI_IMMEDIATE_DATA_BUFFER = 0x20, DI_CONFIG_REGISTER = 0x24 @@ -62,7 +62,7 @@ enum }; // DI Status Register -union UDISR +union UDISR { u32 Hex; struct @@ -284,7 +284,7 @@ void SetDiscInside(bool _DiscInside) } bool IsDiscInside() -{ +{ return g_bDiscInside; } @@ -342,7 +342,7 @@ void SetLidOpen(bool _bOpen) } bool IsLidOpen() -{ +{ return (m_DICVR.CVR == 1); } @@ -455,7 +455,7 @@ void Write32(const u32 _iValue, const u32 _iAddress) { _dbg_assert_(DVDINTERFACE, 0); } - + UpdateInterrupts(); } break; @@ -487,14 +487,14 @@ void Write32(const u32 _iValue, const u32 _iAddress) m_DILENGTH.Hex = _iValue & ~0x1f; } break; - case DI_DMA_CONTROL_REGISTER: + case DI_DMA_CONTROL_REGISTER: { m_DICR.Hex = _iValue & 7; if (m_DICR.TSTART) { if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bFastDiscSpeed) { - u64 ticksUntilTC = m_DILENGTH.Length * + u64 ticksUntilTC = m_DILENGTH.Length * (SystemTimers::GetTicksPerSecond() / (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 1 : DISC_TRANSFER_RATE_GC)) + (SystemTimers::GetTicksPerSecond() * DISC_ACCESS_TIME_MS / 1000); CoreTiming::ScheduleEvent((int)ticksUntilTC, tc); @@ -541,7 +541,7 @@ void UpdateInterrupts() void GenerateDIInterrupt(DI_InterruptType _DVDInterrupt) { - switch(_DVDInterrupt) + switch(_DVDInterrupt) { case INT_DEINT: m_DISR.DEINT = 1; break; case INT_TCINT: m_DISR.TCINT = 1; break; @@ -709,7 +709,7 @@ void ExecuteCommand(UDICR& _DICR) { ERROR_LOG(DVDINTERFACE, "GC-AM: 0xAA, DMABuffer=%08x, DMALength=%08x", m_DIMAR.Address, m_DILENGTH.Length); u32 iDVDOffset = m_DICMDBUF[1].Hex << 2; - unsigned int len = m_DILENGTH.Length; + unsigned int len = m_DILENGTH.Length; int offset = iDVDOffset - 0x1F900000; /* if (iDVDOffset == 0x84800000) @@ -794,7 +794,7 @@ void ExecuteCommand(UDICR& _DICR) 3 - "Testing a game program. %d%%" 4 - "Loading a game program. %d%%" 5 - go - 6 - error xx + 6 - error xx */ media_buffer[8] = percentage; media_buffer[4] = 0x05; @@ -803,7 +803,7 @@ void ExecuteCommand(UDICR& _DICR) } case 0x101: media_buffer[4] = 3; // version - media_buffer[5] = 3; + media_buffer[5] = 3; media_buffer[6] = 1; // xxx media_buffer[8] = 1; media_buffer[16] = 0xFF; @@ -846,7 +846,7 @@ void ExecuteCommand(UDICR& _DICR) // Audio Stream (Immediate) // m_DICMDBUF[0].CMDBYTE1 = subcommand - // m_DICMDBUF[1].Hex << 2 = offset on disc + // m_DICMDBUF[1].Hex << 2 = offset on disc // m_DICMDBUF[2].Hex = Length of the stream case 0xE1: { diff --git a/Source/Core/Core/Src/HW/EXI_Device.cpp b/Source/Core/Core/Src/HW/EXI_Device.cpp index b956859c76..74f96f756c 100644 --- a/Source/Core/Core/Src/HW/EXI_Device.cpp +++ b/Source/Core/Core/Src/HW/EXI_Device.cpp @@ -88,7 +88,7 @@ public: }; -// F A C T O R Y +// F A C T O R Y IEXIDevice* EXIDevice_Create(TEXIDevices device_type, const int channel_num) { IEXIDevice* result = NULL; diff --git a/Source/Core/Core/Src/HW/EXI_DeviceAD16.cpp b/Source/Core/Core/Src/HW/EXI_DeviceAD16.cpp index f0e0f96724..e4806b87da 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceAD16.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceAD16.cpp @@ -9,7 +9,7 @@ CEXIAD16::CEXIAD16() : m_uPosition(0), - m_uCommand(0) + m_uCommand(0) { m_uAD16Register.U32 = 0x00; } @@ -40,7 +40,7 @@ void CEXIAD16::TransferByte(u8& _byte) m_uAD16Register.U32 = 0x04120000; switch(m_uPosition) { - case 1: _dbg_assert_(EXPANSIONINTERFACE, (_byte == 0x00)); break; // just skip + case 1: _dbg_assert_(EXPANSIONINTERFACE, (_byte == 0x00)); break; // just skip case 2: _byte = m_uAD16Register.U8[0]; break; case 3: _byte = m_uAD16Register.U8[1]; break; case 4: _byte = m_uAD16Register.U8[2]; break; diff --git a/Source/Core/Core/Src/HW/EXI_DeviceAD16.h b/Source/Core/Core/Src/HW/EXI_DeviceAD16.h index de97d0d590..ec1b920081 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceAD16.h +++ b/Source/Core/Core/Src/HW/EXI_DeviceAD16.h @@ -14,7 +14,7 @@ public: virtual void DoState(PointerWrap &p); private: - enum + enum { init = 0x00, write = 0xa0, diff --git a/Source/Core/Core/Src/HW/EXI_DeviceAMBaseboard.cpp b/Source/Core/Core/Src/HW/EXI_DeviceAMBaseboard.cpp index 756fa85f62..03de8304f2 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceAMBaseboard.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceAMBaseboard.cpp @@ -45,7 +45,7 @@ void CEXIAMBaseboard::TransferByte(u8& _byte) xx xx xx xx 04 exi_isr_read: - 82 .. .. .. xx xx xx + 82 .. .. .. xx xx xx xx xx xx xx 04 rr rr 3 byte command, 1 byte checksum */ diff --git a/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp b/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp index cfb8f37188..5e4b7be015 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceEthernet.cpp @@ -63,7 +63,7 @@ CEXIETHERNET::CEXIETHERNET() // Parse MAC address from config, and generate a new one if it doesn't // exist or can't be parsed. - auto &mac_addr_setting = SConfig::GetInstance().m_bba_mac; + auto &mac_addr_setting = SConfig::GetInstance().m_bba_mac; bool mac_addr_valid = false; u8 mac_addr[6] = { 0 }; @@ -87,7 +87,7 @@ CEXIETHERNET::CEXIETHERNET() mac_addr[x / 2] |= (c - 'a' + 10) << ((x & 1) ? 0 : 4); x++; } } - + if (x / 2 == 6) { memcpy(&mBbaMem[BBA_NAFR_PAR0], mac_addr, 6); @@ -259,7 +259,7 @@ void CEXIETHERNET::DMAWrite(u32 addr, u32 size) void CEXIETHERNET::DMARead(u32 addr, u32 size) { DEBUG_LOG(SP1, "DMA read: %08x %x", addr, size); - + memcpy(Memory::GetPointer(addr), &mBbaMem[transfer.address], size); transfer.address += size; @@ -550,7 +550,7 @@ bool CEXIETHERNET::RecvHandlePacket() if (!RecvMACFilter()) goto wait_for_next; - + #ifdef BBA_TRACK_PAGE_PTRS WARN_LOG(SP1, "RecvHandlePacket %x\n%s", mRecvBufferLength, ArrayToString(mRecvBuffer, mRecvBufferLength, 0x100).c_str()); diff --git a/Source/Core/Core/Src/HW/EXI_DeviceEthernet.h b/Source/Core/Core/Src/HW/EXI_DeviceEthernet.h index 3f0f371f43..f75c136db4 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceEthernet.h +++ b/Source/Core/Core/Src/HW/EXI_DeviceEthernet.h @@ -52,7 +52,7 @@ enum NWAYC NWAYC_FD = 0x01, // Full Duplex Mode NWAYC_PS100_10 = 0x02, // Port Select 100/10 NWAYC_ANE = 0x04, // Autonegotiate enable - + // Autonegotiation status bits... NWAYC_NTTEST = 0x40, // Reserved @@ -99,13 +99,13 @@ enum { BBA_NCRA = 0x00, BBA_NCRB = 0x01, - + BBA_LTPS = 0x04, BBA_LRPS = 0x05, - + BBA_IMR = 0x08, BBA_IR = 0x09, - + BBA_BP = 0x0a, BBA_TLBP = 0x0c, BBA_TWP = 0x0e, diff --git a/Source/Core/Core/Src/HW/EXI_DeviceGecko.cpp b/Source/Core/Core/Src/HW/EXI_DeviceGecko.cpp index 792b045fd4..0bb84c4fdb 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceGecko.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceGecko.cpp @@ -108,31 +108,31 @@ void GeckoSockServer::ClientThread() while (client_running) { bool did_nothing = true; - + { std::lock_guard lk(transfer_lock); // what's an ideal buffer size? char data[128]; std::size_t got = 0; - + if (client.Receive(&data[0], ArraySize(data), got) == sf::Socket::Disconnected) client_running = false; - + if (got != 0) { did_nothing = false; - + recv_fifo.insert(recv_fifo.end(), &data[0], &data[got]); } if (!send_fifo.empty()) { did_nothing = false; - + std::vector packet(send_fifo.begin(), send_fifo.end()); send_fifo.clear(); - + if (client.Send(&packet[0], packet.size()) == sf::Socket::Disconnected) client_running = false; } @@ -165,7 +165,7 @@ void CEXIGecko::ImmReadWrite(u32 &_uData, u32 _uSize) "USBGecko: A piercing blue light is now shining in your general direction"), 3000); break; - + case CMD_INIT: _uData = ident; break; diff --git a/Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp b/Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp index 9402b7bbab..716b04969b 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceIPL.cpp @@ -92,7 +92,7 @@ CEXIIPL::CEXIIPL() : // Create the IPL m_pIPL = (u8*)AllocateMemoryPages(ROM_SIZE); - + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHLE_BS2) { // Copy header @@ -119,7 +119,7 @@ CEXIIPL::CEXIIPL() : g_SRAM.lang = SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage; WriteProtectMemory(m_pIPL, ROM_SIZE); - m_uAddress = 0; + m_uAddress = 0; } CEXIIPL::~CEXIIPL() @@ -252,7 +252,7 @@ void CEXIIPL::TransferByte(u8& _uByte) DEBUG_LOG(EXPANSIONINTERFACE, "%s %s %08x", device_name.c_str(), IsWriteCommand() ? "write" : "read", m_uAddress); } - } + } else { // Actually read or write a byte @@ -279,7 +279,7 @@ void CEXIIPL::TransferByte(u8& _uByte) if (_uByte != '\0') m_szBuffer[m_count++] = _uByte; if ((m_count >= 256) || (_uByte == 0xD)) - { + { m_szBuffer[m_count] = 0x00; NOTICE_LOG(OSREPORT, "%s", m_szBuffer); memset(m_szBuffer, 0, sizeof(m_szBuffer)); diff --git a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp index 692db55ecc..1cdeb1fbcf 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp @@ -16,7 +16,7 @@ #include "Sram.h" #include "GCMemcard.h" -#define MC_STATUS_BUSY 0x80 +#define MC_STATUS_BUSY 0x80 #define MC_STATUS_UNLOCKED 0x40 #define MC_STATUS_SLEEP 0x20 #define MC_STATUS_ERASEERROR 0x10 @@ -53,7 +53,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) // we're potentially leaking events here, since there's no UnregisterEvent until emu shutdown, but I guess it's inconsequential et_this_card = CoreTiming::RegisterEvent((card_index == 0) ? "memcardFlushA" : "memcardFlushB", FlushCallback); et_cmd_done = CoreTiming::RegisterEvent((card_index == 0) ? "memcardDoneA" : "memcardDoneB", CmdDoneCallback); - + interruptSwitch = 0; m_bInterruptSet = 0; command = 0; @@ -61,7 +61,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) m_uPosition = 0; memset(programming_buffer, 0, sizeof(programming_buffer)); formatDelay = 0; - + //Nintendo Memory Card EXI IDs //0x00000004 Memory Card 59 4Mbit //0x00000008 Memory Card 123 8Mb @@ -69,12 +69,12 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) //0x00000020 Memory Card 507 32Mb //0x00000040 Memory Card 1019 64Mb //0x00000080 Memory Card 2043 128Mb - + //0x00000510 16Mb "bigben" card //card_id = 0xc243; - + card_id = 0xc221; // It's a Nintendo brand memcard - + File::IOFile pFile(m_strFilename, "rb"); if (pFile) { @@ -83,7 +83,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) nintendo_card_id = memory_card_size / SIZE_TO_Mb; memory_card_content = new u8[memory_card_size]; memset(memory_card_content, 0xFF, memory_card_size); - + INFO_LOG(EXPANSIONINTERFACE, "Reading memory card %s", m_strFilename.c_str()); pFile.ReadBytes(memory_card_content, memory_card_size); @@ -96,7 +96,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) memory_card_content = new u8[memory_card_size]; GCMemcard::Format(memory_card_content, m_strFilename.find(".JAP.raw") != std::string::npos, nintendo_card_id); - memset(memory_card_content+MC_HDR_SIZE, 0xFF, memory_card_size-MC_HDR_SIZE); + memset(memory_card_content+MC_HDR_SIZE, 0xFF, memory_card_size-MC_HDR_SIZE); WARN_LOG(EXPANSIONINTERFACE, "No memory card found. Will create a new one."); } SetCardFlashID(memory_card_content, card_index); @@ -167,14 +167,14 @@ CEXIMemoryCard::~CEXIMemoryCard() Flush(true); delete[] memory_card_content; memory_card_content = NULL; - + if (flushThread.joinable()) { flushThread.join(); } } -bool CEXIMemoryCard::IsPresent() +bool CEXIMemoryCard::IsPresent() { return true; } @@ -207,7 +207,7 @@ void CEXIMemoryCard::SetCS(int cs) m_uPosition = 0; } else - { + { switch (command) { case cmdSectorErase: @@ -248,7 +248,7 @@ void CEXIMemoryCard::SetCS(int cs) CmdDoneLater(5000); } - + // Page written to memory card, not just to buffer - let's schedule a flush 0.5b cycles into the future (1 sec) // But first we unschedule already scheduled flushes - no point in flushing once per page for a large write. CoreTiming::RemoveEvent(et_this_card); @@ -324,7 +324,7 @@ void CEXIMemoryCard::TransferByte(u8 &byte) byte = 0xFF; m_uPosition = 0; } - } + } else { switch (command) @@ -332,7 +332,7 @@ void CEXIMemoryCard::TransferByte(u8 &byte) case cmdNintendoID: // // Nintendo card: - // 00 | 80 00 00 00 10 00 00 00 + // 00 | 80 00 00 00 10 00 00 00 // "bigben" card: // 00 | ff 00 00 05 10 00 00 00 00 00 00 00 00 00 00 // we do it the Nintendo way. @@ -431,7 +431,7 @@ void CEXIMemoryCard::TransferByte(u8 &byte) default: WARN_LOG(EXPANSIONINTERFACE, "EXI MEMCARD: unknown command byte %02x\n", byte); - byte = 0xFF; + byte = 0xFF; } } m_uPosition++; @@ -474,7 +474,7 @@ void CEXIMemoryCard::DoState(PointerWrap &p) p.Do(nintendo_card_id); p.Do(card_id); p.Do(memory_card_size); - p.DoArray(memory_card_content, memory_card_size); + p.DoArray(memory_card_content, memory_card_size); p.Do(card_index); } } diff --git a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.h b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.h index 2ccef0aeab..1bc012e9bf 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.h +++ b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.h @@ -46,7 +46,7 @@ private: // Variant of CmdDone which schedules an event later in the future to complete the command. void CmdDoneLater(u64 cycles); - enum + enum { cmdNintendoID = 0x00, cmdReadArray = 0x52, @@ -79,15 +79,15 @@ private: u8 programming_buffer[128]; u32 formatDelay; bool m_bDirty; - //! memory card parameters + //! memory card parameters unsigned int nintendo_card_id, card_id; - unsigned int address; + unsigned int address; int memory_card_size; //! in bytes, must be power of 2. - u8 *memory_card_content; + u8 *memory_card_content; FlushData flushData; std::thread flushThread; - + protected: virtual void TransferByte(u8 &byte); }; diff --git a/Source/Core/Core/Src/HW/EXI_DeviceMic.cpp b/Source/Core/Core/Src/HW/EXI_DeviceMic.cpp index 4a5b3cc0ae..6ad84cc860 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceMic.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceMic.cpp @@ -117,7 +117,7 @@ void CEXIMic::StreamStop() void CEXIMic::StreamReadOne() { std::lock_guard lk(ring_lock); - + if (samples_avail >= buff_size_samples) { s16 *last_buffer = &stream_buffer[stream_rpos]; @@ -149,10 +149,10 @@ CEXIMic::CEXIMic(int index) sample_rate = rate_base; buff_size = ring_base; buff_size_samples = buff_size / sample_size; - + ring_pos = 0; memset(ring_buffer, 0, sizeof(ring_buffer)); - + next_int_ticks = 0; StreamInit(); @@ -222,7 +222,7 @@ void CEXIMic::TransferByte(u8 &byte) status.button = Pad::GetMicButton(slot); byte = status.U8[pos ^ 1]; - + if (pos == 1) status.buff_ovrflw = 0; break; @@ -240,7 +240,7 @@ void CEXIMic::TransferByte(u8 &byte) buff_size_samples = buff_size / sample_size; UpdateNextInterruptTicks(); - + StreamStart(); } else if (wasactive && !status.is_active) @@ -254,7 +254,7 @@ void CEXIMic::TransferByte(u8 &byte) { if (ring_pos == 0) StreamReadOne(); - + byte = ring_buffer[ring_pos ^ 1]; ring_pos = (ring_pos + 1) % buff_size; } diff --git a/Source/Core/Core/Src/HW/EXI_DeviceMic.h b/Source/Core/Core/Src/HW/EXI_DeviceMic.h index 093424df25..ff4fe522e6 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceMic.h +++ b/Source/Core/Core/Src/HW/EXI_DeviceMic.h @@ -92,7 +92,7 @@ public: int stream_wpos; int stream_rpos; int samples_avail; - + protected: virtual void TransferByte(u8 &byte); }; diff --git a/Source/Core/Core/Src/HW/GCMemcard.cpp b/Source/Core/Core/Src/HW/GCMemcard.cpp index 67102bbc8c..22786b3027 100644 --- a/Source/Core/Core/Src/HW/GCMemcard.cpp +++ b/Source/Core/Core/Src/HW/GCMemcard.cpp @@ -64,8 +64,8 @@ GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) return; } } - - + + mcdFile.Seek(0, SEEK_SET); if (!mcdFile.ReadBytes(&hdr, BLOCK_SIZE)) { @@ -103,7 +103,7 @@ GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) } u32 csums = TestChecksums(); - + if (csums & 0x1) { // header checksum error! @@ -159,7 +159,7 @@ GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) } mcdFile.Seek(0xa000, SEEK_SET); - + maxBlock = (u32)m_sizeMb * MBIT_TO_BLOCKS; mc_data_blocks.reserve(maxBlock - MC_FST_BLOCKS); @@ -180,11 +180,11 @@ GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) } mcdFile.Close(); - + initDirBatPointers(); } -void GCMemcard::initDirBatPointers() +void GCMemcard::initDirBatPointers() { if (BE16(dir.UpdateCounter) > (BE16(dir_backup.UpdateCounter))) { @@ -287,7 +287,7 @@ bool GCMemcard::FixChecksums() { if (!m_valid) return false; - + calc_checksumsBE((u16*)&hdr, 0xFE, &hdr.Checksum, &hdr.Checksum_Inv); calc_checksumsBE((u16*)&dir, 0xFFE, &dir.Checksum, &dir.Checksum_Inv); calc_checksumsBE((u16*)&dir_backup, 0xFFE, &dir_backup.Checksum, &dir_backup.Checksum_Inv); @@ -638,7 +638,7 @@ u32 GCMemcard::ImportFile(DEntry& direntry, std::vector &saveBlocks) if (firstBlock == 0xFFFF) return OUTOFBLOCKS; Directory UpdatedDir = *CurrentDir; - + // find first free dir entry for (int i=0; i < DIRLEN; i++) { @@ -672,19 +672,19 @@ u32 GCMemcard::ImportFile(DEntry& direntry, std::vector &saveBlocks) u16 nextBlock; // keep assuming no freespace fragmentation, and copy over all the data for (int i = 0; i < fileBlocks; ++i) - { + { if (firstBlock == 0xFFFF) PanicAlert("Fatal Error"); mc_data_blocks[firstBlock - MC_FST_BLOCKS] = saveBlocks[i]; if (i == fileBlocks-1) nextBlock = 0xFFFF; else - nextBlock = UpdatedBat.NextFreeBlock(firstBlock+1); + nextBlock = UpdatedBat.NextFreeBlock(firstBlock+1); UpdatedBat.Map[firstBlock - MC_FST_BLOCKS] = BE16(nextBlock); UpdatedBat.LastAllocated = BE16(firstBlock); firstBlock = nextBlock; } - + UpdatedBat.FreeBlocks = BE16(BE16(UpdatedBat.FreeBlocks) - fileBlocks); UpdatedBat.UpdateCounter = BE16(BE16(UpdatedBat.UpdateCounter) + 1); *PreviousBat = UpdatedBat; @@ -775,7 +775,7 @@ u32 GCMemcard::CopyFrom(const GCMemcard& source, u8 index) DEntry tempDEntry; if (!source.GetDEntry(index, tempDEntry)) return NOMEMCARD; - + u32 size = source.DEntry_BlockCount(index); if (size == 0xFFFF) return INVALIDFILESIZE; @@ -851,7 +851,7 @@ u32 GCMemcard::ImportGciInternal(FILE* gcih, const char *inputFile, const std::s return LENGTHFAIL; if (gci.Tell() != offset + DENTRY_SIZE) // Verify correct file position return OPENFAIL; - + u32 size = BE16((tempDEntry.BlockCount)); std::vector saveData; saveData.reserve(size); @@ -873,7 +873,7 @@ u32 GCMemcard::ImportGciInternal(FILE* gcih, const char *inputFile, const std::s } gci2.Seek(0, SEEK_SET); - if (!gci2.WriteBytes(&tempDEntry, DENTRY_SIZE)) + if (!gci2.WriteBytes(&tempDEntry, DENTRY_SIZE)) completeWrite = false; int fileBlocks = BE16(tempDEntry.BlockCount); gci2.Seek(DENTRY_SIZE, SEEK_SET); @@ -889,7 +889,7 @@ u32 GCMemcard::ImportGciInternal(FILE* gcih, const char *inputFile, const std::s else ret = WRITEFAIL; } - else + else ret = ImportFile(tempDEntry, saveData); return ret; @@ -925,7 +925,7 @@ u32 GCMemcard::ExportGci(u8 index, const char *fileName, const std::string &dire return OPENFAIL; gci.Seek(0, SEEK_SET); - + switch(offset) { case GCS: @@ -1064,7 +1064,7 @@ u32 GCMemcard::ReadAnimRGBA8(u8 index, u32* buffer, u8 *delays) const // To ensure only one type of icon is used // Sonic Heroes it the only game I have seen that tries to use a CI8 and RGB5A3 icon - //int fmtCheck = 0; + //int fmtCheck = 0; int formats = BE16(CurrentDir->Dir[index].IconFmt); int fdelays = BE16(CurrentDir->Dir[index].AnimSpeed); @@ -1230,7 +1230,7 @@ bool GCMemcard::Format(bool sjis, u16 SizeMb) gcp.dir_backup = &dir_backup; gcp.bat = &bat; gcp.bat_backup = &bat_backup; - + *(u16*)hdr.SizeMb = BE16(SizeMb); hdr.Encoding = BE16(sjis ? 1 : 0); FormatInternal(gcp); @@ -1243,7 +1243,7 @@ bool GCMemcard::Format(bool sjis, u16 SizeMb) GCMBlock b; mc_data_blocks.push_back(b); } - + initDirBatPointers(); m_valid = true; @@ -1260,7 +1260,7 @@ void GCMemcard::FormatInternal(GCMC_Header &GCP) { rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); p_hdr->serial[i] = (u8)(g_SRAM.flash_id[0][i] + (u32)rand); - rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); + rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); rand &= (u64)0x0000000000007fffULL; } p_hdr->SramBias = g_SRAM.counter_bias; @@ -1276,7 +1276,7 @@ void GCMemcard::FormatInternal(GCMC_Header &GCP) p_dir_backup->UpdateCounter = BE16(1); calc_checksumsBE((u16*)p_dir, 0xFFE, &p_dir->Checksum, &p_dir->Checksum_Inv); calc_checksumsBE((u16*)p_dir_backup, 0xFFE, &p_dir_backup->Checksum, &p_dir_backup->Checksum_Inv); - + BlockAlloc *p_bat = GCP.bat, *p_bat_backup = GCP.bat_backup; p_bat_backup->UpdateCounter = BE16(1); @@ -1332,7 +1332,7 @@ s32 GCMemcard::FZEROGX_MakeSaveGameValid(DEntry& direntry, std::vector // calc 16-bit checksum for (i=0x02;i<0x8000;i++) - { + { chksum ^= (FileBuffer[block].block[i-(block*0x2000)]&0xFF); for (j=8; j > 0; j--) { diff --git a/Source/Core/Core/Src/HW/GCMemcard.h b/Source/Core/Core/Src/HW/GCMemcard.h index 215402dd10..fdd553194a 100644 --- a/Source/Core/Core/Src/HW/GCMemcard.h +++ b/Source/Core/Core/Src/HW/GCMemcard.h @@ -32,7 +32,7 @@ enum SAV = 0x80, SAVFAIL, GCS = 0x110, - GCSFAIL, + GCSFAIL, FAIL, WRITEFAIL, DELETE_FAIL, @@ -180,11 +180,11 @@ public: bool Save(); bool Format(bool sjis = false, u16 SizeMb = MemCard2043Mb); static bool Format(u8 * card_data, bool sjis = false, u16 SizeMb = MemCard2043Mb); - + static void calc_checksumsBE(u16 *buf, u32 length, u16 *csum, u16 *inv_csum); u32 TestChecksums() const; bool FixChecksums(); - + // get number of file entries in the directory u8 GetNumFiles() const; u8 GetFileIndex(u8 fileNumber) const; diff --git a/Source/Core/Core/Src/HW/GCPad.cpp b/Source/Core/Core/Src/HW/GCPad.cpp index 1a8ec37ea4..7c20c6df7c 100644 --- a/Source/Core/Core/Src/HW/GCPad.cpp +++ b/Source/Core/Core/Src/HW/GCPad.cpp @@ -70,7 +70,7 @@ void GetStatus(u8 _numPAD, SPADStatus* _pPADStatus) g_controller_interface.UpdateInput(); } _last_numPAD = _numPAD; - + // get input ((GCPad*)g_plugin.controllers[_numPAD])->GetInput(_pPADStatus); } @@ -105,7 +105,7 @@ void Rumble(u8 _numPAD, unsigned int _uType, unsigned int _uStrength) // __________________________________________________________________________________________________ // Function: Motor // Purpose: For devices with constant Force feedback -// input: _numPAD - The pad to operate on +// input: _numPAD - The pad to operate on // _uType - 06 = Motor On, 04 = Motor Off // _uStrength - 00 = Left Strong, 127 = Left Weak, 128 = Right Weak, 255 = Right Strong // output: none @@ -127,7 +127,7 @@ void Motor(u8 _numPAD, unsigned int _uType, unsigned int _uStrength) bool GetMicButton(u8 pad) { - + std::unique_lock lk(g_plugin.controls_lock, std::try_to_lock); if (!lk.owns_lock()) diff --git a/Source/Core/Core/Src/HW/GCPadEmu.cpp b/Source/Core/Core/Src/HW/GCPadEmu.cpp index 68a0f5285a..28c33ae926 100644 --- a/Source/Core/Core/Src/HW/GCPadEmu.cpp +++ b/Source/Core/Core/Src/HW/GCPadEmu.cpp @@ -24,7 +24,7 @@ const u16 trigger_bitmasks[] = const u16 dpad_bitmasks[] = { - PAD_BUTTON_UP, PAD_BUTTON_DOWN, PAD_BUTTON_LEFT, PAD_BUTTON_RIGHT + PAD_BUTTON_UP, PAD_BUTTON_DOWN, PAD_BUTTON_LEFT, PAD_BUTTON_RIGHT }; const char* const named_buttons[] = diff --git a/Source/Core/Core/Src/HW/GCPadEmu.h b/Source/Core/Core/Src/HW/GCPadEmu.h index aa5b33d252..cb6971c0ed 100644 --- a/Source/Core/Core/Src/HW/GCPadEmu.h +++ b/Source/Core/Core/Src/HW/GCPadEmu.h @@ -19,7 +19,7 @@ public: void SetMotor(const u8 on); bool GetMicButton() const; - + std::string GetName() const; void LoadDefaults(const ControllerInterface& ciface); diff --git a/Source/Core/Core/Src/HW/GPFifo.cpp b/Source/Core/Core/Src/HW/GPFifo.cpp index c889466938..88371a68d9 100644 --- a/Source/Core/Core/Src/HW/GPFifo.cpp +++ b/Source/Core/Core/Src/HW/GPFifo.cpp @@ -16,7 +16,7 @@ namespace GPFifo { // 32 Byte gather pipe with extra space -// Overfilling is no problem (up to the real limit), CheckGatherPipe will blast the +// Overfilling is no problem (up to the real limit), CheckGatherPipe will blast the // contents in nicely sized chunks // Other optimizations to think about: @@ -24,7 +24,7 @@ namespace GPFifo // If the gp is NOT linked to the fifo, just blast to memory byte by word // If the gp IS linked to the fifo, use a fast wrapping buffer and skip writing to memory -// Both of these should actually work! Only problem is that we have to decide at run time, +// Both of these should actually work! Only problem is that we have to decide at run time, // the same function could use both methods. Compile 2 different versions of each such block? u8 GC_ALIGNED32(m_gatherPipe[GATHER_PIPE_SIZE*16]); //more room, for the fastmodes @@ -80,10 +80,10 @@ void STACKALIGN CheckGatherPipe() g_video_backend->Video_GatherPipeBursted(); } - + // move back the spill bytes memmove(m_gatherPipe, m_gatherPipe + cnt, m_gatherPipeCount); - + // Profile where the FIFO writes are occurring. if (jit && PC != 0 && (jit->js.fifoWriteAddresses.find(PC)) == (jit->js.fifoWriteAddresses.end())) { diff --git a/Source/Core/Core/Src/HW/Memmap.cpp b/Source/Core/Core/Src/HW/Memmap.cpp index 3e236eaaf7..82f3141040 100644 --- a/Source/Core/Core/Src/HW/Memmap.cpp +++ b/Source/Core/Core/Src/HW/Memmap.cpp @@ -128,7 +128,7 @@ template void HW_Write_Memory(T _Data, const u32 _Address) } // Create shortcuts to the hardware devices' read and write functions. -// This can be seen as an alternative to a switch() or if() table. +// This can be seen as an alternative to a switch() or if() table. #define BLOCKSIZE 4 #define CP_START 0x00 //0x0000 >> 10 #define WII_IPC_START 0x00 //0x0000 >> 10 @@ -406,7 +406,7 @@ bool AreMemoryBreakpointsActivated() u32 Read_Instruction(const u32 em_address) { - UGeckoInstruction inst = ReadUnchecked_U32(em_address); + UGeckoInstruction inst = ReadUnchecked_U32(em_address); return inst.hex; } diff --git a/Source/Core/Core/Src/HW/Memmap.h b/Source/Core/Core/Src/HW/Memmap.h index 8a3516e8b1..819829c354 100644 --- a/Source/Core/Core/Src/HW/Memmap.h +++ b/Source/Core/Core/Src/HW/Memmap.h @@ -49,7 +49,7 @@ namespace Memory // In 64-bit, this might point to "high memory" (above the 32-bit limit), // so be sure to load it into a 64-bit register. -extern u8 *base; +extern u8 *base; // These are guaranteed to point to "low memory" addresses (sub-32-bit). extern u8 *m_pRAM; @@ -119,7 +119,7 @@ inline u32 ReadFast32(const u32 _Address) // used by interpreter to read instructions, uses iCache u32 Read_Opcode(const u32 _Address); -// this is used by Debugger a lot. +// this is used by Debugger a lot. // For now, just reads from memory! u32 Read_Instruction(const u32 _Address); diff --git a/Source/Core/Core/Src/HW/MemmapFunctions.cpp b/Source/Core/Core/Src/HW/MemmapFunctions.cpp index 3a6604a385..40bc5f4a3a 100644 --- a/Source/Core/Core/Src/HW/MemmapFunctions.cpp +++ b/Source/Core/Core/Src/HW/MemmapFunctions.cpp @@ -35,16 +35,16 @@ namespace Memory // EFB RE /* GXPeekZ -80322de8: rlwinm r0, r3, 2, 14, 29 (0003fffc) a = x << 2 & 0x3fffc +80322de8: rlwinm r0, r3, 2, 14, 29 (0003fffc) a = x << 2 & 0x3fffc 80322dec: oris r0, r0, 0xC800 a |= 0xc8000000 80322df0: rlwinm r3, r0, 0, 20, 9 (ffc00fff) x = a & 0xffc00fff -80322df4: rlwinm r0, r4, 12, 4, 19 (0ffff000) a = (y << 12) & 0x0ffff000; +80322df4: rlwinm r0, r4, 12, 4, 19 (0ffff000) a = (y << 12) & 0x0ffff000; 80322df8: or r0, r3, r0 a |= x; 80322dfc: rlwinm r0, r0, 0, 10, 7 (ff3fffff) a &= 0xff3fffff 80322e00: oris r3, r0, 0x0040 x = a | 0x00400000 80322e04: lwz r0, 0 (r3) r0 = *r3 -80322e08: stw r0, 0 (r5) z = -80322e0c: blr +80322e08: stw r0, 0 (r5) z = +80322e0c: blr */ @@ -128,7 +128,7 @@ inline void hwWriteIOBridge(u32 var, u32 addr) {WII_IOBridge::Write32(var, addr) inline void hwWriteIOBridge(u64 var, u32 addr) {PanicAlert("hwWriteIOBridge: There's no 64-bit HW write. %08x", addr);} // Nasty but necessary. Super Mario Galaxy pointer relies on this stuff. -u32 EFB_Read(const u32 addr) +u32 EFB_Read(const u32 addr) { u32 var = 0; // Convert address to coordinates. It's possible that this should be done @@ -327,7 +327,7 @@ u32 Read_Opcode(u32 _Address) return 0x00000000; } - if (Core::g_CoreStartupParameter.bMMU && + if (Core::g_CoreStartupParameter.bMMU && !Core::g_CoreStartupParameter.bTLBHack && (_Address & ADDR_MASK_MEM1)) { @@ -414,7 +414,7 @@ double Read_F64(const u32 _Address) u64 i; double d; } cvt; - + cvt.i = Read_U64(_Address); return cvt.d; } @@ -441,7 +441,7 @@ u32 Read_U16_ZX(const u32 _Address) return (u32)Read_U16(_Address); } -void Write_U8(const u8 _Data, const u32 _Address) +void Write_U8(const u8 _Data, const u32 _Address) { #ifdef ENABLE_MEM_CHECK TMemCheck *mc = PowerPC::memchecks.GetMemCheck(_Address); @@ -474,7 +474,7 @@ void Write_U16_Swap(const u16 _Data, const u32 _Address) { void Write_U32(const u32 _Data, const u32 _Address) -{ +{ #ifdef ENABLE_MEM_CHECK TMemCheck *mc = PowerPC::memchecks.GetMemCheck(_Address); if (mc) @@ -518,7 +518,7 @@ void Write_F64(const double _Data, const u32 _Address) Write_U64(cvt.i, _Address); } u8 ReadUnchecked_U8(const u32 _Address) -{ +{ u8 _var = 0; ReadFromHardware(_var, _Address, _Address, FLAG_NO_EXCEPTION); return _var; @@ -546,7 +546,7 @@ void WriteUnchecked_U32(const u32 _iValue, const u32 _Address) // ********************************************************************************* // Warning: Test Area // -// This code is for TESTING and it works in interpreter mode ONLY. Some games (like +// This code is for TESTING and it works in interpreter mode ONLY. Some games (like // COD iirc) work thanks to this basic TLB emulation. // It is just a small hack and we have never spend enough time to finalize it. // Cheers PearPC! @@ -576,26 +576,26 @@ void WriteUnchecked_U32(const u32 _iValue, const u32 _Address) #define PPC_EXC_DSISR_PAGE (1<<30) #define PPC_EXC_DSISR_PROT (1<<27) -#define PPC_EXC_DSISR_STORE (1<<25) +#define PPC_EXC_DSISR_STORE (1<<25) #define SDR1_HTABORG(v) (((v)>>16)&0xffff) #define SDR1_HTABMASK(v) ((v)&0x1ff) -#define SDR1_PAGETABLE_BASE(v) ((v)&0xffff) +#define SDR1_PAGETABLE_BASE(v) ((v)&0xffff) #define SR_T (1<<31) #define SR_Ks (1<<30) #define SR_Kp (1<<29) #define SR_N (1<<28) #define SR_VSID(v) ((v)&0xffffff) #define SR_BUID(v) (((v)>>20)&0x1ff) -#define SR_CNTRL_SPEC(v) ((v)&0xfffff) +#define SR_CNTRL_SPEC(v) ((v)&0xfffff) -#define EA_SR(v) (((v)>>28)&0xf) -#define EA_PageIndex(v) (((v)>>12)&0xffff) +#define EA_SR(v) (((v)>>28)&0xf) +#define EA_PageIndex(v) (((v)>>12)&0xffff) #define EA_Offset(v) ((v)&0xfff) -#define EA_API(v) (((v)>>22)&0x3f) +#define EA_API(v) (((v)>>22)&0x3f) #define PA_RPN(v) (((v)>>12)&0xfffff) -#define PA_Offset(v) ((v)&0xfff) +#define PA_Offset(v) ((v)&0xfff) #define PTE1_V (1<<31) #define PTE1_VSID(v) (((v)>>7)&0xffffff) @@ -611,7 +611,7 @@ void WriteUnchecked_U32(const u32 _iValue, const u32 _Address) // Hey! these duplicate a structure in Gekko.h union UPTE1 { - struct + struct { u32 API : 6; u32 H : 1; @@ -623,7 +623,7 @@ union UPTE1 union UPTE2 { - struct + struct { u32 PP : 2; u32 : 1; @@ -664,24 +664,24 @@ void SDRUpdated() u32 x = 1; u32 xx = 0; int n = 0; - while ((htabmask & x) && (n < 9)) + while ((htabmask & x) && (n < 9)) { n++; xx|=x; x<<=1; } - if (htabmask & ~xx) + if (htabmask & ~xx) { return; } u32 htaborg = SDR1_HTABORG(PowerPC::ppcState.spr[SPR_SDR]); - if (htaborg & xx) + if (htaborg & xx) { return; } PowerPC::ppcState.pagetable_base = htaborg<<16; PowerPC::ppcState.pagetable_hashmask = ((xx<<10)|0x3ff); -} +} // TLB cache @@ -785,7 +785,7 @@ void UpdateTLBEntry(const XCheckTLBFlag _Flag, UPTE2 PTE2, const u32 vpa) PowerPC::ppcState.itlb_last++; PowerPC::ppcState.itlb_last &= 127; PowerPC::ppcState.itlb_pa[PowerPC::ppcState.itlb_last] = PTE2.RPN << HW_PAGE_INDEX_SHIFT; - PowerPC::ppcState.itlb_va[PowerPC::ppcState.itlb_last] = vpa & ~0xfff; + PowerPC::ppcState.itlb_va[PowerPC::ppcState.itlb_last] = vpa & ~0xfff; } else { @@ -793,7 +793,7 @@ void UpdateTLBEntry(const XCheckTLBFlag _Flag, UPTE2 PTE2, const u32 vpa) PowerPC::ppcState.dtlb_last++; PowerPC::ppcState.dtlb_last &= 127; PowerPC::ppcState.dtlb_pa[PowerPC::ppcState.dtlb_last] = PTE2.RPN << HW_PAGE_INDEX_SHIFT; - PowerPC::ppcState.dtlb_va[PowerPC::ppcState.dtlb_last] = vpa & ~0xfff; + PowerPC::ppcState.dtlb_va[PowerPC::ppcState.dtlb_last] = vpa & ~0xfff; } #endif } @@ -845,12 +845,12 @@ u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) if (LookupTLBPageAddress(_Flag, _Address, &translatedAddress)) return translatedAddress; - u32 sr = PowerPC::ppcState.sr[EA_SR(_Address)]; + u32 sr = PowerPC::ppcState.sr[EA_SR(_Address)]; - u32 offset = EA_Offset(_Address); // 12 bit + u32 offset = EA_Offset(_Address); // 12 bit u32 page_index = EA_PageIndex(_Address); // 16 bit - u32 VSID = SR_VSID(sr); // 24 bit - u32 api = EA_API(_Address); // 6 bit (part of page_index) + u32 VSID = SR_VSID(sr); // 24 bit + u32 api = EA_API(_Address); // 6 bit (part of page_index) u8* pRAM = GetPointer(0); @@ -864,9 +864,9 @@ u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) UPTE1 PTE1; PTE1.Hex = bswap(*(u32*)&pRAM[pteg_addr]); - if (PTE1.V && !PTE1.H) + if (PTE1.V && !PTE1.H) { - if (VSID == PTE1.VSID && (api == PTE1.API)) + if (VSID == PTE1.VSID && (api == PTE1.API)) { UPTE2 PTE2; PTE2.Hex = bswap((*(u32*)&pRAM[(pteg_addr + 4)])); @@ -886,13 +886,13 @@ u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) return ((PTE2.RPN << 12) | offset); } } - pteg_addr+=8; + pteg_addr+=8; } // hash function no 2 "not" .360 hash1 = ~hash1; pteg_addr = ((hash1 & PowerPC::ppcState.pagetable_hashmask) << 6) | PowerPC::ppcState.pagetable_base; - for (int i = 0; i < 8; i++) + for (int i = 0; i < 8; i++) { u32 pte = bswap(*(u32*)&pRAM[pteg_addr]); if ((pte & PTE1_V) && (pte & PTE1_H)) @@ -910,13 +910,13 @@ u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) case FLAG_WRITE: PTE2.C = 1; break; case FLAG_NO_EXCEPTION: break; case FLAG_OPCODE: break; - } + } *(u32*)&pRAM[(pteg_addr + 4)] = bswap(PTE2.Hex); return ((PTE2.RPN << 12) | offset); } } - pteg_addr+=8; + pteg_addr+=8; } return 0; } diff --git a/Source/Core/Core/Src/HW/MemoryInterface.cpp b/Source/Core/Core/Src/HW/MemoryInterface.cpp index 9eb833cbc0..80f451687b 100644 --- a/Source/Core/Core/Src/HW/MemoryInterface.cpp +++ b/Source/Core/Core/Src/HW/MemoryInterface.cpp @@ -61,7 +61,7 @@ void Write32(const u32 _iValue, const u32 _iAddress) } //TODO : check -void Write16(const u16 _iValue, const u32 _iAddress) +void Write16(const u16 _iValue, const u32 _iAddress) { INFO_LOG(MEMMAP, "(w16) 0x%04x @ 0x%08x", _iValue, _iAddress); switch(_iAddress & 0xFFF) diff --git a/Source/Core/Core/Src/HW/MemoryInterface.h b/Source/Core/Core/Src/HW/MemoryInterface.h index ffa255b4b2..2a4fa2a8e1 100644 --- a/Source/Core/Core/Src/HW/MemoryInterface.h +++ b/Source/Core/Core/Src/HW/MemoryInterface.h @@ -13,7 +13,7 @@ namespace MemoryInterface void DoState(PointerWrap &p); void Read16(u16& _uReturnValue, const u32 _iAddress); -void Read32(u32& _uReturnValue, const u32 _iAddress); +void Read32(u32& _uReturnValue, const u32 _iAddress); void Write32(const u32 _iValue, const u32 _iAddress); void Write16(const u16 _iValue, const u32 _iAddress); } // end of namespace MemoryInterface diff --git a/Source/Core/Core/Src/HW/ProcessorInterface.cpp b/Source/Core/Core/Src/HW/ProcessorInterface.cpp index 273ee32231..68b0ce960b 100644 --- a/Source/Core/Core/Src/HW/ProcessorInterface.cpp +++ b/Source/Core/Core/Src/HW/ProcessorInterface.cpp @@ -101,12 +101,12 @@ void Read32(u32& _uReturnValue, const u32 _iAddress) { //INFO_LOG(PROCESSORINTERFACE, "(r32) 0x%08x", _iAddress); - switch(_iAddress & 0xFFF) + switch(_iAddress & 0xFFF) { case PI_INTERRUPT_CAUSE: _uReturnValue = m_InterruptCause; return; - + case PI_INTERRUPT_MASK: _uReturnValue = m_InterruptMask; return; @@ -136,31 +136,31 @@ void Read32(u32& _uReturnValue, const u32 _iAddress) INFO_LOG(PROCESSORINTERFACE, "Read flipper rev, 0x%08x", m_FlipperRev); _uReturnValue = m_FlipperRev; return; - + default: ERROR_LOG(PROCESSORINTERFACE, "!!!!Unknown write!!!! 0x%08x", _iAddress); break; } - + _uReturnValue = 0xAFFE0000; } void Write32(const u32 _uValue, const u32 _iAddress) { //INFO_LOG(PROCESSORINTERFACE, "(w32) 0x%08x @ 0x%08x", _uValue, _iAddress); - switch(_iAddress & 0xFFF) + switch(_iAddress & 0xFFF) { case PI_INTERRUPT_CAUSE: Common::AtomicAnd(m_InterruptCause, ~_uValue); // writes turn them off UpdateException(); return; - case PI_INTERRUPT_MASK: + case PI_INTERRUPT_MASK: m_InterruptMask = _uValue; DEBUG_LOG(PROCESSORINTERFACE,"New Interrupt mask: %08x", m_InterruptMask); UpdateException(); return; - + case PI_FIFO_BASE: Fifo_CPUBase = _uValue & 0xFFFFFFE0; DEBUG_LOG(PROCESSORINTERFACE,"Fifo base = %08x", _uValue); @@ -172,7 +172,7 @@ void Write32(const u32 _uValue, const u32 _iAddress) break; case PI_FIFO_WPTR: - Fifo_CPUWritePointer = _uValue & 0xFFFFFFE0; + Fifo_CPUWritePointer = _uValue & 0xFFFFFFE0; DEBUG_LOG(PROCESSORINTERFACE,"Fifo writeptr = %08x", _uValue); break; @@ -245,12 +245,12 @@ void SetInterrupt(u32 _causemask, bool _bSet) { DEBUG_LOG(PROCESSORINTERFACE, "Setting Interrupt %s (clear)", Debug_GetInterruptName(_causemask)); } - + if (_bSet) Common::AtomicOr(m_InterruptCause, _causemask); else Common::AtomicAnd(m_InterruptCause, ~_causemask);// is there any reason to have this possibility? - // F|RES: i think the hw devices reset the interrupt in the PI to 0 + // F|RES: i think the hw devices reset the interrupt in the PI to 0 // if the interrupt cause is eliminated. that isnt done by software (afaik) UpdateException(); } diff --git a/Source/Core/Core/Src/HW/ProcessorInterface.h b/Source/Core/Core/Src/HW/ProcessorInterface.h index ce81cb35ef..7feefa2e14 100644 --- a/Source/Core/Core/Src/HW/ProcessorInterface.h +++ b/Source/Core/Core/Src/HW/ProcessorInterface.h @@ -16,9 +16,9 @@ namespace ProcessorInterface enum InterruptCause { INT_CAUSE_PI = 0x1, // YAGCD says: GP runtime error - INT_CAUSE_RSW = 0x2, // Reset Switch - INT_CAUSE_DI = 0x4, // DVD interrupt - INT_CAUSE_SI = 0x8, // Serial interface + INT_CAUSE_RSW = 0x2, // Reset Switch + INT_CAUSE_DI = 0x4, // DVD interrupt + INT_CAUSE_SI = 0x8, // Serial interface INT_CAUSE_EXI = 0x10, // Expansion interface INT_CAUSE_AI = 0x20, // Audio Interface Streaming INT_CAUSE_DSP = 0x40, // DSP interface diff --git a/Source/Core/Core/Src/HW/SI.cpp b/Source/Core/Core/Src/HW/SI.cpp index 76810b7f6d..7f46b9a101 100644 --- a/Source/Core/Core/Src/HW/SI.cpp +++ b/Source/Core/Core/Src/HW/SI.cpp @@ -222,7 +222,7 @@ void DoState(PointerWrap &p) p.Do(g_Channel[i].m_InHi.Hex); p.Do(g_Channel[i].m_InLo.Hex); p.Do(g_Channel[i].m_Out.Hex); - + ISIDevice* pDevice = g_Channel[i].m_pDevice; SIDevices type = pDevice->GetDeviceType(); p.Do(type); @@ -249,13 +249,13 @@ void DoState(PointerWrap &p) p.DoPOD(g_StatusReg); p.Do(g_EXIClockCount); p.Do(g_SIBuffer); -} +} void Init() { for (int i = 0; i < NUMBER_OF_CHANNELS; i++) - { + { g_Channel[i].m_Out.Hex = 0; g_Channel[i].m_InHi.Hex = 0; g_Channel[i].m_InLo.Hex = 0; diff --git a/Source/Core/Core/Src/HW/SI_Device.cpp b/Source/Core/Core/Src/HW/SI_Device.cpp index e9674bcab6..a6d5c8afde 100644 --- a/Source/Core/Core/Src/HW/SI_Device.cpp +++ b/Source/Core/Core/Src/HW/SI_Device.cpp @@ -56,7 +56,7 @@ public: }; -// F A C T O R Y +// F A C T O R Y ISIDevice* SIDevice_Create(const SIDevices device, const int port_number) { switch (device) diff --git a/Source/Core/Core/Src/HW/SI_DeviceAMBaseboard.cpp b/Source/Core/Core/Src/HW/SI_DeviceAMBaseboard.cpp index 83af23b7a7..96d3fba56c 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceAMBaseboard.cpp +++ b/Source/Core/Core/Src/HW/SI_DeviceAMBaseboard.cpp @@ -92,7 +92,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) int iPosition = 0; while(iPosition < _iLength) - { + { // read the command EBufferCommands command = static_cast(_pBuffer[iPosition ^ 3]); iPosition++; @@ -106,7 +106,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) iPosition = _iLength; // break the while loop } break; - case CMD_GCAM: + case CMD_GCAM: { int i; @@ -188,7 +188,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) case 0x1f: { ERROR_LOG(AMBASEBOARDDEBUG, "GC-AM: Command 1f, %02x %02x %02x %02x %02x (REGION)", ptr(1), ptr(2), ptr(3), ptr(4), ptr(5)); - unsigned char string[] = + unsigned char string[] = "\x00\x00\x30\x00" //"\x01\xfe\x00\x00" // JAPAN "\x02\xfd\x00\x00" // USA @@ -232,7 +232,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) case 0x4e: case 0x4f: { - DEBUG_LOG(AMBASEBOARDDEBUG, "GC-AM: Command %02x, %02x %02x %02x %02x %02x %02x %02x (JVS IO)", + DEBUG_LOG(AMBASEBOARDDEBUG, "GC-AM: Command %02x, %02x %02x %02x %02x %02x %02x %02x (JVS IO)", ptr(0), ptr(1), ptr(2), ptr(3), ptr(4), ptr(5), ptr(6), ptr(7)); int pptr = 2; JVSIOMessage msg; @@ -283,8 +283,8 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) msg.addData(1); msg.addData((void *)"\x01\x02\x0a\x00", 4); // 2 player, 10 bit msg.addData((void *)"\x02\x02\x00\x00", 4); // 2 coin slots - //msg.addData((void *)"\x03\x02\x08\x00", 4); - msg.addData((void *)"\x00\x00\x00\x00", 4); + //msg.addData((void *)"\x03\x02\x08\x00", 4); + msg.addData((void *)"\x00\x00\x00\x00", 4); break; case 0x15: while (*jvs_io++) {}; diff --git a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp index 8a21591b94..72420abf9b 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp +++ b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.cpp @@ -85,7 +85,7 @@ int CSIDevice_DanceMat::RunBuffer(u8* _pBuffer, int _iLength) for (int i = 0; i < (int)sizeof(SOrigin); i++) { _pBuffer[i ^ 3] = *pCalibration++; - } + } } break; @@ -94,7 +94,7 @@ int CSIDevice_DanceMat::RunBuffer(u8* _pBuffer, int _iLength) { ERROR_LOG(SERIALINTERFACE, "Unknown SI command (0x%x)", command); PanicAlert("SI: Unknown command (0x%x)", command); - } + } break; } @@ -112,7 +112,7 @@ bool CSIDevice_DanceMat::GetData(u32& _Hi, u32& _Low) { SPADStatus PadStatus; memset(&PadStatus, 0, sizeof(PadStatus)); - + Pad::GetStatus(ISIDevice::m_iDeviceNumber, &PadStatus); Movie::CallInputManip(&PadStatus, ISIDevice::m_iDeviceNumber); diff --git a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h index 7c413026ec..a9d5aefb69 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h +++ b/Source/Core/Core/Src/HW/SI_DeviceDanceMat.h @@ -13,7 +13,7 @@ class CSIDevice_DanceMat : public ISIDevice { private: - + // Commands enum EBufferCommands { @@ -47,7 +47,7 @@ private: union UCommand { u32 Hex; - struct + struct { u32 Parameter1 : 8; u32 Parameter2 : 8; diff --git a/Source/Core/Core/Src/HW/SI_DeviceGBA.cpp b/Source/Core/Core/Src/HW/SI_DeviceGBA.cpp index 937bf45036..6a59ecd3af 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceGBA.cpp +++ b/Source/Core/Core/Src/HW/SI_DeviceGBA.cpp @@ -26,9 +26,9 @@ void GBAConnectionWaiter() // "dolphin gba" if (!server.Listen(0xd6ba)) return; - + server.SetBlocking(false); - + sf::SocketTCP new_client; while (server_running) { diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp b/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp index b1a1bbeafa..2db017d5c6 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp +++ b/Source/Core/Core/Src/HW/SI_DeviceGCController.cpp @@ -85,7 +85,7 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength) for (int i = 0; i < (int)sizeof(SOrigin); i++) { _pBuffer[i ^ 3] = *pCalibration++; - } + } } break; @@ -94,7 +94,7 @@ int CSIDevice_GCController::RunBuffer(u8* _pBuffer, int _iLength) { ERROR_LOG(SERIALINTERFACE, "Unknown SI command (0x%x)", command); PanicAlert("SI: Unknown command (0x%x)", command); - } + } break; } @@ -112,7 +112,7 @@ bool CSIDevice_GCController::GetData(u32& _Hi, u32& _Low) { SPADStatus PadStatus; memset(&PadStatus, 0, sizeof(PadStatus)); - + Pad::GetStatus(ISIDevice::m_iDeviceNumber, &PadStatus); Movie::CallInputManip(&PadStatus, ISIDevice::m_iDeviceNumber); diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCController.h b/Source/Core/Core/Src/HW/SI_DeviceGCController.h index 9673041c6f..c0278eebfd 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceGCController.h +++ b/Source/Core/Core/Src/HW/SI_DeviceGCController.h @@ -13,7 +13,7 @@ class CSIDevice_GCController : public ISIDevice { private: - + // Commands enum EBufferCommands { @@ -47,7 +47,7 @@ private: union UCommand { u32 Hex; - struct + struct { u32 Parameter1 : 8; u32 Parameter2 : 8; diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp index 3540db325f..322b0bcfc2 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp +++ b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.cpp @@ -102,7 +102,7 @@ bool CSIDevice_GCSteeringWheel::GetData(u32& _Hi, u32& _Low) { SPADStatus PadStatus; memset(&PadStatus, 0, sizeof(PadStatus)); - + Pad::GetStatus(ISIDevice::m_iDeviceNumber, &PadStatus); Movie::CallInputManip(&PadStatus, ISIDevice::m_iDeviceNumber); diff --git a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h index 2398b8f321..050a1220ce 100644 --- a/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h +++ b/Source/Core/Core/Src/HW/SI_DeviceGCSteeringWheel.h @@ -13,7 +13,7 @@ class CSIDevice_GCSteeringWheel : public ISIDevice { private: - + // Commands enum EBufferCommands { @@ -48,7 +48,7 @@ private: union UCommand { u32 Hex; - struct + struct { u32 Parameter1 : 8; u32 Parameter2 : 8; diff --git a/Source/Core/Core/Src/HW/Sram.cpp b/Source/Core/Core/Src/HW/Sram.cpp index ba2fa12957..8c135798b3 100644 --- a/Source/Core/Core/Src/HW/Sram.cpp +++ b/Source/Core/Core/Src/HW/Sram.cpp @@ -31,7 +31,7 @@ SRAM sram_dump = {{ #if 0 // german -SRAM sram_dump_german = {{ +SRAM sram_dump_german = {{ 0x1F, 0x66, 0xE0, 0x96, 0x00, 0x00, 0x00, 0x00, @@ -81,7 +81,7 @@ void SetCardFlashID(u8* buffer, u8 card_index) { rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); csum += g_SRAM.flash_id[card_index][i] = buffer[i] - ((u8)rand&0xff); - rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); + rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); rand &= (u64)0x0000000000007fffULL; } g_SRAM.flashID_chksum[card_index] = csum^0xFF; diff --git a/Source/Core/Core/Src/HW/StreamADPCM.cpp b/Source/Core/Core/Src/HW/StreamADPCM.cpp index 91e4763ed2..4534f468a9 100644 --- a/Source/Core/Core/Src/HW/StreamADPCM.cpp +++ b/Source/Core/Core/Src/HW/StreamADPCM.cpp @@ -35,7 +35,7 @@ s16 ADPDecodeSample(s32 bits, s32 q, s32& hist1, s32& hist2) if (hist < -0x200000) hist = -0x200000; s32 cur = (((s16)(bits << 12) >> (q & 0xf)) << 6) + hist; - + hist2 = hist1; hist1 = cur; diff --git a/Source/Core/Core/Src/HW/SystemTimers.cpp b/Source/Core/Core/Src/HW/SystemTimers.cpp index bf77060c83..140ef652bf 100644 --- a/Source/Core/Core/Src/HW/SystemTimers.cpp +++ b/Source/Core/Core/Src/HW/SystemTimers.cpp @@ -119,7 +119,7 @@ int et_PatchEngine; // PatchEngine updates every 1/60th of a second by default // These are badly educated guesses // Feel free to experiment. Set these in Init below. int - // This is a fixed value, don't change it + // This is a fixed value, don't change it AUDIO_DMA_PERIOD, // Regulates the speed of the Command Processor @@ -200,7 +200,7 @@ void DecrementerSet() { CoreTiming::SetFakeDecStartTicks(CoreTiming::GetTicks()); CoreTiming::SetFakeDecStartValue(decValue); - + CoreTiming::ScheduleEvent(decValue * TIMER_RATIO, et_Dec); } } diff --git a/Source/Core/Core/Src/HW/VideoInterface.cpp b/Source/Core/Core/Src/HW/VideoInterface.cpp index a3d5f41d35..3c68493eed 100644 --- a/Source/Core/Core/Src/HW/VideoInterface.cpp +++ b/Source/Core/Core/Src/HW/VideoInterface.cpp @@ -461,7 +461,7 @@ void Write16(const u16 _iValue, const u32 _iAddress) } UpdateParameters(); - } + } break; case VI_HORIZONTAL_TIMING_0_HI: diff --git a/Source/Core/Core/Src/HW/VideoInterface.h b/Source/Core/Core/Src/HW/VideoInterface.h index 9004360b18..aaaedf5209 100644 --- a/Source/Core/Core/Src/HW/VideoInterface.h +++ b/Source/Core/Core/Src/HW/VideoInterface.h @@ -132,8 +132,8 @@ union UVIHorizontalTiming0 { u32 Hex; struct { u16 Lo, Hi; }; - struct - { + struct + { u32 HLW : 9; // Halfline Width (W*16 = Width (720)) u32 : 7; u32 HCE : 7; // Horizontal Sync Start to Color Burst End @@ -147,8 +147,8 @@ union UVIHorizontalTiming1 { u32 Hex; struct { u16 Lo, Hi; }; - struct - { + struct + { u32 HSY : 7; // Horizontal Sync Width u32 HBE640 : 9; // Horizontal Sync Start to horizontal blank end u32 : 1; @@ -162,8 +162,8 @@ union UVIVBlankTimingRegister { u32 Hex; struct { u16 Lo, Hi; }; - struct - { + struct + { u32 PRB : 10; // Pre-blanking in half lines u32 : 6; u32 PSB : 10; // Post blanking in half lines @@ -176,8 +176,8 @@ union UVIBurstBlankingRegister { u32 Hex; struct { u16 Lo, Hi; }; - struct - { + struct + { u32 BS0 : 5; // Field x start to burst blanking start in halflines u32 BE0 : 11; // Field x start to burst blanking end in halflines u32 BS2 : 5; // Field x+2 start to burst blanking start in halflines @@ -189,7 +189,7 @@ union UVIFBInfoRegister { u32 Hex; struct { u16 Lo, Hi; }; - struct + struct { // TODO: mask out lower 9bits/align to 9bits??? u32 FBB : 24; // Base address of the framebuffer in external mem @@ -205,8 +205,8 @@ union UVIInterruptRegister { u32 Hex; struct { u16 Lo, Hi; }; - struct - { + struct + { u32 HCT : 11; // Horizontal Position u32 : 5; u32 VCT : 11; // Vertical Position @@ -221,8 +221,8 @@ union UVILatchRegister { u32 Hex; struct { u16 Lo, Hi; }; - struct - { + struct + { u32 HCT : 11; // Horizontal Count u32 : 5; u32 VCT : 11; // Vertical Count @@ -307,7 +307,7 @@ union UVIBorderBlankRegister union UVIDTVStatus { u16 Hex; - struct + struct { u16 component_plugged : 1; u16 ntsc_j : 1; diff --git a/Source/Core/Core/Src/HW/WII_IPC.cpp b/Source/Core/Core/Src/HW/WII_IPC.cpp index b09d83f44b..d4535d1578 100644 --- a/Source/Core/Core/Src/HW/WII_IPC.cpp +++ b/Source/Core/Core/Src/HW/WII_IPC.cpp @@ -212,7 +212,7 @@ void Write32(const u32 _Value, const u32 _Address) _dbg_assert_msg_(WII_IPC, 0, "w32 %08x @ %08x", _Value, _Address); break; } - + WII_IPC_HLE_Interface::Update(); CoreTiming::ScheduleEvent_Threadsafe(0, updateInterrupts, 0); } diff --git a/Source/Core/Core/Src/HW/Wiimote.cpp b/Source/Core/Core/Src/HW/Wiimote.cpp index 2061e80f2e..da807735bc 100644 --- a/Source/Core/Core/Src/HW/Wiimote.cpp +++ b/Source/Core/Core/Src/HW/Wiimote.cpp @@ -43,15 +43,15 @@ void Initialize(void* const hwnd, bool wait) // add 4 wiimotes for (unsigned int i = WIIMOTE_CHAN_0; iGetState(&ncdata->bt, nunchuk_button_bitmasks); } - + // flip the button bits :/ ncdata->bt ^= 0x03; - + if (m_udpWrap->inst) { if (m_udpWrap->updNun) @@ -151,7 +151,7 @@ void Nunchuk::GetState(u8* const data, const bool focus) accel.x = x; accel.y = y; accel.z = z; - } + } } wm_accel* dt = (wm_accel*)&ncdata->ax; diff --git a/Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.h b/Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.h index 3b720f73a7..76518d9543 100644 --- a/Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.h +++ b/Source/Core/Core/Src/HW/WiimoteEmu/Attachment/Nunchuk.h @@ -37,7 +37,7 @@ private: AnalogStick* m_stick; u8 m_shake_step[3]; - + UDPWrapper* const m_udpWrap; }; diff --git a/Source/Core/Core/Src/HW/WiimoteEmu/Encryption.cpp b/Source/Core/Core/Src/HW/WiimoteEmu/Encryption.cpp index 70efdf2803..3c0c111a90 100644 --- a/Source/Core/Core/Src/HW/WiimoteEmu/Encryption.cpp +++ b/Source/Core/Core/Src/HW/WiimoteEmu/Encryption.cpp @@ -196,10 +196,10 @@ void genkey(const u8* const rand, const u8 idx, u8* const key) { const u8* const ans = ans_tbl[idx]; u8 t0[10]; - + for(int i=0; i<10; ++i) t0[i] = tsbox[rand[i]]; - + key[0] = ((ror8((ans[0]^t0[5]),(t0[2]%8)) - t0[9]) ^ t0[4]); key[1] = ((ror8((ans[1]^t0[1]),(t0[0]%8)) - t0[5]) ^ t0[7]); key[2] = ((ror8((ans[2]^t0[6]),(t0[8]%8)) - t0[2]) ^ t0[0]); @@ -219,7 +219,7 @@ void gentabs(const u8* const rand, const u8* const key, const u8 idx, u8* const ft[5] = sboxes[idx][key[3]] ^ sboxes[(idx+1)%8][rand[9]]; ft[6] = sboxes[idx][rand[0]] ^ sboxes[(idx+1)%8][rand[6]]; ft[7] = sboxes[idx][rand[1]] ^ sboxes[(idx+1)%8][rand[8]]; - + sb[0] = sboxes[idx][key[0]] ^ sboxes[(idx+1)%8][rand[1]]; sb[1] = sboxes[idx][key[5]] ^ sboxes[(idx+1)%8][rand[4]]; sb[2] = sboxes[idx][key[3]] ^ sboxes[(idx+1)%8][rand[0]]; @@ -245,10 +245,10 @@ void wiimote_gen_key(wiimote_key* const key, const u8* const keydata) rand[9-i] = keydata[i]; for (int i=0; i<6; ++i) skey[5-i] = keydata[i+10]; - + //DEBUG_LOG(WIIMOTE, "rand: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x", rand[0], rand[1], rand[2], rand[3], rand[4], rand[5], rand[6], rand[7], rand[8], rand[9]); //DEBUG_LOG(WIIMOTE, "key: %02x %02x %02x %02x %02x %02x", skey[0], skey[1], skey[2], skey[3], skey[4], skey[5]); - + for(idx = 0; idx < 7; ++idx) { genkey(rand, idx, testkey); @@ -257,12 +257,12 @@ void wiimote_gen_key(wiimote_key* const key, const u8* const keydata) } // default case is idx = 7 which is valid (homebrew uses it for the 0x17 case) //DEBUG_LOG(WIIMOTE, "idx: %d", idx); - + gentabs(rand, skey, idx, key->ft, key->sb); - + //DEBUG_LOG(WIIMOTE, "ft: %02x %02x %02x %02x %02x %02x %02x %02x", key->ft[0], key->ft[1], key->ft[2], key->ft[3], key->ft[4], key->ft[5], key->ft[6], key->ft[7]); //DEBUG_LOG(WIIMOTE, "sb: %02x %02x %02x %02x %02x %02x %02x %02x", key->sb[0], key->sb[1], key->sb[2], key->sb[3], key->sb[4], key->sb[5], key->sb[6], key->sb[7]); - + // for homebrew, ft and sb are all 0x97 which is equivalent to 0x17 } @@ -270,7 +270,7 @@ void wiimote_gen_key(wiimote_key* const key, const u8* const keydata) /* Encrypt data */ void wiimote_encrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len) { - for (int i = 0; i < len; ++i, ++addr) + for (int i = 0; i < len; ++i, ++addr) data[i] = (data[i] - key->ft[addr % 8]) ^ key->sb[addr % 8]; } diff --git a/Source/Core/Core/Src/HW/WiimoteEmu/MatrixMath.h b/Source/Core/Core/Src/HW/WiimoteEmu/MatrixMath.h index b8abafbb3a..867b944b48 100644 --- a/Source/Core/Core/Src/HW/WiimoteEmu/MatrixMath.h +++ b/Source/Core/Core/Src/HW/WiimoteEmu/MatrixMath.h @@ -27,9 +27,9 @@ inline void MatrixIdentity(Matrix & m) inline void MatrixFrustum(Matrix &m, double l, double r, double b, double t, double n, double f) { - m[0][0]=2*n/(r-l); m[0][1]=0; m[0][2]=0; m[0][3]=0; - m[1][0]=0; m[1][1]=2*n/(t-b); m[1][2]=0; m[1][3]=0; - m[2][0]=(r+l)/(r-l); m[2][1]=(t+b)/(t-b); m[2][2]=(f+n)/(f-n); m[2][3]=-1; + m[0][0]=2*n/(r-l); m[0][1]=0; m[0][2]=0; m[0][3]=0; + m[1][0]=0; m[1][1]=2*n/(t-b); m[1][2]=0; m[1][3]=0; + m[2][0]=(r+l)/(r-l); m[2][1]=(t+b)/(t-b); m[2][2]=(f+n)/(f-n); m[2][3]=-1; m[3][0]=0; m[3][1]=0; m[3][2]=2*f*n/(f-n); m[3][3]=0; } diff --git a/Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp index eda4f5104c..28f60940c4 100644 --- a/Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Core/Core/Src/HW/WiimoteEmu/WiimoteEmu.cpp @@ -60,7 +60,7 @@ static const u8 eeprom_data_16D0[] = { 0x77, 0x88, 0x00, 0x00, 0x2B, 0x01, 0xE8, 0x13 }; -const ReportFeatures reporting_mode_features[] = +const ReportFeatures reporting_mode_features[] = { //0x30: Core Buttons { 2, 0, 0, 0, 4 }, @@ -97,7 +97,7 @@ void EmulateShake(AccelData* const accel // peak G-force double shake_intensity; - + // shake is a bitfield of X,Y,Z shake button states static const unsigned int btns[] = { 0x01, 0x02, 0x04 }; unsigned int shake = 0; @@ -457,7 +457,7 @@ void Wiimote::GetIRData(u8* const data, bool use_accel) { float xx = 10000, yy = 0, zz = 0; double nsin,ncos; - + if (use_accel) { double ax,az,len; @@ -466,7 +466,7 @@ void Wiimote::GetIRData(u8* const data, bool use_accel) len=sqrt(ax*ax+az*az); if (len) { - ax/=len; + ax/=len; az/=len; //normalizing the vector nsin=ax; ncos=az; @@ -493,13 +493,13 @@ void Wiimote::GetIRData(u8* const data, bool use_accel) UDPTLayer::GetIR(m_udp, &xx, &yy, &zz); Vertex v[4]; - + static const int camWidth=1024; static const int camHeight=768; - static const double bndup=-0.315447; - static const double bnddown=0.85; - static const double bndleft=0.443364; - static const double bndright=-0.443364; + static const double bndup=-0.315447; + static const double bnddown=0.85; + static const double bndleft=0.443364; + static const double bndright=-0.443364; static const double dist1=100.f/camWidth; //this seems the optimal distance for zelda static const double dist2=1.2f*dist1; @@ -553,7 +553,7 @@ void Wiimote::GetIRData(u8* const data, bool use_accel) wm_ir_basic* const irdata = (wm_ir_basic*)data; for (unsigned int i=0; i<2; ++i) { - if (x[i*2] < 1024 && y[i*2] < 768) + if (x[i*2] < 1024 && y[i*2] < 768) { irdata[i].x1 = u8(x[i*2]); irdata[i].x1hi = x[i*2] >> 8; @@ -616,7 +616,7 @@ void Wiimote::GetExtData(u8* const data) // Bit 0 of byte 4 is moved to bit 7 of byte 5 // Bit 3 of byte 5 is moved to bit 4 of byte 5, overwriting it // Bit 1 of byte 5 is moved to bit 3 of byte 5 - // Bit 0 of byte 5 is moved to bit 2 of byte 5, overwriting it + // Bit 0 of byte 5 is moved to bit 2 of byte 5, overwriting it case 0x5: //data[5] & (1 << 7) //data[4] & (1 << 0) @@ -659,7 +659,7 @@ void Wiimote::Update() u8 data[MAX_PAYLOAD]; memset(data, 0, sizeof(data)); - + // figure out what data we need s8 rptf_size = MAX_PAYLOAD; @@ -676,28 +676,28 @@ void Wiimote::Update() { data[0] = 0xA1; data[1] = m_reporting_mode; - + // core buttons if (rptf.core) GetCoreData(data + rptf.core); - + // acceleration if (rptf.accel) GetAccelData(data + rptf.accel, rptf.core?(data+rptf.core):NULL); - + // IR if (rptf.ir) - GetIRData(data + rptf.ir, (rptf.accel != 0)); - + GetIRData(data + rptf.ir, (rptf.accel != 0)); + // extension if (rptf.ext) GetExtData(data + rptf.ext); - + // hybrid wiimote stuff (for now, it's not supported while recording) if (WIIMOTE_SRC_HYBRID == g_wiimote_sources[m_index] && !Movie::IsRecordingInput()) { using namespace WiimoteReal; - + std::lock_guard lk(g_refresh_lock); if (g_wiimotes[m_index]) { @@ -712,11 +712,11 @@ void Wiimote::Update() if (real_data[1] >= WM_REPORT_CORE) { const ReportFeatures& real_rptf = reporting_mode_features[real_data[1] - WM_REPORT_CORE]; - + // force same report type from real-wiimote if (&real_rptf != &rptf) rptf_size = 0; - + // core // mix real-buttons with emu-buttons in the status struct, and in the report if (real_rptf.core && rptf.core) @@ -724,15 +724,15 @@ void Wiimote::Update() m_status.buttons |= *(wm_core*)(real_data + real_rptf.core); *(wm_core*)(data + rptf.core) = m_status.buttons; } - + // accel // use real-accel data always i guess if (real_rptf.accel && rptf.accel) memcpy(data + rptf.accel, real_data + real_rptf.accel, sizeof(wm_accel)); - + // ir // TODO - + // ext // use real-ext data if an emu-extention isn't chosen if (real_rptf.ext && rptf.ext && (0 == m_extension->switch_extension)) @@ -744,7 +744,7 @@ void Wiimote::Update() // use real-acks if an emu-extension isn't chosen rptf_size = -1; break; - + // use all status reports, after modification of the extension bit case WM_STATUS_REPORT : //if (m_extension->switch_extension) @@ -753,14 +753,14 @@ void Wiimote::Update() ((wm_status_report*)(real_data + 2))->extension = 1; rptf_size = -1; break; - + // use all read-data replies case WM_READ_DATA_REPLY: rptf_size = -1; break; - + } - + // copy over report from real-wiimote if (-1 == rptf_size) { @@ -794,7 +794,7 @@ void Wiimote::Update() } } -void Wiimote::ControlChannel(const u16 _channelID, const void* _pData, u32 _Size) +void Wiimote::ControlChannel(const u16 _channelID, const void* _pData, u32 _Size) { // Check for custom communication if (99 == _channelID) @@ -823,7 +823,7 @@ void Wiimote::ControlChannel(const u16 _channelID, const void* _pData, u32 _Size case HID_TYPE_SET_REPORT : if (HID_PARAM_INPUT == hidp->param) { - PanicAlert("HID_TYPE_SET_REPORT - INPUT"); + PanicAlert("HID_TYPE_SET_REPORT - INPUT"); } else { diff --git a/Source/Core/Core/Src/HW/WiimoteReal/IONix.cpp b/Source/Core/Core/Src/HW/WiimoteReal/IONix.cpp index f06bec2dde..860a9a3d57 100644 --- a/Source/Core/Core/Src/HW/WiimoteReal/IONix.cpp +++ b/Source/Core/Core/Src/HW/WiimoteReal/IONix.cpp @@ -71,7 +71,7 @@ void WiimoteScanner::FindWiimotes(std::vector & found_wiimotes, Wiimot inquiry_info scan_infos[max_infos] = {}; auto* scan_infos_ptr = scan_infos; found_board = NULL; - + // Scan for bluetooth devices int const found_devices = hci_inquiry(device_id, wait_len, max_infos, NULL, &scan_infos_ptr, IREQ_CACHE_FLUSH); if (found_devices < 0) @@ -86,7 +86,7 @@ void WiimoteScanner::FindWiimotes(std::vector & found_wiimotes, Wiimot for (int i = 0; i < found_devices; ++i) { ERROR_LOG(WIIMOTE, "found a device..."); - + // BT names are a maximum of 248 bytes apparently char name[255] = {}; if (hci_read_remote_name(device_sock, &scan_infos[i].bdaddr, sizeof(name), name, 1000) < 0) diff --git a/Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp b/Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp index 58ebfbfa64..2f1efd0228 100644 --- a/Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp +++ b/Source/Core/Core/Src/HW/WiimoteReal/IOWin.cpp @@ -138,8 +138,8 @@ inline void init_lib() namespace WiimoteReal { - - + + int _IOWrite(HANDLE &dev_handle, OVERLAPPED &hid_overlap_write, enum win_bt_stack_t &stack, const u8* buf, int len); int _IORead(HANDLE &dev_handle, OVERLAPPED &hid_overlap_read, u8* buf, int index); void _IOWakeup(HANDLE &dev_handle, OVERLAPPED &hid_overlap_read); @@ -217,7 +217,7 @@ void WiimoteScanner::FindWiimotes(std::vector & found_wiimotes, Wiimot // Query the data for this device if (SetupDiGetDeviceInterfaceDetail(device_info, &device_data, detail_data, len, NULL, NULL)) - { + { auto const wm = new Wiimote; wm->devicepath = detail_data->DevicePath; bool real_wiimote = false, is_bb = false; @@ -254,7 +254,7 @@ int CheckDeviceType_Write(HANDLE &dev_handle, const u8* buf, int size, int attem enum win_bt_stack_t stack = MSBT_STACK_UNKNOWN; DWORD written = 0; - + for (; attempts>0; --attempts) { if (_IOWrite(dev_handle, hid_overlap_write, stack, buf, size)) @@ -278,7 +278,7 @@ int CheckDeviceType_Write(HANDLE &dev_handle, const u8* buf, int size, int attem } } } - + CloseHandle(hid_overlap_write.hEvent); return written; @@ -295,7 +295,7 @@ int CheckDeviceType_Read(HANDLE &dev_handle, u8* buf, int attempts) if (read > 0) break; } - + CloseHandle(hid_overlap_read.hEvent); return read; @@ -308,17 +308,17 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool { real_wiimote = false; is_bb = false; - + #ifdef SHARE_WRITE_WIIMOTES std::lock_guard lk(g_connected_wiimotes_lock); if (g_connected_wiimotes.count(devicepath) != 0) return; #endif - + HANDLE dev_handle = CreateFile(devicepath.c_str(), - GENERIC_READ | GENERIC_WRITE, + GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, + NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); if (dev_handle == INVALID_HANDLE_VALUE) return; @@ -326,7 +326,7 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool bool check_vidpid = false; HIDD_ATTRIBUTES attrib; attrib.Size = sizeof(attrib); - if (!check_vidpid || + if (!check_vidpid || (HidD_GetAttributes(dev_handle, &attrib) && (attrib.VendorID == 0x057e) && (attrib.ProductID == 0x0306))) @@ -343,18 +343,18 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool u8 const disable_enc_pt1_report[MAX_PAYLOAD] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_WRITE_DATA, 0x04, 0xa4, 0x00, 0xf0, 0x01, 0x55}; u8 const disable_enc_pt2_report[MAX_PAYLOAD] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_WRITE_DATA, 0x04, 0xa4, 0x00, 0xfb, 0x01, 0x00}; - rc = CheckDeviceType_Write(dev_handle, - disable_enc_pt1_report, - sizeof(disable_enc_pt1_report), + rc = CheckDeviceType_Write(dev_handle, + disable_enc_pt1_report, + sizeof(disable_enc_pt1_report), 1); - rc = CheckDeviceType_Write(dev_handle, - disable_enc_pt2_report, - sizeof(disable_enc_pt2_report), + rc = CheckDeviceType_Write(dev_handle, + disable_enc_pt2_report, + sizeof(disable_enc_pt2_report), 1); - - rc = CheckDeviceType_Write(dev_handle, - req_status_report, - sizeof(req_status_report), + + rc = CheckDeviceType_Write(dev_handle, + req_status_report, + sizeof(req_status_report), 1); while (rc > 0 && --max_cycles > 0) @@ -364,13 +364,13 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool // DEBUG_LOG(WIIMOTE, "CheckDeviceType: Read failed..."); break; } - + switch (buf[1]) { case WM_STATUS_REPORT: { real_wiimote = true; - + // DEBUG_LOG(WIIMOTE, "CheckDeviceType: Got Status Report"); wm_status_report * wsr = (wm_status_report*)&buf[2]; if (wsr->extension) @@ -402,7 +402,7 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool case WM_READ_DATA_REPLY: { // DEBUG_LOG(WIIMOTE, "CheckDeviceType: Got Data Reply"); - wm_read_data_reply * wrdr + wm_read_data_reply * wrdr = (wm_read_data_reply*)&buf[2]; // Check if it has returned what we asked. if (Common::swap16(wrdr->address) == 0x00fa) @@ -410,15 +410,15 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool real_wiimote = true; // 0x020420A40000ULL means balance board. u64 ext_type = (*(u64*)&wrdr->data[0]); - // DEBUG_LOG(WIIMOTE, - // "CheckDeviceType: GOT EXT TYPE %llX", + // DEBUG_LOG(WIIMOTE, + // "CheckDeviceType: GOT EXT TYPE %llX", // ext_type); is_bb = (ext_type == 0x020420A40000ULL); } else { - ERROR_LOG(WIIMOTE, - "CheckDeviceType: GOT UNREQUESTED ADDRESS %X", + ERROR_LOG(WIIMOTE, + "CheckDeviceType: GOT UNREQUESTED ADDRESS %X", Common::swap16(wrdr->address)); } // force end @@ -441,7 +441,7 @@ void WiimoteScanner::CheckDeviceType(std::basic_string &devicepath, bool bool WiimoteScanner::IsReady() const { // TODO: don't search for a radio each time - + BLUETOOTH_FIND_RADIO_PARAMS radioParam; radioParam.dwSize = sizeof(radioParam); @@ -581,7 +581,7 @@ int _IORead(HANDLE &dev_handle, OVERLAPPED &hid_overlap_read, u8* buf, int index buf[0] = 0xa1; // Used below for a warning buf[1] = 0; - + DWORD bytes = 0; ResetEvent(hid_overlap_read.hEvent); if (!ReadFile(dev_handle, buf + 1, MAX_PAYLOAD - 1, &bytes, &hid_overlap_read)) @@ -653,11 +653,11 @@ int _IOWrite(HANDLE &dev_handle, OVERLAPPED &hid_overlap_write, enum win_bt_stac stack = MSBT_STACK_BLUESOLEIL; if (_IOWrite(dev_handle, hid_overlap_write, stack, buf, len)) return 1; - + stack = MSBT_STACK_MS; if (_IOWrite(dev_handle, hid_overlap_write, stack, buf, len)) return 1; - + stack = MSBT_STACK_UNKNOWN; break; } @@ -665,7 +665,7 @@ int _IOWrite(HANDLE &dev_handle, OVERLAPPED &hid_overlap_write, enum win_bt_stac { auto result = HidD_SetOutputReport(dev_handle, const_cast(buf) + 1, len - 1); //FlushFileBuffers(dev_handle); - + if (!result) { auto err = GetLastError(); @@ -679,7 +679,7 @@ int _IOWrite(HANDLE &dev_handle, OVERLAPPED &hid_overlap_write, enum win_bt_stac WARN_LOG(WIIMOTE, "IOWrite[MSBT_STACK_MS]: ERROR: %08x", err); } } - + return result; break; } @@ -692,7 +692,7 @@ int _IOWrite(HANDLE &dev_handle, OVERLAPPED &hid_overlap_write, enum win_bt_stac std::fill(big_buf + len, big_buf + MAX_PAYLOAD, 0); buf = big_buf; } - + ResetEvent(hid_overlap_write.hEvent); DWORD bytes = 0; if (WriteFile(dev_handle, buf + 1, MAX_PAYLOAD - 1, &bytes, &hid_overlap_write)) @@ -711,7 +711,7 @@ int _IOWrite(HANDLE &dev_handle, OVERLAPPED &hid_overlap_write, enum win_bt_stac break; } } - + return 0; } @@ -738,9 +738,9 @@ void ProcessWiimotes(bool new_scan, T& callback) BLUETOOTH_FIND_RADIO_PARAMS radioParam; radioParam.dwSize = sizeof(radioParam); - + HANDLE hRadio; - + // TODO: save radio(s) in the WiimoteScanner constructor? // Enumerate BT radios diff --git a/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.cpp b/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.cpp index a4d19aaa99..e5fff5b3f1 100644 --- a/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.cpp +++ b/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.cpp @@ -13,7 +13,7 @@ #include "Host.h" #include "ConfigManager.h" #include "SFML/Network.hpp" - + #include "WiimoteReal.h" @@ -61,14 +61,14 @@ void Wiimote::WriteReport(Report rpt) if (rpt.size() >= 3) { bool const new_rumble_state = (rpt[2] & 0x1) != 0; - + if (WM_RUMBLE == rpt[1] && new_rumble_state == m_rumble_state) { // If this is a rumble report and the rumble state didn't change, ignore //ERROR_LOG(WIIMOTE, "Ignoring rumble report."); return; } - + m_rumble_state = new_rumble_state; } @@ -80,7 +80,7 @@ void Wiimote::WriteReport(Report rpt) void Wiimote::QueueReport(u8 rpt_id, const void* _data, unsigned int size) { auto const data = static_cast(_data); - + Report rpt(size + 2); rpt[0] = WM_SET_REPORT | WM_BT_OUTPUT; rpt[1] = rpt_id; @@ -91,7 +91,7 @@ void Wiimote::QueueReport(u8 rpt_id, const void* _data, unsigned int size) void Wiimote::DisableDataReporting() { m_last_input_report.clear(); - + // This probably accomplishes nothing. wm_report_mode rpt = {}; rpt.mode = WM_REPORT_CORE; @@ -120,7 +120,7 @@ void Wiimote::SetChannel(u16 channel) void Wiimote::ClearReadQueue() { Report rpt; - + // The "Clear" function isn't thread-safe :/ while (m_read_reports.Pop(rpt)) {} @@ -151,12 +151,12 @@ void Wiimote::InterruptChannel(const u16 channel, const void* const _data, const if (channel != m_channel) { m_channel = channel; - + ClearReadQueue(); EmuStart(); } - + auto const data = static_cast(_data); Report rpt(data, data + size); WiimoteEmu::Wiimote *const wm = (WiimoteEmu::Wiimote*)::Wiimote::GetPlugin()->controllers[index]; @@ -168,7 +168,7 @@ void Wiimote::InterruptChannel(const u16 channel, const void* const _data, const { rpt[0] = WM_SET_REPORT | WM_BT_OUTPUT; } - + // Disallow games from turning off all of the LEDs. // It makes Wiimote connection status confusing. if (rpt[1] == WM_LEDS) @@ -226,9 +226,9 @@ bool Wiimote::Write() if (!m_write_reports.Empty()) { Report const& rpt = m_write_reports.Front(); - + bool const is_speaker_data = rpt[1] == WM_WRITE_SPEAKER_DATA; - + if (!is_speaker_data || m_last_audio_report.GetTimeDifference() > 5) { if (Core::g_CoreStartupParameter.iBBDumpPort > 0 && index == WIIMOTE_BALANCE_BOARD) @@ -237,15 +237,15 @@ bool Wiimote::Write() Socket.Send((char*)rpt.data(), rpt.size(), sf::IPAddress::LocalHost, Core::g_CoreStartupParameter.iBBDumpPort); } IOWrite(rpt.data(), rpt.size()); - + if (is_speaker_data) m_last_audio_report.Update(); - + m_write_reports.Pop(); return true; } } - + return false; } @@ -264,7 +264,7 @@ const Report& Wiimote::ProcessReadQueue() { // A non-data report, use it. return m_last_input_report; - + // Forget the last data report as it may be of the wrong type // or contain outdated button data // or it's not supposed to be sent at this time @@ -275,7 +275,7 @@ const Report& Wiimote::ProcessReadQueue() // If the last report wasn't a data report it's irrelevant. if (!IsDataReport(m_last_input_report)) m_last_input_report.clear(); - + // If it was a data report, we repeat that until something else comes in. return m_last_input_report; } @@ -307,13 +307,13 @@ bool Wiimote::PrepareOnThread() { // core buttons, no continuous reporting u8 static const mode_report[] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_REPORT_MODE, 0, WM_REPORT_CORE}; - + // Set the active LEDs and turn on rumble. u8 static const led_report[] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_LEDS, u8(WIIMOTE_LED_1 << (index%WIIMOTE_BALANCE_BOARD) | 0x1)}; // Turn off rumble u8 static const rumble_report[] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_RUMBLE, 0}; - + // Request status report u8 static const req_status_report[] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_REQUEST_STATUS, 0}; // TODO: check for sane response? @@ -469,7 +469,7 @@ void WiimoteScanner::ThreadFunc() //std::this_thread::yield(); Common::SleepCurrentThread(500); } - + NOTICE_LOG(WIIMOTE, "Wiimote scanning has stopped."); } @@ -565,7 +565,7 @@ void LoadSettings() sec.Get("Source", &g_wiimote_sources[i], i ? WIIMOTE_SRC_NONE : WIIMOTE_SRC_EMU); } - + std::string secname("BalanceBoard"); IniFile::Section& sec = *inifile.GetOrCreateSection(secname.c_str()); sec.Get("Source", &g_wiimote_sources[WIIMOTE_BALANCE_BOARD], WIIMOTE_SRC_NONE); @@ -656,8 +656,6 @@ void ChangeWiimoteSource(unsigned int index, int source) g_wiimote_sources[index] = source; g_wiimote_scanner.WantWiimotes(0 != CalculateWantedWiimotes()); g_wiimote_scanner.WantBB(0 != CalculateWantedBB()); - - // kill real connection (or swap to different slot) DoneWithWiimote(index); } @@ -699,9 +697,9 @@ void TryToConnectWiimote(Wiimote* wm) } g_wiimote_scanner.WantWiimotes(0 != CalculateWantedWiimotes()); - + lk.unlock(); - + delete wm; } @@ -713,11 +711,11 @@ void TryToConnectBalanceBoard(Wiimote* wm) { wm = NULL; } - + g_wiimote_scanner.WantBB(0 != CalculateWantedBB()); - + lk.unlock(); - + delete wm; } @@ -733,7 +731,7 @@ void DoneWithWiimote(int index) // First see if we can use this real Wiimote in another slot. TryToConnectWiimote(wm); } - + // else, just disconnect the Wiimote HandleWiimoteDisconnect(index); } @@ -741,7 +739,7 @@ void DoneWithWiimote(int index) void HandleWiimoteDisconnect(int index) { Wiimote* wm = NULL; - + { std::lock_guard lk(g_refresh_lock); @@ -766,12 +764,12 @@ void HandleFoundWiimotes(const std::vector& wiimotes) void Refresh() { g_wiimote_scanner.StopScanning(); - + { std::unique_lock lk(g_refresh_lock); std::vector found_wiimotes; Wiimote* found_board = NULL; - + if (0 != CalculateWantedWiimotes() || 0 != CalculateWantedBB()) { // Don't hang Dolphin when searching @@ -796,7 +794,7 @@ void Refresh() if(found_board) TryToConnectBalanceBoard(found_board); } - + Initialize(); } diff --git a/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.h b/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.h index e4e965400c..c4807ed95f 100644 --- a/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.h +++ b/Source/Core/Core/Src/HW/WiimoteReal/WiimoteReal.h @@ -70,7 +70,7 @@ public: void DisableDataReporting(); void EnableDataReporting(u8 mode); void SetChannel(u16 channel); - + void QueueReport(u8 rpt_id, const void* data, unsigned int size); int index; @@ -104,7 +104,7 @@ protected: private: void ClearReadQueue(); void WriteReport(Report rpt); - + int IORead(u8* buf); int IOWrite(u8 const* buf, int len); void IOWakeup(); @@ -114,7 +114,7 @@ private: void WaitReady(); bool m_rumble_state; - + std::thread m_wiimote_thread; // Whether to keep running the thread. volatile bool m_run_thread; @@ -127,7 +127,7 @@ private: Common::FifoQueue m_read_reports; Common::FifoQueue m_write_reports; - + Common::Timer m_last_audio_report; }; @@ -138,7 +138,7 @@ public: ~WiimoteScanner(); bool IsReady() const; - + void WantWiimotes(bool do_want); void WantBB(bool do_want); diff --git a/Source/Core/Core/Src/Host.h b/Source/Core/Core/Src/Host.h index bb2c9af8aa..67c74faba8 100644 --- a/Source/Core/Core/Src/Host.h +++ b/Source/Core/Core/Src/Host.h @@ -13,7 +13,7 @@ // Common and Host. // Common simply provides OS-neutral implementations of things like threads, mutexes, -// INI file manipulation, memory mapping, etc. +// INI file manipulation, memory mapping, etc. // Host is an abstract interface for communicating things back to the host. The emulator // core is treated as a library, not as a main program, because it is far easier to diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.h index 0db0ff3853..5f492015f5 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.h @@ -13,7 +13,7 @@ namespace WII_IPC_HLE_Interface { #define IPC_FIRST_ID 0x00 // first IPC device ID -#define IPC_MAX_FILES 0x10 // first IPC file ID +#define IPC_MAX_FILES 0x10 // first IPC file ID void EnqueReplyCallback(u64 userdata, int =0); @@ -21,7 +21,7 @@ void EnqueReplyCallback(u64 userdata, int =0); void Init(); // Shutdown -void Shutdown(); +void Shutdown(); // Reset void Reset(bool _bHard = false); diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device.h index 2cd2aa1ff4..49249a2053 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device.h @@ -12,27 +12,27 @@ #include "ChunkFile.h" #define FS_SUCCESS (u32)0 // Success -#define FS_EACCES (u32)-1 // Permission denied -#define FS_EEXIST (u32)-2 // File exists +#define FS_EACCES (u32)-1 // Permission denied +#define FS_EEXIST (u32)-2 // File exists #define FS_EINVAL (u32)-4 // Invalid argument Invalid FD -#define FS_ENOENT (u32)-6 // File not found -#define FS_EBUSY (u32)-8 // Resource busy -#define FS_EIO (u32)-12 // Returned on ECC error -#define FS_ENOMEM (u32)-22 // Alloc failed during request -#define FS_EFATAL (u32)-101 // Fatal error -#define FS_EACCESS (u32)-102 // Permission denied -#define FS_ECORRUPT (u32)-103 // returned for "corrupted" NAND -#define FS_EEXIST2 (u32)-105 // File exists -#define FS_ENOENT2 (u32)-106 // File not found -#define FS_ENFILE (u32)-107 // Too many fds open -#define FS_EFBIG (u32)-108 // Max block count reached? -#define FS_EFDEXHAUSTED (u32)-109 // Too many fds open -#define FS_ENAMELEN (u32)-110 // Pathname is too long -#define FS_EFDOPEN (u32)-111 // FD is already open -#define FS_EIO2 (u32)-114 // Returned on ECC error -#define FS_ENOTEMPTY (u32)-115 // Directory not empty -#define FS_EDIRDEPTH (u32)-116 // Max directory depth exceeded -#define FS_EBUSY2 (u32)-118 // Resource busy +#define FS_ENOENT (u32)-6 // File not found +#define FS_EBUSY (u32)-8 // Resource busy +#define FS_EIO (u32)-12 // Returned on ECC error +#define FS_ENOMEM (u32)-22 // Alloc failed during request +#define FS_EFATAL (u32)-101 // Fatal error +#define FS_EACCESS (u32)-102 // Permission denied +#define FS_ECORRUPT (u32)-103 // returned for "corrupted" NAND +#define FS_EEXIST2 (u32)-105 // File exists +#define FS_ENOENT2 (u32)-106 // File not found +#define FS_ENFILE (u32)-107 // Too many fds open +#define FS_EFBIG (u32)-108 // Max block count reached? +#define FS_EFDEXHAUSTED (u32)-109 // Too many fds open +#define FS_ENAMELEN (u32)-110 // Pathname is too long +#define FS_EFDOPEN (u32)-111 // FD is already open +#define FS_EIO2 (u32)-114 // Returned on ECC error +#define FS_ENOTEMPTY (u32)-115 // Directory not empty +#define FS_EDIRDEPTH (u32)-116 // Max directory depth exceeded +#define FS_EBUSY2 (u32)-118 // Resource busy //#define FS_EFATAL (u32)-119 // Fatal error not used by IOS as fatal ERROR #define FS_EESEXHAUSTED (u32)-1016 // Max of 2 ES handles at a time @@ -107,12 +107,12 @@ public: { } - virtual void DoState(PointerWrap& p) + virtual void DoState(PointerWrap& p) { DoStateShared(p); p.Do(m_Active); } - + void DoStateShared(PointerWrap& p); const std::string& GetDeviceName() const { return m_Name; } @@ -165,15 +165,15 @@ protected: LogTypes::LOG_TYPE LogType = LogTypes::WII_IPC_HLE, LogTypes::LOG_LEVELS Verbosity = LogTypes::LDEBUG) { - GENERIC_LOG(LogType, Verbosity, "CommandDump of %s", + GENERIC_LOG(LogType, Verbosity, "CommandDump of %s", GetDeviceName().c_str()); for (u32 i = 0; i < _NumberOfCommands; i++) { GENERIC_LOG(LogType, Verbosity, " Command%02i: 0x%08x", i, - Memory::Read_U32(_CommandAddress + i*4)); + Memory::Read_U32(_CommandAddress + i*4)); } } - + void DumpAsync(u32 BufferVector, u32 NumberInBuffer, u32 NumberOutBuffer, LogTypes::LOG_TYPE LogType = LogTypes::WII_IPC_HLE, LogTypes::LOG_LEVELS Verbosity = LogTypes::LDEBUG) diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp index 659807dcc4..9b6cf8ac8e 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.cpp @@ -68,7 +68,7 @@ bool CWII_IPC_HLE_Device_di::Close(u32 _CommandAddress, bool _bForce) return true; } -bool CWII_IPC_HLE_Device_di::IOCtl(u32 _CommandAddress) +bool CWII_IPC_HLE_Device_di::IOCtl(u32 _CommandAddress) { u32 BufferIn = Memory::Read_U32(_CommandAddress + 0x10); u32 BufferInSize = Memory::Read_U32(_CommandAddress + 0x14); @@ -85,7 +85,7 @@ bool CWII_IPC_HLE_Device_di::IOCtl(u32 _CommandAddress) return true; } -bool CWII_IPC_HLE_Device_di::IOCtlV(u32 _CommandAddress) +bool CWII_IPC_HLE_Device_di::IOCtlV(u32 _CommandAddress) { SIOCtlVBuffer CommandBuffer(_CommandAddress); @@ -418,7 +418,7 @@ u32 CWII_IPC_HLE_Device_di::ExecuteCommand(u32 _BufferIn, u32 _BufferInSize, u32 case DVDLowAudioBufferConfig: /* For more information: http://www.crazynation.org/GC/GC_DD_TECH/GCTech.htm - + Upon Power up or reset , 2 commands must be issued for proper use of audio streaming: DVDReadDiskID A8000040,00000000,00000020 DVDLowAudioBufferConfig E4xx00yy,00000000,00000020 @@ -453,9 +453,9 @@ int CWII_IPC_HLE_Device_di::GetCmdDelay(u32 _CommandAddress) { u32 BufferIn = Memory::Read_U32(_CommandAddress + 0x10); u32 Command = Memory::Read_U32(BufferIn) >> 24; - + // Hacks below - + switch (Command) { case DVDLowRead: @@ -468,13 +468,13 @@ int CWII_IPC_HLE_Device_di::GetCmdDelay(u32 _CommandAddress) return SystemTimers::GetTicksPerSecond() / 975000 * Size; break; } - + case DVDLowClearCoverInterrupt: // Less than ~1/155th of a second hangs Oregon Trail at "loading wheel". // More than ~1/140th of a second hangs Resident Evil Archives: Resident Evil Zero. return SystemTimers::GetTicksPerSecond() / 146; break; - + // case DVDLowAudioBufferConfig: // case DVDLowInquiry: // case DVDLowReadDiskID: diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.h index 64be42f978..e5b19e4ab7 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_DI.h @@ -24,9 +24,9 @@ public: bool Open(u32 _CommandAddress, u32 _Mode); bool Close(u32 _CommandAddress, bool _bForce); - bool IOCtl(u32 _CommandAddress); + bool IOCtl(u32 _CommandAddress); bool IOCtlV(u32 _CommandAddress); - + int GetCmdDelay(u32); private: diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp index 24c32a83a2..1a8febe6fd 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp @@ -79,7 +79,7 @@ CWII_IPC_HLE_Device_FileIO::~CWII_IPC_HLE_Device_FileIO() bool CWII_IPC_HLE_Device_FileIO::Close(u32 _CommandAddress, bool _bForce) { - INFO_LOG(WII_IPC_FILEIO, "FileIO: Close %s (DeviceID=%08x)", m_Name.c_str(), m_DeviceID); + INFO_LOG(WII_IPC_FILEIO, "FileIO: Close %s (DeviceID=%08x)", m_Name.c_str(), m_DeviceID); m_Mode = 0; // Close always return 0 for success @@ -89,11 +89,11 @@ bool CWII_IPC_HLE_Device_FileIO::Close(u32 _CommandAddress, bool _bForce) return true; } -bool CWII_IPC_HLE_Device_FileIO::Open(u32 _CommandAddress, u32 _Mode) +bool CWII_IPC_HLE_Device_FileIO::Open(u32 _CommandAddress, u32 _Mode) { m_Mode = _Mode; u32 ReturnValue = 0; - + static const char* const Modes[] = { "Unk Mode", @@ -101,9 +101,9 @@ bool CWII_IPC_HLE_Device_FileIO::Open(u32 _CommandAddress, u32 _Mode) "Write only", "Read and Write" }; - + m_filepath = HLE_IPC_BuildFilename(m_Name, 64); - + // The file must exist before we can open it // It should be created by ISFS_CreateFile, not here if (File::Exists(m_filepath)) @@ -126,23 +126,23 @@ bool CWII_IPC_HLE_Device_FileIO::Open(u32 _CommandAddress, u32 _Mode) File::IOFile CWII_IPC_HLE_Device_FileIO::OpenFile() { const char* open_mode = ""; - + switch (m_Mode) { case ISFS_OPEN_READ: open_mode = "rb"; break; - + case ISFS_OPEN_WRITE: case ISFS_OPEN_RW: open_mode = "r+b"; break; - + default: PanicAlertT("FileIO: Unknown open mode : 0x%02x", m_Mode); break; } - + return File::IOFile(m_filepath, open_mode); } @@ -207,8 +207,8 @@ bool CWII_IPC_HLE_Device_FileIO::Seek(u32 _CommandAddress) return true; } -bool CWII_IPC_HLE_Device_FileIO::Read(u32 _CommandAddress) -{ +bool CWII_IPC_HLE_Device_FileIO::Read(u32 _CommandAddress) +{ u32 ReturnValue = FS_EACCESS; const u32 Address = Memory::Read_U32(_CommandAddress + 0xC); // Read to this memory address const u32 Size = Memory::Read_U32(_CommandAddress + 0x10); @@ -233,12 +233,12 @@ bool CWII_IPC_HLE_Device_FileIO::Read(u32 _CommandAddress) { m_SeekPos += Size; } - + } } else { - ERROR_LOG(WII_IPC_FILEIO, "FileIO: Failed to read from %s (Addr=0x%08x Size=0x%x) - file could not be opened or does not exist", m_Name.c_str(), Address, Size); + ERROR_LOG(WII_IPC_FILEIO, "FileIO: Failed to read from %s (Addr=0x%08x Size=0x%x) - file could not be opened or does not exist", m_Name.c_str(), Address, Size); ReturnValue = FS_FILE_NOT_EXIST; } @@ -246,8 +246,8 @@ bool CWII_IPC_HLE_Device_FileIO::Read(u32 _CommandAddress) return true; } -bool CWII_IPC_HLE_Device_FileIO::Write(u32 _CommandAddress) -{ +bool CWII_IPC_HLE_Device_FileIO::Write(u32 _CommandAddress) +{ u32 ReturnValue = FS_EACCESS; const u32 Address = Memory::Read_U32(_CommandAddress + 0xC); // Write data from this memory address const u32 Size = Memory::Read_U32(_CommandAddress + 0x10); @@ -272,7 +272,7 @@ bool CWII_IPC_HLE_Device_FileIO::Write(u32 _CommandAddress) } else { - ERROR_LOG(WII_IPC_FILEIO, "FileIO: Failed to read from %s (Addr=0x%08x Size=0x%x) - file could not be opened or does not exist", m_Name.c_str(), Address, Size); + ERROR_LOG(WII_IPC_FILEIO, "FileIO: Failed to read from %s (Addr=0x%08x Size=0x%x) - file could not be opened or does not exist", m_Name.c_str(), Address, Size); ReturnValue = FS_FILE_NOT_EXIST; } @@ -280,13 +280,13 @@ bool CWII_IPC_HLE_Device_FileIO::Write(u32 _CommandAddress) return true; } -bool CWII_IPC_HLE_Device_FileIO::IOCtl(u32 _CommandAddress) +bool CWII_IPC_HLE_Device_FileIO::IOCtl(u32 _CommandAddress) { INFO_LOG(WII_IPC_FILEIO, "FileIO: IOCtl (Device=%s)", m_Name.c_str()); #if defined(_DEBUG) || defined(DEBUGFAST) DumpCommands(_CommandAddress); #endif - const u32 Parameter = Memory::Read_U32(_CommandAddress + 0xC); + const u32 Parameter = Memory::Read_U32(_CommandAddress + 0xC); u32 ReturnValue = 0; switch (Parameter) @@ -329,6 +329,6 @@ void CWII_IPC_HLE_Device_FileIO::DoState(PointerWrap &p) p.Do(m_Mode); p.Do(m_SeekPos); - + m_filepath = HLE_IPC_BuildFilename(m_Name, 64); } diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.h index 17dab453db..65dd0ce50c 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.h @@ -64,7 +64,7 @@ private: u32 m_Mode; u32 m_SeekPos; - + std::string m_filepath; }; diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp index 5540fb6194..151010e8fa 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp @@ -13,7 +13,7 @@ 0x20 GetTitleID (ES_GetTitleID) (Input: none, Output: 8 bytes) 0x1d GetDataDir (ES_GetDataDir) (Input: 8 bytes, Output: 30 bytes) - 0x1b DiGetTicketView (Input: none, Output: 216 bytes) + 0x1b DiGetTicketView (Input: none, Output: 216 bytes) 0x16 GetConsumption (Input: 8 bytes, Output: 0 bytes, 4 bytes) // there are two output buffers 0x12 GetNumTicketViews (ES_GetNumTicketViews) (Input: 8 bytes, Output: 4 bytes) @@ -23,7 +23,7 @@ but only the first two are correctly supported. For the other four we ignore any potential input and only write zero to the out buffer. However, most games only use first two, but some Nintendo developed games use the other ones to: - + 0x1b: Mario Galaxy, Mario Kart, SSBB 0x16: Mario Galaxy, Mario Kart, SSBB 0x12: Mario Kart @@ -56,7 +56,7 @@ std::string CWII_IPC_HLE_Device_es::m_ContentFile; -CWII_IPC_HLE_Device_es::CWII_IPC_HLE_Device_es(u32 _DeviceID, const std::string& _rDeviceName) +CWII_IPC_HLE_Device_es::CWII_IPC_HLE_Device_es(u32 _DeviceID, const std::string& _rDeviceName) : IWII_IPC_HLE_Device(_DeviceID, _rDeviceName) , m_pContentLoader(NULL) , m_TitleID(-1) @@ -86,7 +86,7 @@ u8* CWII_IPC_HLE_Device_es::keyTable[11] = { CWII_IPC_HLE_Device_es::~CWII_IPC_HLE_Device_es() {} -void CWII_IPC_HLE_Device_es::LoadWAD(const std::string& _rContentFile) +void CWII_IPC_HLE_Device_es::LoadWAD(const std::string& _rContentFile) { m_ContentFile = _rContentFile; } @@ -239,7 +239,7 @@ u32 CWII_IPC_HLE_Device_es::OpenTitleContent(u32 CFD, u64 TitleID, u16 Index) return CFD; } -bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) +bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) { SIOCtlVBuffer Buffer(_CommandAddress); @@ -271,7 +271,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) case IOCTL_ES_GETDEVICEID: { _dbg_assert_msg_(WII_IPC_ES, Buffer.NumberPayloadBuffer == 1, "IOCTL_ES_GETDEVICEID no out buffer"); - + EcWii &ec = EcWii::GetInstance(); INFO_LOG(WII_IPC_ES, "IOCTL_ES_GETDEVICEID %08X", ec.getNgId()); Memory::Write_U32(ec.getNgId(), Buffer.PayloadBuffer[0].m_Address); @@ -303,7 +303,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) else Memory::Write_U32((u32)rNANDContent.GetContentSize(), _CommandAddress + 0x4); - INFO_LOG(WII_IPC_ES, "IOCTL_ES_GETTITLECONTENTSCNT: TitleID: %08x/%08x content count %i", + INFO_LOG(WII_IPC_ES, "IOCTL_ES_GETTITLECONTENTSCNT: TitleID: %08x/%08x content count %i", (u32)(TitleID>>32), (u32)TitleID, rNANDContent.IsValid() ? NumberOfPrivateContent : (u32)rNANDContent.GetContentSize()); return true; @@ -394,7 +394,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) u8* pDest = Memory::GetPointer(Addr); - if (rContent.m_Position + Size > rContent.m_pContent->m_Size) + if (rContent.m_Position + Size > rContent.m_pContent->m_Size) { Size = rContent.m_pContent->m_Size-rContent.m_Position; } @@ -590,7 +590,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) { u32 FileSize = (u32)File::GetSize(TicketFilename); _dbg_assert_msg_(WII_IPC_ES, (FileSize % DiscIO::INANDContentLoader::TICKET_SIZE) == 0, "IOCTL_ES_GETVIEWCNT ticket file size seems to be wrong"); - + ViewCount = FileSize / DiscIO::INANDContentLoader::TICKET_SIZE; _dbg_assert_msg_(WII_IPC_ES, (ViewCount>0) && (ViewCount<=4), "IOCTL_ES_GETVIEWCNT ticket count seems to be wrong"); } @@ -628,7 +628,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) u32 retVal = 0; const DiscIO::INANDContentLoader& Loader = AccessContentDevice(TitleID); - + const u8 *Ticket = Loader.GetTIK(); if (Ticket) { @@ -694,7 +694,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) u32 TMDViewCnt = 0; if (Loader.IsValid()) { - TMDViewCnt += DiscIO::INANDContentLoader::TMD_VIEW_SIZE; + TMDViewCnt += DiscIO::INANDContentLoader::TMD_VIEW_SIZE; TMDViewCnt += 2; // title version TMDViewCnt += 2; // num entries TMDViewCnt += (u32)Loader.GetContentSize() * (4+2+2+8); // content id, index, type, size @@ -782,7 +782,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) // Presumably return -1017 when title not installed TODO verify Memory::Write_U32(ES_PARAMTER_SIZE_OR_ALIGNMENT, _CommandAddress + 0x4); } - + } break; case IOCTL_ES_GETSTOREDTMDSIZE: @@ -798,7 +798,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) if (Loader.IsValid()) { TMDCnt += DiscIO::INANDContentLoader::TMD_HEADER_SIZE; - TMDCnt += (u32)Loader.GetContentSize() * DiscIO::INANDContentLoader::CONTENT_HEADER_SIZE; + TMDCnt += (u32)Loader.GetContentSize() * DiscIO::INANDContentLoader::CONTENT_HEADER_SIZE; } if(Buffer.NumberPayloadBuffer) Memory::Write_U32(TMDCnt, Buffer.PayloadBuffer[0].m_Address); @@ -820,7 +820,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) u32 MaxCount = 0; if (Buffer.NumberInBuffer > 1) { - // TODO: actually use this param in when writing to the outbuffer :/ + // TODO: actually use this param in when writing to the outbuffer :/ MaxCount = Memory::Read_U32(Buffer.InBuffer[1].m_Address); } const DiscIO::INANDContentLoader& Loader = AccessContentDevice(TitleID); @@ -838,7 +838,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) const std::vector& rContent = Loader.GetContent(); for (size_t i=0; im_WiiMotes[i].IsConnected(); - + std::string tContentFile(m_ContentFile.c_str()); - + WII_IPC_HLE_Interface::Reset(true); WII_IPC_HLE_Interface::Init(); s_Usb = GetUsbPointer(); @@ -967,7 +967,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) s_Usb->m_WiiMotes[i].Activate(false); } } - + delete[] wiiMoteConnected; WII_IPC_HLE_Interface::SetDefaultContentFile(tContentFile); } @@ -979,7 +979,7 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) Memory::Write_U16(IOSv, 0x00003140); Memory::Write_U16(0xFFFF, 0x00003142); Memory::Write_U32(Memory::Read_U32(0x00003140), 0x00003188); - + //TODO: provide correct return code when bSuccess= false Memory::Write_U32(0, _CommandAddress + 0x4); @@ -987,16 +987,16 @@ bool CWII_IPC_HLE_Device_es::IOCtlV(u32 _CommandAddress) // IOCTL_ES_LAUNCH 0001000248414341 00000001 0001c0fef3df2cfa 00000000 0001000248414341 ffff // This is necessary because Reset(true) above deleted this object. Ew. - + // It seems that the original hardware overwrites the command after it has been - // executed. We write 8 which is not any valid command, and what IOS does + // executed. We write 8 which is not any valid command, and what IOS does Memory::Write_U32(8, _CommandAddress); // IOS seems to write back the command that was responded to Memory::Write_U32(7, _CommandAddress + 8); - + // Generate a reply to the IPC command WII_IPC_HLE_Interface::EnqReply(_CommandAddress, 0); - + return false; } break; @@ -1116,12 +1116,12 @@ u32 CWII_IPC_HLE_Device_es::ES_DIVerify(u8* _pTMD, u32 _sz) // TODO: Force the game to save to another location, instead of moving the user's save. if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsStartingFromClearSave()) - { + { if (File::Exists((savePath + "banner.bin").c_str())) { if (File::Exists((savePath + "../backup/").c_str())) { - // The last run of this game must have been to play back a movie, so their save is already backed up. + // The last run of this game must have been to play back a movie, so their save is already backed up. File::DeleteDirRecursively(savePath.c_str()); } else diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.h index ddc1f3613f..5dd4bd1ceb 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.h @@ -100,7 +100,7 @@ private: enum EErrorCodes { ES_INVALID_TMD = -106, // or access denied - ES_READ_LESS_DATA_THAN_EXPECTED = -1009, + ES_READ_LESS_DATA_THAN_EXPECTED = -1009, ES_WRITE_FAILURE = -1010, ES_PARAMTER_SIZE_OR_ALIGNMENT = -1017, ES_HASH_DOESNT_MATCH = -1022, diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp index 20993e2dc4..edbcc0967a 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.cpp @@ -22,7 +22,7 @@ static Common::replace_v replacements; -CWII_IPC_HLE_Device_fs::CWII_IPC_HLE_Device_fs(u32 _DeviceID, const std::string& _rDeviceName) +CWII_IPC_HLE_Device_fs::CWII_IPC_HLE_Device_fs(u32 _DeviceID, const std::string& _rDeviceName) : IWII_IPC_HLE_Device(_DeviceID, _rDeviceName) { Common::ReadReplacements(replacements); @@ -70,11 +70,11 @@ static u64 ComputeTotalFileSize(const File::FSTEntry& parentEntry) return sizeOfFiles; } -bool CWII_IPC_HLE_Device_fs::IOCtlV(u32 _CommandAddress) +bool CWII_IPC_HLE_Device_fs::IOCtlV(u32 _CommandAddress) { u32 ReturnValue = FS_RESULT_OK; SIOCtlVBuffer CommandBuffer(_CommandAddress); - + // Prepare the out buffer(s) with zeros as a safety precaution // to avoid returning bad values for(u32 i = 0; i < CommandBuffer.NumberPayloadBuffer; i++) @@ -173,7 +173,7 @@ bool CWII_IPC_HLE_Device_fs::IOCtlV(u32 _CommandAddress) _dbg_assert_(WII_IPC_FILEIO, CommandBuffer.PayloadBuffer[0].m_Size == 4); _dbg_assert_(WII_IPC_FILEIO, CommandBuffer.PayloadBuffer[1].m_Size == 4); - // this command sucks because it asks of the number of used + // this command sucks because it asks of the number of used // fsBlocks and inodes // It should be correct, but don't count on it... const char *relativepath = (const char*)Memory::GetPointer(CommandBuffer.InBuffer[0].m_Address); @@ -229,11 +229,11 @@ bool CWII_IPC_HLE_Device_fs::IOCtlV(u32 _CommandAddress) Memory::Write_U32(ReturnValue, _CommandAddress+4); - return true; + return true; } -bool CWII_IPC_HLE_Device_fs::IOCtl(u32 _CommandAddress) -{ +bool CWII_IPC_HLE_Device_fs::IOCtl(u32 _CommandAddress) +{ //u32 DeviceID = Memory::Read_U32(_CommandAddress + 8); //LOG(WII_IPC_FILEIO, "FS: IOCtl (Device=%s, DeviceID=%08x)", GetDeviceName().c_str(), DeviceID); @@ -248,10 +248,10 @@ bool CWII_IPC_HLE_Device_fs::IOCtl(u32 _CommandAddress) //LOG(WII_IPC_FILEIO, "Cleared %u bytes of the out buffer", _BufferOutSize); Memory::Memset(BufferOut, 0, BufferOutSize); - u32 ReturnValue = ExecuteCommand(Parameter, BufferIn, BufferInSize, BufferOut, BufferOutSize); + u32 ReturnValue = ExecuteCommand(Parameter, BufferIn, BufferInSize, BufferOut, BufferOutSize); Memory::Write_U32(ReturnValue, _CommandAddress + 4); - return true; + return true; } s32 CWII_IPC_HLE_Device_fs::ExecuteCommand(u32 _Parameter, u32 _BufferIn, u32 _BufferInSize, u32 _BufferOut, u32 _BufferOutSize) @@ -306,7 +306,7 @@ s32 CWII_IPC_HLE_Device_fs::ExecuteCommand(u32 _Parameter, u32 _BufferIn, u32 _B case IOCTL_SET_ATTR: { u32 Addr = _BufferIn; - + u32 OwnerID = Memory::Read_U32(Addr); Addr += 4; u16 GroupID = Memory::Read_U16(Addr); Addr += 2; std::string Filename = HLE_IPC_BuildFilename((const char*)Memory::GetPointer(_BufferIn), 64); Addr += 64; @@ -328,7 +328,7 @@ s32 CWII_IPC_HLE_Device_fs::ExecuteCommand(u32 _Parameter, u32 _BufferIn, u32 _B break; case IOCTL_GET_ATTR: - { + { _dbg_assert_msg_(WII_IPC_FILEIO, _BufferOutSize == 76, " GET_ATTR needs an 76 bytes large output buffer but it is %i bytes large", _BufferOutSize); @@ -338,7 +338,7 @@ s32 CWII_IPC_HLE_Device_fs::ExecuteCommand(u32 _Parameter, u32 _BufferIn, u32 _B std::string Filename = HLE_IPC_BuildFilename((const char*)Memory::GetPointer(_BufferIn), 64); u8 OwnerPerm = 0x3; // read/write u8 GroupPerm = 0x3; // read/write - u8 OtherPerm = 0x3; // read/write + u8 OtherPerm = 0x3; // read/write u8 Attributes = 0x00; // no attributes if (File::IsDirectory(Filename)) { diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.h index 6e896b4e48..e02b187fee 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_fs.h @@ -43,7 +43,7 @@ public: virtual bool IOCtl(u32 _CommandAddress); virtual bool IOCtlV(u32 _CommandAddress); - + virtual int GetCmdDelay(u32); private: diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp index f2699b989f..00415a526f 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_hid.cpp @@ -521,7 +521,7 @@ libusb_device_handle * CWII_IPC_HLE_Device_hid::GetDeviceByDevNum(u32 devNum) if (cnt < 0) return NULL; - + #ifdef _WIN32 static bool has_warned_about_drivers = false; #endif diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp index c24db4f0c9..1cfcf26343 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net.cpp @@ -677,8 +677,8 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) u32 fd = Memory::Read_U32(BufferIn); WiiSockMan &sm = WiiSockMan::getInstance(); ReturnValue = sm.delSocket(fd); - DEBUG_LOG(WII_IPC_NET, "%s(%x) %x", - Command == IOCTL_SO_ICMPCLOSE ? "IOCTL_SO_ICMPCLOSE" : "IOCTL_SO_CLOSE", + DEBUG_LOG(WII_IPC_NET, "%s(%x) %x", + Command == IOCTL_SO_ICMPCLOSE ? "IOCTL_SO_ICMPCLOSE" : "IOCTL_SO_CLOSE", fd, ReturnValue); break; } @@ -755,7 +755,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) if (optname == SO_ERROR) { s32 last_error = WiiSockMan::getInstance().getLastNetError(); - + Memory::Write_U32(sizeof(s32), BufferOut + 0xC); Memory::Write_U32(last_error, BufferOut + 0x10); } @@ -775,7 +775,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) "BufferIn: (%08x, %i), BufferOut: (%08x, %i)" "%02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx", fd, level, optname, optlen, BufferIn, BufferInSize, BufferOut, BufferOutSize, optval[0], optval[1], optval[2], optval[3], optval[4], optval[5], optval[6], optval[7], optval[8], optval[9], optval[10], optval[11], optval[12], optval[13], optval[14], optval[15], optval[16], optval[17], optval[18], optval[19]); - + //TODO: bug booto about this, 0x2005 most likely timeout related, default value on wii is , 0x2001 is most likely tcpnodelay if (level == 6 && (optname == 0x2005 || optname == 0x2001)){ ReturnValue = 0; diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp index 669d531dcf..36d4b2de19 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_net_ssl.cpp @@ -77,7 +77,7 @@ bool CWII_IPC_HLE_Device_net_ssl::IOCtl(u32 _CommandAddress) u32 BufferOut = Memory::Read_U32(_CommandAddress + 0x18); u32 BufferOutSize = Memory::Read_U32(_CommandAddress + 0x1C); u32 Command = Memory::Read_U32(_CommandAddress + 0x0C); - + INFO_LOG(WII_IPC_SSL, "%s unknown %i " "(BufferIn: (%08x, %i), BufferOut: (%08x, %i)", GetDeviceName().c_str(), Command, @@ -493,10 +493,10 @@ _SSL_NEW_ERROR: BufferOut2, BufferOutSize2, BufferOut3, BufferOutSize3); break; } - + // SSL return codes are written to BufferIn Memory::Write_U32(0, _CommandAddress+4); - + return true; } diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp index c422bd7960..0b8e8bb53e 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.cpp @@ -93,7 +93,7 @@ bool CWII_IPC_HLE_Device_sdio_slot0::Close(u32 _CommandAddress, bool _bForce) } // The front SD slot -bool CWII_IPC_HLE_Device_sdio_slot0::IOCtl(u32 _CommandAddress) +bool CWII_IPC_HLE_Device_sdio_slot0::IOCtl(u32 _CommandAddress) { u32 Cmd = Memory::Read_U32(_CommandAddress + 0xC); @@ -101,11 +101,11 @@ bool CWII_IPC_HLE_Device_sdio_slot0::IOCtl(u32 _CommandAddress) u32 BufferInSize = Memory::Read_U32(_CommandAddress + 0x14); u32 BufferOut = Memory::Read_U32(_CommandAddress + 0x18); u32 BufferOutSize = Memory::Read_U32(_CommandAddress + 0x1C); - + // As a safety precaution we fill the out buffer with zeros to avoid // returning nonsense values Memory::Memset(BufferOut, 0, BufferOutSize); - + u32 ReturnValue = 0; switch (Cmd) { case IOCTL_WRITEHCR: diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.h index e7a323228d..d59f7e0a0a 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_sdio_slot0.h @@ -19,7 +19,7 @@ public: bool Open(u32 _CommandAddress, u32 _Mode); bool Close(u32 _CommandAddress, bool _bForce); - bool IOCtl(u32 _CommandAddress); + bool IOCtl(u32 _CommandAddress); bool IOCtlV(u32 _CommandAddress); void EventNotify(); @@ -34,7 +34,7 @@ private: }; // IOCtl - enum + enum { IOCTL_WRITEHCR = 0x01, IOCTL_READHCR = 0x02, diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_stm.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_stm.h index d4b26bcac2..8c796a458c 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_stm.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_stm.h @@ -54,7 +54,7 @@ public: return true; } - virtual bool IOCtl(u32 _CommandAddress) + virtual bool IOCtl(u32 _CommandAddress) { u32 Parameter = Memory::Read_U32(_CommandAddress + 0x0C); u32 BufferIn = Memory::Read_U32(_CommandAddress + 0x10); @@ -117,7 +117,7 @@ class CWII_IPC_HLE_Device_stm_eventhook : public IWII_IPC_HLE_Device { public: - CWII_IPC_HLE_Device_stm_eventhook(u32 _DeviceID, const std::string& _rDeviceName) + CWII_IPC_HLE_Device_stm_eventhook(u32 _DeviceID, const std::string& _rDeviceName) : IWII_IPC_HLE_Device(_DeviceID, _rDeviceName) , m_EventHookAddress(0) {} @@ -144,7 +144,7 @@ public: return true; } - virtual bool IOCtl(u32 _CommandAddress) + virtual bool IOCtl(u32 _CommandAddress) { u32 Parameter = Memory::Read_U32(_CommandAddress + 0x0C); u32 BufferIn = Memory::Read_U32(_CommandAddress + 0x10); diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp index 204beba05d..990a9e6a7d 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.cpp @@ -483,13 +483,13 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::ACLPool::Store(const u8* data, const u ERROR_LOG(WII_IPC_WIIMOTE, "ACL queue size reached 100 - current packet will be dropped!"); return; } - + _dbg_assert_msg_(WII_IPC_WIIMOTE, size < m_acl_pkt_size, "ACL packet too large for pool"); - + m_queue.push_back(Packet()); auto& packet = m_queue.back(); - + std::copy(data, data + size, packet.data); packet.size = size; packet.conn_handle = conn_handle; @@ -498,7 +498,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::ACLPool::Store(const u8* data, const u void CWII_IPC_HLE_Device_usb_oh1_57e_305::ACLPool::WriteToEndpoint(CtrlBuffer& endpoint) { auto& packet = m_queue.front(); - + const u8* const data = packet.data; const u16 size = packet.size; const u16 conn_handle = packet.conn_handle; @@ -546,7 +546,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventInquiryResponse() SQueuedEvent Event(static_cast(sizeof(SHCIEventInquiryResult) + m_WiiMotes.size()*sizeof(hci_inquiry_response)), 0); - SHCIEventInquiryResult* pInquiryResult = (SHCIEventInquiryResult*)Event.m_buffer; + SHCIEventInquiryResult* pInquiryResult = (SHCIEventInquiryResult*)Event.m_buffer; pInquiryResult->EventType = HCI_EVENT_INQUIRY_RESULT; pInquiryResult->PayloadLength = (u8)(sizeof(SHCIEventInquiryResult) - 2 + (m_WiiMotes.size() * sizeof(hci_inquiry_response))); @@ -558,7 +558,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventInquiryResponse() continue; u8* pBuffer = Event.m_buffer + sizeof(SHCIEventInquiryResult) + i*sizeof(hci_inquiry_response); - hci_inquiry_response* pResponse = (hci_inquiry_response*)pBuffer; + hci_inquiry_response* pResponse = (hci_inquiry_response*)pBuffer; pResponse->bdaddr = m_WiiMotes[i].GetBD(); pResponse->uclass[0]= m_WiiMotes[i].GetClass()[0]; @@ -757,7 +757,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventReadRemoteFeatures(u16 _conne INFO_LOG(WII_IPC_WIIMOTE, "Event: SendEventReadRemoteFeatures"); DEBUG_LOG(WII_IPC_WIIMOTE, " Connection_Handle: 0x%04x", pReadRemoteFeatures->ConnectionHandle); - DEBUG_LOG(WII_IPC_WIIMOTE, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", + DEBUG_LOG(WII_IPC_WIIMOTE, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", pReadRemoteFeatures->features[0], pReadRemoteFeatures->features[1], pReadRemoteFeatures->features[2], pReadRemoteFeatures->features[3], pReadRemoteFeatures->features[4], pReadRemoteFeatures->features[5], pReadRemoteFeatures->features[6], pReadRemoteFeatures->features[7]); @@ -830,7 +830,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventCommandStatus(u16 _Opcode) pHCIEvent->PacketIndicator = 0x01; pHCIEvent->Opcode = _Opcode; - INFO_LOG(WII_IPC_WIIMOTE, "Event: Command Status (Opcode: 0x%04x)", pHCIEvent->Opcode); + INFO_LOG(WII_IPC_WIIMOTE, "Event: Command Status (Opcode: 0x%04x)", pHCIEvent->Opcode); AddEventToQueue(Event); @@ -886,7 +886,7 @@ bool CWII_IPC_HLE_Device_usb_oh1_57e_305::SendEventNumberOfCompletedPackets() event->num_con_handles++; info->compl_pkts = m_PacketCount[i]; info->con_handle = m_WiiMotes[i].GetConnectionHandle(); - + DEBUG_LOG(WII_IPC_WIIMOTE, " Connection_Handle: 0x%04x", info->con_handle); DEBUG_LOG(WII_IPC_WIIMOTE, " Number_Of_Completed_Packets: %i", info->compl_pkts); @@ -1733,7 +1733,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadLocalFeatures(u8* _Input) INFO_LOG(WII_IPC_WIIMOTE, "Command: HCI_CMD_READ_LOCAL_FEATURES:"); DEBUG_LOG(WII_IPC_WIIMOTE, "return:"); - DEBUG_LOG(WII_IPC_WIIMOTE, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", + DEBUG_LOG(WII_IPC_WIIMOTE, " features: %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", Reply.features[0], Reply.features[1], Reply.features[2], Reply.features[3], Reply.features[4], Reply.features[5], Reply.features[6], Reply.features[7]); diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h index f6abbc67fe..75da4492e9 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb.h @@ -148,7 +148,7 @@ private: SHCICommandMessage m_CtrlSetup; CtrlBuffer m_HCIEndpoint; std::deque m_EventQueue; - + u32 m_ACLSetup; CtrlBuffer m_ACLEndpoint; @@ -163,7 +163,7 @@ private: u16 size; u16 conn_handle; }; - + std::deque m_queue; public: @@ -209,7 +209,7 @@ private: bool SendEventReadRemoteFeatures(u16 _connectionHandle); bool SendEventRoleChange(bdaddr_t _bd, bool _master); bool SendEventNumberOfCompletedPackets(); - bool SendEventAuthenticationCompleted(u16 _connectionHandle); + bool SendEventAuthenticationCompleted(u16 _connectionHandle); bool SendEventModeChange(u16 _connectionHandle, u8 _mode, u16 _value); bool SendEventDisconnect(u16 _connectionHandle, u8 _Reason); bool SendEventRequestLinkKey(const bdaddr_t& _bd); @@ -253,7 +253,7 @@ private: void CommandWriteInquiryScanType(u8* _Input); void CommandWriteLinkSupervisionTimeout(u8* _Input); - // OGF 0x04 Informational commands and return parameters + // OGF 0x04 Informational commands and return parameters void CommandReadBufferSize(u8* _Input); void CommandReadLocalVer(u8* _Input); void CommandReadLocalFeatures(u8* _Input); @@ -261,14 +261,14 @@ private: // OGF 0x3F Vendor specific void CommandVendorSpecific_FC4C(u8* _Input, u32 _Size); - void CommandVendorSpecific_FC4F(u8* _Input, u32 _Size); + void CommandVendorSpecific_FC4F(u8* _Input, u32 _Size); // Debugging void LOG_LinkKey(const u8* _pLinkKey); #pragma pack(push,1) #define CONF_PAD_MAX_REGISTERED 10 - + struct _conf_pad_device { u8 bdaddr[6]; diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp index d2ea7404b2..4300ecc4da 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp @@ -171,7 +171,7 @@ u8 CWII_IPC_HLE_Device_usb_kbd::m_KeyCodesQWERTY[256] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, // Backspace 0x2B, // Tab - 0x00, 0x00, + 0x00, 0x00, 0x00, // Clear 0x28, // Return 0x00, 0x00, @@ -192,18 +192,18 @@ u8 CWII_IPC_HLE_Device_usb_kbd::m_KeyCodesQWERTY[256] = { 0x52, // Up 0x4F, // Right 0x51, // Down - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, // Print screen 0x49, // Insert 0x4C, // Delete 0x00, // 0 -> 9 - 0x27, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A -> Z - 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, @@ -220,7 +220,7 @@ u8 CWII_IPC_HLE_Device_usb_kbd::m_KeyCodesQWERTY[256] = { 0x54, // Divide // F1 -> F12 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, - 0x42, 0x43, 0x44, 0x45, + 0x42, 0x43, 0x44, 0x45, // F13 -> F24 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -259,7 +259,7 @@ u8 CWII_IPC_HLE_Device_usb_kbd::m_KeyCodesAZERTY[256] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, // Backspace 0x2B, // Tab - 0x00, 0x00, + 0x00, 0x00, 0x00, // Clear 0x28, // Return 0x00, 0x00, @@ -280,18 +280,18 @@ u8 CWII_IPC_HLE_Device_usb_kbd::m_KeyCodesAZERTY[256] = { 0x52, // Up 0x4F, // Right 0x51, // Down - 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, // Print screen 0x49, // Insert 0x4C, // Delete 0x00, // 0 -> 9 - 0x27, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, + 0x27, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A -> Z - 0x14, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, + 0x14, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x33, 0x11, 0x12, 0x13, 0x04, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1D, 0x1B, 0x1C, 0x1A, @@ -308,7 +308,7 @@ u8 CWII_IPC_HLE_Device_usb_kbd::m_KeyCodesAZERTY[256] = { 0x54, // Divide // F1 -> F12 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, - 0x42, 0x43, 0x44, 0x45, + 0x42, 0x43, 0x44, 0x45, // F13 -> F24 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp index 9b57f96a2c..d873914b2b 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.cpp @@ -385,7 +385,7 @@ void CWII_IPC_HLE_WiiMote::ReceiveConnectionReq(u8 _Ident, u8* _pData, u32 _Size INFO_LOG(WII_IPC_WIIMOTE, "[L2CAP] SendConnectionResponse"); SendCommandToACL(_Ident, L2CAP_CONNECT_RSP, sizeof(l2cap_con_rsp_cp), (u8*)&Rsp); - + // update state machine /* if (rChannel.PSM == L2CAP_PSM_HID_CNTL) @@ -613,7 +613,7 @@ void CWII_IPC_HLE_WiiMote::SendConfigurationRequest(u16 scid, u16 MTU, u16 Flush *(u16*)&Buffer[Offset] = MTU; Offset += L2CAP_OPT_MTU_SIZE; DEBUG_LOG(WII_IPC_WIIMOTE, " MTU: 0x%04x", MTU); } - + if (FlushTimeOut || rChannel.FlushTimeOut) { if (FlushTimeOut == 0) @@ -650,7 +650,7 @@ void CWII_IPC_HLE_WiiMote::SDPSendServiceSearchResponse(u16 cid, u16 Transaction { // verify block... we handle search pattern for HID service only { - CBigEndianBuffer buffer(pServiceSearchPattern); + CBigEndianBuffer buffer(pServiceSearchPattern); _dbg_assert_(WII_IPC_WIIMOTE, buffer.Read8(0) == SDP_SEQ8); // data sequence _dbg_assert_(WII_IPC_WIIMOTE, buffer.Read8(1) == 0x03); // sequence size @@ -757,7 +757,7 @@ void CWII_IPC_HLE_WiiMote::SDPSendServiceAttributeResponse(u16 cid, u16 Transact int Offset = 0; l2cap_hdr_t* pHeader = (l2cap_hdr_t*)&DataFrame[Offset]; Offset += sizeof(l2cap_hdr_t); pHeader->dcid = cid; - + buffer.Write8 (Offset, 0x05); Offset++; buffer.Write16(Offset, TransactionID); Offset += 2; // transaction ID diff --git a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.h b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.h index 397841a2f0..7c9444f1f0 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.h +++ b/Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_WiiMote.h @@ -101,7 +101,7 @@ private: std::string m_Name; CWII_IPC_HLE_Device_usb_oh1_57e_305* m_pHost; - struct SChannel + struct SChannel { u16 SCID; u16 DCID; @@ -132,14 +132,14 @@ private: void ReceiveDisconnectionReq(u8 _Ident, u8* _pData, u32 _Size); void ReceiveConfigurationReq(u8 _Ident, u8* _pData, u32 _Size); void ReceiveConfigurationResponse(u8 _Ident, u8* _pData, u32 _Size); - + // some new ugly stuff - // should be inside the plugin + // should be inside the plugin void HandleSDP(u16 _SCID, u8* _pData, u32 _Size); void SDPSendServiceSearchResponse(u16 _SCID, u16 _TransactionID, u8* _pServiceSearchPattern, u16 _MaximumServiceRecordCount); - void SDPSendServiceAttributeResponse(u16 _SCID, u16 TransactionID, u32 _ServiceHandle, - u16 _StartAttrID, u16 _EndAttrID, + void SDPSendServiceAttributeResponse(u16 _SCID, u16 TransactionID, u32 _ServiceHandle, + u16 _StartAttrID, u16 _EndAttrID, u16 _MaximumAttributeByteCount, u8* _pContinuationState); u16 AddAttribToList(int _AttribID, u8* _pBuffer); diff --git a/Source/Core/Core/Src/IPC_HLE/WII_Socket.cpp b/Source/Core/Core/Src/IPC_HLE/WII_Socket.cpp index ac7c5d9035..32e6cbe81c 100644 --- a/Source/Core/Core/Src/IPC_HLE/WII_Socket.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WII_Socket.cpp @@ -207,7 +207,7 @@ void WiiSocket::update(bool read, bool write, bool except) int ret = bind(fd, (sockaddr*)&local_name, sizeof(local_name)); ReturnValue = WiiSockMan::getNetErrorCode(ret, "SO_BIND", false); - INFO_LOG(WII_IPC_NET, "IOCTL_SO_BIND (%08X %s:%d) = %d ", fd, + INFO_LOG(WII_IPC_NET, "IOCTL_SO_BIND (%08X %s:%d) = %d ", fd, inet_ntoa(local_name.sin_addr), Common::swap16(local_name.sin_port), ret); break; } @@ -217,7 +217,7 @@ void WiiSocket::update(bool read, bool write, bool except) sockaddr_in local_name; WiiSockAddrIn* wii_name = (WiiSockAddrIn*)Memory::GetPointer(BufferIn + 0x08); WiiSockMan::Convert(*wii_name, local_name); - + int ret = connect(fd, (sockaddr*)&local_name, sizeof(local_name)); ReturnValue = WiiSockMan::getNetErrorCode(ret, "SO_CONNECT", false); @@ -227,13 +227,13 @@ void WiiSocket::update(bool read, bool write, bool except) } case IOCTL_SO_ACCEPT: { - + if (BufferOutSize > 0) { sockaddr_in local_name; WiiSockAddrIn* wii_name = (WiiSockAddrIn*)Memory::GetPointer(BufferOut); WiiSockMan::Convert(*wii_name, local_name); - + socklen_t addrlen = sizeof(sockaddr_in); int ret = (s32)accept(fd, (sockaddr*)&local_name, &addrlen); ReturnValue = WiiSockMan::getNetErrorCode(ret, "SO_ACCEPT", true); @@ -261,7 +261,7 @@ void WiiSocket::update(bool read, bool write, bool except) // Fix blocking error codes if (!nonBlock) { - if (it->net_type == IOCTL_SO_CONNECT + if (it->net_type == IOCTL_SO_CONNECT && ReturnValue == -SO_EISCONN) { ReturnValue = SO_SUCCESS; @@ -275,25 +275,25 @@ void WiiSocket::update(bool read, bool write, bool except) u32 BufferInSize = 0, BufferInSize2 = 0; u32 BufferOut = 0, BufferOut2 = 0; u32 BufferOutSize = 0, BufferOutSize2 = 0; - + if (CommandBuffer.InBuffer.size() > 0) { BufferIn = CommandBuffer.InBuffer.at(0).m_Address; BufferInSize = CommandBuffer.InBuffer.at(0).m_Size; } - + if (CommandBuffer.PayloadBuffer.size() > 0) { BufferOut = CommandBuffer.PayloadBuffer.at(0).m_Address; BufferOutSize = CommandBuffer.PayloadBuffer.at(0).m_Size; } - + if (CommandBuffer.PayloadBuffer.size() > 1) { BufferOut2 = CommandBuffer.PayloadBuffer.at(1).m_Address; BufferOutSize2 = CommandBuffer.PayloadBuffer.at(1).m_Size; } - + if (CommandBuffer.InBuffer.size() > 1) { BufferIn2 = CommandBuffer.InBuffer.at(1).m_Address; @@ -309,7 +309,7 @@ void WiiSocket::update(bool read, bool write, bool except) { case IOCTLV_NET_SSL_DOHANDSHAKE: { - + int ret = ssl_handshake(&CWII_IPC_HLE_Device_net_ssl::_SSL[sslID].ctx); switch (ret) { @@ -330,7 +330,7 @@ void WiiSocket::update(bool read, bool write, bool except) Memory::Write_U32(SSL_ERR_FAILED, BufferIn); break; } - + INFO_LOG(WII_IPC_SSL, "IOCTLV_NET_SSL_DOHANDSHAKE = (%d) " "BufferIn: (%08x, %i), BufferIn2: (%08x, %i), " "BufferOut: (%08x, %i), BufferOut2: (%08x, %i)", @@ -342,7 +342,7 @@ void WiiSocket::update(bool read, bool write, bool except) case IOCTLV_NET_SSL_WRITE: { int ret = ssl_write(&CWII_IPC_HLE_Device_net_ssl::_SSL[sslID].ctx, Memory::GetPointer(BufferOut2), BufferOutSize2); - + #ifdef DEBUG_SSL File::IOFile("ssl_write.bin", "ab").WriteBytes(Memory::GetPointer(BufferOut2), BufferOutSize2); #endif @@ -351,7 +351,7 @@ void WiiSocket::update(bool read, bool write, bool except) // Return bytes written or SSL_ERR_ZERO if none Memory::Write_U32((ret == 0) ? SSL_ERR_ZERO : ret, BufferIn); } - else + else { switch (ret) { @@ -386,7 +386,7 @@ void WiiSocket::update(bool read, bool write, bool except) // Return bytes read or SSL_ERR_ZERO if none Memory::Write_U32((ret == 0) ? SSL_ERR_ZERO : ret, BufferIn); } - else + else { switch (ret) { @@ -415,32 +415,32 @@ void WiiSocket::update(bool read, bool write, bool except) { Memory::Write_U32(SSL_ERR_ID, BufferIn); } - } + } else { switch (it->net_type) { case IOCTLV_SO_SENDTO: { - + u32 flags = Memory::Read_U32(BufferIn2 + 0x04); u32 has_destaddr = Memory::Read_U32(BufferIn2 + 0x08); char * data = (char*)Memory::GetPointer(BufferIn); - + // Act as non blocking when SO_MSG_NONBLOCK is specified forceNonBlock = ((flags & SO_MSG_NONBLOCK) == SO_MSG_NONBLOCK); // send/sendto only handles MSG_OOB flags &= SO_MSG_OOB; - + sockaddr_in local_name = {0}; if (has_destaddr) - { + { WiiSockAddrIn* wii_name = (WiiSockAddrIn*)Memory::GetPointer(BufferIn2 + 0x0C); WiiSockMan::Convert(*wii_name, local_name); } - int ret = sendto(fd, data, BufferInSize, flags, - has_destaddr ? (struct sockaddr*)&local_name : NULL, + int ret = sendto(fd, data, BufferInSize, flags, + has_destaddr ? (struct sockaddr*)&local_name : NULL, has_destaddr ? sizeof(sockaddr) : 0); ReturnValue = WiiSockMan::getNetErrorCode(ret, "SO_SENDTO", true); @@ -464,7 +464,7 @@ void WiiSocket::update(bool read, bool write, bool except) sockaddr_in local_name; memset(&local_name, 0, sizeof(sockaddr_in)); - + if (BufferOutSize2 != 0) { WiiSockAddrIn* wii_name = (WiiSockAddrIn*)Memory::GetPointer(BufferOut2); @@ -473,7 +473,7 @@ void WiiSocket::update(bool read, bool write, bool except) // Act as non blocking when SO_MSG_NONBLOCK is specified forceNonBlock = ((flags & SO_MSG_NONBLOCK) == SO_MSG_NONBLOCK); - + // recv/recvfrom only handles PEEK/OOB flags &= SO_MSG_PEEK | SO_MSG_OOB; #ifdef _WIN32 @@ -490,10 +490,10 @@ void WiiSocket::update(bool read, bool write, bool except) BufferOutSize2 ? &addrlen : 0); ReturnValue = WiiSockMan::getNetErrorCode(ret, BufferOutSize2 ? "SO_RECVFROM" : "SO_RECV", true); - + INFO_LOG(WII_IPC_NET, "%s(%d, %p) Socket: %08X, Flags: %08X, " "BufferIn: (%08x, %i), BufferIn2: (%08x, %i), " - "BufferOut: (%08x, %i), BufferOut2: (%08x, %i)", + "BufferOut: (%08x, %i), BufferOut2: (%08x, %i)", BufferOutSize2 ? "IOCTLV_SO_RECVFROM " : "IOCTLV_SO_RECV ", ReturnValue, data, fd, flags, BufferIn, BufferInSize, BufferIn2, BufferInSize2, @@ -510,14 +510,14 @@ void WiiSocket::update(bool read, bool write, bool except) break; } } - + } if ( nonBlock || forceNonBlock || (!it->is_ssl && ReturnValue != -SO_EAGAIN && ReturnValue != -SO_EINPROGRESS && ReturnValue != -SO_EALREADY) || (it->is_ssl && ReturnValue != SSL_ERR_WAGAIN && ReturnValue != SSL_ERR_RAGAIN)) { - DEBUG_LOG(WII_IPC_NET, "IOCTL(V) Sock: %08x ioctl/v: %d returned: %d nonBlock: %d forceNonBlock: %d", + DEBUG_LOG(WII_IPC_NET, "IOCTL(V) Sock: %08x ioctl/v: %d returned: %d nonBlock: %d forceNonBlock: %d", fd, it->is_ssl ? (int) it->ssl_type : (int) it->net_type, ReturnValue, nonBlock, forceNonBlock); WiiSockMan::EnqueueReply(it->_CommandAddress, ReturnValue); it = pending_sockops.erase(it); @@ -606,8 +606,8 @@ void WiiSockMan::Update() { WiiSocket& sock = pair.second; sock.update( - FD_ISSET(sock.fd, &read_fds) != 0, - FD_ISSET(sock.fd, &write_fds) != 0, + FD_ISSET(sock.fd, &read_fds) != 0, + FD_ISSET(sock.fd, &write_fds) != 0, FD_ISSET(sock.fd, &except_fds) != 0 ); } @@ -626,10 +626,10 @@ void WiiSockMan::EnqueueReply(u32 CommandAddress, s32 ReturnValue) Memory::Write_U32(8, CommandAddress); // IOS seems to write back the command that was responded to Memory::Write_U32(Memory::Read_U32(CommandAddress), CommandAddress + 8); - + // Return value Memory::Write_U32(ReturnValue, CommandAddress + 4); - + WII_IPC_HLE_Interface::EnqReply(CommandAddress); } diff --git a/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.cpp b/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.cpp index e96bb5d7da..f919b4dec4 100644 --- a/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.cpp +++ b/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.cpp @@ -10,17 +10,17 @@ // 0x00 (checked) u8 ServiceRecordHandle[] = { 0x0a, 0x00, 0x01, 0x00, 0x00 }; // 0x01 (checked) -u8 SrvClassIDList[] = { 0x35, 0x03, +u8 SrvClassIDList[] = { 0x35, 0x03, 0x19, 0x11, 0x24 }; // 0x04 (checked) -u8 ProtocolDescriptorList[] = { 0x35, 0x0D, - 0x35, 0x06, - 0x19, 0x01, 0x00, // Element 0 - 0x09, 0x00, 0x11, // Element 1 +u8 ProtocolDescriptorList[] = { 0x35, 0x0D, + 0x35, 0x06, + 0x19, 0x01, 0x00, // Element 0 + 0x09, 0x00, 0x11, // Element 1 0x35, 0x03, - 0x19, 0x00, 0x11}; // Element 0 + 0x19, 0x00, 0x11}; // Element 0 // 0x5 (checked) -u8 BrowseGroupList[] = { 0x35, 0x03, +u8 BrowseGroupList[] = { 0x35, 0x03, 0x19, 0x10, 0x02 }; // 0x6 (checked) u8 LanguageBaseAttributeIDList[] = { 0x35, 0x09, @@ -34,11 +34,11 @@ u8 BluetoothProfileDescriptorList[] = { 0x35, 0x08, 0x09, 0x01, 0x00 }; // 0x0D (checked) u8 AdditionalProtocolDescriptorLists[] = { 0x35, 0x0F, - 0x35, 0x0D, + 0x35, 0x0D, 0x35, 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x13, - 0x35, 0x03, + 0x35, 0x03, 0x19, 0x00, 0x11 }; // 0x100 u8 ServiceName[] = { 0x25, 0x13, 'N','i','n','t','e','n','d','o',' ','R','V','L','-','C','N','T','-','0','1' }; @@ -62,39 +62,39 @@ u8 HIDReconnectInitiate[] = { 0x09, 0x00, 0x01 }; // 0x206 u8 HIDDescriptorList[] = { 0x35, 0xDF, - 0x35, 0xDD, - 0x08, 0x22, // Element 0 + 0x35, 0xDD, + 0x08, 0x22, // Element 0 0x25, 0xD9, // hmm... <- 0x25 is a string but there is Data // 0xD9 Bytes - Element 1 - 0x05, 0x01, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x10, - 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, - 0x01, 0x06, 0x00, 0xff, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x11, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x12, 0x95, 0x02, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x13, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x14, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x15, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x16, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x17, 0x95, 0x06, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x18, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x19, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x1a, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, - 0x85, 0x20, 0x95, 0x06, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x21, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x22, 0x95, 0x04, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x30, 0x95, 0x02, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x31, 0x95, 0x05, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x32, 0x95, 0x0a, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x33, 0x95, 0x11, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x34, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x35, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x36, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x37, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x3d, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x3e, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0x85, 0x3f, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, - 0xc0 }; // end tag + 0x05, 0x01, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x10, + 0x15, 0x00, 0x26, 0xff, 0x00, 0x75, 0x08, 0x95, + 0x01, 0x06, 0x00, 0xff, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x11, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x12, 0x95, 0x02, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x13, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x14, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x15, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x16, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x17, 0x95, 0x06, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x18, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x19, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x1a, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, + 0x85, 0x20, 0x95, 0x06, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x21, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x22, 0x95, 0x04, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x30, 0x95, 0x02, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x31, 0x95, 0x05, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x32, 0x95, 0x0a, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x33, 0x95, 0x11, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x34, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x35, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x36, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x37, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x3d, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x3e, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0x85, 0x3f, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, + 0xc0 }; // end tag // 0x207 @@ -121,60 +121,60 @@ u8 HIDBootDevice[] = { 0x28, 0x00 }; static u8 packet1[] = { - 0x00, 0x7b, 0x00, 0x76, 0x36, 0x01, 0xcc, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x01, - 0x00, 0x00, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19, 0x11, 0x24, 0x09, 0x00, 0x04, 0x35, 0x0d, 0x35, - 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x11, 0x35, 0x03, 0x19, 0x00, 0x11, 0x09, 0x00, 0x05, 0x35, - 0x03, 0x19, 0x10, 0x02, 0x09, 0x00, 0x06, 0x35, 0x09, 0x09, 0x65, 0x6e, 0x09, 0x00, 0x6a, 0x09, - 0x01, 0x00, 0x09, 0x00, 0x09, 0x35, 0x08, 0x35, 0x06, 0x19, 0x11, 0x24, 0x09, 0x01, 0x00, 0x09, - 0x00, 0x0d, 0x35, 0x0f, 0x35, 0x0d, 0x35, 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x13, 0x35, 0x03, - 0x19, 0x00, 0x11, 0x09, 0x01, 0x00, 0x25, 0x13, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, - 0x20, 0x52, 0x56, 0x4c, 0x2d, 0x43, 0x4e, 0x54, 0x2d, 0x30, 0x31, 0x09, 0x01, 0x02, 0x00, 0x76, + 0x00, 0x7b, 0x00, 0x76, 0x36, 0x01, 0xcc, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x01, + 0x00, 0x00, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19, 0x11, 0x24, 0x09, 0x00, 0x04, 0x35, 0x0d, 0x35, + 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x11, 0x35, 0x03, 0x19, 0x00, 0x11, 0x09, 0x00, 0x05, 0x35, + 0x03, 0x19, 0x10, 0x02, 0x09, 0x00, 0x06, 0x35, 0x09, 0x09, 0x65, 0x6e, 0x09, 0x00, 0x6a, 0x09, + 0x01, 0x00, 0x09, 0x00, 0x09, 0x35, 0x08, 0x35, 0x06, 0x19, 0x11, 0x24, 0x09, 0x01, 0x00, 0x09, + 0x00, 0x0d, 0x35, 0x0f, 0x35, 0x0d, 0x35, 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x13, 0x35, 0x03, + 0x19, 0x00, 0x11, 0x09, 0x01, 0x00, 0x25, 0x13, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, + 0x20, 0x52, 0x56, 0x4c, 0x2d, 0x43, 0x4e, 0x54, 0x2d, 0x30, 0x31, 0x09, 0x01, 0x02, 0x00, 0x76, }; static u8 packet2[] = { - 0x00, 0x7b, 0x00, 0x76, 0x01, 0x25, 0x13, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, - 0x64, 0x6f, 0x20, 0x52, 0x56, 0x4c, 0x2d, 0x43, 0x4e, 0x54, 0x2d, 0x30, 0x31, 0x09, 0x01, 0x02, - 0x25, 0x08, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x09, 0x02, 0x00, 0x09, 0x01, 0x00, - 0x09, 0x02, 0x01, 0x09, 0x01, 0x11, 0x09, 0x02, 0x02, 0x08, 0x04, 0x09, 0x02, 0x03, 0x08, 0x33, - 0x09, 0x02, 0x04, 0x28, 0x00, 0x09, 0x02, 0x05, 0x28, 0x01, 0x09, 0x02, 0x06, 0x35, 0xdf, 0x35, - 0xdd, 0x08, 0x22, 0x25, 0xd9, 0x05, 0x01, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x10, 0x15, 0x00, 0x26, - 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x06, 0x00, 0xff, 0x09, 0x01, 0x91, 0x00, 0x85, 0x11, 0x95, - 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, 0x12, 0x95, 0x02, 0x09, 0x01, 0x91, 0x00, 0x02, 0x00, 0xec, + 0x00, 0x7b, 0x00, 0x76, 0x01, 0x25, 0x13, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x64, 0x6f, 0x20, 0x52, 0x56, 0x4c, 0x2d, 0x43, 0x4e, 0x54, 0x2d, 0x30, 0x31, 0x09, 0x01, 0x02, + 0x25, 0x08, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x09, 0x02, 0x00, 0x09, 0x01, 0x00, + 0x09, 0x02, 0x01, 0x09, 0x01, 0x11, 0x09, 0x02, 0x02, 0x08, 0x04, 0x09, 0x02, 0x03, 0x08, 0x33, + 0x09, 0x02, 0x04, 0x28, 0x00, 0x09, 0x02, 0x05, 0x28, 0x01, 0x09, 0x02, 0x06, 0x35, 0xdf, 0x35, + 0xdd, 0x08, 0x22, 0x25, 0xd9, 0x05, 0x01, 0x09, 0x05, 0xa1, 0x01, 0x85, 0x10, 0x15, 0x00, 0x26, + 0xff, 0x00, 0x75, 0x08, 0x95, 0x01, 0x06, 0x00, 0xff, 0x09, 0x01, 0x91, 0x00, 0x85, 0x11, 0x95, + 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, 0x12, 0x95, 0x02, 0x09, 0x01, 0x91, 0x00, 0x02, 0x00, 0xec, }; static u8 packet3[] = { - 0x00, 0x7b, 0x00, 0x76, 0x85, 0x13, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, - 0x14, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, 0x15, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, - 0x16, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, 0x85, 0x17, 0x95, 0x06, 0x09, 0x01, 0x91, 0x00, 0x85, - 0x18, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, 0x85, 0x19, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, - 0x1a, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, 0x20, 0x95, 0x06, 0x09, 0x01, 0x81, 0x00, 0x85, - 0x21, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x22, 0x95, 0x04, 0x09, 0x01, 0x81, 0x00, 0x85, - 0x30, 0x95, 0x02, 0x09, 0x01, 0x81, 0x00, 0x85, 0x31, 0x95, 0x05, 0x09, 0x01, 0x81, 0x00, 0x85, - 0x32, 0x95, 0x0a, 0x09, 0x01, 0x81, 0x00, 0x85, 0x33, 0x95, 0x11, 0x09, 0x01, 0x02, 0x01, 0x62, + 0x00, 0x7b, 0x00, 0x76, 0x85, 0x13, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, + 0x14, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, 0x15, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, + 0x16, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, 0x85, 0x17, 0x95, 0x06, 0x09, 0x01, 0x91, 0x00, 0x85, + 0x18, 0x95, 0x15, 0x09, 0x01, 0x91, 0x00, 0x85, 0x19, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, + 0x1a, 0x95, 0x01, 0x09, 0x01, 0x91, 0x00, 0x85, 0x20, 0x95, 0x06, 0x09, 0x01, 0x81, 0x00, 0x85, + 0x21, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x22, 0x95, 0x04, 0x09, 0x01, 0x81, 0x00, 0x85, + 0x30, 0x95, 0x02, 0x09, 0x01, 0x81, 0x00, 0x85, 0x31, 0x95, 0x05, 0x09, 0x01, 0x81, 0x00, 0x85, + 0x32, 0x95, 0x0a, 0x09, 0x01, 0x81, 0x00, 0x85, 0x33, 0x95, 0x11, 0x09, 0x01, 0x02, 0x01, 0x62, }; static u8 packet4[] = { - 0x00, 0x70, 0x00, 0x6d, 0x81, 0x00, 0x85, 0x34, 0x95, 0x15, 0x09, 0x01, 0x81, - 0x00, 0x85, 0x35, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x36, 0x95, 0x15, 0x09, 0x01, 0x81, - 0x00, 0x85, 0x37, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x3d, 0x95, 0x15, 0x09, 0x01, 0x81, - 0x00, 0x85, 0x3e, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x3f, 0x95, 0x15, 0x09, 0x01, 0x81, - 0x00, 0xc0, 0x09, 0x02, 0x07, 0x35, 0x08, 0x35, 0x06, 0x09, 0x04, 0x09, 0x09, 0x01, 0x00, 0x09, - 0x02, 0x08, 0x28, 0x00, 0x09, 0x02, 0x09, 0x28, 0x01, 0x09, 0x02, 0x0a, 0x28, 0x01, 0x09, 0x02, - 0x0b, 0x09, 0x01, 0x00, 0x09, 0x02, 0x0c, 0x09, 0x0c, 0x80, 0x09, 0x02, 0x0d, 0x28, 0x00, 0x09, - 0x02, 0x0e, 0x28, 0x00, 0x00, + 0x00, 0x70, 0x00, 0x6d, 0x81, 0x00, 0x85, 0x34, 0x95, 0x15, 0x09, 0x01, 0x81, + 0x00, 0x85, 0x35, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x36, 0x95, 0x15, 0x09, 0x01, 0x81, + 0x00, 0x85, 0x37, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x3d, 0x95, 0x15, 0x09, 0x01, 0x81, + 0x00, 0x85, 0x3e, 0x95, 0x15, 0x09, 0x01, 0x81, 0x00, 0x85, 0x3f, 0x95, 0x15, 0x09, 0x01, 0x81, + 0x00, 0xc0, 0x09, 0x02, 0x07, 0x35, 0x08, 0x35, 0x06, 0x09, 0x04, 0x09, 0x09, 0x01, 0x00, 0x09, + 0x02, 0x08, 0x28, 0x00, 0x09, 0x02, 0x09, 0x28, 0x01, 0x09, 0x02, 0x0a, 0x28, 0x01, 0x09, 0x02, + 0x0b, 0x09, 0x01, 0x00, 0x09, 0x02, 0x0c, 0x09, 0x0c, 0x80, 0x09, 0x02, 0x0d, 0x28, 0x00, 0x09, + 0x02, 0x0e, 0x28, 0x00, 0x00, }; static u8 packet4_0x10001[] = { - 0x00, 0x60, 0x00, 0x5d, 0x36, 0x00, 0x5a, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x01, - 0x00, 0x01, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19, 0x12, 0x00, 0x09, 0x00, 0x04, 0x35, 0x0d, 0x35, - 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19, 0x00, 0x01, 0x09, 0x00, 0x05, 0x35, - 0x03, 0x19, 0x10, 0x02, 0x09, 0x00, 0x09, 0x35, 0x08, 0x35, 0x06, 0x19, 0x12, 0x00, 0x09, 0x01, - 0x00, 0x09, 0x02, 0x00, 0x09, 0x01, 0x00, 0x09, 0x02, 0x01, 0x09, 0x05, 0x7e, 0x09, 0x02, 0x02, - 0x09, 0x03, 0x06, 0x09, 0x02, 0x03, 0x09, 0x06, 0x00, 0x09, 0x02, 0x04, 0x28, 0x01, 0x09, 0x02, - 0x05, 0x09, 0x00, 0x02, 0x00, + 0x00, 0x60, 0x00, 0x5d, 0x36, 0x00, 0x5a, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x01, + 0x00, 0x01, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19, 0x12, 0x00, 0x09, 0x00, 0x04, 0x35, 0x0d, 0x35, + 0x06, 0x19, 0x01, 0x00, 0x09, 0x00, 0x01, 0x35, 0x03, 0x19, 0x00, 0x01, 0x09, 0x00, 0x05, 0x35, + 0x03, 0x19, 0x10, 0x02, 0x09, 0x00, 0x09, 0x35, 0x08, 0x35, 0x06, 0x19, 0x12, 0x00, 0x09, 0x01, + 0x00, 0x09, 0x02, 0x00, 0x09, 0x01, 0x00, 0x09, 0x02, 0x01, 0x09, 0x05, 0x7e, 0x09, 0x02, 0x02, + 0x09, 0x03, 0x06, 0x09, 0x02, 0x03, 0x09, 0x06, 0x00, 0x09, 0x02, 0x04, 0x28, 0x01, 0x09, 0x02, + 0x05, 0x09, 0x00, 0x02, 0x00, }; diff --git a/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.h b/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.h index a9350ec532..ac21d4cd48 100644 --- a/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.h +++ b/Source/Core/Core/Src/IPC_HLE/WiiMote_HID_Attr.h @@ -12,7 +12,7 @@ struct SAttrib u8* pData; u16 size; - SAttrib(u16 _ID, u8* _Data, u16 _size) + SAttrib(u16 _ID, u8* _Data, u16 _size) : ID(_ID) , pData(_Data) , size(_size) diff --git a/Source/Core/Core/Src/IPC_HLE/hci.h b/Source/Core/Core/Src/IPC_HLE/hci.h index b87e20fd84..8923f68fb4 100644 --- a/Source/Core/Core/Src/IPC_HLE/hci.h +++ b/Source/Core/Core/Src/IPC_HLE/hci.h @@ -2416,7 +2416,7 @@ struct SHCIEventStatus u8 EventType; u8 PayloadLength; u8 EventStatus; - u8 PacketIndicator; + u8 PacketIndicator; u16 Opcode; }; diff --git a/Source/Core/Core/Src/Movie.cpp b/Source/Core/Core/Src/Movie.cpp index 047b6d05d2..cc5b099ee0 100644 --- a/Source/Core/Core/Src/Movie.cpp +++ b/Source/Core/Core/Src/Movie.cpp @@ -81,7 +81,7 @@ void EnsureTmpInputSize(size_t bound) size_t newAlloc = DTM_BASE_LENGTH; while (newAlloc < bound) newAlloc *= 2; - + u8* newTmpInput = new u8[newAlloc]; tmpInputAllocated = newAlloc; if (tmpInput != NULL) @@ -111,14 +111,14 @@ std::string GetInputDisplay() for (int i = 0; i < 8; ++i) if ((g_numPads & (1 << i)) != 0) inputDisplay.append(g_InputDisplay[i]); - - return inputDisplay; + + return inputDisplay; } void FrameUpdate() { g_currentFrame++; - if(!g_bPolled) + if(!g_bPolled) g_currentLagCount++; if (IsRecordingInput()) @@ -131,7 +131,7 @@ void FrameUpdate() Core::SetState(Core::CORE_PAUSE); g_bFrameStep = false; } - + // ("framestop") the only purpose of this is to cause interpreter/jit Run() to return temporarily. // after that we set it back to CPU_RUNNING and continue as normal. if (g_bFrameStop) @@ -139,7 +139,7 @@ void FrameUpdate() if(g_framesToSkip) FrameSkipping(); - + g_bPolled = false; } @@ -203,10 +203,10 @@ void InputUpdate() void SetFrameSkipping(unsigned int framesToSkip) { std::lock_guard lk(cs_frameSkip); - + g_framesToSkip = framesToSkip; g_frameSkipCounter = 0; - + // Don't forget to re-enable rendering in case it wasn't... // as this won't be changed anymore when frameskip is turned off if (framesToSkip == 0) @@ -723,7 +723,7 @@ bool PlayInput(const char *filename) return false; g_recordfd.ReadArray(&tmpHeader, 1); - + if(tmpHeader.filetype[0] != 'D' || tmpHeader.filetype[1] != 'T' || tmpHeader.filetype[2] != 'M' || tmpHeader.filetype[3] != 0x1A) { PanicAlertT("Invalid recording file"); goto cleanup; @@ -738,7 +738,7 @@ bool PlayInput(const char *filename) g_currentInputCount = 0; g_playMode = MODE_PLAYING; - + g_totalBytes = g_recordfd.GetSize() - 256; EnsureTmpInputSize((size_t)g_totalBytes); g_recordfd.ReadArray(tmpInput, (size_t)g_totalBytes); @@ -849,7 +849,7 @@ void LoadInput(const char *filename) // this is a "you did something wrong" alert for the user's benefit. // we'll try to say what's going on in excruciating detail, otherwise the user might not believe us. if(IsUsingWiimote(0)) - { + { // TODO: more detail PanicAlertT("Warning: You loaded a save whose movie mismatches on byte %d (0x%X). You should load another save before continuing, or load this state with read-only mode off. Otherwise you'll probably get a desync.", i+256, i+256); memcpy(tmpInput, movInput, g_currentByte); @@ -942,7 +942,7 @@ void PlayController(SPADStatus *PadStatus, int controllerID) memcpy(&g_padState, &(tmpInput[g_currentByte]), 8); g_currentByte += 8; - + PadStatus->triggerLeft = g_padState.TriggerL; PadStatus->triggerRight = g_padState.TriggerR; @@ -953,7 +953,7 @@ void PlayController(SPADStatus *PadStatus, int controllerID) PadStatus->substickY = g_padState.CStickY; PadStatus->button |= PAD_USE_ORIGIN; - + if(g_padState.A) { PadStatus->button |= PAD_BUTTON_A; @@ -972,7 +972,7 @@ void PlayController(SPADStatus *PadStatus, int controllerID) PadStatus->button |= PAD_TRIGGER_Z; if(g_padState.Start) PadStatus->button |= PAD_BUTTON_START; - + if(g_padState.DPadUp) PadStatus->button |= PAD_BUTTON_UP; if(g_padState.DPadDown) @@ -981,7 +981,7 @@ void PlayController(SPADStatus *PadStatus, int controllerID) PadStatus->button |= PAD_BUTTON_LEFT; if(g_padState.DPadRight) PadStatus->button |= PAD_BUTTON_RIGHT; - + if(g_padState.L) PadStatus->button |= PAD_TRIGGER_L; if(g_padState.R) @@ -1053,19 +1053,19 @@ bool PlayWiimote(int wiimote, u8 *data, const WiimoteEmu::ReportFeatures& rptf, EndPlayInput(!g_bReadOnly); return false; } - + memcpy(data, &(tmpInput[g_currentByte]), size); g_currentByte += size; - + SetWiiInputDisplayString(wiimote, coreData, accelData, irData); g_currentInputCount++; - + CheckInputEnd(); return true; } -void EndPlayInput(bool cont) +void EndPlayInput(bool cont) { if (cont) { @@ -1092,12 +1092,12 @@ void SaveRecording(const char *filename) // Create the real header now and write it DTMHeader header; memset(&header, 0, sizeof(DTMHeader)); - + header.filetype[0] = 'D'; header.filetype[1] = 'T'; header.filetype[2] = 'M'; header.filetype[3] = 0x1A; strncpy((char *)header.gameID, Core::g_CoreStartupParameter.GetUniqueID().c_str(), 6); header.bWii = Core::g_CoreStartupParameter.bWii; header.numControllers = g_numPads & (Core::g_CoreStartupParameter.bWii ? 0xFF : 0x0F); - + header.bFromSaveState = g_bRecordingFromSaveState; header.frameCount = g_totalFrames; header.lagCount = g_totalLagCount; @@ -1131,7 +1131,7 @@ void SaveRecording(const char *filename) memcpy(header.revision, revision, ArraySize(header.revision)); // TODO - header.uniqueID = 0; + header.uniqueID = 0; // header.audioEmulator; save_record.WriteArray(&header, 1); @@ -1144,7 +1144,7 @@ void SaveRecording(const char *filename) stateFilename.append(".sav"); success = File::Copy(tmpStateFilename, stateFilename); } - + if (success) Core::DisplayMessage(StringFromFormat("DTM %s saved", filename).c_str(), 2000); else diff --git a/Source/Core/Core/Src/Movie.h b/Source/Core/Core/Src/Movie.h index 423393c7a4..fcfa935cf4 100644 --- a/Source/Core/Core/Src/Movie.h +++ b/Source/Core/Core/Src/Movie.h @@ -41,7 +41,7 @@ struct ControllerState { u8 TriggerL, TriggerR; // Triggers, 16 bits u8 AnalogStickX, AnalogStickY; // Main Stick, 16 bits u8 CStickX, CStickY; // Sub-Stick, 16 bits - + }; // Total: 60 + 4 = 64 bits per frame static_assert(sizeof(ControllerState) == 8, "ControllerState should be 8 bytes"); #pragma pack(pop) diff --git a/Source/Core/Core/Src/NetPlayServer.cpp b/Source/Core/Core/Src/NetPlayServer.cpp index 8cd6f08a9a..0049719a05 100644 --- a/Source/Core/Core/Src/NetPlayServer.cpp +++ b/Source/Core/Core/Src/NetPlayServer.cpp @@ -51,7 +51,7 @@ void NetPlayServer::ThreadFunc() sf::Packet spac; spac << (MessageId)NP_MSG_PING; spac << m_ping_key; - + std::lock_guard lks(m_crit.send); m_ping_timer.Start(); SendToClients(spac); @@ -217,7 +217,7 @@ unsigned int NetPlayServer::OnConnect(sf::SocketTCP& socket) UpdatePadMapping(); // sync pad mappings with everyone UpdateWiimoteMapping(); } - + // add client to selector/ used for receiving m_selector.Add(socket); @@ -255,7 +255,7 @@ unsigned int NetPlayServer::OnDisconnect(sf::SocketTCP& socket) spac << pid; m_selector.Remove(socket); - + std::lock_guard lkp(m_crit.players); m_players.erase(m_players.find(socket)); @@ -386,7 +386,7 @@ unsigned int NetPlayServer::OnData(sf::Packet& packet, sf::SocketTCP& socket) // then disconnect them. if (m_pad_map[map] != player.pid) return 1; - + // Relay to clients sf::Packet spac; spac << (MessageId)NP_MSG_PAD_DATA; diff --git a/Source/Core/Core/Src/PatchEngine.cpp b/Source/Core/Core/Src/PatchEngine.cpp index 6522f7c73e..f4386ade6d 100644 --- a/Source/Core/Core/Src/PatchEngine.cpp +++ b/Source/Core/Core/Src/PatchEngine.cpp @@ -35,7 +35,7 @@ using namespace Common; namespace PatchEngine { -const char *PatchTypeStrings[] = +const char *PatchTypeStrings[] = { "byte", "word", @@ -212,7 +212,7 @@ void ApplyPatches(const std::vector &patches) } } -void ApplyFramePatches() +void ApplyFramePatches() { ApplyPatches(onFrame); diff --git a/Source/Core/Core/Src/PowerPC/Gekko.h b/Source/Core/Core/Src/PowerPC/Gekko.h index f4da1f800d..d4e6f8e4cb 100644 --- a/Source/Core/Core/Src/PowerPC/Gekko.h +++ b/Source/Core/Core/Src/PowerPC/Gekko.h @@ -76,7 +76,7 @@ union UGeckoInstruction u32 OPCD_5 : 6; }; struct - { + { u32 LK_2 : 1; u32 AA_2 : 1; // Branch displacement, signed 14-bit (right-extended by 0b00) @@ -118,7 +118,7 @@ union UGeckoInstruction u32 OPCD_9 : 6; }; struct - { + { u32 UIMM_2 : 16; u32 RA_4 : 5; u32 L_3 : 1; @@ -193,7 +193,7 @@ union UGeckoInstruction }; // crxor - struct + struct { u32 : 11; // Source bit in the CR @@ -206,7 +206,7 @@ union UGeckoInstruction }; // mftb - struct + struct { u32 : 11; // Time base register @@ -214,7 +214,7 @@ union UGeckoInstruction u32 : 11; }; - struct + struct { u32 : 11; // Upper time base register @@ -224,7 +224,7 @@ union UGeckoInstruction u32 : 11; }; - struct + struct { u32 : 18; // Source field in the CR or FPSCR @@ -234,7 +234,7 @@ union UGeckoInstruction u32 : 6; }; - struct + struct { u32 : 12; // Field mask, identifies the CR fields to be updated by mtcrf @@ -244,7 +244,7 @@ union UGeckoInstruction u32 FD : 5; u32 : 6; }; - struct + struct { u32 : 6; // Source FPR @@ -266,7 +266,7 @@ union UGeckoInstruction }; // paired single quantized load/store - struct + struct { u32 : 7; // Graphics quantization register to use @@ -281,13 +281,13 @@ union UGeckoInstruction u32 : 16; }; - struct + struct { signed SIMM_12 : 12; u32 : 20; }; - struct + struct { u32 : 11; // Number of bytes to use in lswi/stswi (0 means 32 bytes) @@ -305,7 +305,7 @@ union UGeckoInstruction union UGQR { u32 Hex; - struct + struct { u32 ST_TYPE : 3; u32 : 5; @@ -338,7 +338,7 @@ union UFPR // XER union UReg_XER { - struct + struct { u32 BYTE_COUNT : 7; u32 : 22; @@ -542,7 +542,7 @@ union UReg_HID4 union UReg_SPR1 { u32 Hex; - struct + struct { u32 htaborg : 16; u32 : 7; @@ -634,7 +634,7 @@ union UReg_DMAL union UReg_BAT_Up { - struct + struct { u32 VP : 1; u32 VS : 1; @@ -650,7 +650,7 @@ union UReg_BAT_Up union UReg_BAT_Lo { - struct + struct { u32 PP : 2; u32 : 1; @@ -666,7 +666,7 @@ union UReg_BAT_Lo union UReg_PTE { - struct + struct { u64 API : 6; u64 H : 1; @@ -703,7 +703,7 @@ enum EQuantizeType }; // branches -enum +enum { BO_BRANCH_IF_CTR_0 = 2, // 3 BO_DONT_DECREMENT_FLAG = 4, // 2 diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h index cd46e7846b..dcb1a53b54 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter.h @@ -281,7 +281,7 @@ public: static void crxor(UGeckoInstruction _inst); static void mcrf(UGeckoInstruction _inst); static void rfi(UGeckoInstruction _inst); - static void rfid(UGeckoInstruction _inst); + static void rfid(UGeckoInstruction _inst); // static void sync(UGeckoInstruction _inst); static void isync(UGeckoInstruction _inst); diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Branch.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Branch.cpp index 123c870edf..5a3dc9e467 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Branch.cpp @@ -109,7 +109,7 @@ void Interpreter::rfi(UGeckoInstruction _inst) m_EndBlock = true; } -void Interpreter::rfid(UGeckoInstruction _inst) +void Interpreter::rfid(UGeckoInstruction _inst) { _dbg_assert_msg_(POWERPC, 0, "rfid instruction unimplemented (does this instruction even exist?)"); m_EndBlock = true; diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FPUtils.h b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FPUtils.h index 5509679ebc..d379bf7049 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FPUtils.h +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FPUtils.h @@ -115,7 +115,7 @@ inline double NI_mul(const double a, const double b) } inline double NI_add(const double a, const double b) -{ +{ #ifdef VERY_ACCURATE_FP if (a != a) return a; if (b != b) return b; @@ -132,7 +132,7 @@ inline double NI_add(const double a, const double b) } inline double NI_sub(const double a, const double b) -{ +{ #ifdef VERY_ACCURATE_FP if (a != a) return a; if (b != b) return b; @@ -224,7 +224,7 @@ inline u32 ConvertToSingle(u64 x) } } -// used by psq_stXX operations. +// used by psq_stXX operations. inline u32 ConvertToSingleFTZ(u64 x) { u32 exp = (x >> 52) & 0x7ff; diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp index e1511c7997..daa02c20a1 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp @@ -40,8 +40,8 @@ void Interpreter::fcmpo(UGeckoInstruction _inst) int compareResult; - if (fa < fb) compareResult = 8; - else if (fa > fb) compareResult = 4; + if (fa < fb) compareResult = 8; + else if (fa > fb) compareResult = 4; else if (fa == fb) compareResult = 2; else { @@ -71,12 +71,12 @@ void Interpreter::fcmpu(UGeckoInstruction _inst) int compareResult; - if (fa < fb) compareResult = 8; - else if (fa > fb) compareResult = 4; + if (fa < fb) compareResult = 8; + else if (fa > fb) compareResult = 4; else if (fa == fb) compareResult = 2; else - { - compareResult = 1; + { + compareResult = 1; if (IsSNAN(fa) || IsSNAN(fb)) { SetFPException(FPSCR_VXSNAN); @@ -98,7 +98,7 @@ void Interpreter::fctiwx(UGeckoInstruction _inst) FPSCR.FI = 0; FPSCR.FR = 0; } - else if (b < -(double)0x80000000) + else if (b < -(double)0x80000000) { value = 0x80000000; SetFPException(FPSCR_VXCVI); @@ -141,7 +141,7 @@ void Interpreter::fctiwx(UGeckoInstruction _inst) SetFI(1); FPSCR.FR = fabs(di) > fabs(b); } - } + } // based on HW tests // FPRF is not affected riPS0(_inst.FD) = 0xfff8000000000000ull | value; @@ -190,7 +190,7 @@ void Interpreter::fctiwzx(UGeckoInstruction _inst) // FPRF is not affected riPS0(_inst.FD) = 0xfff8000000000000ull | value; if (value == 0 && ( (*(u64*)&b) & DOUBLE_SIGN )) - riPS0(_inst.FD) |= 0x100000000ull; + riPS0(_inst.FD) |= 0x100000000ull; if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } @@ -199,7 +199,7 @@ void Interpreter::fmrx(UGeckoInstruction _inst) { riPS0(_inst.FD) = riPS0(_inst.FB); // This is a binary instruction. Does not alter FPSCR - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fabsx(UGeckoInstruction _inst) @@ -213,7 +213,7 @@ void Interpreter::fnabsx(UGeckoInstruction _inst) { riPS0(_inst.FD) = riPS0(_inst.FB) | (1ULL << 63); // This is a binary instruction. Does not alter FPSCR - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fnegx(UGeckoInstruction _inst) @@ -251,7 +251,7 @@ void Interpreter::fmulx(UGeckoInstruction _inst) FPSCR.FI = 0; // are these flags important? FPSCR.FR = 0; UpdateFPRF(rPS0(_inst.FD)); - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fmulsx(UGeckoInstruction _inst) { @@ -293,7 +293,7 @@ void Interpreter::faddsx(UGeckoInstruction _inst) { rPS0(_inst.FD) = rPS1(_inst.FD) = ForceSingle(NI_add(rPS0(_inst.FA), rPS0(_inst.FB))); UpdateFPRF(rPS0(_inst.FD)); - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fdivx(UGeckoInstruction _inst) @@ -305,7 +305,7 @@ void Interpreter::fdivx(UGeckoInstruction _inst) else { rPS0(_inst.FD) = ForceDouble(a / b); - if (b == 0.0) + if (b == 0.0) { if (a == 0.0) { @@ -366,7 +366,7 @@ void Interpreter::fresx(UGeckoInstruction _inst) double b = rPS0(_inst.FB); double one_over = ForceSingle(1.0 / b); // this is based on the real hardware tests - if (b != 0.0 && IsINF(one_over)) + if (b != 0.0 && IsINF(one_over)) { if (one_over > 0) riPS0(_inst.FD) = riPS1(_inst.FD) = MAX_SINGLE; @@ -388,7 +388,7 @@ void Interpreter::fresx(UGeckoInstruction _inst) void Interpreter::frsqrtex(UGeckoInstruction _inst) { double b = rPS0(_inst.FB); - if (b < 0.0) + if (b < 0.0) { SetFPException(FPSCR_VXSQRT); rPS0(_inst.FD) = PPC_NAN; @@ -432,7 +432,7 @@ void Interpreter::fmsubx(UGeckoInstruction _inst) { rPS0(_inst.FD) = ForceDouble(NI_msub( rPS0(_inst.FA), rPS0(_inst.FC), rPS0(_inst.FB) )); UpdateFPRF(rPS0(_inst.FD)); - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fmsubsx(UGeckoInstruction _inst) @@ -440,7 +440,7 @@ void Interpreter::fmsubsx(UGeckoInstruction _inst) rPS0(_inst.FD) = rPS1(_inst.FD) = ForceSingle( NI_msub(rPS0(_inst.FA), rPS0(_inst.FC), rPS0(_inst.FB) )); UpdateFPRF(rPS0(_inst.FD)); - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fnmaddx(UGeckoInstruction _inst) @@ -451,10 +451,10 @@ void Interpreter::fnmaddx(UGeckoInstruction _inst) } void Interpreter::fnmaddsx(UGeckoInstruction _inst) { - rPS0(_inst.FD) = rPS1(_inst.FD) = + rPS0(_inst.FD) = rPS1(_inst.FD) = ForceSingle(-NI_madd(rPS0(_inst.FA), rPS0(_inst.FC), rPS0(_inst.FB))); UpdateFPRF(rPS0(_inst.FD)); - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fnmsubx(UGeckoInstruction _inst) @@ -470,7 +470,7 @@ void Interpreter::fnmsubsx(UGeckoInstruction _inst) rPS0(_inst.FD) = rPS1(_inst.FD) = ForceSingle(-NI_msub(rPS0(_inst.FA), rPS0(_inst.FC), rPS0(_inst.FB))); UpdateFPRF(rPS0(_inst.FD)); - if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); + if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::fsubx(UGeckoInstruction _inst) diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp index f25d3431ca..d09d9bf724 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Integer.cpp @@ -46,7 +46,7 @@ u32 Interpreter::Helper_Mask(int mb, int me) //do the bitflip u32 mask = begin ^ end; //and invert if backwards - if (me < mb) + if (me < mb) return ~mask; else return mask; @@ -64,7 +64,7 @@ void Interpreter::addic(UGeckoInstruction _inst) { u32 a = m_GPR[_inst.RA]; u32 imm = (u32)(s32)_inst.SIMM_16; - // TODO(ector): verify this thing + // TODO(ector): verify this thing m_GPR[_inst.RD] = a + imm; SetCarry(Helper_Carry(a, imm)); } @@ -135,7 +135,7 @@ void Interpreter::subfic(UGeckoInstruction _inst) // #define CALC_XER_CA(X,Y) (((X) + (Y) < X) ? SET_XER_CA : CLEAR_XER_CA) if ((rra + immediate) < rra) SetCarry(1); - else + else SetCarry(0); m_GPR[_inst.RD] = rra - immediate; @@ -146,7 +146,7 @@ void Interpreter::subfic(UGeckoInstruction _inst) SetCarry((m_GPR[_inst.RA] == 0) || (Helper_Carry(0-m_GPR[_inst.RA], immediate))); } -void Interpreter::twi(UGeckoInstruction _inst) +void Interpreter::twi(UGeckoInstruction _inst) { s32 a = m_GPR[_inst.RA]; s32 b = _inst.SIMM_16; @@ -216,8 +216,8 @@ void Interpreter::cmp(UGeckoInstruction _inst) { s32 a = (s32)m_GPR[_inst.RA]; s32 b = (s32)m_GPR[_inst.RB]; - int fTemp = 0x8; // a < b - // if (a < b) fTemp = 0x8; else + int fTemp = 0x8; // a < b + // if (a < b) fTemp = 0x8; else if (a > b) fTemp = 0x4; else if (a == b) fTemp = 0x2; if (GetXER_SO()) PanicAlert("cmp getting overflow flag"); // fTemp |= 0x1 @@ -230,7 +230,7 @@ void Interpreter::cmpl(UGeckoInstruction _inst) u32 b = m_GPR[_inst.RB]; u32 fTemp = 0x8; // a < b - // if (a < b) fTemp = 0x8;else + // if (a < b) fTemp = 0x8;else if (a > b) fTemp = 0x4; else if (a == b) fTemp = 0x2; if (GetXER_SO()) PanicAlert("cmpl getting overflow flag"); // fTemp |= 0x1; @@ -243,7 +243,7 @@ void Interpreter::cntlzwx(UGeckoInstruction _inst) u32 mask = 0x80000000; int i = 0; for (; i < 32; i++, mask >>= 1) - if (val & mask) + if (val & mask) break; m_GPR[_inst.RA] = i; if (_inst.Rc) Helper_UpdateCR0(m_GPR[_inst.RA]); @@ -374,7 +374,7 @@ void Interpreter::srwx(UGeckoInstruction _inst) if (_inst.Rc) Helper_UpdateCR0(m_GPR[_inst.RA]); } -void Interpreter::tw(UGeckoInstruction _inst) +void Interpreter::tw(UGeckoInstruction _inst) { s32 a = m_GPR[_inst.RA]; s32 b = m_GPR[_inst.RB]; diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp index d6adca6f38..3fb441f5b9 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStore.cpp @@ -214,7 +214,7 @@ void Interpreter::stmw(UGeckoInstruction _inst) } void Interpreter::lwz(UGeckoInstruction _inst) -{ +{ u32 uAddress = Helper_Get_EA(_inst); u32 temp = Memory::Read_U32(uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) @@ -289,8 +289,8 @@ void Interpreter::stfs(UGeckoInstruction _inst) } void Interpreter::stfsu(UGeckoInstruction _inst) -{ - u32 uAddress = Helper_Get_EA_U(_inst); +{ + u32 uAddress = Helper_Get_EA_U(_inst); Memory::Write_U32(ConvertToSingle(riPS0(_inst.FS)), uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { @@ -340,7 +340,7 @@ void Interpreter::dcbf(UGeckoInstruction _inst) /* u32 tmp1 = Memory::Read_U32(PC+4); u32 tmp2 = Memory::Read_U32(PC+8); - if ((tmp1 == 0x38630020) && + if ((tmp1 == 0x38630020) && (tmp2 == 0x4200fff8)) { NPC = PC + 12; @@ -424,7 +424,7 @@ void Interpreter::ecowx(UGeckoInstruction _inst) } if (EA & 3) Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_ALIGNMENT); - + // _assert_msg_(POWERPC,0,"ecowx - send stw request (%08x@%08x) to device %02x", // m_GPR[_inst.RS], EA, PowerPC::ppcState.spr[SPR_EAR] & 0x1f); @@ -441,7 +441,7 @@ void Interpreter::eieio(UGeckoInstruction _inst) void Interpreter::icbi(UGeckoInstruction _inst) { - u32 address = Helper_Get_EA_X(_inst); + u32 address = Helper_Get_EA_X(_inst); PowerPC::ppcState.iCache.Invalidate(address); } @@ -491,7 +491,7 @@ void Interpreter::lhbrx(UGeckoInstruction _inst) if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { m_GPR[_inst.RD] = temp; - } + } } void Interpreter::lhzux(UGeckoInstruction _inst) @@ -623,8 +623,8 @@ void Interpreter::stfiwx(UGeckoInstruction _inst) void Interpreter::stfsux(UGeckoInstruction _inst) -{ - u32 uAddress = Helper_Get_EA_UX(_inst); +{ + u32 uAddress = Helper_Get_EA_UX(_inst); Memory::Write_U32(ConvertToSingle(riPS0(_inst.FS)), uAddress); if (!(PowerPC::ppcState.Exceptions & EXCEPTION_DSI)) { @@ -633,7 +633,7 @@ void Interpreter::stfsux(UGeckoInstruction _inst) } void Interpreter::stfsx(UGeckoInstruction _inst) -{ +{ Memory::Write_U32(ConvertToSingle(riPS0(_inst.FS)), Helper_Get_EA_X(_inst)); } @@ -833,7 +833,7 @@ void Interpreter::tlbia(UGeckoInstruction _inst) { // Gekko does not support this instructions. PanicAlert("The GC CPU does not support tlbia"); - // invalid the whole TLB + // invalid the whole TLB //MessageBox(0,"TLBIA","TLBIA",0); } diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStorePaired.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStorePaired.cpp index e3364cc1b6..c90598772c 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStorePaired.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_LoadStorePaired.cpp @@ -24,7 +24,7 @@ const float m_dequantizeTable[] = (1 << 12), (1 << 11), (1 << 10), (1 << 9), (1 << 8), (1 << 7), (1 << 6), (1 << 5), (1 << 4), (1 << 3), (1 << 2), (1 << 1), -}; +}; // quantize table const float m_quantizeTable[] = @@ -45,7 +45,7 @@ const float m_quantizeTable[] = 1.0 / (1 << 12), 1.0 / (1 << 11), 1.0 / (1 << 10), 1.0 / (1 << 9), 1.0 / (1 << 8), 1.0 / (1 << 7), 1.0 / (1 << 6), 1.0 / (1 << 5), 1.0 / (1 << 4), 1.0 / (1 << 3), 1.0 / (1 << 2), 1.0 / (1 << 1), -}; +}; template inline T CLAMP(T a, T bottom, T top) { @@ -54,12 +54,12 @@ inline T CLAMP(T a, T bottom, T top) { return a; } -void Interpreter::Helper_Quantize(const u32 _Addr, const double _fValue, +void Interpreter::Helper_Quantize(const u32 _Addr, const double _fValue, const EQuantizeType _quantizeType, const unsigned int _uScale) { - switch (_quantizeType) + switch (_quantizeType) { - case QUANTIZE_FLOAT: + case QUANTIZE_FLOAT: Memory::Write_U32( ConvertToSingleFTZ( *(u64*)&_fValue ), _Addr ); break; @@ -67,28 +67,28 @@ void Interpreter::Helper_Quantize(const u32 _Addr, const double _fValue, case QUANTIZE_U8: { float fResult = CLAMP((float)_fValue * m_quantizeTable[_uScale], 0.0f, 255.0f); - Memory::Write_U8((u8)fResult, _Addr); + Memory::Write_U8((u8)fResult, _Addr); } break; case QUANTIZE_U16: { float fResult = CLAMP((float)_fValue * m_quantizeTable[_uScale], 0.0f, 65535.0f); - Memory::Write_U16((u16)fResult, _Addr); + Memory::Write_U16((u16)fResult, _Addr); } break; case QUANTIZE_S8: { float fResult = CLAMP((float)_fValue * m_quantizeTable[_uScale], -128.0f, 127.0f); - Memory::Write_U8((u8)(s8)fResult, _Addr); + Memory::Write_U8((u8)(s8)fResult, _Addr); } break; case QUANTIZE_S16: { float fResult = CLAMP((float)_fValue * m_quantizeTable[_uScale], -32768.0f, 32767.0f); - Memory::Write_U16((u16)(s16)fResult, _Addr); + Memory::Write_U16((u16)(s16)fResult, _Addr); } break; @@ -98,7 +98,7 @@ void Interpreter::Helper_Quantize(const u32 _Addr, const double _fValue, } } -float Interpreter::Helper_Dequantize(const u32 _Addr, const EQuantizeType _quantizeType, +float Interpreter::Helper_Dequantize(const u32 _Addr, const EQuantizeType _quantizeType, const unsigned int _uScale) { // dequantize the value @@ -113,15 +113,15 @@ float Interpreter::Helper_Dequantize(const u32 _Addr, const EQuantizeType _quant break; case QUANTIZE_U8: - fResult = static_cast(Memory::Read_U8(_Addr)) * m_dequantizeTable[_uScale]; + fResult = static_cast(Memory::Read_U8(_Addr)) * m_dequantizeTable[_uScale]; break; case QUANTIZE_U16: - fResult = static_cast(Memory::Read_U16(_Addr)) * m_dequantizeTable[_uScale]; + fResult = static_cast(Memory::Read_U16(_Addr)) * m_dequantizeTable[_uScale]; break; case QUANTIZE_S8: - fResult = static_cast((s8)Memory::Read_U8(_Addr)) * m_dequantizeTable[_uScale]; + fResult = static_cast((s8)Memory::Read_U8(_Addr)) * m_dequantizeTable[_uScale]; break; // used for THP player @@ -137,7 +137,7 @@ float Interpreter::Helper_Dequantize(const u32 _Addr, const EQuantizeType _quant return fResult; } -void Interpreter::psq_l(UGeckoInstruction _inst) +void Interpreter::psq_l(UGeckoInstruction _inst) { const UGQR gqr(rSPR(SPR_GQR0 + _inst.I)); const EQuantizeType ldType = static_cast(gqr.LD_TYPE); diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Paired.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Paired.cpp index ebf19c8cd4..991ae89b6e 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Paired.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Paired.cpp @@ -34,15 +34,15 @@ void Interpreter::ps_mr(UGeckoInstruction _inst) void Interpreter::ps_nabs(UGeckoInstruction _inst) { - riPS0(_inst.FD) = riPS0(_inst.FB) | (1ULL << 63); - riPS1(_inst.FD) = riPS1(_inst.FB) | (1ULL << 63); + riPS0(_inst.FD) = riPS0(_inst.FB) | (1ULL << 63); + riPS1(_inst.FD) = riPS1(_inst.FB) | (1ULL << 63); if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } void Interpreter::ps_abs(UGeckoInstruction _inst) { - riPS0(_inst.FD) = riPS0(_inst.FB) &~ (1ULL << 63); - riPS1(_inst.FD) = riPS1(_inst.FB) &~ (1ULL << 63); + riPS0(_inst.FD) = riPS0(_inst.FB) &~ (1ULL << 63); + riPS1(_inst.FD) = riPS1(_inst.FB) &~ (1ULL << 63); if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } @@ -85,7 +85,7 @@ void Interpreter::ps_merge11(UGeckoInstruction _inst) // From here on, the real deal. void Interpreter::ps_div(UGeckoInstruction _inst) -{ +{ u32 ex_mask = 0; // PS0 @@ -164,7 +164,7 @@ void Interpreter::ps_div(UGeckoInstruction _inst) } } - SetFPException(ex_mask); + SetFPException(ex_mask); UpdateFPRF(rPS0(_inst.FD)); if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD)); } @@ -358,29 +358,8 @@ void Interpreter::ps_cmpu0(UGeckoInstruction _inst) double fb = rPS0(_inst.FB); int compareResult; - if (fa < fb) compareResult = 8; - else if (fa > fb) compareResult = 4; - else if (fa == fb) compareResult = 2; - else - { - compareResult = 1; - if (IsSNAN(fa) || IsSNAN(fb)) - { - SetFPException(FPSCR_VXSNAN); - } - } - FPSCR.FPRF = compareResult; - SetCRField(_inst.CRFD, compareResult); -} - -void Interpreter::ps_cmpo0(UGeckoInstruction _inst) -{ - double fa = rPS0(_inst.FA); - double fb = rPS0(_inst.FB); - int compareResult; - - if (fa < fb) compareResult = 8; - else if (fa > fb) compareResult = 4; + if (fa < fb) compareResult = 8; + else if (fa > fb) compareResult = 4; else if (fa == fb) compareResult = 2; else { @@ -388,17 +367,38 @@ void Interpreter::ps_cmpo0(UGeckoInstruction _inst) if (IsSNAN(fa) || IsSNAN(fb)) { SetFPException(FPSCR_VXSNAN); - if (!FPSCR.VE) + } + } + FPSCR.FPRF = compareResult; + SetCRField(_inst.CRFD, compareResult); +} + +void Interpreter::ps_cmpo0(UGeckoInstruction _inst) +{ + double fa = rPS0(_inst.FA); + double fb = rPS0(_inst.FB); + int compareResult; + + if (fa < fb) compareResult = 8; + else if (fa > fb) compareResult = 4; + else if (fa == fb) compareResult = 2; + else + { + compareResult = 1; + if (IsSNAN(fa) || IsSNAN(fb)) + { + SetFPException(FPSCR_VXSNAN); + if (!FPSCR.VE) SetFPException(FPSCR_VXVC); } - else + else { //if (IsQNAN(fa) || IsQNAN(fb)) // this is always true SetFPException(FPSCR_VXVC); } } FPSCR.FPRF = compareResult; - SetCRField(_inst.CRFD, compareResult); + SetCRField(_inst.CRFD, compareResult); } void Interpreter::ps_cmpu1(UGeckoInstruction _inst) @@ -407,29 +407,8 @@ void Interpreter::ps_cmpu1(UGeckoInstruction _inst) double fb = rPS1(_inst.FB); int compareResult; - if (fa < fb) compareResult = 8; - else if (fa > fb) compareResult = 4; - else if (fa == fb) compareResult = 2; - else - { - compareResult = 1; - if (IsSNAN(fa) || IsSNAN(fb)) - { - SetFPException(FPSCR_VXSNAN); - } - } - FPSCR.FPRF = compareResult; - SetCRField(_inst.CRFD, compareResult); -} - -void Interpreter::ps_cmpo1(UGeckoInstruction _inst) -{ - double fa = rPS1(_inst.FA); - double fb = rPS1(_inst.FB); - int compareResult; - - if (fa < fb) compareResult = 8; - else if (fa > fb) compareResult = 4; + if (fa < fb) compareResult = 8; + else if (fa > fb) compareResult = 4; else if (fa == fb) compareResult = 2; else { @@ -437,17 +416,38 @@ void Interpreter::ps_cmpo1(UGeckoInstruction _inst) if (IsSNAN(fa) || IsSNAN(fb)) { SetFPException(FPSCR_VXSNAN); - if (!FPSCR.VE) + } + } + FPSCR.FPRF = compareResult; + SetCRField(_inst.CRFD, compareResult); +} + +void Interpreter::ps_cmpo1(UGeckoInstruction _inst) +{ + double fa = rPS1(_inst.FA); + double fb = rPS1(_inst.FB); + int compareResult; + + if (fa < fb) compareResult = 8; + else if (fa > fb) compareResult = 4; + else if (fa == fb) compareResult = 2; + else + { + compareResult = 1; + if (IsSNAN(fa) || IsSNAN(fb)) + { + SetFPException(FPSCR_VXSNAN); + if (!FPSCR.VE) SetFPException(FPSCR_VXVC); } - else + else { //if (IsQNAN(fa) || IsQNAN(fb)) // this is always true SetFPException(FPSCR_VXVC); } } FPSCR.FPRF = compareResult; - SetCRField(_inst.CRFD, compareResult); + SetCRField(_inst.CRFD, compareResult); } // __________________________________________________________________________________________________ diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_SystemRegisters.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_SystemRegisters.cpp index 5f05d9b3b3..688d166608 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_SystemRegisters.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_SystemRegisters.cpp @@ -40,7 +40,7 @@ static void FPSCRtoFPUSettings(UReg_FPSCR fp) { FPURoundMode::SetRoundMode(fp.RN); - + if (fp.VE || fp.OE || fp.UE || fp.ZE || fp.XE) { //PanicAlert("FPSCR - exceptions enabled. Please report. VE=%i OE=%i UE=%i ZE=%i XE=%i", @@ -80,7 +80,7 @@ void Interpreter::mtfsb1x(UGeckoInstruction _inst) SetFPException(b); else FPSCR.Hex |= b; - FPSCRtoFPUSettings(FPSCR); + FPSCRtoFPUSettings(FPSCR); if (_inst.Rc) PanicAlert("mtfsb1x: inst_.Rc"); } @@ -124,7 +124,7 @@ void Interpreter::mtfsfx(UGeckoInstruction _inst) void Interpreter::mcrxr(UGeckoInstruction _inst) { // USES_XER - SetCRField(_inst.CRFD, PowerPC::ppcState.spr[SPR_XER] >> 28); + SetCRField(_inst.CRFD, PowerPC::ppcState.spr[SPR_XER] >> 28); PowerPC::ppcState.spr[SPR_XER] &= ~0xF0000000; // clear 0-3 } @@ -218,7 +218,7 @@ void Interpreter::mfspr(UGeckoInstruction _inst) //XER LR CTR are the only ones available in user mode, time base can be read too. //Gamecube games always run in superuser mode, but hey.... - switch (iIndex) + switch (iIndex) { case SPR_DEC: if ((rSPR(iIndex) & 0x80000000) == 0) // We are still decrementing @@ -241,7 +241,7 @@ void Interpreter::mfspr(UGeckoInstruction _inst) rSPR(iIndex) |= 1; // BNE = buffer not empty else rSPR(iIndex) &= ~1; - } + } break; } m_GPR[_inst.RD] = rSPR(iIndex); @@ -343,13 +343,13 @@ void Interpreter::mtspr(UGeckoInstruction _inst) case SPR_DMAL: // Locked cache<->Memory DMA // Total fake, we ignore that DMAs take time. - if (DMAL.DMA_T) + if (DMAL.DMA_T) { u32 dwMemAddress = DMAU.MEM_ADDR << 5; u32 dwCacheAddress = DMAL.LC_ADDR << 5; u32 iLength = ((DMAU.DMA_LEN_U << 2) | DMAL.DMA_LEN_L); // INFO_LOG(POWERPC, "DMA: mem = %x, cache = %x, len = %u, LD = %d, PC=%x", dwMemAddress, dwCacheAddress, iLength, (int)DMAL.DMA_LD, PC); - if (iLength == 0) + if (iLength == 0) iLength = 128; if (DMAL.DMA_LD) Memory::DMA_MemoryToLC(dwCacheAddress, dwMemAddress, iLength); @@ -465,7 +465,7 @@ void Interpreter::mcrfs(UGeckoInstruction _inst) FPSCR.VXCVI = 0; break; } - SetCRField(_inst.CRFD, fpflags); + SetCRField(_inst.CRFD, fpflags); } void Interpreter::mffsx(UGeckoInstruction _inst) diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp index f403330276..882b9d01da 100644 --- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp +++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_Tables.cpp @@ -13,7 +13,7 @@ struct GekkoOPTemplate GekkoOPInfo opinfo; }; -static GekkoOPTemplate primarytable[] = +static GekkoOPTemplate primarytable[] = { {4, Interpreter::RunTable4, {"RunTable4", OPTYPE_SUBTABLE | (4<<24), 0, 0, 0, 0, 0}}, {19, Interpreter::RunTable19, {"RunTable19", OPTYPE_SUBTABLE | (19<<24), 0, 0, 0, 0, 0}}, @@ -95,7 +95,7 @@ static GekkoOPTemplate primarytable[] = {58, Interpreter::unknown_instruction, {"unknown_instruction", OPTYPE_UNKNOWN, 0, 0, 0, 0, 0}}, }; -static GekkoOPTemplate table4[] = +static GekkoOPTemplate table4[] = { //SUBOP10 {0, Interpreter::ps_cmpu0, {"ps_cmpu0", OPTYPE_PS, FL_SET_CRn | FL_USE_FPU, 0, 0, 0, 0}}, {32, Interpreter::ps_cmpo0, {"ps_cmpo0", OPTYPE_PS, FL_SET_CRn | FL_USE_FPU, 0, 0, 0, 0}}, @@ -111,9 +111,9 @@ static GekkoOPTemplate table4[] = {624, Interpreter::ps_merge11, {"ps_merge11", OPTYPE_PS, FL_RC_BIT | FL_USE_FPU, 0, 0, 0, 0}}, {1014, Interpreter::dcbz_l, {"dcbz_l", OPTYPE_SYSTEM, 0, 0, 0, 0, 0}}, -}; +}; -static GekkoOPTemplate table4_2[] = +static GekkoOPTemplate table4_2[] = { {10, Interpreter::ps_sum0, {"ps_sum0", OPTYPE_PS, FL_USE_FPU, 0, 0, 0, 0}}, {11, Interpreter::ps_sum1, {"ps_sum1", OPTYPE_PS, FL_USE_FPU, 0, 0, 0, 0}}, @@ -135,15 +135,15 @@ static GekkoOPTemplate table4_2[] = }; -static GekkoOPTemplate table4_3[] = +static GekkoOPTemplate table4_3[] = { {6, Interpreter::psq_lx, {"psq_lx", OPTYPE_PS, FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, {7, Interpreter::psq_stx, {"psq_stx", OPTYPE_PS, FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, {38, Interpreter::psq_lux, {"psq_lux", OPTYPE_PS, FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, - {39, Interpreter::psq_stux, {"psq_stux", OPTYPE_PS, FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, + {39, Interpreter::psq_stux, {"psq_stux", OPTYPE_PS, FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, }; -static GekkoOPTemplate table19[] = +static GekkoOPTemplate table19[] = { {528, Interpreter::bcctrx, {"bcctrx", OPTYPE_BRANCH, FL_ENDBLOCK, 0, 0, 0, 0}}, {16, Interpreter::bclrx, {"bclrx", OPTYPE_BRANCH, FL_ENDBLOCK, 0, 0, 0, 0}}, @@ -155,16 +155,16 @@ static GekkoOPTemplate table19[] = {449, Interpreter::cror, {"cror", OPTYPE_CR, FL_EVIL, 0, 0, 0, 0}}, {417, Interpreter::crorc, {"crorc", OPTYPE_CR, FL_EVIL, 0, 0, 0, 0}}, {193, Interpreter::crxor, {"crxor", OPTYPE_CR, FL_EVIL, 0, 0, 0, 0}}, - + {150, Interpreter::isync, {"isync", OPTYPE_ICACHE, FL_EVIL, 0, 0, 0, 0}}, {0, Interpreter::mcrf, {"mcrf", OPTYPE_SYSTEM, FL_EVIL, 0, 0, 0, 0}}, - + {50, Interpreter::rfi, {"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1, 0, 0, 0}}, {18, Interpreter::rfid, {"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 0, 0, 0, 0}} }; -static GekkoOPTemplate table31[] = +static GekkoOPTemplate table31[] = { {28, Interpreter::andx, {"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT, 0, 0, 0, 0}}, {60, Interpreter::andcx, {"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT, 0, 0, 0, 0}}, @@ -191,7 +191,7 @@ static GekkoOPTemplate table31[] = {470, Interpreter::dcbi, {"dcbi", OPTYPE_DCACHE, 0, 4, 0, 0, 0}}, {758, Interpreter::dcba, {"dcba", OPTYPE_DCACHE, 0, 4, 0, 0, 0}}, {1014, Interpreter::dcbz, {"dcbz", OPTYPE_DCACHE, FL_LOADSTORE, 4, 0, 0, 0}}, - + //load word {23, Interpreter::lwzx, {"lwzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B | FL_LOADSTORE, 0, 0, 0, 0}}, {55, Interpreter::lwzux, {"lwzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B | FL_LOADSTORE, 0, 0, 0, 0}}, @@ -207,7 +207,7 @@ static GekkoOPTemplate table31[] = //load byte {87, Interpreter::lbzx, {"lbzx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B | FL_LOADSTORE, 0, 0, 0, 0}}, {119, Interpreter::lbzux, {"lbzux", OPTYPE_LOAD, FL_OUT_D | FL_OUT_A | FL_IN_A | FL_IN_B | FL_LOADSTORE, 0, 0, 0, 0}}, - + //load byte reverse {534, Interpreter::lwbrx, {"lwbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B | FL_LOADSTORE, 0, 0, 0, 0}}, {790, Interpreter::lhbrx, {"lhbrx", OPTYPE_LOAD, FL_OUT_D | FL_IN_A0 | FL_IN_B | FL_LOADSTORE, 0, 0, 0, 0}}, @@ -239,7 +239,7 @@ static GekkoOPTemplate table31[] = {661, Interpreter::stswx, {"stswx", OPTYPE_STORE, FL_EVIL | FL_LOADSTORE, 0, 0, 0, 0}}, {725, Interpreter::stswi, {"stswi", OPTYPE_STORE, FL_EVIL | FL_LOADSTORE, 0, 0, 0, 0}}, - // fp load/store + // fp load/store {535, Interpreter::lfsx, {"lfsx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B | FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, {567, Interpreter::lfsux, {"lfsux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B | FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, {599, Interpreter::lfdx, {"lfdx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B | FL_USE_FPU | FL_LOADSTORE, 0, 0, 0, 0}}, @@ -277,8 +277,8 @@ static GekkoOPTemplate table31[] = {566, Interpreter::tlbsync, {"tlbsync", OPTYPE_SYSTEM, 0, 0, 0, 0, 0}}, }; -static GekkoOPTemplate table31_2[] = -{ +static GekkoOPTemplate table31_2[] = +{ {266, Interpreter::addx, {"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 0, 0, 0, 0}}, {778, Interpreter::addx, {"addox", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT, 0, 0, 0, 0}}, {10, Interpreter::addcx, {"addcx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT, 0, 0, 0, 0}}, @@ -305,19 +305,19 @@ static GekkoOPTemplate table31_2[] = {200, Interpreter::subfzex, {"subfzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT, 0, 0, 0, 0}}, }; -static GekkoOPTemplate table59[] = +static GekkoOPTemplate table59[] = { {18, Interpreter::fdivsx, {"fdivsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 16, 0, 0, 0}}, // TODO - {20, Interpreter::fsubsx, {"fsubsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, - {21, Interpreter::faddsx, {"faddsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {20, Interpreter::fsubsx, {"fsubsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {21, Interpreter::faddsx, {"faddsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, // {22, Interpreter::fsqrtsx, {"fsqrtsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, // Not implemented on gekko - {24, Interpreter::fresx, {"fresx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, - {25, Interpreter::fmulsx, {"fmulsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, - {28, Interpreter::fmsubsx, {"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, - {29, Interpreter::fmaddsx, {"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, - {30, Interpreter::fnmsubsx, {"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, - {31, Interpreter::fnmaddsx, {"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, -}; + {24, Interpreter::fresx, {"fresx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {25, Interpreter::fmulsx, {"fmulsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {28, Interpreter::fmsubsx, {"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {29, Interpreter::fmaddsx, {"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {30, Interpreter::fnmsubsx, {"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, + {31, Interpreter::fnmaddsx, {"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, +}; static GekkoOPTemplate table63[] = { @@ -339,7 +339,7 @@ static GekkoOPTemplate table63[] = {711, Interpreter::mtfsfx, {"mtfsfx", OPTYPE_SYSTEMFP, FL_USE_FPU, 2, 0, 0, 0}}, }; -static GekkoOPTemplate table63_2[] = +static GekkoOPTemplate table63_2[] = { {18, Interpreter::fdivx, {"fdivx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 30, 0, 0, 0}}, {20, Interpreter::fsubx, {"fsubx", OPTYPE_FPU, FL_RC_BIT_F | FL_USE_FPU, 0, 0, 0, 0}}, @@ -364,7 +364,7 @@ void InitTables() return; //clear - for (int i = 0; i < 32; i++) + for (int i = 0; i < 32; i++) { Interpreter::m_opTable59[i] = Interpreter::unknown_instruction; m_infoTable59[i] = 0; @@ -376,10 +376,10 @@ void InitTables() Interpreter::m_opTable19[i] = Interpreter::unknown_instruction; Interpreter::m_opTable31[i] = Interpreter::unknown_instruction; Interpreter::m_opTable63[i] = Interpreter::unknown_instruction; - m_infoTable4[i] = 0; - m_infoTable19[i] = 0; - m_infoTable31[i] = 0; - m_infoTable63[i] = 0; + m_infoTable4[i] = 0; + m_infoTable19[i] = 0; + m_infoTable31[i] = 0; + m_infoTable63[i] = 0; } for (auto& tpl : primarytable) diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp index d7f4125046..394c7bc86a 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit.cpp @@ -60,7 +60,7 @@ using namespace PowerPC; // will be as small to be negligible, so I haven't dirtied up the code with that. AMD recommends it in their // optimization manuals, though. // -// We support block linking. Reserve space at the exits of every block for a full 5-byte jmp. Save 16-bit offsets +// We support block linking. Reserve space at the exits of every block for a full 5-byte jmp. Save 16-bit offsets // from the starts of each block, marking the exits so that they can be nicely patched at any time. // // Blocks do NOT use call/ret, they only jmp to each other and to the dispatcher when necessary. @@ -94,7 +94,7 @@ using namespace PowerPC; CR2-CR4 are non-volatile, rest of CR is volatile -> dropped on blr. R5-R12 are volatile -> dropped on blr. * classic inlining across calls. - + Low hanging fruit: stfd -- guaranteed in memory cmpl @@ -183,7 +183,7 @@ void Jit64::Init() asm_routines.Init(); } -void Jit64::ClearCache() +void Jit64::ClearCache() { blocks.Clear(); trampolines.ClearCodeSpace(); @@ -286,7 +286,7 @@ void Jit64::WriteExit(u32 destination, int exit_num) JitBlock *b = js.curBlock; b->exitAddress[exit_num] = destination; b->exitPtrs[exit_num] = GetWritableCodePtr(); - + // Link opportunity! if (jo.enableBlocklink) { @@ -303,21 +303,21 @@ void Jit64::WriteExit(u32 destination, int exit_num) JMP(asm_routines.dispatcher, true); } -void Jit64::WriteExitDestInEAX() +void Jit64::WriteExitDestInEAX() { MOV(32, M(&PC), R(EAX)); Cleanup(); - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); JMP(asm_routines.dispatcher, true); } -void Jit64::WriteRfiExitDestInEAX() +void Jit64::WriteRfiExitDestInEAX() { MOV(32, M(&PC), R(EAX)); MOV(32, M(&NPC), R(EAX)); Cleanup(); ABI_CallFunction(reinterpret_cast(&PowerPC::CheckExceptions)); - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); JMP(asm_routines.dispatcher, true); } @@ -337,7 +337,7 @@ void Jit64::WriteExternalExceptionExit() MOV(32, R(EAX), M(&PC)); MOV(32, M(&NPC), R(EAX)); ABI_CallFunction(reinterpret_cast(&PowerPC::CheckExternalExceptions)); - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); JMP(asm_routines.dispatcher, true); } @@ -374,11 +374,11 @@ void Jit64::Trace() sprintf(reg, "f%02d: %016x ", i, riPS0(i)); strncat(fregs, reg, 750); } -#endif +#endif - DEBUG_LOG(DYNA_REC, "JIT64 PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", - PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], - PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, + DEBUG_LOG(DYNA_REC, "JIT64 PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", + PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], + PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs, fregs); } @@ -666,7 +666,7 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc js.skipnext = false; i++; // Skip next instruction } - + if (js.cancel) break; } diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit.h b/Source/Core/Core/Src/PowerPC/Jit64/Jit.h index 43747074be..08f238dcdf 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit.h +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit.h @@ -223,7 +223,7 @@ public: void twx(UGeckoInstruction inst); void lXXx(UGeckoInstruction inst); - + void stXx(UGeckoInstruction inst); void lmw(UGeckoInstruction inst); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit64_Tables.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit64_Tables.cpp index 9c52bd1e82..53fe15dfac 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit64_Tables.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit64_Tables.cpp @@ -27,7 +27,7 @@ struct GekkoOPTemplate //GekkoOPInfo opinfo; // Doesn't need opinfo, Interpreter fills it out }; -static GekkoOPTemplate primarytable[] = +static GekkoOPTemplate primarytable[] = { {4, &Jit64::DynaRunTable4}, //"RunTable4", OPTYPE_SUBTABLE | (4<<24), 0}}, {19, &Jit64::DynaRunTable19}, //"RunTable19", OPTYPE_SUBTABLE | (19<<24), 0}}, @@ -108,7 +108,7 @@ static GekkoOPTemplate primarytable[] = {58, &Jit64::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}}, }; -static GekkoOPTemplate table4[] = +static GekkoOPTemplate table4[] = { //SUBOP10 {0, &Jit64::Default}, //"ps_cmpu0", OPTYPE_PS, FL_SET_CRn}}, {32, &Jit64::Default}, //"ps_cmpo0", OPTYPE_PS, FL_SET_CRn}}, @@ -124,9 +124,9 @@ static GekkoOPTemplate table4[] = {624, &Jit64::ps_mergeXX}, //"ps_merge11", OPTYPE_PS, FL_RC_BIT}}, {1014, &Jit64::Default}, //"dcbz_l", OPTYPE_SYSTEM, 0}}, -}; +}; -static GekkoOPTemplate table4_2[] = +static GekkoOPTemplate table4_2[] = { {10, &Jit64::ps_sum}, //"ps_sum0", OPTYPE_PS, 0}}, {11, &Jit64::ps_sum}, //"ps_sum1", OPTYPE_PS, 0}}, @@ -148,15 +148,15 @@ static GekkoOPTemplate table4_2[] = }; -static GekkoOPTemplate table4_3[] = +static GekkoOPTemplate table4_3[] = { {6, &Jit64::Default}, //"psq_lx", OPTYPE_PS, 0}}, {7, &Jit64::Default}, //"psq_stx", OPTYPE_PS, 0}}, {38, &Jit64::Default}, //"psq_lux", OPTYPE_PS, 0}}, - {39, &Jit64::Default}, //"psq_stux", OPTYPE_PS, 0}}, + {39, &Jit64::Default}, //"psq_stux", OPTYPE_PS, 0}}, }; -static GekkoOPTemplate table19[] = +static GekkoOPTemplate table19[] = { {528, &Jit64::bcctrx}, //"bcctrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, {16, &Jit64::bclrx}, //"bclrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, @@ -168,16 +168,16 @@ static GekkoOPTemplate table19[] = {449, &Jit64::crXXX}, //"cror", OPTYPE_CR, FL_EVIL}}, {417, &Jit64::crXXX}, //"crorc", OPTYPE_CR, FL_EVIL}}, {193, &Jit64::crXXX}, //"crxor", OPTYPE_CR, FL_EVIL}}, - + {150, &Jit64::DoNothing}, //"isync", OPTYPE_ICACHE, FL_EVIL}}, {0, &Jit64::mcrf}, //"mcrf", OPTYPE_SYSTEM, FL_EVIL}}, - + {50, &Jit64::rfi}, //"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1}}, {18, &Jit64::Default}, //"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS}} }; -static GekkoOPTemplate table31[] = +static GekkoOPTemplate table31[] = { {28, &Jit64::boolX}, //"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {60, &Jit64::boolX}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, @@ -252,7 +252,7 @@ static GekkoOPTemplate table31[] = {661, &Jit64::Default}, //"stswx", OPTYPE_STORE, FL_EVIL}}, {725, &Jit64::Default}, //"stswi", OPTYPE_STORE, FL_EVIL}}, - // fp load/store + // fp load/store {535, &Jit64::lfsx}, //"lfsx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, {567, &Jit64::Default}, //"lfsux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B}}, {599, &Jit64::Default}, //"lfdx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, @@ -290,8 +290,8 @@ static GekkoOPTemplate table31[] = {566, &Jit64::Default}, //"tlbsync", OPTYPE_SYSTEM, 0}}, }; -static GekkoOPTemplate table31_2[] = -{ +static GekkoOPTemplate table31_2[] = +{ {266, &Jit64::addx}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {778, &Jit64::addx}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {10, &Jit64::addcx}, //"addcx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}}, @@ -318,21 +318,21 @@ static GekkoOPTemplate table31_2[] = {200, &Jit64::subfzex}, //"subfzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}}, }; -static GekkoOPTemplate table59[] = +static GekkoOPTemplate table59[] = { - {18, &Jit64::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, - {20, &Jit64::fp_arith_s}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {21, &Jit64::fp_arith_s}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {18, &Jit64::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, + {20, &Jit64::fp_arith_s}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {21, &Jit64::fp_arith_s}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, // {22, &Jit64::Default}, //"fsqrtsx", OPTYPE_FPU, FL_RC_BIT_F}}, // Not implemented on gekko - {24, &Jit64::Default}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, - {25, &Jit64::fp_arith_s}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {28, &Jit64::fmaddXX}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {29, &Jit64::fmaddXX}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {30, &Jit64::fmaddXX}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {31, &Jit64::fmaddXX}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, -}; + {24, &Jit64::Default}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, + {25, &Jit64::fp_arith_s}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {28, &Jit64::fmaddXX}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {29, &Jit64::fmaddXX}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {30, &Jit64::fmaddXX}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {31, &Jit64::fmaddXX}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, +}; -static GekkoOPTemplate table63[] = +static GekkoOPTemplate table63[] = { {264, &Jit64::fsign}, //"fabsx", OPTYPE_FPU, FL_RC_BIT_F}}, {32, &Jit64::fcmpx}, //"fcmpo", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -352,7 +352,7 @@ static GekkoOPTemplate table63[] = {711, &Jit64::Default}, //"mtfsfx", OPTYPE_SYSTEMFP, 0, 2}}, }; -static GekkoOPTemplate table63_2[] = +static GekkoOPTemplate table63_2[] = { {18, &Jit64::Default}, //"fdivx", OPTYPE_FPU, FL_RC_BIT_F, 30}}, {20, &Jit64::Default}, //"fsubx", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -394,7 +394,7 @@ void InitTables() return; //clear - for (auto& tpl : dynaOpTable59) + for (auto& tpl : dynaOpTable59) { tpl = &Jit64::unknown_instruction; } @@ -404,7 +404,7 @@ void InitTables() dynaOpTable4 [i] = &Jit64::unknown_instruction; dynaOpTable19[i] = &Jit64::unknown_instruction; dynaOpTable31[i] = &Jit64::unknown_instruction; - dynaOpTable63[i] = &Jit64::unknown_instruction; + dynaOpTable63[i] = &Jit64::unknown_instruction; } for (auto& tpl : primarytable) diff --git a/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.cpp b/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.cpp index 607b1b5730..56975ef6ea 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.cpp @@ -13,9 +13,9 @@ using namespace Gen; //TODO - make an option //#if _DEBUG -static bool enableDebug = false; +static bool enableDebug = false; //#else -// bool enableDebug = false; +// bool enableDebug = false; //#endif //static bool enableStatistics = false; //unused? @@ -26,7 +26,7 @@ static bool enableDebug = false; //GLOBAL STATIC ALLOCATIONS x64 //EAX - ubiquitous scratch register - EVERYBODY scratches this //RBX - Base pointer of memory -//R15 - Pointer to array of block pointers +//R15 - Pointer to array of block pointers Jit64AsmRoutineManager asm_routines; @@ -48,7 +48,7 @@ void Jit64AsmRoutineManager::Generate() outerLoop = GetCodePtr(); ABI_CallFunction(reinterpret_cast(&CoreTiming::Advance)); FixupBranch skipToRealDispatch = J(); //skip the sync and compare first time - + dispatcher = GetCodePtr(); // The result of slice decrementation should be in flags if somebody jumped here // IMPORTANT - We jump on negative, not carry!!! @@ -168,7 +168,7 @@ void Jit64AsmRoutineManager::Generate() MOV(32, M(&NPC), R(EAX)); ABI_CallFunction(reinterpret_cast(&PowerPC::CheckExternalExceptions)); SetJumpTarget(noExtException); - + TEST(32, M((void*)PowerPC::GetStatePtr()), Imm32(0xFFFFFFFF)); J_CC(CC_Z, outerLoop, true); @@ -194,14 +194,14 @@ void Jit64AsmRoutineManager::GenerateCommon() GenFifoWrite(32); fifoDirectWriteFloat = AlignCode4(); GenFifoFloatWrite(); - fifoDirectWriteXmm64 = AlignCode4(); + fifoDirectWriteXmm64 = AlignCode4(); GenFifoXmm64Write(); GenQuantizedLoads(); GenQuantizedStores(); GenQuantizedSingleStores(); - //CMPSD(R(XMM0), M(&zero), + //CMPSD(R(XMM0), M(&zero), // TODO // Fast write routines - special case the most common hardware write diff --git a/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.h b/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.h index 8835a07bcc..7dc55b475d 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.h +++ b/Source/Core/Core/Src/PowerPC/Jit64/JitAsm.h @@ -17,7 +17,7 @@ // 3) Can optimize code at runtime for the specific CPU model. // There aren't really any disadvantages other than having to maintain a x86 emitter, // which we have to do anyway :) -// +// // To add a new asm routine, just add another const here, and add the code to Generate. // Also, possibly increase the size of the code buffer. diff --git a/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.cpp b/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.cpp index 13c5d827a2..f804877627 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.cpp @@ -34,7 +34,7 @@ void RegCache::Start(PPCAnalyst::BlockRegStats &stats) regs[i].location = GetDefaultLocation(i); regs[i].away = false; } - + // todo: sort to find the most popular regs /* int maxPreload = 2; @@ -103,7 +103,7 @@ X64Reg RegCache::GetFreeXReg() for (int i = 0; i < aCount; i++) { X64Reg xr = (X64Reg)aOrder[i]; - if (xlocks[xr]) + if (xlocks[xr]) continue; int preg = xregs[xr].ppcReg; if (!locks[preg]) @@ -197,7 +197,7 @@ void FPURegCache::Start(PPCAnalyst::BlockRegStats &stats) const int *GPRRegCache::GetAllocationOrder(int &count) { - static const int allocationOrder[] = + static const int allocationOrder[] = { // R12, when used as base register, for example in a LEA, can generate bad code! Need to look into this. #ifdef _M_X64 @@ -216,7 +216,7 @@ const int *GPRRegCache::GetAllocationOrder(int &count) const int *FPURegCache::GetAllocationOrder(int &count) { - static const int allocationOrder[] = + static const int allocationOrder[] = { #ifdef _M_X64 XMM6, XMM7, XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15, XMM2, XMM3, XMM4, XMM5 diff --git a/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.h b/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.h index 550036dba7..30ae663231 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.h +++ b/Source/Core/Core/Src/PowerPC/Jit64/JitRegCache.h @@ -16,7 +16,7 @@ enum FlushMode enum GrabMode { M_READ = 1, - M_WRITE = 2, + M_WRITE = 2, M_READWRITE = 3, }; @@ -58,7 +58,7 @@ protected: X64CachedReg saved_xregs[NUMXREGS]; virtual const int *GetAllocationOrder(int &count) = 0; - + XEmitter *emit; public: @@ -70,7 +70,7 @@ public: void DiscardRegContentsIfCached(int preg); void SetEmitter(XEmitter *emitter) {emit = emitter;} - void FlushR(X64Reg reg); + void FlushR(X64Reg reg); void FlushR(X64Reg reg, X64Reg reg2) {FlushR(reg); FlushR(reg2);} void FlushLockX(X64Reg reg) { FlushR(reg); @@ -93,9 +93,9 @@ public: const OpArg &R(int preg) const {return regs[preg].location;} X64Reg RX(int preg) const { - if (regs[preg].away && regs[preg].location.IsSimpleReg()) - return regs[preg].location.GetSimpleReg(); - PanicAlert("Not so simple - %i", preg); + if (regs[preg].away && regs[preg].location.IsSimpleReg()) + return regs[preg].location.GetSimpleReg(); + PanicAlert("Not so simple - %i", preg); return (X64Reg)-1; } virtual OpArg GetDefaultLocation(int reg) const = 0; diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp index fdf60906d6..b0f3f1cd18 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Branch.cpp @@ -12,12 +12,12 @@ // No need for a disable-mechanism. // If defined, clears CR0 at blr and bl-s. If the assumption that -// flags never carry over between functions holds, then the task for +// flags never carry over between functions holds, then the task for // an optimizer becomes much easier. // #define ACID_TEST -// Zelda and many more games seem to pass the Acid Test. +// Zelda and many more games seem to pass the Acid Test. using namespace Gen; @@ -122,12 +122,12 @@ void Jit64::bcx(UGeckoInstruction inst) if ((inst.BO & BO_DONT_CHECK_CONDITION) == 0) // Test a CR bit { TEST(8, M(&PowerPC::ppcState.cr_fast[inst.BI >> 2]), Imm8(8 >> (inst.BI & 3))); - if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch + if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch pConditionDontBranch = J_CC(CC_Z); else pConditionDontBranch = J_CC(CC_NZ); } - + if (inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); @@ -180,7 +180,7 @@ void Jit64::bcctrx(UGeckoInstruction inst) if (inst.BO_2 & BO_BRANCH_IF_TRUE) branch = CC_Z; else - branch = CC_NZ; + branch = CC_NZ; FixupBranch b = J_CC(branch, false); MOV(32, R(EAX), M(&CTR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); @@ -223,7 +223,7 @@ void Jit64::bclrx(UGeckoInstruction inst) if ((inst.BO & BO_DONT_CHECK_CONDITION) == 0) // Test a CR bit { TEST(8, M(&PowerPC::ppcState.cr_fast[inst.BI >> 2]), Imm8(8 >> (inst.BI & 3))); - if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch + if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch pConditionDontBranch = J_CC(CC_Z); else pConditionDontBranch = J_CC(CC_NZ); @@ -235,7 +235,7 @@ void Jit64::bclrx(UGeckoInstruction inst) AND(32, M(&PowerPC::ppcState.cr), Imm32(~(0xFF000000))); #endif - MOV(32, R(EAX), M(&LR)); + MOV(32, R(EAX), M(&LR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); if (inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_FloatingPoint.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_FloatingPoint.cpp index 707b24f7f1..b9a2e61c0b 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_FloatingPoint.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_FloatingPoint.cpp @@ -209,7 +209,7 @@ void Jit64::fmrx(UGeckoInstruction inst) MOVSD(fpr.R(d), XMM0); fpr.UnlockAll(); } - + void Jit64::fcmpx(UGeckoInstruction inst) { INSTRUCTION_START @@ -264,12 +264,12 @@ void Jit64::fcmpx(UGeckoInstruction inst) SetJumpTarget(pGreater); MOV(8, M(&PowerPC::ppcState.cr_fast[crf]), Imm8(0x4)); continue3 = J(); - + // Less Than SetJumpTarget(pLesser); MOV(8, M(&PowerPC::ppcState.cr_fast[crf]), Imm8(0x8)); } - + SetJumpTarget(continue1); if (a != b) { diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp index b506ec41cd..244a051aaa 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Integer.cpp @@ -282,10 +282,10 @@ void Jit64::reg_imm(UGeckoInstruction inst) regimmop(d, a, false, (u32)inst.SIMM_16 << 16, Add, &XEmitter::ADD); } break; - case 24: + case 24: if (a == 0 && s == 0 && inst.UIMM == 0 && !inst.Rc) //check for nop {NOP(); return;} //make the nop visible in the generated code. not much use but interesting if we see one. - regimmop(a, s, true, inst.UIMM, Or, &XEmitter::OR); + regimmop(a, s, true, inst.UIMM, Or, &XEmitter::OR); break; //ori case 25: regimmop(a, s, true, inst.UIMM << 16, Or, &XEmitter::OR, false); break;//oris case 28: regimmop(a, s, true, inst.UIMM, And, &XEmitter::AND, true); break; @@ -301,7 +301,7 @@ void Jit64::reg_imm(UGeckoInstruction inst) } void Jit64::cmpXX(UGeckoInstruction inst) -{ +{ // USES_CR INSTRUCTION_START JITDISABLE(bJITIntegerOff) @@ -408,14 +408,14 @@ void Jit64::cmpXX(UGeckoInstruction inst) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); MOV(32, R(EAX), M(&CTR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); - WriteExitDestInEAX(); + WriteExitDestInEAX(); } else if ((js.next_inst.OPCD == 19) && (js.next_inst.SUBOP10 == 16)) // bclrx { MOV(32, R(EAX), M(&LR)); if (js.next_inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); - WriteExitDestInEAX(); + WriteExitDestInEAX(); } else { @@ -455,7 +455,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) if (!merge_branch) { // Keep the normal code separate for clarity. - + FixupBranch pLesser = J_CC(less_than); FixupBranch pGreater = J_CC(greater_than); MOV(8, M(&PowerPC::ppcState.cr_fast[crf]), Imm8(0x2)); // _x86Reg == 0 @@ -467,7 +467,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) MOV(8, M(&PowerPC::ppcState.cr_fast[crf]), Imm8(0x8)); // _x86Reg < 0 SetJumpTarget(continue1); SetJumpTarget(continue2); - // TODO: If we ever care about SO, borrow a trick from + // TODO: If we ever care about SO, borrow a trick from // http://maws.mameworld.info/maws/mamesrc/src/emu/cpu/powerpc/drc_ops.c : bt, adc } else @@ -475,7 +475,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) js.downcountAmount++; int test_bit = 8 >> (js.next_inst.BI & 3); bool condition = (js.next_inst.BO & BO_BRANCH_IF_TRUE) ? false : true; - + // Test swapping (in the future, will be used to inline across branches the right way) // if (rand() & 1) // std::swap(destination1, destination2), condition = !condition; @@ -515,7 +515,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); MOV(32, R(EAX), M(&CTR)); AND(32, R(EAX), Imm32(0xFFFFFFFC)); - WriteExitDestInEAX(); + WriteExitDestInEAX(); } else if ((js.next_inst.OPCD == 19) && (js.next_inst.SUBOP10 == 16)) // bclrx { @@ -523,7 +523,7 @@ void Jit64::cmpXX(UGeckoInstruction inst) AND(32, R(EAX), Imm32(0xFFFFFFFC)); if (js.next_inst.LK) MOV(32, M(&LR), Imm32(js.compilerPC + 4)); - WriteExitDestInEAX(); + WriteExitDestInEAX(); } else { @@ -549,7 +549,7 @@ void Jit64::boolX(UGeckoInstruction inst) JITDISABLE(bJITIntegerOff) int a = inst.RA, s = inst.RS, b = inst.RB; _dbg_assert_msg_(DYNA_REC, inst.OPCD == 31, "Invalid boolX"); - + if (gpr.R(s).IsImm() && gpr.R(b).IsImm()) { if (inst.SUBOP10 == 28) /* andx */ @@ -622,7 +622,7 @@ void Jit64::boolX(UGeckoInstruction inst) gpr.Lock(a,((a == s) ? b : s)); OpArg operand = ((a == s) ? gpr.R(b) : gpr.R(s)); gpr.BindToRegister(a, true, true); - + if (inst.SUBOP10 == 28) /* andx */ { AND(32, gpr.R(a), operand); @@ -720,7 +720,7 @@ void Jit64::boolX(UGeckoInstruction inst) { gpr.Lock(a,s,b); gpr.BindToRegister(a, false, true); - + if (inst.SUBOP10 == 28) /* andx */ { MOV(32, gpr.R(a), gpr.R(s)); @@ -913,7 +913,7 @@ void Jit64::subfic(UGeckoInstruction inst) // This instruction has no RC flag } -void Jit64::subfcx(UGeckoInstruction inst) +void Jit64::subfcx(UGeckoInstruction inst) { INSTRUCTION_START; JITDISABLE(bJITIntegerOff) @@ -945,7 +945,7 @@ void Jit64::subfcx(UGeckoInstruction inst) gpr.UnlockAll(); } -void Jit64::subfex(UGeckoInstruction inst) +void Jit64::subfex(UGeckoInstruction inst) { INSTRUCTION_START; JITDISABLE(bJITIntegerOff) @@ -954,7 +954,7 @@ void Jit64::subfex(UGeckoInstruction inst) gpr.BindToRegister(d, (d == a || d == b), true); GetCarryEAXAndClear(); - + bool invertedCarry = false; if (d == b) { @@ -1012,10 +1012,10 @@ void Jit64::subfzex(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) int a = inst.RA, d = inst.RD; - + gpr.Lock(a, d); gpr.BindToRegister(d, d == a); - + GetCarryEAXAndClear(); if (d != a) { @@ -1292,7 +1292,7 @@ void Jit64::divwux(UGeckoInstruction inst) u64 magic_dividend = 0x100000000ULL << shift; u32 magic = (u32)(magic_dividend / divisor); u32 max_quotient = magic >> shift; - + // Test for failure in round-up method if (((u64)(magic+1) * (max_quotient*divisor-1)) >> (shift + 32) != max_quotient-1) { @@ -1472,7 +1472,7 @@ void Jit64::addx(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) int a = inst.RA, b = inst.RB, d = inst.RD; - + if (gpr.R(a).IsImm() && gpr.R(b).IsImm()) { s32 i = (s32)gpr.R(a).offset, j = (s32)gpr.R(b).offset; @@ -1513,7 +1513,7 @@ void Jit64::addx(UGeckoInstruction inst) { gpr.Lock(a, b, d); gpr.BindToRegister(d, false); - MOV(32, gpr.R(d), gpr.R(a)); + MOV(32, gpr.R(d), gpr.R(a)); ADD(32, gpr.R(d), gpr.R(b)); if (inst.Rc) { @@ -1533,12 +1533,12 @@ void Jit64::addex(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) int a = inst.RA, b = inst.RB, d = inst.RD; - + if ((d == a) || (d == b)) { gpr.Lock(a, b, d); gpr.BindToRegister(d, true); - + GetCarryEAXAndClear(); ADC(32, gpr.R(d), gpr.R((d == a) ? b : a)); if (inst.Rc) @@ -1552,7 +1552,7 @@ void Jit64::addex(UGeckoInstruction inst) { gpr.Lock(a, b, d); gpr.BindToRegister(d, false); - + GetCarryEAXAndClear(); MOV(32, gpr.R(d), gpr.R(a)); ADC(32, gpr.R(d), gpr.R(b)); @@ -1570,7 +1570,7 @@ void Jit64::addcx(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) int a = inst.RA, b = inst.RB, d = inst.RD; - + if ((d == a) || (d == b)) { int operand = ((d == a) ? b : a); @@ -1590,7 +1590,7 @@ void Jit64::addcx(UGeckoInstruction inst) gpr.Lock(a, b, d); gpr.BindToRegister(d, false); JitClearCAOV(inst.OE); - MOV(32, gpr.R(d), gpr.R(a)); + MOV(32, gpr.R(d), gpr.R(a)); ADD(32, gpr.R(d), gpr.R(b)); if (inst.Rc) { @@ -1607,12 +1607,12 @@ void Jit64::addmex(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) int a = inst.RA, d = inst.RD; - + if (d == a) { gpr.Lock(d); gpr.BindToRegister(d, true); - + GetCarryEAXAndClear(); ADC(32, gpr.R(d), Imm32(0xFFFFFFFF)); if (inst.Rc) @@ -1626,7 +1626,7 @@ void Jit64::addmex(UGeckoInstruction inst) { gpr.Lock(a, d); gpr.BindToRegister(d, false); - + GetCarryEAXAndClear(); MOV(32, gpr.R(d), gpr.R(a)); ADC(32, gpr.R(d), Imm32(0xFFFFFFFF)); @@ -1645,12 +1645,12 @@ void Jit64::addzex(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) int a = inst.RA, d = inst.RD; - + if (d == a) { gpr.Lock(d); gpr.BindToRegister(d, true); - + GetCarryEAXAndClear(); ADC(32, gpr.R(d), Imm8(0)); if (inst.Rc) @@ -1664,7 +1664,7 @@ void Jit64::addzex(UGeckoInstruction inst) { gpr.Lock(a, d); gpr.BindToRegister(d, false); - + GetCarryEAXAndClear(); MOV(32, gpr.R(d), gpr.R(a)); ADC(32, gpr.R(d), Imm8(0)); @@ -1726,7 +1726,7 @@ void Jit64::rlwinmx(UGeckoInstruction inst) { ROL(32, gpr.R(a), Imm8(inst.SH)); } - if (!(inst.MB==0 && inst.ME==31)) + if (!(inst.MB==0 && inst.ME==31)) { AND(32, gpr.R(a), Imm32(Helper_Mask(inst.MB, inst.ME))); if (inst.Rc) @@ -1968,7 +1968,7 @@ void Jit64::slwx(UGeckoInstruction inst) { u32 amount = (u32)gpr.R(b).offset; gpr.SetImmediate32(a, (amount & 0x20) ? 0 : (u32)gpr.R(s).offset << amount); - if (inst.Rc) + if (inst.Rc) { ComputeRC(gpr.R(a)); } @@ -1985,7 +1985,7 @@ void Jit64::slwx(UGeckoInstruction inst) MOV(32, gpr.R(a), gpr.R(s)); } SHL(64, gpr.R(a), R(ECX)); - if (inst.Rc) + if (inst.Rc) { AND(32, gpr.R(a), gpr.R(a)); GenerateRC(); @@ -2013,7 +2013,7 @@ void Jit64::slwx(UGeckoInstruction inst) gpr.UnlockAll(); gpr.UnlockAllX(); // Shift of 0 doesn't update flags, so compare manually just in case - if (inst.Rc) + if (inst.Rc) { ComputeRC(gpr.R(a)); } @@ -2132,13 +2132,13 @@ void Jit64::cntlzwx(UGeckoInstruction inst) JITDISABLE(bJITIntegerOff) int a = inst.RA; int s = inst.RS; - + if (gpr.R(s).IsImm()) { u32 mask = 0x80000000; u32 i = 0; for (; i < 32; i++, mask >>= 1) - if ((u32)gpr.R(s).offset & mask) + if ((u32)gpr.R(s).offset & mask) break; gpr.SetImmediate32(a, i); } @@ -2215,7 +2215,7 @@ void Jit64::twx(UGeckoInstruction inst) LOCK(); OR(32, M((void *)&PowerPC::ppcState.Exceptions), Imm32(EXCEPTION_PROGRAM)); WriteExceptionExit(); - + SetJumpTarget(exit1); SetJumpTarget(exit2); SetJumpTarget(exit3); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStore.cpp index 343803db9e..a1c3bd971c 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStore.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStore.cpp @@ -36,25 +36,25 @@ void Jit64::lXXx(UGeckoInstruction inst) accessSize = 32; signExtend = false; break; - + case 34: /* lbz */ case 35: /* lbzu */ accessSize = 8; signExtend = false; break; - + case 40: /* lhz */ case 41: /* lhzu */ accessSize = 16; signExtend = false; break; - + case 42: /* lha */ case 43: /* lhau */ accessSize = 16; signExtend = true; break; - + case 31: switch (inst.SUBOP10) { @@ -63,7 +63,7 @@ void Jit64::lXXx(UGeckoInstruction inst) accessSize = 32; signExtend = false; break; - + case 87: /* lbzx */ case 119: /* lbzux */ accessSize = 8; @@ -74,36 +74,36 @@ void Jit64::lXXx(UGeckoInstruction inst) accessSize = 16; signExtend = false; break; - + case 343: /* lhax */ case 375: /* lhaux */ accessSize = 16; signExtend = true; break; - + default: PanicAlert("Invalid instruction"); } break; - + default: PanicAlert("Invalid instruction"); } // TODO(ector): Make it dynamically enable/disable idle skipping where appropriate // Will give nice boost to dual core mode - // (mb2): I agree, + // (mb2): I agree, // IMHO those Idles should always be skipped and replaced by a more controllable "native" Idle methode // ... maybe the throttle one already do that :p // if (CommandProcessor::AllowIdleSkipping() && PixelEngine::AllowIdleSkipping()) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && - inst.OPCD == 32 && + inst.OPCD == 32 && (inst.hex & 0xFFFF0000) == 0x800D0000 && (Memory::ReadUnchecked_U32(js.compilerPC + 4) == 0x28000000 || (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && Memory::ReadUnchecked_U32(js.compilerPC + 4) == 0x2C000000)) && Memory::ReadUnchecked_U32(js.compilerPC + 8) == 0x4182fff8) { - // TODO(LinesPrower): + // TODO(LinesPrower): // - Rewrite this! // It seems to be ugly and inefficient, but I don't know JIT stuff enough to make it right // It only demonstrates the idea @@ -112,11 +112,11 @@ void Jit64::lXXx(UGeckoInstruction inst) s32 offset = (s32)(s16)inst.SIMM_16; gpr.BindToRegister(d, false, true); SafeLoadToReg(gpr.RX(d), gpr.R(a), accessSize, offset, RegistersInUse(), signExtend); - + // if it's still 0, we can wait until the next event TEST(32, gpr.R(d), gpr.R(d)); FixupBranch noIdle = J_CC(CC_NZ); - + u32 registersInUse = RegistersInUse(); ABI_PushRegistersAndAdjustStack(registersInUse, false); @@ -133,7 +133,7 @@ void Jit64::lXXx(UGeckoInstruction inst) //js.compilerPC += 8; return; } - + // Determine whether this instruction updates inst.RA bool update; if (inst.OPCD == 31) @@ -263,7 +263,7 @@ void Jit64::stX(UGeckoInstruction inst) bool update = inst.OPCD & 1; s32 offset = (s32)(s16)inst.SIMM_16; - if (a || !update) + if (a || !update) { int accessSize; switch (inst.OPCD & ~1) @@ -288,7 +288,7 @@ void Jit64::stX(UGeckoInstruction inst) if (update) gpr.SetImmediate32(a, addr); switch (accessSize) - { + { // No need to protect these, they don't touch any state // question - should we inline them instead? Pro: Lose a CALL Con: Code bloat case 8: CALL((void *)asm_routines.fifoDirectWrite8); break; @@ -325,7 +325,7 @@ void Jit64::stX(UGeckoInstruction inst) return; } } - + // Optimized stack access? if (accessSize == 32 && !gpr.R(a).IsImm() && a == 1 && js.st.isFirstBlockOfFunction && jo.optimizeStack) { @@ -333,7 +333,7 @@ void Jit64::stX(UGeckoInstruction inst) MOV(32, R(ABI_PARAM1), gpr.R(a)); MOV(32, R(EAX), gpr.R(s)); BSWAP(32, EAX); -#ifdef _M_X64 +#ifdef _M_X64 MOV(accessSize, MComplex(RBX, ABI_PARAM1, SCALE_1, (u32)offset), R(EAX)); #else AND(32, R(ABI_PARAM1), Imm32(Memory::MEMVIEW32_MASK)); @@ -375,7 +375,7 @@ void Jit64::stX(UGeckoInstruction inst) { gpr.KillImmediate(a, true, true); MEMCHECK_START - + ADD(32, gpr.R(a), Imm32((u32)offset)); MEMCHECK_END @@ -420,7 +420,7 @@ void Jit64::stXx(UGeckoInstruction inst) case 151: accessSize = 32; break; case 407: accessSize = 16; break; case 215: accessSize = 8; break; - default: PanicAlert("stXx: invalid access size"); + default: PanicAlert("stXx: invalid access size"); accessSize = 0; break; } diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp index 8fbabdd60a..bc056e6bd1 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp @@ -35,7 +35,7 @@ void Jit64::lfs(UGeckoInstruction inst) int d = inst.RD; int a = inst.RA; - if (!a) + if (!a) { Default(inst); return; @@ -45,7 +45,7 @@ void Jit64::lfs(UGeckoInstruction inst) SafeLoadToReg(EAX, gpr.R(a), 32, offset, RegistersInUse(), false); MEMCHECK_START - + MOV(32, M(&temp32), R(EAX)); fpr.Lock(d); fpr.BindToRegister(d, false); @@ -67,7 +67,7 @@ void Jit64::lfd(UGeckoInstruction inst) int d = inst.RD; int a = inst.RA; - if (!a) + if (!a) { Default(inst); return; @@ -108,7 +108,7 @@ void Jit64::lfd(UGeckoInstruction inst) MOV(32, M((void*)((u8 *)&temp64+4)), R(EAX)); MEMCHECK_START - + MOV(32, R(EAX), MDisp(ABI_PARAM1, (u32)Memory::base + offset + 4)); BSWAP(32, EAX); MOV(32, M(&temp64), R(EAX)); @@ -213,7 +213,7 @@ void Jit64::stfd(UGeckoInstruction inst) fpr.UnlockAll(); } -// In Release on 32bit build, +// In Release on 32bit build, // this seemed to cause a problem with PokePark2 // at start after talking to first pokemon, // you run and smash a box, then he goes on about @@ -324,7 +324,7 @@ void Jit64::lfsx(UGeckoInstruction inst) MOVD_xmm(r, MComplex(RBX, EAX, SCALE_1, 0)); #endif MEMCHECK_START - + PSHUFB(r, M((void *)bswapShuffle1x4)); CVTSS2SD(r, R(r)); MOVDDUP(r, R(r)); diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStorePaired.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStorePaired.cpp index 38113596ae..e881b5e7e8 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStorePaired.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStorePaired.cpp @@ -15,7 +15,7 @@ const u8 GC_ALIGNED16(pbswapShuffle2x4[16]) = {3, 2, 1, 0, 7, 6, 5, 4, 8, 9, 10, 11, 12, 13, 14, 15}; //static u64 GC_ALIGNED16(temp64); // unused? - + // TODO(ector): Improve 64-bit version #if 0 static void WriteDual32(u64 value, u32 address) diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Paired.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Paired.cpp index 7d7480b311..7dd8ad8ef2 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_Paired.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_Paired.cpp @@ -90,7 +90,7 @@ void Jit64::ps_sign(UGeckoInstruction inst) switch (inst.SUBOP10) { - case 40: //neg + case 40: //neg XORPD(fpr.RX(d), M((void*)&psSignBits)); break; case 136: //nabs @@ -173,7 +173,7 @@ void Jit64::tri_op(int d, int a, int b, bool reversible, void (XEmitter::*op)(X6 } void Jit64::ps_arith(UGeckoInstruction inst) -{ +{ INSTRUCTION_START JITDISABLE(bJITPairedOff) if (inst.Rc) { @@ -182,7 +182,7 @@ void Jit64::ps_arith(UGeckoInstruction inst) switch (inst.SUBOP5) { case 18: tri_op(inst.FD, inst.FA, inst.FB, false, &XEmitter::DIVPD); break; //div - case 20: tri_op(inst.FD, inst.FA, inst.FB, false, &XEmitter::SUBPD); break; //sub + case 20: tri_op(inst.FD, inst.FA, inst.FB, false, &XEmitter::SUBPD); break; //sub case 21: tri_op(inst.FD, inst.FA, inst.FB, true, &XEmitter::ADDPD); break; //add case 23: Default(inst); break; //sel case 24: Default(inst); break; //res @@ -193,10 +193,10 @@ void Jit64::ps_arith(UGeckoInstruction inst) } void Jit64::ps_sum(UGeckoInstruction inst) -{ +{ INSTRUCTION_START JITDISABLE(bJITPairedOff) - // TODO: (inst.SUBOP5 == 10) breaks Sonic Colours (black screen) + // TODO: (inst.SUBOP5 == 10) breaks Sonic Colours (black screen) if (inst.Rc || (inst.SUBOP5 == 10)) { Default(inst); return; } @@ -222,7 +222,7 @@ void Jit64::ps_sum(UGeckoInstruction inst) MOVAPD(XMM1, fpr.R(b)); SHUFPD(XMM1, R(XMM1), 5); // copy higher to lower ADDPD(XMM0, R(XMM1)); // sum lowers - MOVAPD(XMM1, fpr.R(c)); + MOVAPD(XMM1, fpr.R(c)); UNPCKLPD(XMM1, R(XMM0)); // merge MOVAPD(fpr.R(d), XMM1); break; @@ -288,7 +288,7 @@ void Jit64::ps_mergeXX(UGeckoInstruction inst) MOVAPD(XMM0, fpr.R(a)); switch (inst.SUBOP10) { - case 528: + case 528: UNPCKLPD(XMM0, fpr.R(b)); //unpck is faster than shuf break; //00 case 560: diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp index 91a3a160c9..573feb3756 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_SystemRegisters.cpp @@ -254,7 +254,7 @@ void Jit64::crXXX(UGeckoInstruction inst) JITDISABLE(bJITSystemRegistersOff) _dbg_assert_msg_(DYNA_REC, inst.OPCD == 19, "Invalid crXXX"); - // USES_CR + // USES_CR // Get bit CRBA in EAX aligned with bit CRBD int shiftA = (inst.CRBD & 3) - (inst.CRBA & 3); diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp index 686a7e4b3a..69dc1c2bd3 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/IR_X86.cpp @@ -266,7 +266,7 @@ static void regSpillCallerSaved(RegInfo& RI) { // 64-bit regSpill(RI, RCX); regSpill(RI, RDX); - regSpill(RI, RSI); + regSpill(RI, RSI); regSpill(RI, RDI); regSpill(RI, R8); regSpill(RI, R9); @@ -411,7 +411,7 @@ static void fregEmitBinInst(RegInfo& RI, InstLoc I, // Could be extended to unprofiled addresses. static void regMarkMemAddress(RegInfo& RI, InstLoc I, InstLoc AI, unsigned OpNum) { if (isImm(*AI)) { - unsigned addr = RI.Build->GetImmValue(AI); + unsigned addr = RI.Build->GetImmValue(AI); if (Memory::IsRAMAddress(addr)) return; } @@ -594,7 +594,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { case InterpreterFallback: case SystemCall: case RFIExit: - case InterpreterBranch: + case InterpreterBranch: case ShortIdleLoop: case FPExceptionCheck: case DSIExceptionCheck: @@ -713,7 +713,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { break; case IdleBranch: regMarkUse(RI, I, getOp1(getOp1(I)), 1); - break; + break; case BranchCond: { if (isICmp(*getOp1(I)) && isImm(*getOp2(getOp1(I)))) { @@ -1128,7 +1128,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { if (!thisUsed) break; X64Reg reg = fregFindFreeReg(RI); if (cpu_info.bSSSE3) { - static const u32 GC_ALIGNED16(maskSwapa64_1[4]) = + static const u32 GC_ALIGNED16(maskSwapa64_1[4]) = {0x04050607L, 0x00010203L, 0xFFFFFFFFL, 0xFFFFFFFFL}; #ifdef _M_X64 // TODO: Remove regEnsureInReg() and use ECX @@ -1213,7 +1213,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { FixupBranch safe = Jit->J_CC(CC_NZ); // Fast routine if (cpu_info.bSSSE3) { - static const u32 GC_ALIGNED16(maskSwapa64_1[4]) = + static const u32 GC_ALIGNED16(maskSwapa64_1[4]) = {0x04050607L, 0x00010203L, 0xFFFFFFFFL, 0xFFFFFFFFL}; X64Reg value = fregBinLHSRegWithMov(RI, I); @@ -1334,7 +1334,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { case FSNeg: { if (!thisUsed) break; X64Reg reg = fregURegWithMov(RI, I); - static const u32 GC_ALIGNED16(ssSignBits[4]) = + static const u32 GC_ALIGNED16(ssSignBits[4]) = {0x80000000}; Jit->PXOR(reg, M((void*)&ssSignBits)); RI.fregs[reg] = I; @@ -1344,7 +1344,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { case FDNeg: { if (!thisUsed) break; X64Reg reg = fregURegWithMov(RI, I); - static const u64 GC_ALIGNED16(ssSignBits[2]) = + static const u64 GC_ALIGNED16(ssSignBits[2]) = {0x8000000000000000ULL}; Jit->PXOR(reg, M((void*)&ssSignBits)); RI.fregs[reg] = I; @@ -1354,7 +1354,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { case FPNeg: { if (!thisUsed) break; X64Reg reg = fregURegWithMov(RI, I); - static const u32 GC_ALIGNED16(psSignBits[4]) = + static const u32 GC_ALIGNED16(psSignBits[4]) = {0x80000000, 0x80000000}; Jit->PXOR(reg, M((void*)&psSignBits)); RI.fregs[reg] = I; @@ -1384,7 +1384,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { Jit->MOVAPD(reg, M(&PowerPC::ppcState.ps[ppcreg])); RI.fregs[reg] = I; break; - } + } case LoadFRegDENToZero: { if (!thisUsed) break; X64Reg reg = fregFindFreeReg(RI); @@ -1623,14 +1623,14 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { case BlockEnd: break; - case IdleBranch: { + case IdleBranch: { Jit->CMP(32, regLocForInst(RI, getOp1(getOp1(I))), - Imm32(RI.Build->GetImmValue(getOp2(getOp1(I))))); + Imm32(RI.Build->GetImmValue(getOp2(getOp1(I))))); FixupBranch cont = Jit->J_CC(CC_NE); - RI.Jit->Cleanup(); // is it needed? + RI.Jit->Cleanup(); // is it needed? Jit->ABI_CallFunction((void *)&PowerPC::OnIdleIL); - + Jit->MOV(32, M(&PC), Imm32(ibuild->GetImmValue( getOp2(I) ))); Jit->JMP(((JitIL *)jit)->asm_routines.testExceptions, true); @@ -1682,7 +1682,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { regWriteExit(RI, getOp1(I)); regNormalRegClear(RI, I); break; - } + } case ShortIdleLoop: { unsigned InstLoc = ibuild->GetImmValue(getOp1(I)); Jit->ABI_CallFunction((void *)&CoreTiming::Idle); @@ -1711,11 +1711,11 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { Jit->MOV(32, R(ECX), M(&SRR1)); Jit->AND(32, R(EAX), Imm32(~mask)); Jit->AND(32, R(ECX), Imm32(mask)); - Jit->OR(32, R(EAX), R(ECX)); + Jit->OR(32, R(EAX), R(ECX)); // MSR &= 0xFFFBFFFF; // Mask used to clear the bit MSR[13] Jit->AND(32, R(EAX), Imm32(0xFFFBFFFF)); Jit->MOV(32, M(&MSR), R(EAX)); - // NPC = SRR0; + // NPC = SRR0; Jit->MOV(32, R(EAX), M(&SRR0)); Jit->WriteRfiExitDestInOpArg(R(EAX)); break; @@ -1729,7 +1729,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitIL* Jit) { // If a FPU exception occurs, the exception handler will read // from PC. Update PC with the latest value in case that happens. Jit->MOV(32, M(&PC), Imm32(InstLoc)); - Jit->SUB(32, M(&CoreTiming::downcount), Jit->js.downcountAmount > 127 ? Imm32(Jit->js.downcountAmount) : Imm8(Jit->js.downcountAmount)); + Jit->SUB(32, M(&CoreTiming::downcount), Jit->js.downcountAmount > 127 ? Imm32(Jit->js.downcountAmount) : Imm8(Jit->js.downcountAmount)); Jit->JMP(Jit->asm_routines.fpException, true); Jit->SetJumpTarget(b1); break; diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp index 8b448f9928..d7ccddb83c 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.cpp @@ -50,7 +50,7 @@ using namespace PowerPC; // will be as small to be negligible, so I haven't dirtied up the code with that. AMD recommends it in their // optimization manuals, though. // -// We support block linking. Reserve space at the exits of every block for a full 5-byte jmp. Save 16-bit offsets +// We support block linking. Reserve space at the exits of every block for a full 5-byte jmp. Save 16-bit offsets // from the starts of each block, marking the exits so that they can be nicely patched at any time. // // Blocks do NOT use call/ret, they only jmp to each other and to the dispatcher when necessary. @@ -84,7 +84,7 @@ using namespace PowerPC; CR2-CR4 are non-volatile, rest of CR is volatile -> dropped on blr. R5-R12 are volatile -> dropped on blr. * classic inlining across calls. - + Low hanging fruit: stfd -- guaranteed in memory cmpl @@ -385,22 +385,22 @@ void JitIL::WriteExit(u32 destination, int exit_num) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) { ABI_CallFunction((void *)JitILProfiler::End); } - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); //If nobody has taken care of this yet (this can be removed when all branches are done) JitBlock *b = js.curBlock; b->exitAddress[exit_num] = destination; b->exitPtrs[exit_num] = GetWritableCodePtr(); - + // Link opportunity! int block = blocks.GetBlockNumberFromStartAddress(destination); - if (block >= 0 && jo.enableBlocklink) + if (block >= 0 && jo.enableBlocklink) { // It exists! Joy of joy! JMP(blocks.GetBlock(block)->checkedEntry, true); b->linkStatus[exit_num] = true; } - else + else { MOV(32, M(&PC), Imm32(destination)); JMP(asm_routines.dispatcher, true); @@ -414,7 +414,7 @@ void JitIL::WriteExitDestInOpArg(const Gen::OpArg& arg) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) { ABI_CallFunction((void *)JitILProfiler::End); } - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); JMP(asm_routines.dispatcher, true); } @@ -425,7 +425,7 @@ void JitIL::WriteRfiExitDestInOpArg(const Gen::OpArg& arg) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) { ABI_CallFunction((void *)JitILProfiler::End); } - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); JMP(asm_routines.testExceptions, true); } @@ -435,7 +435,7 @@ void JitIL::WriteExceptionExit() if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) { ABI_CallFunction((void *)JitILProfiler::End); } - SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); + SUB(32, M(&CoreTiming::downcount), js.downcountAmount > 127 ? Imm32(js.downcountAmount) : Imm8(js.downcountAmount)); JMP(asm_routines.testExceptions, true); } @@ -473,11 +473,11 @@ void JitIL::Trace() sprintf(reg, "f%02d: %016x ", i, riPS0(i)); strncat(fregs, reg, 750); } -#endif +#endif - DEBUG_LOG(DYNA_REC, "JITIL PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", - PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], - PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, + DEBUG_LOG(DYNA_REC, "JITIL PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", + PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], + PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs, fregs); } @@ -562,7 +562,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc const u8 *normalEntry = GetCodePtr(); b->normalEntry = normalEntry; - + if (ImHereDebug) ABI_CallFunction((void *)&ImHere); // Used to get a trace of the last few blocks before a crash, sometimes VERY useful diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h index 199f4144e6..4deb048bb6 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL.h @@ -56,7 +56,7 @@ class JitIL : public JitILBase, public EmuCodeBlock { private: JitBlockCache blocks; - TrampolineCache trampolines; + TrampolineCache trampolines; // The default code buffer. We keep it around to not have to alloc/dealloc a // large chunk of memory for each recompiled block. @@ -81,7 +81,7 @@ public: void Trace(); JitBlockCache *GetBlockCache() { return &blocks; } - + const u8 *BackPatch(u8 *codePtr, u32 em_address, void *ctx) { return NULL; }; bool IsInCodeSpace(u8 *ptr) { return IsInSpace(ptr); } @@ -115,7 +115,7 @@ public: void WriteRfiExitDestInOpArg(const Gen::OpArg& arg); void WriteCallInterpreter(UGeckoInstruction _inst); void Cleanup(); - + void WriteToConstRamAddress(int accessSize, const Gen::OpArg& arg, u32 address); void WriteFloatToConstRamAddress(const Gen::X64Reg& xmm_reg, u32 address); void GenerateCarry(Gen::X64Reg temp_reg); diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.cpp index 6587af6782..a909d32725 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.cpp @@ -14,9 +14,9 @@ using namespace Gen; //TODO - make an option //#if _DEBUG -static bool enableDebug = false; +static bool enableDebug = false; //#else -// bool enableDebug = false; +// bool enableDebug = false; //#endif //static bool enableStatistics = false; // unused? @@ -27,7 +27,7 @@ static bool enableDebug = false; //GLOBAL STATIC ALLOCATIONS x64 //EAX - ubiquitous scratch register - EVERYBODY scratches this //RBX - Base pointer of memory -//R15 - Pointer to array of block pointers +//R15 - Pointer to array of block pointers JitILAsmRoutineManager jitil_asm_routines; @@ -49,7 +49,7 @@ void JitILAsmRoutineManager::Generate() const u8 *outer_loop = GetCodePtr(); ABI_CallFunction(reinterpret_cast(&CoreTiming::Advance)); FixupBranch skipToRealDispatch = J(); //skip the sync and compare first time - + dispatcher = GetCodePtr(); //This is the place for CPUCompare! @@ -161,7 +161,7 @@ void JitILAsmRoutineManager::Generate() JMP(dispatcherNoCheck); // no point in special casing this //FP blocks test for FPU available, jump here if false - fpException = AlignCode4(); + fpException = AlignCode4(); MOV(32, R(EAX), M(&PC)); MOV(32, M(&NPC), R(EAX)); LOCK(); @@ -175,14 +175,14 @@ void JitILAsmRoutineManager::Generate() doTiming = GetCodePtr(); ABI_CallFunction(reinterpret_cast(&CoreTiming::Advance)); - + testExceptions = GetCodePtr(); MOV(32, R(EAX), M(&PC)); MOV(32, M(&NPC), R(EAX)); ABI_CallFunction(reinterpret_cast(&PowerPC::CheckExceptions)); MOV(32, R(EAX), M(&NPC)); MOV(32, M(&PC), R(EAX)); - + TEST(32, M((void*)PowerPC::GetStatePtr()), Imm32(0xFFFFFFFF)); J_CC(CC_Z, outer_loop, true); //Landing pad for drec space @@ -214,7 +214,7 @@ void JitILAsmRoutineManager::GenerateCommon() GenQuantizedStores(); GenQuantizedSingleStores(); - //CMPSD(R(XMM0), M(&zero), + //CMPSD(R(XMM0), M(&zero), // TODO // Fast write routines - special case the most common hardware write diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.h b/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.h index cf4dd6e155..f2c30a78e8 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.h +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitILAsm.h @@ -18,7 +18,7 @@ // 3) Can optimize code at runtime for the specific CPU model. // There aren't really any disadvantages other than having to maintain a x86 emitter, // which we have to do anyway :) -// +// // To add a new asm routine, just add another const here, and add the code to Generate. // Also, possibly increase the size of the code buffer. diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL_Tables.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL_Tables.cpp index c84310eecd..a9ed852452 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL_Tables.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/JitIL_Tables.cpp @@ -29,7 +29,7 @@ struct GekkoOPTemplate //GekkoOPInfo opinfo; // Doesn't need opinfo, Interpreter fills it out }; -static GekkoOPTemplate primarytable[] = +static GekkoOPTemplate primarytable[] = { {4, &JitIL::DynaRunTable4}, //"RunTable4", OPTYPE_SUBTABLE | (4<<24), 0}}, {19, &JitIL::DynaRunTable19}, //"RunTable19", OPTYPE_SUBTABLE | (19<<24), 0}}, @@ -110,7 +110,7 @@ static GekkoOPTemplate primarytable[] = {58, &JitIL::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}}, }; -static GekkoOPTemplate table4[] = +static GekkoOPTemplate table4[] = { //SUBOP10 {0, &JitIL::Default}, //"ps_cmpu0", OPTYPE_PS, FL_SET_CRn}}, {32, &JitIL::Default}, //"ps_cmpo0", OPTYPE_PS, FL_SET_CRn}}, @@ -126,9 +126,9 @@ static GekkoOPTemplate table4[] = {624, &JitIL::ps_mergeXX}, //"ps_merge11", OPTYPE_PS, FL_RC_BIT}}, {1014, &JitIL::Default}, //"dcbz_l", OPTYPE_SYSTEM, 0}}, -}; +}; -static GekkoOPTemplate table4_2[] = +static GekkoOPTemplate table4_2[] = { {10, &JitIL::ps_sum}, //"ps_sum0", OPTYPE_PS, 0}}, {11, &JitIL::ps_sum}, //"ps_sum1", OPTYPE_PS, 0}}, @@ -150,15 +150,15 @@ static GekkoOPTemplate table4_2[] = }; -static GekkoOPTemplate table4_3[] = +static GekkoOPTemplate table4_3[] = { {6, &JitIL::Default}, //"psq_lx", OPTYPE_PS, 0}}, {7, &JitIL::Default}, //"psq_stx", OPTYPE_PS, 0}}, {38, &JitIL::Default}, //"psq_lux", OPTYPE_PS, 0}}, - {39, &JitIL::Default}, //"psq_stux", OPTYPE_PS, 0}}, + {39, &JitIL::Default}, //"psq_stux", OPTYPE_PS, 0}}, }; -static GekkoOPTemplate table19[] = +static GekkoOPTemplate table19[] = { {528, &JitIL::bcctrx}, //"bcctrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, {16, &JitIL::bclrx}, //"bclrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, @@ -170,16 +170,16 @@ static GekkoOPTemplate table19[] = {449, &JitIL::crXX}, //"cror", OPTYPE_CR, FL_EVIL}}, {417, &JitIL::crXX}, //"crorc", OPTYPE_CR, FL_EVIL}}, {193, &JitIL::crXX}, //"crxor", OPTYPE_CR, FL_EVIL}}, - + {150, &JitIL::DoNothing}, //"isync", OPTYPE_ICACHE, FL_EVIL}}, {0, &JitIL::mcrf}, //"mcrf", OPTYPE_SYSTEM, FL_EVIL}}, - + {50, &JitIL::rfi}, //"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1}}, {18, &JitIL::Default}, //"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS}} }; -static GekkoOPTemplate table31[] = +static GekkoOPTemplate table31[] = { {28, &JitIL::boolX}, //"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {60, &JitIL::boolX}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, @@ -253,7 +253,7 @@ static GekkoOPTemplate table31[] = {661, &JitIL::Default}, //"stswx", OPTYPE_STORE, FL_EVIL}}, {725, &JitIL::Default}, //"stswi", OPTYPE_STORE, FL_EVIL}}, - // fp load/store + // fp load/store {535, &JitIL::lfsx}, //"lfsx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, {567, &JitIL::Default}, //"lfsux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B}}, {599, &JitIL::Default}, //"lfdx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, @@ -291,8 +291,8 @@ static GekkoOPTemplate table31[] = {566, &JitIL::Default}, //"tlbsync", OPTYPE_SYSTEM, 0}}, }; -static GekkoOPTemplate table31_2[] = -{ +static GekkoOPTemplate table31_2[] = +{ {266, &JitIL::addx}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {778, &JitIL::addx}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {10, &JitIL::Default}, //"addcx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}}, @@ -319,21 +319,21 @@ static GekkoOPTemplate table31_2[] = {200, &JitIL::Default}, //"subfzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}}, }; -static GekkoOPTemplate table59[] = +static GekkoOPTemplate table59[] = { - {18, &JitIL::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, - {20, &JitIL::fp_arith_s}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {21, &JitIL::fp_arith_s}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {18, &JitIL::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, + {20, &JitIL::fp_arith_s}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {21, &JitIL::fp_arith_s}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, // {22, &JitIL::Default}, //"fsqrtsx", OPTYPE_FPU, FL_RC_BIT_F}}, // Not implemented on gekko - {24, &JitIL::Default}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, - {25, &JitIL::fp_arith_s}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {28, &JitIL::fmaddXX}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {29, &JitIL::fmaddXX}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {30, &JitIL::fmaddXX}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {31, &JitIL::fmaddXX}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, -}; + {24, &JitIL::Default}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, + {25, &JitIL::fp_arith_s}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {28, &JitIL::fmaddXX}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {29, &JitIL::fmaddXX}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {30, &JitIL::fmaddXX}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {31, &JitIL::fmaddXX}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, +}; -static GekkoOPTemplate table63[] = +static GekkoOPTemplate table63[] = { {264, &JitIL::fsign}, //"fabsx", OPTYPE_FPU, FL_RC_BIT_F}}, {32, &JitIL::fcmpx}, //"fcmpo", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -353,7 +353,7 @@ static GekkoOPTemplate table63[] = {711, &JitIL::Default}, //"mtfsfx", OPTYPE_SYSTEMFP, 0, 2}}, }; -static GekkoOPTemplate table63_2[] = +static GekkoOPTemplate table63_2[] = { {18, &JitIL::Default}, //"fdivx", OPTYPE_FPU, FL_RC_BIT_F, 30}}, {20, &JitIL::Default}, //"fsubx", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -397,7 +397,7 @@ void InitTables() return; //clear - for (auto& tpl : dynaOpTable59) + for (auto& tpl : dynaOpTable59) { tpl = &JitIL::unknown_instruction; } @@ -407,7 +407,7 @@ void InitTables() dynaOpTable4 [i] = &JitIL::unknown_instruction; dynaOpTable19[i] = &JitIL::unknown_instruction; dynaOpTable31[i] = &JitIL::unknown_instruction; - dynaOpTable63[i] = &JitIL::unknown_instruction; + dynaOpTable63[i] = &JitIL::unknown_instruction; } for (auto& tpl : primarytable) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/Jit.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/Jit.cpp index c7cdb81d21..4083a383e9 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/Jit.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/Jit.cpp @@ -54,7 +54,7 @@ void JitArm::Init() jo.optimizeGatherPipe = true; } -void JitArm::ClearCache() +void JitArm::ClearCache() { ClearCodeSpace(); blocks.Clear(); @@ -93,7 +93,7 @@ void JitArm::HLEFunction(UGeckoInstruction _inst) fpr.Flush(); MOVI2R(R0, js.compilerPC); MOVI2R(R1, _inst.hex); - QuickCallFunction(R14, (void*)&HLE::Execute); + QuickCallFunction(R14, (void*)&HLE::Execute); ARMReg rA = gpr.GetReg(); LDR(rA, R9, PPCSTATE_OFF(npc)); WriteExitDestInR(rA); @@ -158,7 +158,7 @@ void JitArm::DoDownCount() } gpr.Unlock(rA, rB); } -void JitArm::WriteExitDestInR(ARMReg Reg) +void JitArm::WriteExitDestInR(ARMReg Reg) { STR(Reg, R9, PPCSTATE_OFF(pc)); Cleanup(); @@ -167,7 +167,7 @@ void JitArm::WriteExitDestInR(ARMReg Reg) B(Reg); gpr.Unlock(Reg); } -void JitArm::WriteRfiExitDestInR(ARMReg Reg) +void JitArm::WriteRfiExitDestInR(ARMReg Reg) { STR(Reg, R9, PPCSTATE_OFF(pc)); Cleanup(); @@ -190,27 +190,27 @@ void JitArm::WriteExit(u32 destination, int exit_num) { Cleanup(); - DoDownCount(); + DoDownCount(); //If nobody has taken care of this yet (this can be removed when all branches are done) JitBlock *b = js.curBlock; b->exitAddress[exit_num] = destination; b->exitPtrs[exit_num] = GetWritableCodePtr(); - + // Link opportunity! int block = blocks.GetBlockNumberFromStartAddress(destination); - if (block >= 0 && jo.enableBlocklink) + if (block >= 0 && jo.enableBlocklink) { // It exists! Joy of joy! B(blocks.GetBlock(block)->checkedEntry); b->linkStatus[exit_num] = true; } - else + else { ARMReg A = gpr.GetReg(false); MOVI2R(A, destination); STR(A, R9, PPCSTATE_OFF(pc)); MOVI2R(A, (u32)asm_routines.dispatcher); - B(A); + B(A); } } @@ -247,11 +247,11 @@ void JitArm::Trace() sprintf(reg, "f%02d: %016x ", i, riPS0(i)); strncat(fregs, reg, 750); } -#endif +#endif - DEBUG_LOG(DYNA_REC, "JITARM PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", - PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], - PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, + DEBUG_LOG(DYNA_REC, "JITARM PC: %08x SRR0: %08x SRR1: %08x CRfast: %02x%02x%02x%02x%02x%02x%02x%02x FPSCR: %08x MSR: %08x LR: %08x %s %s", + PC, SRR0, SRR1, PowerPC::ppcState.cr_fast[0], PowerPC::ppcState.cr_fast[1], PowerPC::ppcState.cr_fast[2], PowerPC::ppcState.cr_fast[3], + PowerPC::ppcState.cr_fast[4], PowerPC::ppcState.cr_fast[5], PowerPC::ppcState.cr_fast[6], PowerPC::ppcState.cr_fast[7], PowerPC::ppcState.fpscr, PowerPC::ppcState.msr, PowerPC::ppcState.spr[8], regs, fregs); } @@ -354,7 +354,7 @@ const u8* JitArm::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBlo } PPCAnalyst::CodeOp *ops = code_buf->codebuffer; - const u8 *start = GetCodePtr(); + const u8 *start = GetCodePtr(); b->checkedEntry = start; b->runCount = 0; @@ -389,7 +389,7 @@ const u8* JitArm::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBlo MOVI2R(A, (u32)asm_routines.fpException); B(A); SetCC(); - gpr.Unlock(A, C); + gpr.Unlock(A, C); } // Conditionally add profiling code. if (Profiler::g_ProfileBlocks) { @@ -398,7 +398,7 @@ const u8* JitArm::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBlo MOVI2R(rA, (u32)&b->runCount); // Load in to register LDR(rB, rA); // Load the actual value in to R11. ADD(rB, rB, 1); // Add one to the value - STR(rB, rA); // Now store it back in the memory location + STR(rB, rA); // Now store it back in the memory location // get start tic PROFILER_QUERY_PERFORMANCE_COUNTER(&b->ticStart); gpr.Unlock(rA, rB); @@ -498,7 +498,7 @@ const u8* JitArm::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBlo printf("Broken Block going to 0x%08x\n", nextPC); WriteExit(nextPC, 0); } - + b->flags = js.block_flags; b->codeSize = (u32)(GetCodePtr() - normalEntry); b->originalSize = size; diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h b/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h index 06ebccd85c..fc1911c5bf 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h +++ b/Source/Core/Core/Src/PowerPC/JitArm32/Jit.h @@ -47,8 +47,8 @@ if (Core::g_CoreStartupParameter.bJITOff || \ Core::g_CoreStartupParameter.setting) \ {Default(inst); return;} -#define PPCSTATE_OFF(elem) ((s32)STRUCT_OFF(PowerPC::ppcState, elem) - (s32)STRUCT_OFF(PowerPC::ppcState, spr[0])) -class JitArm : public JitBase, public ArmGen::ARMXCodeBlock +#define PPCSTATE_OFF(elem) ((s32)STRUCT_OFF(PowerPC::ppcState, elem) - (s32)STRUCT_OFF(PowerPC::ppcState, spr[0])) +class JitArm : public JitBase, public ArmGen::ARMXCodeBlock { private: JitArmBlockCache blocks; @@ -67,7 +67,7 @@ private: void PrintDebug(UGeckoInstruction inst, u32 level); - void Helper_UpdateCR1(ARMReg fpscr, ARMReg temp); + void Helper_UpdateCR1(ARMReg fpscr, ARMReg temp); void SetFPException(ARMReg Reg, u32 Exception); public: @@ -81,7 +81,7 @@ public: void Jit(u32 em_address); const u8* DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBlock *b); - + JitBaseBlockCache *GetBlockCache() { return &blocks; } const u8 *BackPatch(u8 *codePtr, u32 em_address, void *ctx); @@ -93,10 +93,10 @@ public: void ClearCache(); const u8 *GetDispatcher() { - return asm_routines.dispatcher; + return asm_routines.dispatcher; } CommonAsmRoutinesBase *GetAsmRoutines() { - return &asm_routines; + return &asm_routines; } const char *GetName() { @@ -154,7 +154,7 @@ public: void sc(UGeckoInstruction _inst); void rfi(UGeckoInstruction _inst); void bcctrx(UGeckoInstruction _inst); - + // Integer void arith(UGeckoInstruction _inst); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_BackPatch.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_BackPatch.cpp index 34eb69a540..bb085e96a8 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_BackPatch.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_BackPatch.cpp @@ -26,7 +26,7 @@ // This generates some fairly heavy trampolines, but: // 1) It's really necessary. We don't know anything about the context. -// 2) It doesn't really hurt. Only instructions that access I/O will get these, and there won't be +// 2) It doesn't really hurt. Only instructions that access I/O will get these, and there won't be // that many of them in a typical program/game. bool DisamLoadStore(const u32 inst, ARMReg &rD, u8 &accessSize, bool &Store) { @@ -81,7 +81,7 @@ const u8 *JitArm::BackPatch(u8 *codePtr, u32, void *ctx_void) { // TODO: This ctx needs to be filled with our information SContext *ctx = (SContext *)ctx_void; - + // We need to get the destination register before we start u32 Value = *(u32*)codePtr; ARMReg rD; @@ -114,7 +114,7 @@ const u8 *JitArm::BackPatch(u8 *codePtr, u32, void *ctx_void) } emitter.PUSH(4, R0, R1, R2, R3); // 3 emitter.MOV(R0, rD); // Value - 4 - emitter.MOV(R1, R10); // Addr- 5 + emitter.MOV(R1, R10); // Addr- 5 emitter.BL(R14); // 6 emitter.POP(4, R0, R1, R2, R3); // 7 u32 newPC = ctx->CTX_PC - (ARMREGOFFSET + 4 * 4); @@ -129,13 +129,13 @@ const u8 *JitArm::BackPatch(u8 *codePtr, u32, void *ctx_void) switch (accessSize) { case 8: // 8bit - emitter.MOVI2R(R14, (u32)&Memory::Read_U8, false); // 2 + emitter.MOVI2R(R14, (u32)&Memory::Read_U8, false); // 2 break; case 16: // 16bit - emitter.MOVI2R(R14, (u32)&Memory::Read_U16, false); // 2 + emitter.MOVI2R(R14, (u32)&Memory::Read_U16, false); // 2 break; case 32: // 32bit - emitter.MOVI2R(R14, (u32)&Memory::Read_U32, false); // 2 + emitter.MOVI2R(R14, (u32)&Memory::Read_U32, false); // 2 break; } emitter.PUSH(4, R0, R1, R2, R3); // 3 diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp index dc24366df7..eaf9d944ae 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Branch.cpp @@ -30,12 +30,12 @@ // No need for a disable-mechanism. // If defined, clears CR0 at blr and bl-s. If the assumption that -// flags never carry over between functions holds, then the task for +// flags never carry over between functions holds, then the task for // an optimizer becomes much easier. // #define ACID_TEST -// Zelda and many more games seem to pass the Acid Test. +// Zelda and many more games seem to pass the Acid Test. using namespace ArmGen; @@ -65,7 +65,7 @@ void JitArm::rfi(UGeckoInstruction inst) gpr.Flush(); fpr.Flush(); - + // See Interpreter rfi for details const u32 mask = 0x87C0FFFF; const u32 clearMSR13 = 0xFFFBFFFF; // Mask used to clear the bit MSR[13] @@ -93,7 +93,7 @@ void JitArm::rfi(UGeckoInstruction inst) STR(rB, R9, PPCSTATE_OFF(msr)); // STR rB in to rA LDR(rA, R9, PPCSTATE_OFF(spr[SPR_SRR0])); - + gpr.Unlock(rB, rC, rD); WriteRfiExitDestInR(rA); // rA gets unlocked here //AND(32, M(&MSR), Imm32((~mask) & clearMSR13)); @@ -168,7 +168,7 @@ void JitArm::bcx(UGeckoInstruction inst) LDR(rB, R9, PPCSTATE_OFF(spr[SPR_CTR])); SUBS(rB, rB, 1); STR(rB, R9, PPCSTATE_OFF(spr[SPR_CTR])); - + //SUB(32, M(&CTR), Imm8(1)); if (inst.BO & BO_BRANCH_IF_CTR_0) pCTRDontBranch = B_CC(CC_NEQ); @@ -183,7 +183,7 @@ void JitArm::bcx(UGeckoInstruction inst) TST(rA, 8 >> (inst.BI & 3)); //TEST(8, M(&PowerPC::ppcState.cr_fast[inst.BI >> 2]), Imm8(8 >> (inst.BI & 3))); - if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch + if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch pConditionDontBranch = B_CC(CC_EQ); // Zero else pConditionDontBranch = B_CC(CC_NEQ); // Not Zero @@ -248,7 +248,7 @@ void JitArm::bcctrx(UGeckoInstruction inst) // BO_2 == 011zy -> b if true ARMReg rA = gpr.GetReg(); ARMReg rB = gpr.GetReg(); - + LDRB(rA, R9, PPCSTATE_OFF(cr_fast) + (inst.BI >> 2)); TST(rA, 8 >> (inst.BI & 3)); CCFlags branch; @@ -301,7 +301,7 @@ void JitArm::bclrx(UGeckoInstruction inst) LDR(rB, R9, PPCSTATE_OFF(spr[SPR_CTR])); SUBS(rB, rB, 1); STR(rB, R9, PPCSTATE_OFF(spr[SPR_CTR])); - + //SUB(32, M(&CTR), Imm8(1)); if (inst.BO & BO_BRANCH_IF_CTR_0) pCTRDontBranch = B_CC(CC_NEQ); @@ -315,7 +315,7 @@ void JitArm::bclrx(UGeckoInstruction inst) LDRB(rA, R9, PPCSTATE_OFF(cr_fast) + (inst.BI >> 2)); TST(rA, 8 >> (inst.BI & 3)); //TEST(8, M(&PowerPC::ppcState.cr_fast[inst.BI >> 2]), Imm8(8 >> (inst.BI & 3))); - if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch + if (inst.BO & BO_BRANCH_IF_TRUE) // Conditional branch pConditionDontBranch = B_CC(CC_EQ); // Zero else pConditionDontBranch = B_CC(CC_NEQ); // Not Zero @@ -328,7 +328,7 @@ void JitArm::bclrx(UGeckoInstruction inst) // AND(32, M(&PowerPC::ppcState.cr), Imm32(~(0xFF000000))); #endif - //MOV(32, R(EAX), M(&LR)); + //MOV(32, R(EAX), M(&LR)); //AND(32, R(EAX), Imm32(0xFFFFFFFC)); LDR(rA, R9, PPCSTATE_OFF(spr[SPR_LR])); BIC(rA, rA, 0x3); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FPUtils.h b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FPUtils.h index c186ae9696..52815f571b 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FPUtils.h +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FPUtils.h @@ -19,7 +19,7 @@ static Operand2 FXMask(2, 1); // 0x80000000 static Operand2 VEMask(0x40, 0); // 0x40 static Operand2 XXException(2, 4); // 0x2000000 -static Operand2 CVIException(1, 0xC); // 0x100 +static Operand2 CVIException(1, 0xC); // 0x100 static Operand2 NANException(1, 4); // 0x1000000 static Operand2 VXVCException(8, 8); // 0x80000 static Operand2 ZXException(1, 3); // 0x4000000 @@ -58,7 +58,7 @@ inline void JitArm::SetFPException(ARMReg Reg, u32 Exception) ORR(Reg, Reg, *ExceptionMask); CMP(rB, Reg); SetCC(CC_NEQ); - ORR(Reg, Reg, FXMask); // If exception is set, set exception bit + ORR(Reg, Reg, FXMask); // If exception is set, set exception bit SetCC(); BIC(Reg, Reg, FRFIMask); gpr.Unlock(rB); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp index e27bb90e69..28e9723333 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp @@ -49,7 +49,7 @@ void JitArm::fctiwx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); ARMReg V1 = fpr.GetReg(); ARMReg V2 = fpr.GetReg(); - + ARMReg rA = gpr.GetReg(); ARMReg fpscrReg = gpr.GetReg(); @@ -82,7 +82,7 @@ void JitArm::fctiwx(UGeckoInstruction inst) // Within ranges, convert to integer // Set rounding mode first // PPC <-> ARM rounding modes - // 0, 1, 2, 3 <-> 0, 3, 1, 2 + // 0, 1, 2, 3 <-> 0, 3, 1, 2 ARMReg rB = gpr.GetReg(); VMRS(rA); // Bits 22-23 @@ -91,7 +91,7 @@ void JitArm::fctiwx(UGeckoInstruction inst) LDR(rB, R9, PPCSTATE_OFF(fpscr)); AND(rB, rB, 0x3); // Get the FPSCR rounding bits CMP(rB, 1); - SetCC(CC_EQ); // zero + SetCC(CC_EQ); // zero ORR(rA, rA, Operand2(3, 5)); SetCC(CC_NEQ); CMP(rB, 2); // +inf @@ -101,10 +101,10 @@ void JitArm::fctiwx(UGeckoInstruction inst) CMP(rB, 3); // -inf SetCC(CC_EQ); ORR(rA, rA, Operand2(2, 5)); - SetCC(); + SetCC(); VMSR(rA); ORR(rA, rA, Operand2(3, 5)); - VCVT(vD, vB, TO_INT | IS_SIGNED); + VCVT(vD, vB, TO_INT | IS_SIGNED); VMSR(rA); gpr.Unlock(rB); VCMPE(vD, vB); @@ -114,7 +114,7 @@ void JitArm::fctiwx(UGeckoInstruction inst) BIC(fpscrReg, fpscrReg, FRFIMask); FixupBranch DoneEqual = B(); SetCC(); - SetFPException(fpscrReg, FPSCR_XX); + SetFPException(fpscrReg, FPSCR_XX); ORR(fpscrReg, fpscrReg, FIMask); VABS(V1, vB); VABS(V2, vD); @@ -156,7 +156,7 @@ void JitArm::fctiwzx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); ARMReg V1 = fpr.GetReg(); ARMReg V2 = fpr.GetReg(); - + ARMReg rA = gpr.GetReg(); ARMReg fpscrReg = gpr.GetReg(); @@ -187,7 +187,7 @@ void JitArm::fctiwzx(UGeckoInstruction inst) SetJumpTarget(noException); } // Within ranges, convert to integer - VCVT(vD, vB, TO_INT | IS_SIGNED | ROUND_TO_ZERO); + VCVT(vD, vB, TO_INT | IS_SIGNED | ROUND_TO_ZERO); VCMPE(vD, vB); VMRS(_PC); @@ -195,7 +195,7 @@ void JitArm::fctiwzx(UGeckoInstruction inst) BIC(fpscrReg, fpscrReg, FRFIMask); FixupBranch DoneEqual = B(); SetCC(); - SetFPException(fpscrReg, FPSCR_XX); + SetFPException(fpscrReg, FPSCR_XX); ORR(fpscrReg, fpscrReg, FIMask); VABS(V1, vB); VABS(V2, vD); @@ -247,29 +247,29 @@ void JitArm::fcmpo(UGeckoInstruction inst) VCMPE(vA, vB); VMRS(_PC); SetCC(CC_LT); - ORR(fpscrReg, fpscrReg, LessThan); + ORR(fpscrReg, fpscrReg, LessThan); MOV(crReg, 8); Done1 = B(); SetCC(CC_GT); - ORR(fpscrReg, fpscrReg, GreaterThan); + ORR(fpscrReg, fpscrReg, GreaterThan); MOV(crReg, 4); Done2 = B(); SetCC(CC_EQ); - ORR(fpscrReg, fpscrReg, EqualTo); + ORR(fpscrReg, fpscrReg, EqualTo); MOV(crReg, 2); Done3 = B(); SetCC(); - - ORR(fpscrReg, fpscrReg, NANRes); + + ORR(fpscrReg, fpscrReg, NANRes); MOV(crReg, 1); - + VCMPE(vA, vA); VMRS(_PC); - FixupBranch NanA = B_CC(CC_NEQ); + FixupBranch NanA = B_CC(CC_NEQ); VCMPE(vB, vB); VMRS(_PC); FixupBranch NanB = B_CC(CC_NEQ); - + SetFPException(fpscrReg, FPSCR_VXVC); FixupBranch Done4 = B(); @@ -277,9 +277,9 @@ void JitArm::fcmpo(UGeckoInstruction inst) SetJumpTarget(NanB); SetFPException(fpscrReg, FPSCR_VXSNAN); - + TST(fpscrReg, VEMask); - + FixupBranch noVXVC = B_CC(CC_NEQ); SetFPException(fpscrReg, FPSCR_VXVC); @@ -316,25 +316,25 @@ void JitArm::fcmpu(UGeckoInstruction inst) VCMPE(vA, vB); VMRS(_PC); SetCC(CC_LT); - ORR(fpscrReg, fpscrReg, LessThan); + ORR(fpscrReg, fpscrReg, LessThan); MOV(crReg, 8); Done1 = B(); SetCC(CC_GT); - ORR(fpscrReg, fpscrReg, GreaterThan); + ORR(fpscrReg, fpscrReg, GreaterThan); MOV(crReg, 4); Done2 = B(); SetCC(CC_EQ); - ORR(fpscrReg, fpscrReg, EqualTo); + ORR(fpscrReg, fpscrReg, EqualTo); MOV(crReg, 2); Done3 = B(); SetCC(); - - ORR(fpscrReg, fpscrReg, NANRes); + + ORR(fpscrReg, fpscrReg, NANRes); MOV(crReg, 1); - + VCMPE(vA, vA); VMRS(_PC); - FixupBranch NanA = B_CC(CC_NEQ); + FixupBranch NanA = B_CC(CC_NEQ); VCMPE(vB, vB); VMRS(_PC); FixupBranch NanB = B_CC(CC_NEQ); @@ -344,7 +344,7 @@ void JitArm::fcmpu(UGeckoInstruction inst) SetJumpTarget(NanB); SetFPException(fpscrReg, FPSCR_VXSNAN); - + SetJumpTarget(Done1); SetJumpTarget(Done2); SetJumpTarget(Done3); @@ -546,7 +546,7 @@ void JitArm::fmaddsx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); VMOV(V0, vB0); - + VMLA(V0, vA0, vC0); VMOV(vD0, V0); @@ -575,7 +575,7 @@ void JitArm::fmaddx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); VMOV(V0, vB0); - + VMLA(V0, vA0, vC0); VMOV(vD0, V0); @@ -603,7 +603,7 @@ void JitArm::fnmaddx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); VMOV(V0, vB0); - + VMLA(V0, vA0, vC0); VNEG(vD0, V0); @@ -631,7 +631,7 @@ void JitArm::fnmaddsx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); VMOV(V0, vB0); - + VMLA(V0, vA0, vC0); VNEG(vD0, V0); @@ -661,7 +661,7 @@ void JitArm::fresx(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); MOVI2R(V0, 1.0, INVALID_REG); // temp reg isn't needed for 1.0 - + VDIV(vD1, V0, vB0); VDIV(vD0, V0, vB0); fpr.Unlock(V0); @@ -671,7 +671,7 @@ void JitArm::fselx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -681,7 +681,7 @@ void JitArm::fselx(UGeckoInstruction inst) ARMReg vB0 = fpr.R0(b); ARMReg vC0 = fpr.R0(c); ARMReg vD0 = fpr.R0(d, false); - + VCMP(vA0); VMRS(_PC); @@ -715,7 +715,7 @@ void JitArm::frsqrtex(UGeckoInstruction inst) VCMP(vB0); VMRS(_PC); FixupBranch Less0 = B_CC(CC_LT); - VMOV(vD0, V0); + VMOV(vD0, V0); SetFPException(fpscrReg, FPSCR_VXSQRT); FixupBranch SkipOrr0 = B(); SetJumpTarget(Less0); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp index 0df1cd965e..4d79dc037e 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp @@ -212,7 +212,7 @@ void JitArm::arith(UGeckoInstruction inst) bool carry = false; bool isUnsigned = false; bool shiftedImm = false; - + switch (inst.OPCD) { case 7: // mulli @@ -237,7 +237,7 @@ void JitArm::arith(UGeckoInstruction inst) carry = true; break; case 15: // addis - shiftedImm = true; + shiftedImm = true; case 14: // addi if (a) { @@ -253,7 +253,7 @@ void JitArm::arith(UGeckoInstruction inst) Imm[0] = 0; } isImm[1] = true; - Imm[1] = inst.SIMM_16 << (shiftedImm ? 16 : 0); + Imm[1] = inst.SIMM_16 << (shiftedImm ? 16 : 0); break; case 25: // oris shiftedImm = true; @@ -264,7 +264,7 @@ void JitArm::arith(UGeckoInstruction inst) Imm[0] = gpr.GetImm(s); } isImm[1] = true; - Imm[1] = inst.UIMM << (shiftedImm ? 16 : 0); + Imm[1] = inst.UIMM << (shiftedImm ? 16 : 0); break; case 27: // xoris shiftedImm = true; @@ -275,7 +275,7 @@ void JitArm::arith(UGeckoInstruction inst) Imm[0] = gpr.GetImm(s); } isImm[1] = true; - Imm[1] = inst.UIMM << (shiftedImm ? 16 : 0); + Imm[1] = inst.UIMM << (shiftedImm ? 16 : 0); break; case 29: // andis_rc shiftedImm = true; @@ -286,7 +286,7 @@ void JitArm::arith(UGeckoInstruction inst) Imm[0] = gpr.GetImm(s); } isImm[1] = true; - Imm[1] = inst.UIMM << (shiftedImm ? 16 : 0); + Imm[1] = inst.UIMM << (shiftedImm ? 16 : 0); Rc = true; break; @@ -296,13 +296,13 @@ void JitArm::arith(UGeckoInstruction inst) case 24: // slwx case 28: // andx case 60: // andcx - case 124: // norx + case 124: // norx case 284: // eqvx case 316: // xorx - case 412: // orcx + case 412: // orcx case 444: // orx case 476: // nandx - case 536: // srwx + case 536: // srwx case 792: // srawx if (gpr.IsImm(s)) { @@ -441,7 +441,7 @@ void JitArm::arith(UGeckoInstruction inst) } break; } - if (carry) ComputeCarry(hasCarry); + if (carry) ComputeCarry(hasCarry); if (Rc) ComputeRC(gpr.GetImm(dest), 0); return; } @@ -517,7 +517,7 @@ void JitArm::arith(UGeckoInstruction inst) gpr.Unlock(rA); } break; - case 31: + case 31: switch(inst.SUBOP10) { case 24: @@ -599,13 +599,13 @@ void JitArm::arith(UGeckoInstruction inst) RA = gpr.R(a); RS = gpr.R(s); RB = gpr.R(b); - LSRS(RA, RS, RB); + LSRS(RA, RS, RB); break; case 792: RA = gpr.R(a); RS = gpr.R(s); RB = gpr.R(b); - ASRS(RA, RS, RB); + ASRS(RA, RS, RB); break; case 10: // addcx case 266: @@ -644,7 +644,7 @@ void JitArm::cntlzwx(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(bJITIntegerOff) u32 a = inst.RA, s = inst.RS; - + ARMReg RA = gpr.R(a); ARMReg RS = gpr.R(s); CLZ(RA, RS); @@ -679,7 +679,7 @@ void JitArm::extshx(UGeckoInstruction inst) if (gpr.IsImm(s)) { gpr.SetImmediate(a, (u32)(s32)(s16)gpr.GetImm(s)); - if (inst.Rc) ComputeRC(gpr.GetImm(a), 0); + if (inst.Rc) ComputeRC(gpr.GetImm(a), 0); return; } ARMReg rA = gpr.R(a); @@ -699,7 +699,7 @@ void JitArm::extsbx(UGeckoInstruction inst) if (gpr.IsImm(s)) { gpr.SetImmediate(a, (u32)(s32)(s8)gpr.GetImm(s)); - if (inst.Rc) ComputeRC(gpr.GetImm(a), 0); + if (inst.Rc) ComputeRC(gpr.GetImm(a), 0); return; } ARMReg rA = gpr.R(a); @@ -720,7 +720,7 @@ void JitArm::cmp (UGeckoInstruction inst) if (gpr.IsImm(a) && gpr.IsImm(b)) { - ComputeRC((s32)gpr.GetImm(a) - (s32)gpr.GetImm(b), crf); + ComputeRC((s32)gpr.GetImm(a) - (s32)gpr.GetImm(b), crf); return; } @@ -765,7 +765,7 @@ void JitArm::cmpl(UGeckoInstruction inst) CMP(RA, RB); // Unsigned GenerateRC() - + MOV(rA, 0x2); // Result == 0 SetCC(CC_LO); MOV(rA, 0x8); // Result < 0 SetCC(CC_HI); MOV(rA, 0x4); // Result > 0 @@ -794,7 +794,7 @@ void JitArm::cmpli(UGeckoInstruction inst) CMP(RA, rA); } // Unsigned GenerateRC() - + MOV(rA, 0x2); // Result == 0 SetCC(CC_LO); MOV(rA, 0x8); // Result < 0 SetCC(CC_HI); MOV(rA, 0x4); // Result > 0 @@ -842,7 +842,7 @@ void JitArm::rlwimix(UGeckoInstruction inst) BIC (rB, RA, rA); // RA & ~mask AND (rA, rA, Shift); ORRS(RA, rB, rA); - GenerateRC(); + GenerateRC(); } else { @@ -868,7 +868,7 @@ void JitArm::rlwinmx(UGeckoInstruction inst) if (inst.Rc) { ANDS(RA, rA, Shift); - GenerateRC(); + GenerateRC(); } else AND (RA, rA, Shift); @@ -893,11 +893,11 @@ void JitArm::rlwnmx(UGeckoInstruction inst) MOV(rB, 32); SUB(rB, rB, RB); - Operand2 Shift(RS, ST_ROR, rB); // Register shifted register + Operand2 Shift(RS, ST_ROR, rB); // Register shifted register if (inst.Rc) { ANDS(RA, rA, Shift); - GenerateRC(); + GenerateRC(); } else AND (RA, rA, Shift); @@ -918,7 +918,7 @@ void JitArm::srawix(UGeckoInstruction inst) ARMReg RS = gpr.R(s); ARMReg tmp = gpr.GetReg(); Operand2 mask = Operand2(2, 2); // XER_CA_MASK - + MOV(tmp, RS); ASRS(RA, RS, amount); if (inst.Rc) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp index 1c5c55a369..f04c88d6c3 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp @@ -106,13 +106,13 @@ void JitArm::SafeStoreFromReg(bool fastmem, s32 dest, u32 value, s32 regOffset, switch(accessSize) { case 32: - MOVI2R(rA, (u32)&Memory::Write_U32); + MOVI2R(rA, (u32)&Memory::Write_U32); break; case 16: - MOVI2R(rA, (u32)&Memory::Write_U16); + MOVI2R(rA, (u32)&Memory::Write_U16); break; case 8: - MOVI2R(rA, (u32)&Memory::Write_U8); + MOVI2R(rA, (u32)&Memory::Write_U8); break; } MOV(rB, RS); @@ -189,7 +189,7 @@ void JitArm::stX(UGeckoInstruction inst) accessSize = 8; break; } - SafeStoreFromReg(fastmem, zeroA ? a ? a : -1 : a, s, regOffset, accessSize, offset); + SafeStoreFromReg(fastmem, zeroA ? a ? a : -1 : a, s, regOffset, accessSize, offset); if (update) { ARMReg rA = gpr.GetReg(); @@ -268,8 +268,8 @@ void JitArm::SafeLoadToReg(bool fastmem, u32 dest, s32 addr, s32 offsetReg, int MOV(R10, gpr.R(addr)); else MOV(R10, 0); - - UnsafeLoadToReg(RD, R10, accessSize, offset); + + UnsafeLoadToReg(RD, R10, accessSize, offset); return; } ARMReg rA = gpr.GetReg(); @@ -282,17 +282,17 @@ void JitArm::SafeLoadToReg(bool fastmem, u32 dest, s32 addr, s32 offsetReg, int if (addr != -1) ADD(rA, rA, gpr.R(addr)); - + switch (accessSize) { case 8: - MOVI2R(rB, (u32)&Memory::Read_U8); + MOVI2R(rB, (u32)&Memory::Read_U8); break; case 16: - MOVI2R(rB, (u32)&Memory::Read_U16); + MOVI2R(rB, (u32)&Memory::Read_U16); break; case 32: - MOVI2R(rB, (u32)&Memory::Read_U32); + MOVI2R(rB, (u32)&Memory::Read_U32); break; } PUSH(4, R0, R1, R2, R3); @@ -323,7 +323,7 @@ void JitArm::lXX(UGeckoInstruction inst) u32 accessSize = 0; s32 offsetReg = -1; bool zeroA = true; - bool update = false; + bool update = false; bool signExtend = false; bool reverse = false; bool fastmem = false; @@ -338,7 +338,7 @@ void JitArm::lXX(UGeckoInstruction inst) update = true; case 23: // lwzx accessSize = 32; - offsetReg = b; + offsetReg = b; break; case 119: //lbzux zeroA = false; @@ -401,7 +401,7 @@ void JitArm::lXX(UGeckoInstruction inst) accessSize = 16; break; } - + // Check for exception before loading ARMReg rA = gpr.GetReg(false); @@ -410,20 +410,20 @@ void JitArm::lXX(UGeckoInstruction inst) FixupBranch DoNotLoad = B_CC(CC_EQ); SafeLoadToReg(fastmem, d, zeroA ? a ? a : -1 : a, offsetReg, accessSize, offset, signExtend, reverse); - + if (update) { rA = gpr.GetReg(false); ARMReg RA = gpr.R(a); if (offsetReg == -1) - MOVI2R(rA, offset); + MOVI2R(rA, offset); else MOV(RA, gpr.R(offsetReg)); ADD(RA, RA, rA); } SetJumpTarget(DoNotLoad); - + // LWZ idle skipping if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && inst.OPCD == 32 && @@ -435,14 +435,14 @@ void JitArm::lXX(UGeckoInstruction inst) ARMReg RD = gpr.R(d); gpr.Flush(); fpr.Flush(); - + // if it's still 0, we can wait until the next event TST(RD, RD); FixupBranch noIdle = B_CC(CC_NEQ); - rA = gpr.GetReg(); - + rA = gpr.GetReg(); + MOVI2R(rA, (u32)&PowerPC::OnIdle); - MOVI2R(R0, PowerPC::ppcState.gpr[a] + (s32)(s16)inst.SIMM_16); + MOVI2R(R0, PowerPC::ppcState.gpr[a] + (s32)(s16)inst.SIMM_16); BL(rA); gpr.Unlock(rA); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp index c2f2f626ac..70998ced47 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp @@ -100,7 +100,7 @@ void JitArm::lfXX(UGeckoInstruction inst) if (offsetReg == -1) // uses SIMM_16 { MOVI2R(rB, offset); - ADD(rB, rB, RA); + ADD(rB, rB, RA); } else ADD(rB, gpr.R(offsetReg), RA); @@ -137,7 +137,7 @@ void JitArm::lfXX(UGeckoInstruction inst) LDR(rA, R9, PPCSTATE_OFF(Exceptions)); CMP(rA, EXCEPTION_DSI); FixupBranch DoNotLoad = B_CC(CC_EQ); - + if (update) MOV(RA, rB); @@ -161,24 +161,24 @@ void JitArm::lfXX(UGeckoInstruction inst) VLDR(v0, rB, 0); nemit.VREV64(I_8, v0, v0); // Byte swap to result } - } + } else { PUSH(4, R0, R1, R2, R3); MOV(R0, rB); if (single) { - MOVI2R(rA, (u32)&Memory::Read_U32); + MOVI2R(rA, (u32)&Memory::Read_U32); BL(rA); - VMOV(S0, R0); + VMOV(S0, R0); VCVT(v0, S0, 0); VCVT(v1, S0, 0); } else { - MOVI2R(rA, (u32)&Memory::Read_F64); + MOVI2R(rA, (u32)&Memory::Read_F64); BL(rA); #if !defined(__ARM_PCS_VFP) // SoftFP returns in R0 and R1 @@ -251,7 +251,7 @@ void JitArm::stfXX(UGeckoInstruction inst) } ARMReg v0 = fpr.R0(inst.FS); - + if (update) { RA = gpr.R(a); @@ -259,7 +259,7 @@ void JitArm::stfXX(UGeckoInstruction inst) if (offsetReg == -1) // uses SIMM_16 { MOVI2R(rB, offset); - ADD(rB, rB, RA); + ADD(rB, rB, RA); } else ADD(rB, gpr.R(offsetReg), RA); @@ -298,7 +298,7 @@ void JitArm::stfXX(UGeckoInstruction inst) { LDR(rA, R9, PPCSTATE_OFF(Exceptions)); CMP(rA, EXCEPTION_DSI); - + SetCC(CC_NEQ); MOV(RA, rB); SetCC(); @@ -328,7 +328,7 @@ void JitArm::stfXX(UGeckoInstruction inst) PUSH(4, R0, R1, R2, R3); if (single) { - MOVI2R(rA, (u32)&Memory::Write_U32); + MOVI2R(rA, (u32)&Memory::Write_U32); VMOV(R0, S0); MOV(R1, rB); @@ -337,7 +337,7 @@ void JitArm::stfXX(UGeckoInstruction inst) } else { - MOVI2R(rA, (u32)&Memory::Write_F64); + MOVI2R(rA, (u32)&Memory::Write_F64); #if !defined(__ARM_PCS_VFP) // SoftFP returns in R0 and R1 VMOV(R0, v0); MOV(R2, rB); @@ -366,7 +366,7 @@ void JitArm::stfs(UGeckoInstruction inst) ARMReg rB = gpr.GetReg(); ARMReg v0 = fpr.R0(inst.FS); VCVT(S0, v0, 0); - + if (inst.RA) { MOVI2R(rB, inst.SIMM_16); @@ -376,8 +376,8 @@ void JitArm::stfs(UGeckoInstruction inst) else MOVI2R(rB, (u32)inst.SIMM_16); - - MOVI2R(rA, (u32)&Memory::Write_U32); + + MOVI2R(rA, (u32)&Memory::Write_U32); PUSH(4, R0, R1, R2, R3); VMOV(R0, S0); MOV(R1, rB); @@ -385,7 +385,7 @@ void JitArm::stfs(UGeckoInstruction inst) BL(rA); POP(4, R0, R1, R2, R3); - + gpr.Unlock(rA, rB); } diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStorePaired.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStorePaired.cpp index d694fbd79b..244ae1db22 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStorePaired.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStorePaired.cpp @@ -25,7 +25,7 @@ void JitArm::psq_l(UGeckoInstruction inst) // R11 contains type // R10 is the ADDR if (js.memcheck || !Core::g_CoreStartupParameter.bFastmem) { Default(inst); return; } - + LDR(R11, R9, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I])); UBFX(R12, R11, 16, 3); // Type LSL(R12, R12, 2); @@ -63,7 +63,7 @@ void JitArm::psq_lx(UGeckoInstruction inst) // R11 contains type // R10 is the ADDR if (js.memcheck || !Core::g_CoreStartupParameter.bFastmem) { Default(inst); return; } - + LDR(R11, R9, PPCSTATE_OFF(spr[SPR_GQR0 + inst.Ix])); UBFX(R12, R11, 16, 3); // Type LSL(R12, R12, 2); @@ -91,7 +91,7 @@ void JitArm::psq_lx(UGeckoInstruction inst) ARMReg vD1 = fpr.R1(inst.RS, false); LDR(R14, R9, PPCSTATE_OFF(Exceptions)); CMP(R14, EXCEPTION_DSI); - SetCC(CC_NEQ); + SetCC(CC_NEQ); VCVT(vD0, S0, 0); if (!inst.Wx) @@ -108,7 +108,7 @@ void JitArm::psq_st(UGeckoInstruction inst) bool update = inst.OPCD == 61; s32 offset = inst.SIMM_12; - + // R12 contains scale // R11 contains type // R10 is the ADDR @@ -152,7 +152,7 @@ void JitArm::psq_stx(UGeckoInstruction inst) JITDISABLE(bJITLoadStorePairedOff) bool update = inst.SUBOP10 == 39; - + // R12 contains scale // R11 contains type // R10 is the ADDR diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp index 744fbc1940..53d5e7bd8d 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Paired.cpp @@ -51,7 +51,7 @@ void JitArm::ps_rsqrte(UGeckoInstruction inst) VCMP(vB0); VMRS(_PC); FixupBranch Less0 = B_CC(CC_LT); - VMOV(vD0, V0); + VMOV(vD0, V0); SetFPException(fpscrReg, FPSCR_VXSQRT); FixupBranch SkipOrr0 = B(); SetJumpTarget(Less0); @@ -76,7 +76,7 @@ void JitArm::ps_rsqrte(UGeckoInstruction inst) FixupBranch noException = B_CC(CC_EQ); SetFPException(fpscrReg, FPSCR_ZX); SetJumpTarget(noException); - + VCVT(S0, vB0, 0); VCVT(S1, vB1, 0); @@ -93,7 +93,7 @@ void JitArm::ps_sel(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -107,7 +107,7 @@ void JitArm::ps_sel(UGeckoInstruction inst) ARMReg vC1 = fpr.R1(c); ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); - + VCMP(vA0); VMRS(_PC); @@ -143,7 +143,7 @@ void JitArm::ps_add(UGeckoInstruction inst) ARMReg vB1 = fpr.R1(b); ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); - + VADD(vD0, vA0, vB0); VADD(vD1, vA1, vB1); } @@ -163,7 +163,7 @@ void JitArm::ps_div(UGeckoInstruction inst) ARMReg vB1 = fpr.R1(b); ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); - + VDIV(vD0, vA0, vB0); VDIV(vD1, vA1, vB1); } @@ -183,7 +183,7 @@ void JitArm::ps_res(UGeckoInstruction inst) ARMReg vD1 = fpr.R1(d, false); ARMReg V0 = fpr.GetReg(); MOVI2R(V0, 1.0, INVALID_REG); // temp reg not needed for 1.0 - + VDIV(vD0, V0, vB0); VDIV(vD1, V0, vB1); fpr.Unlock(V0); @@ -193,7 +193,7 @@ void JitArm::ps_nmadd(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -226,7 +226,7 @@ void JitArm::ps_madd(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -257,7 +257,7 @@ void JitArm::ps_nmsub(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -290,7 +290,7 @@ void JitArm::ps_msub(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -312,7 +312,7 @@ void JitArm::ps_msub(UGeckoInstruction inst) VMUL(V1, vA1, vC1); VSUB(vD0, V0, vB0); VSUB(vD1, V1, vB1); - + fpr.Unlock(V0); fpr.Unlock(V1); } @@ -321,7 +321,7 @@ void JitArm::ps_madds0(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -337,7 +337,7 @@ void JitArm::ps_madds0(UGeckoInstruction inst) ARMReg V0 = fpr.GetReg(); ARMReg V1 = fpr.GetReg(); - + VMUL(V0, vA0, vC0); VMUL(V1, vA1, vC0); @@ -352,7 +352,7 @@ void JitArm::ps_madds1(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITPairedOff) - + u32 a = inst.FA, b = inst.FB, c = inst.FC, d = inst.FD; if (inst.Rc) { @@ -392,10 +392,10 @@ void JitArm::ps_sum0(UGeckoInstruction inst) ARMReg vC1 = fpr.R1(c); ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); - + VADD(vD0, vA0, vB1); VMOV(vD1, vC1); - + } void JitArm::ps_sum1(UGeckoInstruction inst) @@ -413,7 +413,7 @@ void JitArm::ps_sum1(UGeckoInstruction inst) ARMReg vC0 = fpr.R0(c); ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); - + VMOV(vD0, vC0); VADD(vD1, vA0, vB1); } @@ -562,7 +562,7 @@ void JitArm::ps_merge10(UGeckoInstruction inst) ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); ARMReg V0 = fpr.GetReg(); - + VMOV(V0, vB0); VMOV(vD0, vA1); VMOV(vD1, V0); @@ -651,7 +651,7 @@ void JitArm::ps_nabs(UGeckoInstruction inst) ARMReg vB1 = fpr.R1(b); ARMReg vD0 = fpr.R0(d, false); ARMReg vD1 = fpr.R1(d, false); - + VABS(vD0, vB0); VNEG(vD0, vD0); VABS(vD1, vB1); @@ -680,25 +680,25 @@ void JitArm::ps_cmpu0(UGeckoInstruction inst) VCMPE(vA, vB); VMRS(_PC); SetCC(CC_LT); - ORR(fpscrReg, fpscrReg, LessThan); + ORR(fpscrReg, fpscrReg, LessThan); MOV(crReg, 8); Done1 = B(); SetCC(CC_GT); - ORR(fpscrReg, fpscrReg, GreaterThan); + ORR(fpscrReg, fpscrReg, GreaterThan); MOV(crReg, 4); Done2 = B(); SetCC(CC_EQ); - ORR(fpscrReg, fpscrReg, EqualTo); + ORR(fpscrReg, fpscrReg, EqualTo); MOV(crReg, 2); Done3 = B(); SetCC(); - - ORR(fpscrReg, fpscrReg, NANRes); + + ORR(fpscrReg, fpscrReg, NANRes); MOV(crReg, 1); - + VCMPE(vA, vA); VMRS(_PC); - FixupBranch NanA = B_CC(CC_NEQ); + FixupBranch NanA = B_CC(CC_NEQ); VCMPE(vB, vB); VMRS(_PC); FixupBranch NanB = B_CC(CC_NEQ); @@ -708,7 +708,7 @@ void JitArm::ps_cmpu0(UGeckoInstruction inst) SetJumpTarget(NanB); SetFPException(fpscrReg, FPSCR_VXSNAN); - + SetJumpTarget(Done1); SetJumpTarget(Done2); SetJumpTarget(Done3); @@ -741,25 +741,25 @@ void JitArm::ps_cmpu1(UGeckoInstruction inst) VCMPE(vA, vB); VMRS(_PC); SetCC(CC_LT); - ORR(fpscrReg, fpscrReg, LessThan); + ORR(fpscrReg, fpscrReg, LessThan); MOV(crReg, 8); Done1 = B(); SetCC(CC_GT); - ORR(fpscrReg, fpscrReg, GreaterThan); + ORR(fpscrReg, fpscrReg, GreaterThan); MOV(crReg, 4); Done2 = B(); SetCC(CC_EQ); - ORR(fpscrReg, fpscrReg, EqualTo); + ORR(fpscrReg, fpscrReg, EqualTo); MOV(crReg, 2); Done3 = B(); SetCC(); - - ORR(fpscrReg, fpscrReg, NANRes); + + ORR(fpscrReg, fpscrReg, NANRes); MOV(crReg, 1); - + VCMPE(vA, vA); VMRS(_PC); - FixupBranch NanA = B_CC(CC_NEQ); + FixupBranch NanA = B_CC(CC_NEQ); VCMPE(vB, vB); VMRS(_PC); FixupBranch NanB = B_CC(CC_NEQ); @@ -769,7 +769,7 @@ void JitArm::ps_cmpu1(UGeckoInstruction inst) SetJumpTarget(NanB); SetFPException(fpscrReg, FPSCR_VXSNAN); - + SetJumpTarget(Done1); SetJumpTarget(Done2); SetJumpTarget(Done3); @@ -802,29 +802,29 @@ void JitArm::ps_cmpo0(UGeckoInstruction inst) VCMPE(vA, vB); VMRS(_PC); SetCC(CC_LT); - ORR(fpscrReg, fpscrReg, LessThan); + ORR(fpscrReg, fpscrReg, LessThan); MOV(crReg, 8); Done1 = B(); SetCC(CC_GT); - ORR(fpscrReg, fpscrReg, GreaterThan); + ORR(fpscrReg, fpscrReg, GreaterThan); MOV(crReg, 4); Done2 = B(); SetCC(CC_EQ); - ORR(fpscrReg, fpscrReg, EqualTo); + ORR(fpscrReg, fpscrReg, EqualTo); MOV(crReg, 2); Done3 = B(); SetCC(); - - ORR(fpscrReg, fpscrReg, NANRes); + + ORR(fpscrReg, fpscrReg, NANRes); MOV(crReg, 1); - + VCMPE(vA, vA); VMRS(_PC); - FixupBranch NanA = B_CC(CC_NEQ); + FixupBranch NanA = B_CC(CC_NEQ); VCMPE(vB, vB); VMRS(_PC); FixupBranch NanB = B_CC(CC_NEQ); - + SetFPException(fpscrReg, FPSCR_VXVC); FixupBranch Done4 = B(); @@ -832,9 +832,9 @@ void JitArm::ps_cmpo0(UGeckoInstruction inst) SetJumpTarget(NanB); SetFPException(fpscrReg, FPSCR_VXSNAN); - + TST(fpscrReg, VEMask); - + FixupBranch noVXVC = B_CC(CC_NEQ); SetFPException(fpscrReg, FPSCR_VXVC); @@ -871,29 +871,29 @@ void JitArm::ps_cmpo1(UGeckoInstruction inst) VCMPE(vA, vB); VMRS(_PC); SetCC(CC_LT); - ORR(fpscrReg, fpscrReg, LessThan); + ORR(fpscrReg, fpscrReg, LessThan); MOV(crReg, 8); Done1 = B(); SetCC(CC_GT); - ORR(fpscrReg, fpscrReg, GreaterThan); + ORR(fpscrReg, fpscrReg, GreaterThan); MOV(crReg, 4); Done2 = B(); SetCC(CC_EQ); - ORR(fpscrReg, fpscrReg, EqualTo); + ORR(fpscrReg, fpscrReg, EqualTo); MOV(crReg, 2); Done3 = B(); SetCC(); - - ORR(fpscrReg, fpscrReg, NANRes); + + ORR(fpscrReg, fpscrReg, NANRes); MOV(crReg, 1); - + VCMPE(vA, vA); VMRS(_PC); - FixupBranch NanA = B_CC(CC_NEQ); + FixupBranch NanA = B_CC(CC_NEQ); VCMPE(vB, vB); VMRS(_PC); FixupBranch NanB = B_CC(CC_NEQ); - + SetFPException(fpscrReg, FPSCR_VXVC); FixupBranch Done4 = B(); @@ -901,9 +901,9 @@ void JitArm::ps_cmpo1(UGeckoInstruction inst) SetJumpTarget(NanB); SetFPException(fpscrReg, FPSCR_VXSNAN); - + TST(fpscrReg, VEMask); - + FixupBranch noVXVC = B_CC(CC_NEQ); SetFPException(fpscrReg, FPSCR_VXVC); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_SystemRegisters.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_SystemRegisters.cpp index 13f90fb684..e4ab630fce 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_SystemRegisters.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_SystemRegisters.cpp @@ -149,7 +149,7 @@ void JitArm::mtcrf(UGeckoInstruction inst) { if ((crm & (0x80 >> i)) != 0) { - UBFX(rB, rA, 28 - (i * 4), 4); + UBFX(rB, rA, 28 - (i * 4), 4); STRB(rB, R9, PPCSTATE_OFF(cr_fast[i])); } } @@ -178,7 +178,7 @@ void JitArm::mcrxr(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITSystemRegistersOff) - + ARMReg rA = gpr.GetReg(); ARMReg rB = gpr.GetReg(); // Copy XER[0-3] into CR[inst.CRFD] @@ -199,9 +199,9 @@ void JitArm::mtmsr(UGeckoInstruction inst) INSTRUCTION_START // Don't interpret this, if we do we get thrown out //JITDISABLE(bJITSystemRegistersOff) - + STR(gpr.R(inst.RS), R9, PPCSTATE_OFF(msr)); - + gpr.Flush(); fpr.Flush(); @@ -212,7 +212,7 @@ void JitArm::mfmsr(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITSystemRegistersOff) - + LDR(gpr.R(inst.RD), R9, PPCSTATE_OFF(msr)); } @@ -234,7 +234,7 @@ void JitArm::crXXX(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITSystemRegistersOff) - + ARMReg rA = gpr.GetReg(); ARMReg rB = gpr.GetReg(); // Get bit CRBA aligned with bit CRBD @@ -244,7 +244,7 @@ void JitArm::crXXX(UGeckoInstruction inst) LSL(rA, rA, -shiftA); else if (shiftA > 0) LSR(rA, rA, shiftA); - + // Get bit CRBB aligned with bit CRBD int shiftB = (inst.CRBD & 3) - (inst.CRBB & 3); LDRB(rB, R9, PPCSTATE_OFF(cr_fast[inst.CRBB >> 2])); @@ -252,7 +252,7 @@ void JitArm::crXXX(UGeckoInstruction inst) LSL(rB, rB, -shiftB); else if (shiftB > 0) LSR(rB, rB, shiftB); - + // Compute combined bit switch(inst.SUBOP10) { @@ -296,7 +296,7 @@ void JitArm::crXXX(UGeckoInstruction inst) // Store result bit in CRBD AND(rA, rA, 0x8 >> (inst.CRBD & 3)); LDRB(rB, R9, PPCSTATE_OFF(cr_fast[inst.CRBD >> 2])); - BIC(rB, rB, 0x8 >> (inst.CRBD & 3)); + BIC(rB, rB, 0x8 >> (inst.CRBD & 3)); ORR(rB, rB, rA); STRB(rB, R9, PPCSTATE_OFF(cr_fast[inst.CRBD >> 2])); gpr.Unlock(rA, rB); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp index 9eea997317..20c2dffc9c 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Tables.cpp @@ -42,7 +42,7 @@ struct GekkoOPTemplate //GekkoOPInfo opinfo; // Doesn't need opinfo, Interpreter fills it out }; -static GekkoOPTemplate primarytable[] = +static GekkoOPTemplate primarytable[] = { {4, &JitArm::DynaRunTable4}, //"RunTable4", OPTYPE_SUBTABLE | (4<<24), 0}}, {19, &JitArm::DynaRunTable19}, //"RunTable19", OPTYPE_SUBTABLE | (19<<24), 0}}, @@ -123,7 +123,7 @@ static GekkoOPTemplate primarytable[] = {58, &JitArm::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}}, }; -static GekkoOPTemplate table4[] = +static GekkoOPTemplate table4[] = { //SUBOP10 {0, &JitArm::ps_cmpu0}, //"ps_cmpu0", OPTYPE_PS, FL_SET_CRn}}, {32, &JitArm::ps_cmpo0}, //"ps_cmpo0", OPTYPE_PS, FL_SET_CRn}}, @@ -139,9 +139,9 @@ static GekkoOPTemplate table4[] = {624, &JitArm::ps_merge11}, //"ps_merge11", OPTYPE_PS, FL_RC_BIT}}, {1014, &JitArm::Default}, //"dcbz_l", OPTYPE_SYSTEM, 0}}, -}; +}; -static GekkoOPTemplate table4_2[] = +static GekkoOPTemplate table4_2[] = { {10, &JitArm::ps_sum0}, //"ps_sum0", OPTYPE_PS, 0}}, {11, &JitArm::ps_sum1}, //"ps_sum1", OPTYPE_PS, 0}}, @@ -163,15 +163,15 @@ static GekkoOPTemplate table4_2[] = }; -static GekkoOPTemplate table4_3[] = +static GekkoOPTemplate table4_3[] = { {6, &JitArm::psq_lx}, //"psq_lx", OPTYPE_PS, 0}}, {7, &JitArm::psq_stx}, //"psq_stx", OPTYPE_PS, 0}}, {38, &JitArm::psq_lx}, //"psq_lux", OPTYPE_PS, 0}}, - {39, &JitArm::psq_stx}, //"psq_stux", OPTYPE_PS, 0}}, + {39, &JitArm::psq_stx}, //"psq_stux", OPTYPE_PS, 0}}, }; -static GekkoOPTemplate table19[] = +static GekkoOPTemplate table19[] = { {528, &JitArm::bcctrx}, //"bcctrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, {16, &JitArm::bclrx}, //"bclrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, @@ -183,16 +183,16 @@ static GekkoOPTemplate table19[] = {449, &JitArm::crXXX}, //"cror", OPTYPE_CR, FL_EVIL}}, {417, &JitArm::crXXX}, //"crorc", OPTYPE_CR, FL_EVIL}}, {193, &JitArm::crXXX}, //"crxor", OPTYPE_CR, FL_EVIL}}, - + {150, &JitArm::DoNothing}, //"isync", OPTYPE_ICACHE, FL_EVIL}}, {0, &JitArm::mcrf}, //"mcrf", OPTYPE_SYSTEM, FL_EVIL}}, - + {50, &JitArm::rfi}, //"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1}}, {18, &JitArm::Break}, //"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS}} }; -static GekkoOPTemplate table31[] = +static GekkoOPTemplate table31[] = { {28, &JitArm::arith}, //"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {60, &JitArm::arith}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, @@ -267,7 +267,7 @@ static GekkoOPTemplate table31[] = {661, &JitArm::Default}, //"stswx", OPTYPE_STORE, FL_EVIL}}, {725, &JitArm::Default}, //"stswi", OPTYPE_STORE, FL_EVIL}}, - // fp load/store + // fp load/store {535, &JitArm::lfXX}, //"lfsx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, {567, &JitArm::lfXX}, //"lfsux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B}}, {599, &JitArm::lfXX}, //"lfdx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, @@ -305,8 +305,8 @@ static GekkoOPTemplate table31[] = {566, &JitArm::Default}, //"tlbsync", OPTYPE_SYSTEM, 0}}, }; -static GekkoOPTemplate table31_2[] = -{ +static GekkoOPTemplate table31_2[] = +{ {266, &JitArm::arith}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {778, &JitArm::arith}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {10, &JitArm::arith}, //"addcx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}}, @@ -330,21 +330,21 @@ static GekkoOPTemplate table31_2[] = {200, &JitArm::Default}, //"subfzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}}, }; -static GekkoOPTemplate table59[] = +static GekkoOPTemplate table59[] = { - {18, &JitArm::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, - {20, &JitArm::fsubsx}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {21, &JitArm::faddsx}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {18, &JitArm::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, + {20, &JitArm::fsubsx}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {21, &JitArm::faddsx}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, // {22, &JitArm::Default}, //"fsqrtsx", OPTYPE_FPU, FL_RC_BIT_F}}, // Not implemented on gekko - {24, &JitArm::fresx}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, - {25, &JitArm::fmulsx}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {28, &JitArm::Default}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {29, &JitArm::fmaddsx}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {30, &JitArm::Default}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {31, &JitArm::fnmaddsx}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, -}; + {24, &JitArm::fresx}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, + {25, &JitArm::fmulsx}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {28, &JitArm::Default}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {29, &JitArm::fmaddsx}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {30, &JitArm::Default}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {31, &JitArm::fnmaddsx}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, +}; -static GekkoOPTemplate table63[] = +static GekkoOPTemplate table63[] = { {264, &JitArm::fabsx}, //"fabsx", OPTYPE_FPU, FL_RC_BIT_F}}, {32, &JitArm::fcmpo}, //"fcmpo", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -364,7 +364,7 @@ static GekkoOPTemplate table63[] = {711, &JitArm::Default}, //"mtfsfx", OPTYPE_SYSTEMFP, 0, 2}}, }; -static GekkoOPTemplate table63_2[] = +static GekkoOPTemplate table63_2[] = { {18, &JitArm::Default}, //"fdivx", OPTYPE_FPU, FL_RC_BIT_F, 30}}, {20, &JitArm::fsubx}, //"fsubx", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -407,7 +407,7 @@ void InitTables() return; //clear - for (int i = 0; i < 32; i++) + for (int i = 0; i < 32; i++) { dynaOpTable59[i] = &JitArm::unknown_instruction; } @@ -417,7 +417,7 @@ void InitTables() dynaOpTable4 [i] = &JitArm::unknown_instruction; dynaOpTable19[i] = &JitArm::unknown_instruction; dynaOpTable31[i] = &JitArm::unknown_instruction; - dynaOpTable63[i] = &JitArm::unknown_instruction; + dynaOpTable63[i] = &JitArm::unknown_instruction; } for (int i = 0; i < (int)(sizeof(primarytable) / sizeof(GekkoOPTemplate)); i++) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.cpp index e065342c9f..2d619ceea3 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.cpp @@ -34,9 +34,9 @@ using namespace ArmGen; //TODO - make an option //#if _DEBUG -// bool enableDebug = false; +// bool enableDebug = false; //#else -// bool enableDebug = false; +// bool enableDebug = false; //#endif JitArmAsmRoutineManager asm_routines; @@ -59,7 +59,7 @@ static const float GC_ALIGNED16(m_quantizeTableS[]) = 1.0 / (1 << 12), 1.0 / (1 << 11), 1.0 / (1 << 10), 1.0 / (1 << 9), 1.0 / (1 << 8), 1.0 / (1 << 7), 1.0 / (1 << 6), 1.0 / (1 << 5), 1.0 / (1 << 4), 1.0 / (1 << 3), 1.0 / (1 << 2), 1.0 / (1 << 1), -}; +}; static const float GC_ALIGNED16(m_dequantizeTableS[]) = { @@ -79,7 +79,7 @@ static const float GC_ALIGNED16(m_dequantizeTableS[]) = (1 << 12), (1 << 11), (1 << 10), (1 << 9), (1 << 8), (1 << 7), (1 << 6), (1 << 5), (1 << 4), (1 << 3), (1 << 2), (1 << 1), -}; +}; static void WriteDual32(u32 value1, u32 value2, u32 address) { @@ -113,15 +113,15 @@ void JitArmAsmRoutineManager::Generate() MOVI2R(R9, (u32)&PowerPC::ppcState.spr[0]); FixupBranch skipToRealDispatcher = B(); - dispatcher = GetCodePtr(); + dispatcher = GetCodePtr(); printf("Dispatcher is %p\n", dispatcher); - // Downcount Check + // Downcount Check // The result of slice decrementation should be in flags if somebody jumped here // IMPORTANT - We jump on negative, not carry!!! FixupBranch bail = B_CC(CC_MI); - SetJumpTarget(skipToRealDispatcher); + SetJumpTarget(skipToRealDispatcher); dispatcherNoCheck = GetCodePtr(); // This block of code gets the address of the compiled block of code @@ -141,8 +141,8 @@ void JitArmAsmRoutineManager::Generate() // Success, it is our Jitblock. MOVI2R(R14, (u32)jit->GetBlockCache()->GetCodePointers()); // LDR R14 right here to get CodePointers()[0] pointer. - LSL(R12, R12, 2); // Multiply by four because address locations are u32 in size - LDR(R14, R14, R12); // Load the block address in to R14 + LSL(R12, R12, 2); // Multiply by four because address locations are u32 in size + LDR(R14, R14, R12); // Load the block address in to R14 B(R14); // No need to jump anywhere after here, the block will go back to dispatcher start @@ -150,9 +150,9 @@ void JitArmAsmRoutineManager::Generate() // If we get to this point, that means that we don't have the block cached to execute // So call ArmJit to compile the block and then execute it. - MOVI2R(R14, (u32)&Jit); + MOVI2R(R14, (u32)&Jit); BL(R14); - + B(dispatcherNoCheck); // fpException() @@ -167,12 +167,12 @@ void JitArmAsmRoutineManager::Generate() B(dispatcher); SetJumpTarget(bail); - doTiming = GetCodePtr(); + doTiming = GetCodePtr(); // XXX: In JIT64, Advance() gets called /after/ the exception checking - // once it jumps back to the start of outerLoop + // once it jumps back to the start of outerLoop QuickCallFunction(R14, (void*)&CoreTiming::Advance); - // Does exception checking + // Does exception checking testExceptions = GetCodePtr(); LDR(R0, R9, PPCSTATE_OFF(pc)); STR(R0, R9, PPCSTATE_OFF(npc)); @@ -188,13 +188,13 @@ void JitArmAsmRoutineManager::Generate() FixupBranch Exit = B_CC(CC_NEQ); B(dispatcher); - + SetJumpTarget(Exit); ADD(_SP, _SP, 4); POP(9, R4, R5, R6, R7, R8, R9, R10, R11, _PC); // Returns - + GenerateCommon(); FlushIcache(); @@ -207,7 +207,7 @@ void JitArmAsmRoutineManager::GenerateCommon() // R11 is scale // R10 is the address Operand2 mask(3, 1); // ~(Memory::MEMVIEW32_MASK) - Operand2 arghmask(3, 3); // 0x0C000000 + Operand2 arghmask(3, 3); // 0x0C000000 NEONXEmitter nemit(this); const u8* loadPairedIllegal = GetCodePtr(); @@ -221,7 +221,7 @@ void JitArmAsmRoutineManager::GenerateCommon() nemit.VLD1(I_32, D0, R10); nemit.VREV32(I_8, D0, D0); - + MOV(_PC, _LR); } const u8* loadPairedFloatOne = GetCodePtr(); @@ -232,7 +232,7 @@ void JitArmAsmRoutineManager::GenerateCommon() nemit.VLD1(I_32, D0, R10); nemit.VREV32(I_8, D0, D0); - + MOV(_PC, _LR); } const u8* loadPairedU8Two = GetCodePtr(); @@ -248,17 +248,17 @@ void JitArmAsmRoutineManager::GenerateCommon() LDRH(R12, R10, 2); SXTB(R12, R12); VMOV(S1, R12); - + MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT); VCVT(S1, S1, TO_FLOAT); VMUL(S0, S0, S2); VMUL(S1, S1, S2); - + MOV(_PC, _LR); } const u8* loadPairedU8One = GetCodePtr(); @@ -266,7 +266,7 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + LDRB(R12, R10); SXTB(R12, R12); VMOV(S0, R12); @@ -274,7 +274,7 @@ void JitArmAsmRoutineManager::GenerateCommon() MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT); VMUL(S0, S0, S2); @@ -286,7 +286,7 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + LDRH(R12, R10); SXTB(R12, R12); VMOV(S0, R12); @@ -298,13 +298,13 @@ void JitArmAsmRoutineManager::GenerateCommon() MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT | IS_SIGNED); VCVT(S1, S1, TO_FLOAT | IS_SIGNED); VMUL(S0, S0, S2); VMUL(S1, S1, S2); - + MOV(_PC, _LR); } const u8* loadPairedS8One = GetCodePtr(); @@ -312,7 +312,7 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + LDRB(R12, R10); SXTB(R12, R12); VMOV(S0, R12); @@ -320,7 +320,7 @@ void JitArmAsmRoutineManager::GenerateCommon() MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT | IS_SIGNED); VMUL(S0, S0, S2); @@ -332,7 +332,7 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + LDRH(R12, R10); REV16(R12, R12); SXTH(R12, R12); @@ -346,7 +346,7 @@ void JitArmAsmRoutineManager::GenerateCommon() MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT); VCVT(S1, S1, TO_FLOAT); @@ -360,7 +360,7 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + LDRH(R12, R10); REV16(R12, R12); VMOV(S0, R12); @@ -368,7 +368,7 @@ void JitArmAsmRoutineManager::GenerateCommon() MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT); VMUL(S0, S0, S2); @@ -379,7 +379,7 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + LDRH(R12, R10); REV16(R12, R12); SXTH(R12, R12); @@ -393,7 +393,7 @@ void JitArmAsmRoutineManager::GenerateCommon() MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + VCVT(S0, S0, TO_FLOAT | IS_SIGNED); VCVT(S1, S1, TO_FLOAT | IS_SIGNED); @@ -409,11 +409,11 @@ void JitArmAsmRoutineManager::GenerateCommon() ADD(R10, R10, R12); LDRH(R12, R10); - + MOVI2R(R10, (u32)&m_dequantizeTableS); ADD(R10, R10, R11); VLDR(S2, R10, 0); - + REV16(R12, R12); SXTH(R12, R12); VMOV(S0, R12); @@ -477,22 +477,22 @@ void JitArmAsmRoutineManager::GenerateCommon() // R12 is scratch // S0, S1 is the values PUSH(5, R0, R1, R2, R3, _LR); - + MOVI2R(R12, (u32)&m_quantizeTableS); - ADD(R12, R12, R11); + ADD(R12, R12, R11); VLDR(S2, R12, 0); VMUL(S0, S0, S2); VMUL(S1, S1, S2); - VCVT(S0, S0, TO_INT | ROUND_TO_ZERO); - VCVT(S1, S1, TO_INT | ROUND_TO_ZERO); - + VCVT(S0, S0, TO_INT | ROUND_TO_ZERO); + VCVT(S1, S1, TO_INT | ROUND_TO_ZERO); + VMOV(R0, S0); VMOV(R1, S1); MOV(R2, R10); MOVI2R(R12, (u32)&WriteDual8); BL(R12); - + POP(5, R0, R1, R2, R3, _PC); } const u8* storePairedU16 = GetCodePtr(); @@ -501,20 +501,20 @@ void JitArmAsmRoutineManager::GenerateCommon() PUSH(5, R0, R1, R2, R3, _LR); MOVI2R(R12, (u32)&m_quantizeTableS); - ADD(R12, R12, R11); + ADD(R12, R12, R11); VLDR(S2, R12, 0); VMUL(S0, S0, S2); VMUL(S1, S1, S2); - VCVT(S0, S0, TO_INT | ROUND_TO_ZERO); - VCVT(S1, S1, TO_INT | ROUND_TO_ZERO); - + VCVT(S0, S0, TO_INT | ROUND_TO_ZERO); + VCVT(S1, S1, TO_INT | ROUND_TO_ZERO); + VMOV(R0, S0); VMOV(R1, S1); MOV(R2, R10); MOVI2R(R12, (u32)&WriteDual16); BL(R12); - + POP(5, R0, R1, R2, R3, _PC); } const u8* storeSingleIllegal = GetCodePtr(); @@ -526,10 +526,10 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + VMOV(R12, S0); REV(R12, R12); - STR(R12, R10); + STR(R12, R10); MOV(_PC, _LR); SetJumpTarget(argh); @@ -546,7 +546,7 @@ void JitArmAsmRoutineManager::GenerateCommon() const u8* storeSingleS8 = GetCodePtr(); { MOVI2R(R12, (u32)&m_quantizeTableS); - ADD(R12, R12, R11); + ADD(R12, R12, R11); VLDR(S2, R12, 0); VMUL(S0, S0, S2); @@ -555,10 +555,10 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + VCVT(S0, S0, TO_INT | ROUND_TO_ZERO); VMOV(R12, S0); - STRB(R12, R10); + STRB(R12, R10); MOV(_PC, _LR); SetJumpTarget(argh); @@ -574,7 +574,7 @@ void JitArmAsmRoutineManager::GenerateCommon() const u8* storeSingleS16 = GetCodePtr(); { MOVI2R(R12, (u32)&m_quantizeTableS); - ADD(R12, R12, R11); + ADD(R12, R12, R11); VLDR(S2, R12, 0); VMUL(S0, S0, S2); @@ -583,11 +583,11 @@ void JitArmAsmRoutineManager::GenerateCommon() BIC(R10, R10, mask); MOVI2R(R12, (u32)Memory::base); ADD(R10, R10, R12); - + VCVT(S0, S0, TO_INT | ROUND_TO_ZERO); VMOV(R12, S0); REV16(R12, R12); - STRH(R12, R10); + STRH(R12, R10); MOV(_PC, _LR); SetJumpTarget(argh); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.h b/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.h index 9a61e9e653..9fcf49d4ec 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.h +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitAsm.h @@ -20,7 +20,7 @@ #include "ArmEmitter.h" #include "../JitCommon/JitAsmCommon.h" using namespace ArmGen; -class JitArmAsmRoutineManager : public CommonAsmRoutinesBase, public ARMXCodeBlock +class JitArmAsmRoutineManager : public CommonAsmRoutinesBase, public ARMXCodeBlock { private: void Generate(); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.cpp index 27363112fc..7247ddbd1e 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.cpp @@ -51,7 +51,7 @@ ARMReg *ArmFPRCache::GetPPCAllocationOrder(int &count) { // This will return us the allocation order of the registers we can use on // the ppc side. - static ARMReg allocationOrder[] = + static ARMReg allocationOrder[] = { D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, @@ -64,7 +64,7 @@ ARMReg *ArmFPRCache::GetAllocationOrder(int &count) { // This will return us the allocation order of the registers we can use on // the host side. - static ARMReg allocationOrder[] = + static ARMReg allocationOrder[] = { D0, D1, D2, D3 }; @@ -126,7 +126,7 @@ bool ArmFPRCache::FindFreeRegister(u32 ®index) ARMReg ArmFPRCache::GetPPCReg(u32 preg, bool PS1, bool preLoad) { u32 lastRegIndex = GetLeastUsedRegister(true); - + if (_regs[preg][PS1].GetType() != REG_NOTLOADED) { u8 a = _regs[preg][PS1].GetRegIndex(); @@ -147,7 +147,7 @@ ARMReg ArmFPRCache::GetPPCReg(u32 preg, bool PS1, bool preLoad) emit->VLDR(ArmCRegs[regindex].Reg, R9, offset); return ArmCRegs[regindex].Reg; } - + // Alright, we couldn't get a free space, dump that least used register s16 offsetOld = PPCSTATE_OFF(ps) + (ArmCRegs[lastRegIndex].PPCReg * 16) + (ArmCRegs[lastRegIndex].PS1 ? 8 : 0); s16 offsetNew = PPCSTATE_OFF(ps) + (preg * 16) + (PS1 ? 8 : 0); @@ -155,14 +155,14 @@ ARMReg ArmFPRCache::GetPPCReg(u32 preg, bool PS1, bool preLoad) emit->VSTR(ArmCRegs[lastRegIndex].Reg, R9, offsetOld); _regs[ArmCRegs[lastRegIndex].PPCReg][ArmCRegs[lastRegIndex].PS1].Flush(); - + ArmCRegs[lastRegIndex].PPCReg = preg; ArmCRegs[lastRegIndex].LastLoad = 0; ArmCRegs[lastRegIndex].PS1 = PS1; _regs[preg][PS1].LoadToReg(lastRegIndex); emit->VLDR(ArmCRegs[lastRegIndex].Reg, R9, offsetNew); - return ArmCRegs[lastRegIndex].Reg; + return ArmCRegs[lastRegIndex].Reg; } ARMReg ArmFPRCache::R0(u32 preg, bool preLoad) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.h b/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.h index 10a3520d56..233b201b7c 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.h +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitFPRCache.h @@ -31,8 +31,8 @@ class ArmFPRCache private: OpArg _regs[32][2]; // One for each FPR reg JRCPPC ArmCRegs[ARMFPUREGS]; - JRCReg ArmRegs[ARMFPUREGS]; - + JRCReg ArmRegs[ARMFPUREGS]; + int NUMPPCREG; int NUMARMREG; @@ -41,11 +41,11 @@ private: ARMReg GetPPCReg(u32 preg, bool PS1, bool preLoad); - u32 GetLeastUsedRegister(bool increment); - bool FindFreeRegister(u32 ®index); + u32 GetLeastUsedRegister(bool increment); + bool FindFreeRegister(u32 ®index); protected: ARMXEmitter *emit; - + public: ArmFPRCache(); ~ArmFPRCache() {} @@ -54,7 +54,7 @@ public: void Start(PPCAnalyst::BlockRegStats &stats); void SetEmitter(ARMXEmitter *emitter) {emit = emitter;} - + ARMReg GetReg(bool AutoLock = true); // Return a ARM register we can use. void Unlock(ARMReg V0); void Flush(); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.cpp index 562770e367..f1e678e971 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.cpp @@ -49,7 +49,7 @@ ARMReg *ArmRegCache::GetPPCAllocationOrder(int &count) { // This will return us the allocation order of the registers we can use on // the ppc side. - static ARMReg allocationOrder[] = + static ARMReg allocationOrder[] = { R0, R1, R2, R3, R4, R5, R6, R7, R8 }; @@ -60,7 +60,7 @@ ARMReg *ArmRegCache::GetAllocationOrder(int &count) { // This will return us the allocation order of the registers we can use on // the host side. - static ARMReg allocationOrder[] = + static ARMReg allocationOrder[] = { R14, R12, R11, R10 }; @@ -124,7 +124,7 @@ bool ArmRegCache::FindFreeRegister(u32 ®index) } ARMReg ArmRegCache::R(u32 preg) -{ +{ if (regs[preg].GetType() == REG_IMM) return BindToRegister(preg); @@ -137,7 +137,7 @@ ARMReg ArmRegCache::R(u32 preg) ArmCRegs[a].LastLoad = 0; return ArmCRegs[a].Reg; } - + // Check if we have a free register u32 regindex; if (FindFreeRegister(regindex)) @@ -158,10 +158,10 @@ ARMReg ArmRegCache::R(u32 preg) ArmCRegs[lastRegIndex].PPCReg = preg; ArmCRegs[lastRegIndex].LastLoad = 0; - + regs[preg].LoadToReg(lastRegIndex); - return ArmCRegs[lastRegIndex].Reg; + return ArmCRegs[lastRegIndex].Reg; } ARMReg ArmRegCache::BindToRegister(u32 preg) @@ -209,7 +209,7 @@ void ArmRegCache::Flush() for (u8 a = 0; a < 32; ++a) { if (regs[a].GetType() == REG_IMM) - BindToRegister(a); + BindToRegister(a); if (regs[a].GetType() == REG_REG) { u32 regindex = regs[a].GetRegIndex(); @@ -217,7 +217,7 @@ void ArmRegCache::Flush() ArmCRegs[regindex].PPCReg = 33; ArmCRegs[regindex].LastLoad = 0; } - + regs[a].Flush(); } } diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.h b/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.h index d41af42d6e..e1ac5fe0b7 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.h +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitRegCache.h @@ -43,7 +43,7 @@ enum RegType REG_AWAY, // Bound to a register, but not preloaded }; -class OpArg +class OpArg { private: RegType m_type; // store type @@ -57,7 +57,7 @@ class OpArg m_reg = 33; m_value = 0; } - + RegType GetType() { return m_type; @@ -116,19 +116,19 @@ private: ARMReg *GetAllocationOrder(int &count); ARMReg *GetPPCAllocationOrder(int &count); - + u32 GetLeastUsedRegister(bool increment); bool FindFreeRegister(u32 ®index); protected: ARMXEmitter *emit; - + public: ArmRegCache(); ~ArmRegCache() {} void Init(ARMXEmitter *emitter); void Start(PPCAnalyst::BlockRegStats &stats); - + ARMReg GetReg(bool AutoLock = true); // Return a ARM register we can use. void Unlock(ARMReg R0, ARMReg R1 = INVALID_REG, ARMReg R2 = INVALID_REG, ARMReg R3 = INVALID_REG); @@ -136,7 +136,7 @@ public: ARMReg R(u32 preg); // Returns a cached register bool IsImm(u32 preg) { return regs[preg].GetType() == REG_IMM; } u32 GetImm(u32 preg) { return regs[preg].GetImm(); } - void SetImmediate(u32 preg, u32 imm); + void SetImmediate(u32 preg, u32 imm); ARMReg BindToRegister(u32 preg); }; diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/IR_Arm.cpp b/Source/Core/Core/Src/PowerPC/JitArmIL/IR_Arm.cpp index 5215f00fb3..10620d9183 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/IR_Arm.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/IR_Arm.cpp @@ -135,11 +135,11 @@ static ARMReg regBinLHSReg(RegInfo& RI, InstLoc I) { static ARMReg regBinReg(RegInfo& RI, InstLoc I) { // FIXME: When regLocForInst() is extracted as a local variable, // "Retrieving unknown spill slot?!" is shown. - if (RI.IInfo[I - RI.FirstI] & 4) + if (RI.IInfo[I - RI.FirstI] & 4) return regLocForInst(RI, getOp1(I)); else if (RI.IInfo[I - RI.FirstI] & 8) return regLocForInst(RI, getOp2(I)); - + return regFindFreeReg(RI); } @@ -191,7 +191,7 @@ static void regStoreInstToPPCState(RegInfo& RI, unsigned width, InstLoc I, s32 o // Could be extended to unprofiled addresses. static void regMarkMemAddress(RegInfo& RI, InstLoc I, InstLoc AI, unsigned OpNum) { if (isImm(*AI)) { - unsigned addr = RI.Build->GetImmValue(AI); + unsigned addr = RI.Build->GetImmValue(AI); if (Memory::IsRAMAddress(addr)) return; } @@ -311,7 +311,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitArmIL* Jit) { case InterpreterFallback: case SystemCall: case RFIExit: - case InterpreterBranch: + case InterpreterBranch: case ShortIdleLoop: case FPExceptionCheck: case DSIExceptionCheck: @@ -430,7 +430,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitArmIL* Jit) { break; case IdleBranch: regMarkUse(RI, I, getOp1(getOp1(I)), 1); - break; + break; case BranchCond: { if (isICmp(*getOp1(I)) && isImm(*getOp2(getOp1(I)))) { @@ -638,7 +638,7 @@ static void DoWriteCode(IRBuilder* ibuild, JitArmIL* Jit) { Jit->STR(rB, R9, PPCSTATE_OFF(msr)); // STR rB in to rA Jit->LDR(rA, R9, PPCSTATE_OFF(spr[SPR_SRR0])); - + Jit->WriteRfiExitDestInR(rA); // rA gets unlocked here break; } diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.cpp b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.cpp index 788aad3f3a..0aac4d6722 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.cpp @@ -36,7 +36,7 @@ void JitArmIL::Init() asm_routines.Init(); } -void JitArmIL::ClearCache() +void JitArmIL::ClearCache() { ClearCodeSpace(); blocks.Clear(); @@ -95,7 +95,7 @@ void JitArmIL::DoDownCount() } } -void JitArmIL::WriteExitDestInReg(ARMReg Reg) +void JitArmIL::WriteExitDestInReg(ARMReg Reg) { STR(Reg, R9, PPCSTATE_OFF(pc)); DoDownCount(); @@ -103,7 +103,7 @@ void JitArmIL::WriteExitDestInReg(ARMReg Reg) B(Reg); } -void JitArmIL::WriteRfiExitDestInR(ARMReg Reg) +void JitArmIL::WriteRfiExitDestInR(ARMReg Reg) { STR(Reg, R9, PPCSTATE_OFF(pc)); DoDownCount(); @@ -124,21 +124,21 @@ void JitArmIL::WriteExit(u32 destination, int exit_num) JitBlock *b = js.curBlock; b->exitAddress[exit_num] = destination; b->exitPtrs[exit_num] = GetWritableCodePtr(); - + // Link opportunity! int block = blocks.GetBlockNumberFromStartAddress(destination); - if (block >= 0 && jo.enableBlocklink) + if (block >= 0 && jo.enableBlocklink) { // It exists! Joy of joy! B(blocks.GetBlock(block)->checkedEntry); b->linkStatus[exit_num] = true; } - else + else { MOVI2R(R14, destination); STR(R14, R9, PPCSTATE_OFF(pc)); MOVI2R(R14, (u32)asm_routines.dispatcher); - B(R14); + B(R14); } } void JitArmIL::PrintDebug(UGeckoInstruction inst, u32 level) @@ -245,7 +245,7 @@ const u8* JitArmIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitB } PPCAnalyst::CodeOp *ops = code_buf->codebuffer; - const u8 *start = GetCodePtr(); + const u8 *start = GetCodePtr(); b->checkedEntry = start; b->runCount = 0; @@ -349,7 +349,7 @@ const u8* JitArmIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitB printf("Broken Block going to 0x%08x\n", nextPC); WriteExit(nextPC, 0); } - + // Perform actual code generation WriteCode(); diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.h b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.h index e0462cf852..4dec87ddeb 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.h +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL.h @@ -18,8 +18,8 @@ Core::g_CoreStartupParameter.setting) \ {Default(inst); return;} -#define PPCSTATE_OFF(elem) ((s32)STRUCT_OFF(PowerPC::ppcState, elem) - (s32)STRUCT_OFF(PowerPC::ppcState, spr[0])) -class JitArmIL : public JitILBase, public ArmGen::ARMXCodeBlock +#define PPCSTATE_OFF(elem) ((s32)STRUCT_OFF(PowerPC::ppcState, elem) - (s32)STRUCT_OFF(PowerPC::ppcState, spr[0])) +class JitArmIL : public JitILBase, public ArmGen::ARMXCodeBlock { private: JitArmBlockCache blocks; @@ -63,7 +63,7 @@ public: void Run(); void SingleStep(); - // + // void WriteCode(); void WriteExit(u32 destination, int exit_num); void WriteExitDestInReg(ARMReg Reg); @@ -82,7 +82,7 @@ public: void DynaRunTable31(UGeckoInstruction inst); void DynaRunTable59(UGeckoInstruction inst); void DynaRunTable63(UGeckoInstruction inst); - + // Binary ops void BIN_AND(ARMReg reg, Operand2 op2); void BIN_XOR(ARMReg reg, Operand2 op2); diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.cpp b/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.cpp index f01c94a8f2..2cb9e298f2 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.cpp @@ -31,15 +31,15 @@ void JitArmILAsmRoutineManager::Generate() MOVI2R(R9, (u32)&PowerPC::ppcState.spr[0]); FixupBranch skipToRealDispatcher = B(); - dispatcher = GetCodePtr(); + dispatcher = GetCodePtr(); printf("ILDispatcher is %p\n", dispatcher); - // Downcount Check + // Downcount Check // The result of slice decrementation should be in flags if somebody jumped here // IMPORTANT - We jump on negative, not carry!!! FixupBranch bail = B_CC(CC_MI); - SetJumpTarget(skipToRealDispatcher); + SetJumpTarget(skipToRealDispatcher); dispatcherNoCheck = GetCodePtr(); // This block of code gets the address of the compiled block of code @@ -59,8 +59,8 @@ void JitArmILAsmRoutineManager::Generate() // Success, it is our Jitblock. MOVI2R(R14, (u32)jit->GetBlockCache()->GetCodePointers()); // LDR R14 right here to get CodePointers()[0] pointer. - LSL(R12, R12, 2); // Multiply by four because address locations are u32 in size - LDR(R14, R14, R12); // Load the block address in to R14 + LSL(R12, R12, 2); // Multiply by four because address locations are u32 in size + LDR(R14, R14, R12); // Load the block address in to R14 B(R14); // No need to jump anywhere after here, the block will go back to dispatcher start @@ -68,9 +68,9 @@ void JitArmILAsmRoutineManager::Generate() // If we get to this point, that means that we don't have the block cached to execute // So call ArmJit to compile the block and then execute it. - MOVI2R(R14, (u32)&Jit); + MOVI2R(R14, (u32)&Jit); BL(R14); - + B(dispatcherNoCheck); // fpException() @@ -85,12 +85,12 @@ void JitArmILAsmRoutineManager::Generate() B(dispatcher); SetJumpTarget(bail); - doTiming = GetCodePtr(); + doTiming = GetCodePtr(); // XXX: In JIT64, Advance() gets called /after/ the exception checking - // once it jumps back to the start of outerLoop + // once it jumps back to the start of outerLoop QuickCallFunction(R14, (void*)&CoreTiming::Advance); - // Does exception checking + // Does exception checking testExceptions = GetCodePtr(); LDR(R0, R9, PPCSTATE_OFF(pc)); STR(R0, R9, PPCSTATE_OFF(npc)); @@ -106,13 +106,13 @@ void JitArmILAsmRoutineManager::Generate() FixupBranch Exit = B_CC(CC_NEQ); B(dispatcher); - + SetJumpTarget(Exit); ADD(_SP, _SP, 4); POP(9, R4, R5, R6, R7, R8, R9, R10, R11, _PC); // Returns - + GenerateCommon(); FlushIcache(); diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.h b/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.h index bd252f59f9..e8e401445a 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.h +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/JitILAsm.h @@ -7,10 +7,10 @@ #include "ArmEmitter.h" #include "../JitCommon/JitAsmCommon.h" using namespace ArmGen; -class JitArmILAsmRoutineManager : public CommonAsmRoutinesBase, public ARMXCodeBlock +class JitArmILAsmRoutineManager : public CommonAsmRoutinesBase, public ARMXCodeBlock { private: - void Generate(); + void Generate(); void GenerateCommon() {} public: @@ -27,6 +27,6 @@ public: extern JitArmILAsmRoutineManager armil_asm_routines; -#endif +#endif diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Branch.cpp b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Branch.cpp index 6c4a6d2dcc..bad63dd5c6 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Branch.cpp @@ -123,12 +123,12 @@ void JitArmIL::bcx(UGeckoInstruction inst) destination = js.compilerPC + SignExt16(inst.BD << 2); if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && - inst.hex == 0x4182fff8 && + inst.hex == 0x4182fff8 && (Memory::ReadUnchecked_U32(js.compilerPC - 8) & 0xFFFF0000) == 0x800D0000 && (Memory::ReadUnchecked_U32(js.compilerPC - 4) == 0x28000000 || - (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && Memory::ReadUnchecked_U32(js.compilerPC - 4) == 0x2C000000)) + (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && Memory::ReadUnchecked_U32(js.compilerPC - 4) == 0x2C000000)) ) - { + { ibuild.EmitIdleBranch(Test, ibuild.EmitIntConst(destination)); } else diff --git a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Tables.cpp b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Tables.cpp index 2f6677c952..eaa5951684 100644 --- a/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Tables.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArmIL/JitIL_Tables.cpp @@ -29,7 +29,7 @@ struct GekkoOPTemplate //GekkoOPInfo opinfo; // Doesn't need opinfo, Interpreter fills it out }; -static GekkoOPTemplate primarytable[] = +static GekkoOPTemplate primarytable[] = { {4, &JitArmIL::DynaRunTable4}, //"RunTable4", OPTYPE_SUBTABLE | (4<<24), 0}}, {19, &JitArmIL::DynaRunTable19}, //"RunTable19", OPTYPE_SUBTABLE | (19<<24), 0}}, @@ -110,7 +110,7 @@ static GekkoOPTemplate primarytable[] = {58, &JitArmIL::Default}, //"unknown_instruction", OPTYPE_UNKNOWN, 0}}, }; -static GekkoOPTemplate table4[] = +static GekkoOPTemplate table4[] = { //SUBOP10 {0, &JitArmIL::Default}, //"ps_cmpu0", OPTYPE_PS, FL_SET_CRn}}, {32, &JitArmIL::Default}, //"ps_cmpo0", OPTYPE_PS, FL_SET_CRn}}, @@ -126,9 +126,9 @@ static GekkoOPTemplate table4[] = {624, &JitArmIL::Default}, //"ps_merge11", OPTYPE_PS, FL_RC_BIT}}, {1014, &JitArmIL::Default}, //"dcbz_l", OPTYPE_SYSTEM, 0}}, -}; +}; -static GekkoOPTemplate table4_2[] = +static GekkoOPTemplate table4_2[] = { {10, &JitArmIL::Default}, //"ps_sum0", OPTYPE_PS, 0}}, {11, &JitArmIL::Default}, //"ps_sum1", OPTYPE_PS, 0}}, @@ -150,15 +150,15 @@ static GekkoOPTemplate table4_2[] = }; -static GekkoOPTemplate table4_3[] = +static GekkoOPTemplate table4_3[] = { {6, &JitArmIL::Default}, //"psq_lx", OPTYPE_PS, 0}}, {7, &JitArmIL::Default}, //"psq_stx", OPTYPE_PS, 0}}, {38, &JitArmIL::Default}, //"psq_lux", OPTYPE_PS, 0}}, - {39, &JitArmIL::Default}, //"psq_stux", OPTYPE_PS, 0}}, + {39, &JitArmIL::Default}, //"psq_stux", OPTYPE_PS, 0}}, }; -static GekkoOPTemplate table19[] = +static GekkoOPTemplate table19[] = { {528, &JitArmIL::bcctrx}, //"bcctrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, {16, &JitArmIL::bclrx}, //"bclrx", OPTYPE_BRANCH, FL_ENDBLOCK}}, @@ -170,16 +170,16 @@ static GekkoOPTemplate table19[] = {449, &JitArmIL::crXX}, //"cror", OPTYPE_CR, FL_EVIL}}, {417, &JitArmIL::crXX}, //"crorc", OPTYPE_CR, FL_EVIL}}, {193, &JitArmIL::crXX}, //"crxor", OPTYPE_CR, FL_EVIL}}, - + {150, &JitArmIL::Default}, //"isync", OPTYPE_ICACHE, FL_EVIL}}, {0, &JitArmIL::Default}, //"mcrf", OPTYPE_SYSTEM, FL_EVIL}}, - + {50, &JitArmIL::rfi}, //"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1}}, {18, &JitArmIL::Break}, //"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS}} }; -static GekkoOPTemplate table31[] = +static GekkoOPTemplate table31[] = { {28, &JitArmIL::boolX}, //"andx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, {60, &JitArmIL::boolX}, //"andcx", OPTYPE_INTEGER, FL_OUT_A | FL_IN_SB | FL_RC_BIT}}, @@ -254,7 +254,7 @@ static GekkoOPTemplate table31[] = {661, &JitArmIL::Default}, //"stswx", OPTYPE_STORE, FL_EVIL}}, {725, &JitArmIL::Default}, //"stswi", OPTYPE_STORE, FL_EVIL}}, - // fp load/store + // fp load/store {535, &JitArmIL::Default}, //"lfsx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, {567, &JitArmIL::Default}, //"lfsux", OPTYPE_LOADFP, FL_IN_A | FL_IN_B}}, {599, &JitArmIL::Default}, //"lfdx", OPTYPE_LOADFP, FL_IN_A0 | FL_IN_B}}, @@ -292,8 +292,8 @@ static GekkoOPTemplate table31[] = {566, &JitArmIL::Default}, //"tlbsync", OPTYPE_SYSTEM, 0}}, }; -static GekkoOPTemplate table31_2[] = -{ +static GekkoOPTemplate table31_2[] = +{ {266, &JitArmIL::Default}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {778, &JitArmIL::Default}, //"addx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_RC_BIT}}, {10, &JitArmIL::Default}, //"addcx", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_SET_CA | FL_RC_BIT}}, @@ -317,21 +317,21 @@ static GekkoOPTemplate table31_2[] = {200, &JitArmIL::Default}, //"subfzex", OPTYPE_INTEGER, FL_OUT_D | FL_IN_AB | FL_READ_CA | FL_SET_CA | FL_RC_BIT}}, }; -static GekkoOPTemplate table59[] = +static GekkoOPTemplate table59[] = { - {18, &JitArmIL::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, - {20, &JitArmIL::Default}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {21, &JitArmIL::Default}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {18, &JitArmIL::Default}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, + {20, &JitArmIL::Default}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {21, &JitArmIL::Default}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, // {22, &JitArmIL::Default}, //"fsqrtsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {24, &JitArmIL::Default}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, - {25, &JitArmIL::Default}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {28, &JitArmIL::Default}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {29, &JitArmIL::Default}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {30, &JitArmIL::Default}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, - {31, &JitArmIL::Default}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, -}; + {24, &JitArmIL::Default}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, + {25, &JitArmIL::Default}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {28, &JitArmIL::Default}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {29, &JitArmIL::Default}, //"fmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {30, &JitArmIL::Default}, //"fnmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, + {31, &JitArmIL::Default}, //"fnmaddsx", OPTYPE_FPU, FL_RC_BIT_F}}, +}; -static GekkoOPTemplate table63[] = +static GekkoOPTemplate table63[] = { {264, &JitArmIL::Default}, //"fabsx", OPTYPE_FPU, FL_RC_BIT_F}}, {32, &JitArmIL::Default}, //"fcmpo", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -351,7 +351,7 @@ static GekkoOPTemplate table63[] = {711, &JitArmIL::Default}, //"mtfsfx", OPTYPE_SYSTEMFP, 0, 2}}, }; -static GekkoOPTemplate table63_2[] = +static GekkoOPTemplate table63_2[] = { {18, &JitArmIL::Default}, //"fdivx", OPTYPE_FPU, FL_RC_BIT_F, 30}}, {20, &JitArmIL::Default}, //"fsubx", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -394,7 +394,7 @@ void InitTables() return; //clear - for (int i = 0; i < 32; i++) + for (int i = 0; i < 32; i++) { dynaOpTable59[i] = &JitArmIL::unknown_instruction; } @@ -404,7 +404,7 @@ void InitTables() dynaOpTable4 [i] = &JitArmIL::unknown_instruction; dynaOpTable19[i] = &JitArmIL::unknown_instruction; dynaOpTable31[i] = &JitArmIL::unknown_instruction; - dynaOpTable63[i] = &JitArmIL::unknown_instruction; + dynaOpTable63[i] = &JitArmIL::unknown_instruction; } for (int i = 0; i < (int)(sizeof(primarytable) / sizeof(GekkoOPTemplate)); i++) diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/JitAsmCommon.cpp b/Source/Core/Core/Src/PowerPC/JitCommon/JitAsmCommon.cpp index 269828f03d..311ced730a 100644 --- a/Source/Core/Core/Src/PowerPC/JitCommon/JitAsmCommon.cpp +++ b/Source/Core/Core/Src/PowerPC/JitCommon/JitAsmCommon.cpp @@ -16,7 +16,7 @@ using namespace Gen; static int temp32; -void CommonAsmRoutines::GenFifoWrite(int size) +void CommonAsmRoutines::GenFifoWrite(int size) { // Assume value in ABI_PARAM1 PUSH(ESI); @@ -39,7 +39,7 @@ void CommonAsmRoutines::GenFifoWrite(int size) RET(); } -void CommonAsmRoutines::GenFifoFloatWrite() +void CommonAsmRoutines::GenFifoFloatWrite() { // Assume value in XMM0 PUSH(ESI); @@ -57,7 +57,7 @@ void CommonAsmRoutines::GenFifoFloatWrite() RET(); } -void CommonAsmRoutines::GenFifoXmm64Write() +void CommonAsmRoutines::GenFifoXmm64Write() { // Assume value in XMM0. Assume pre-byteswapped (unlike the others here!) PUSH(ESI); @@ -93,7 +93,7 @@ static const float GC_ALIGNED16(m_quantizeTableS[]) = 1.0 / (1 << 12), 1.0 / (1 << 11), 1.0 / (1 << 10), 1.0 / (1 << 9), 1.0 / (1 << 8), 1.0 / (1 << 7), 1.0 / (1 << 6), 1.0 / (1 << 5), 1.0 / (1 << 4), 1.0 / (1 << 3), 1.0 / (1 << 2), 1.0 / (1 << 1), -}; +}; static const float GC_ALIGNED16(m_dequantizeTableS[]) = { @@ -113,7 +113,7 @@ static const float GC_ALIGNED16(m_dequantizeTableS[]) = (1 << 12), (1 << 11), (1 << 10), (1 << 9), (1 << 8), (1 << 7), (1 << 6), (1 << 5), (1 << 4), (1 << 3), (1 << 2), (1 << 1), -}; +}; static float GC_ALIGNED16(psTemp[4]); @@ -205,7 +205,7 @@ void CommonAsmRoutines::GenQuantizedStores() MOVSS(XMM1, MDisp(EAX, (u32)(u64)m_quantizeTableS)); PUNPCKLDQ(XMM1, R(XMM1)); MULPS(XMM0, R(XMM1)); -#ifdef QUANTIZE_OVERFLOW_SAFE +#ifdef QUANTIZE_OVERFLOW_SAFE MOVSS(XMM1, M((void *)&m_65535)); PUNPCKLDQ(XMM1, R(XMM1)); MINPS(XMM0, R(XMM1)); @@ -225,7 +225,7 @@ void CommonAsmRoutines::GenQuantizedStores() PUNPCKLDQ(XMM1, R(XMM1)); MULPS(XMM0, R(XMM1)); - // PACKUSDW is available only in SSE4 + // PACKUSDW is available only in SSE4 PXOR(XMM1, R(XMM1)); MAXPS(XMM0, R(XMM1)); MOVSS(XMM1, M((void *)&m_65535)); @@ -251,7 +251,7 @@ void CommonAsmRoutines::GenQuantizedStores() // SHUFPS or UNPCKLPS might be a better choice here. The last one might just be an alias though. PUNPCKLDQ(XMM1, R(XMM1)); MULPS(XMM0, R(XMM1)); -#ifdef QUANTIZE_OVERFLOW_SAFE +#ifdef QUANTIZE_OVERFLOW_SAFE MOVSS(XMM1, M((void *)&m_65535)); PUNPCKLDQ(XMM1, R(XMM1)); MINPS(XMM0, R(XMM1)); diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/JitBackpatch.cpp b/Source/Core/Core/Src/PowerPC/JitCommon/JitBackpatch.cpp index 696ca457ee..cd10306f2f 100644 --- a/Source/Core/Core/Src/PowerPC/JitCommon/JitBackpatch.cpp +++ b/Source/Core/Core/Src/PowerPC/JitCommon/JitBackpatch.cpp @@ -107,7 +107,7 @@ const u8 *TrampolineCache::GetWriteTrampoline(const InstructionInfo &info, u32 r X64Reg dataReg = (X64Reg)info.regOperandReg; X64Reg addrReg = (X64Reg)info.scaledReg; - // It's a write. Yay. Remember that we don't have to be super efficient since it's "just" a + // It's a write. Yay. Remember that we don't have to be super efficient since it's "just" a // hardware access - we can take shortcuts. // Don't treat FIFO writes specially for now because they require a burst // check anyway. @@ -157,7 +157,7 @@ const u8 *TrampolineCache::GetWriteTrampoline(const InstructionInfo &info, u32 r // This generates some fairly heavy trampolines, but: // 1) It's really necessary. We don't know anything about the context. -// 2) It doesn't really hurt. Only instructions that access I/O will get these, and there won't be +// 2) It doesn't really hurt. Only instructions that access I/O will get these, and there won't be // that many of them in a typical program/game. const u8 *Jitx86Base::BackPatch(u8 *codePtr, u32 emAddress, void *ctx_void) { @@ -166,7 +166,7 @@ const u8 *Jitx86Base::BackPatch(u8 *codePtr, u32 emAddress, void *ctx_void) if (!jit->IsInCodeSpace(codePtr)) return 0; // this will become a regular crash real soon after this - + InstructionInfo info; if (!DisassembleMov(codePtr, &info)) { BackPatchError("BackPatch - failed to disassemble MOV instruction", codePtr, emAddress); diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.cpp b/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.cpp index 46644f2fc9..d135e9864c 100644 --- a/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.cpp +++ b/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.cpp @@ -35,7 +35,7 @@ void LogGeneratedX86(int size, PPCAnalyst::CodeBuffer *code_buffer, const u8 *no DisassembleGekko(op.inst.hex, op.address, temp, 256); sprintf(pDis, "%08x %s", op.address, temp); DEBUG_LOG(DYNA_REC,"IR_X86 PPC: %s\n", pDis); - } + } disassembler x64disasm; x64disasm.set_syntax_intel(); diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.h b/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.h index 5ca630621f..1bf2d70c53 100644 --- a/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.h +++ b/Source/Core/Core/Src/PowerPC/JitCommon/JitBase.h @@ -77,7 +77,7 @@ public: // This should probably be removed from public: JitOptions jo; JitState js; - + virtual JitBaseBlockCache *GetBlockCache() = 0; virtual void Jit(u32 em_address) = 0; @@ -93,10 +93,10 @@ class Jitx86Base : public JitBase, public EmuCodeBlock { protected: JitBlockCache blocks; - TrampolineCache trampolines; + TrampolineCache trampolines; public: JitBlockCache *GetBlockCache() { return &blocks; } - + const u8 *BackPatch(u8 *codePtr, u32 em_address, void *ctx); bool IsInCodeSpace(u8 *ptr) { return IsInSpace(ptr); } diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.cpp b/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.cpp index 793702bed9..d7c78d9d17 100644 --- a/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.cpp +++ b/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.cpp @@ -37,7 +37,7 @@ using namespace Gen; #define INVALID_EXIT 0xFFFFFFFF - bool JitBaseBlockCache::IsFull() const + bool JitBaseBlockCache::IsFull() const { return GetNumBlocks() >= MAX_NUM_BLOCKS - 1; } @@ -93,7 +93,7 @@ using namespace Gen; iJIT_NotifyEvent(iJVM_EVENT_TYPE_SHUTDOWN, NULL); #endif } - + // This clears the JIT cache. It's called from JitCache.cpp when the JIT cache // is full and when saving and loading states. void JitBaseBlockCache::Clear() @@ -156,7 +156,7 @@ using namespace Gen; if ((s1 >= s2 && s1 <= e2) || (e1 >= s2 && e1 <= e2) || (s2 >= s1 && s2 <= e1) || - (e2 >= s1 && e2 <= e1)) + (e2 >= s1 && e2 <= e1)) return true; else return false; @@ -195,10 +195,10 @@ using namespace Gen; { for (int i = 0; i < 2; i++) { - if (b.exitAddress[i] != INVALID_EXIT) + if (b.exitAddress[i] != INVALID_EXIT) links_to.insert(std::pair(b.exitAddress[i], block_num)); } - + LinkBlock(block_num); LinkBlockExits(block_num); } @@ -244,7 +244,7 @@ using namespace Gen; int JitBaseBlockCache::GetBlockNumberFromStartAddress(u32 addr) { if (!blocks) - return -1; + return -1; u32 inst; inst = *GetICachePtr(addr); if (inst & 0xfc000000) // definitely not a JIT block @@ -252,12 +252,12 @@ using namespace Gen; if ((int)inst >= num_blocks) return -1; if (blocks[inst].originalAddress != addr) - return -1; + return -1; return inst; } CompiledCode JitBaseBlockCache::GetCompiledCodeFromBlock(int block_num) - { + { return (CompiledCode)blockCodePointers[block_num]; } diff --git a/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.h b/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.h index 7b84ce0fc5..4b540ee2ff 100644 --- a/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.h +++ b/Source/Core/Core/Src/PowerPC/JitCommon/JitCache.h @@ -39,7 +39,7 @@ struct JitBlock u32 exitAddress[2]; // 0xFFFFFFFF == unknown u32 originalAddress; - u32 codeSize; + u32 codeSize; u32 originalSize; int runCount; // for profiling. int flags; @@ -80,7 +80,7 @@ class JitBaseBlockCache void LinkBlockExits(int i); void LinkBlock(int i); void UnlinkBlock(int i); - + // Virtual for overloaded virtual void WriteLinkBlock(u8* location, const u8* address) = 0; virtual void WriteDestroyBlock(const u8* location, u32 address) = 0; diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/IR.cpp b/Source/Core/Core/Src/PowerPC/JitILCommon/IR.cpp index 32062a8f53..0e73b211c1 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/IR.cpp +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/IR.cpp @@ -49,7 +49,7 @@ I've implemented one additional trick: fast memory for 32-bit machines. This works off of the observation that loads and stores can be classified at runtime: any particular load instruction will always load similar addresses, and any store will store to similar addresses. Using this observation, every -block is JIT-ed twice: the first time, the block includes extra code to +block is JIT-ed twice: the first time, the block includes extra code to instrument the loads. Then, at the end of the block, it jumps back into the JIT to recompile itself. The second recompilation looks at the address of each load and store, and bakes the information into the generated code. This allows removing @@ -66,7 +66,7 @@ use any floating-point), it's roughly 25% faster than the current JIT, with the edge over the current JIT mostly due to the fast memory optimization. Update on perf: -I've been doing a bit more tweaking for a small perf improvement (in the +I've been doing a bit more tweaking for a small perf improvement (in the range of 5-10%). That said, it's getting to the point where I'm simply not seeing potential for improvements to codegen, at least for long, straightforward blocks. For one long block that's at the top of my samples, @@ -570,7 +570,7 @@ InstLoc IRBuilder::FoldMul(InstLoc Op1, InstLoc Op2) { if (imm == -1U) { return FoldSub(EmitIntConst(0), Op1); } - + for (unsigned i0 = 0; i0 < 30; ++i0) { // x * (1 << i0) => x << i0 // One "shl" is faster than one "imul". @@ -862,7 +862,7 @@ InstLoc IRBuilder::FoldBranchCond(InstLoc Op1, InstLoc Op2) { if (getOpcode(*XOp1) == And && isImm(*getOp2(XOp1)) && getOpcode(*getOp1(XOp1)) == ICmpCRSigned) { - unsigned innerBranchValue = + unsigned innerBranchValue = GetImmValue(getOp2(XOp1)); if (branchValue == innerBranchValue) { if (branchValue == 2) @@ -1006,7 +1006,7 @@ InstLoc IRBuilder::FoldInterpreterFallback(InstLoc Op1, InstLoc Op2) { CRCacheStore[i] = 0; } CTRCache = 0; - CTRCacheStore = 0; + CTRCacheStore = 0; return EmitBiOp(InterpreterFallback, Op1, Op2); } @@ -1226,24 +1226,24 @@ struct Writer static std::auto_ptr writer; static const std::string opcodeNames[] = { - "Nop", "LoadGReg", "LoadLink", "LoadCR", "LoadCarry", "LoadCTR", - "LoadMSR", "LoadGQR", "SExt8", "SExt16", "BSwap32", "BSwap16", "Cntlzw", - "Not", "Load8", "Load16", "Load32", "BranchUncond", "StoreGReg", - "StoreCR", "StoreLink", "StoreCarry", "StoreCTR", "StoreMSR", "StoreFPRF", - "StoreGQR", "StoreSRR", "InterpreterFallback", "Add", "Mul", "And", "Or", - "Xor", "MulHighUnsigned", "Sub", "Shl", "Shrl", "Sarl", "Rol", - "ICmpCRSigned", "ICmpCRUnsigned", "ICmpEq", "ICmpNe", "ICmpUgt", - "ICmpUlt", "ICmpUge", "ICmpUle", "ICmpSgt", "ICmpSlt", "ICmpSge", - "ICmpSle", "Store8", "Store16", "Store32", "BranchCond", "FResult_Start", - "LoadSingle", "LoadDouble", "LoadPaired", "DoubleToSingle", - "DupSingleToMReg", "DupSingleToPacked", "InsertDoubleInMReg", - "ExpandPackedToMReg", "CompactMRegToPacked", "LoadFReg", - "LoadFRegDENToZero", "FSMul", "FSAdd", "FSSub", "FSNeg", "FSRSqrt", - "FPAdd", "FPMul", "FPSub", "FPNeg", "FDMul", "FDAdd", "FDSub", "FDNeg", - "FPMerge00", "FPMerge01", "FPMerge10", "FPMerge11", "FPDup0", "FPDup1", - "FResult_End", "StorePaired", "StoreSingle", "StoreDouble", "StoreFReg", - "FDCmpCR", "CInt16", "CInt32", "SystemCall", "RFIExit", - "InterpreterBranch", "IdleBranch", "ShortIdleLoop", + "Nop", "LoadGReg", "LoadLink", "LoadCR", "LoadCarry", "LoadCTR", + "LoadMSR", "LoadGQR", "SExt8", "SExt16", "BSwap32", "BSwap16", "Cntlzw", + "Not", "Load8", "Load16", "Load32", "BranchUncond", "StoreGReg", + "StoreCR", "StoreLink", "StoreCarry", "StoreCTR", "StoreMSR", "StoreFPRF", + "StoreGQR", "StoreSRR", "InterpreterFallback", "Add", "Mul", "And", "Or", + "Xor", "MulHighUnsigned", "Sub", "Shl", "Shrl", "Sarl", "Rol", + "ICmpCRSigned", "ICmpCRUnsigned", "ICmpEq", "ICmpNe", "ICmpUgt", + "ICmpUlt", "ICmpUge", "ICmpUle", "ICmpSgt", "ICmpSlt", "ICmpSge", + "ICmpSle", "Store8", "Store16", "Store32", "BranchCond", "FResult_Start", + "LoadSingle", "LoadDouble", "LoadPaired", "DoubleToSingle", + "DupSingleToMReg", "DupSingleToPacked", "InsertDoubleInMReg", + "ExpandPackedToMReg", "CompactMRegToPacked", "LoadFReg", + "LoadFRegDENToZero", "FSMul", "FSAdd", "FSSub", "FSNeg", "FSRSqrt", + "FPAdd", "FPMul", "FPSub", "FPNeg", "FDMul", "FDAdd", "FDSub", "FDNeg", + "FPMerge00", "FPMerge01", "FPMerge10", "FPMerge11", "FPDup0", "FPDup1", + "FResult_End", "StorePaired", "StoreSingle", "StoreDouble", "StoreFReg", + "FDCmpCR", "CInt16", "CInt32", "SystemCall", "RFIExit", + "InterpreterBranch", "IdleBranch", "ShortIdleLoop", "FPExceptionCheckStart", "FPExceptionCheckEnd", "ISIException", "ExtExceptionCheck", "Tramp", "BlockStart", "BlockEnd", "Int3", }; diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/IR.h b/Source/Core/Core/Src/PowerPC/JitILCommon/IR.h index cce9c3ae3c..991f1524c8 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/IR.h +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/IR.h @@ -182,7 +182,7 @@ unsigned inline isICmp(Inst i) { } unsigned inline isFResult(Inst i) { - return getOpcode(i) > FResult_Start && + return getOpcode(i) > FResult_Start && getOpcode(i) < FResult_End; } @@ -406,7 +406,7 @@ public: } InstLoc EmitRFIExit() { return FoldZeroOp(RFIExit, 0); - } + } InstLoc EmitShortIdleLoop(InstLoc pc) { return FoldUOp(ShortIdleLoop, pc); } diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase.h b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase.h index bce0c69eea..ee5d08a4fd 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase.h +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase.h @@ -44,7 +44,7 @@ public: virtual const CommonAsmRoutinesBase *GetAsmRoutines() = 0; virtual bool IsInCodeSpace(u8 *ptr) = 0; - + // OPCODES virtual void unknown_instruction(UGeckoInstruction inst) = 0; virtual void Default(UGeckoInstruction inst) = 0; @@ -104,7 +104,7 @@ public: void extsbx(UGeckoInstruction inst); void extshx(UGeckoInstruction inst); - + void reg_imm(UGeckoInstruction inst); void ps_sel(UGeckoInstruction inst); @@ -147,7 +147,7 @@ public: void subfic(UGeckoInstruction inst); void subfcx(UGeckoInstruction inst); void subfx(UGeckoInstruction inst); - void subfex(UGeckoInstruction inst); + void subfex(UGeckoInstruction inst); }; #endif diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Branch.cpp b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Branch.cpp index a806c3a82d..6d6c594126 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Branch.cpp +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Branch.cpp @@ -10,12 +10,12 @@ // No need for a disable-mechanism. // If defined, clears CR0 at blr and bl-s. If the assumption that -// flags never carry over between functions holds, then the task for +// flags never carry over between functions holds, then the task for // an optimizer becomes much easier. // #define ACID_TEST -// Zelda and many more games seem to pass the Acid Test. +// Zelda and many more games seem to pass the Acid Test. //#define NORMALBRANCH_START Default(inst); ibuild.EmitInterpreterBranch(); return; #define NORMALBRANCH_START @@ -114,12 +114,12 @@ void JitILBase::bcx(UGeckoInstruction inst) destination = js.compilerPC + SignExt16(inst.BD << 2); if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && - inst.hex == 0x4182fff8 && + inst.hex == 0x4182fff8 && (Memory::ReadUnchecked_U32(js.compilerPC - 8) & 0xFFFF0000) == 0x800D0000 && (Memory::ReadUnchecked_U32(js.compilerPC - 4) == 0x28000000 || - (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && Memory::ReadUnchecked_U32(js.compilerPC - 4) == 0x2C000000)) + (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && Memory::ReadUnchecked_U32(js.compilerPC - 4) == 0x2C000000)) ) - { + { ibuild.EmitIdleBranch(Test, ibuild.EmitIntConst(destination)); } else diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Integer.cpp b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Integer.cpp index f3a3da818e..836cc9d45e 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Integer.cpp @@ -114,7 +114,7 @@ void JitILBase::cmpXX(UGeckoInstruction inst) } js.downcountAmount++; //TODO: should this be somewhere else? - + ibuild.EmitStoreCR(res, inst.CRFD); } @@ -217,7 +217,7 @@ void JitILBase::subfic(UGeckoInstruction inst) ibuild.EmitStoreCarry(test); } -void JitILBase::subfcx(UGeckoInstruction inst) +void JitILBase::subfcx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITIntegerOff) @@ -234,7 +234,7 @@ void JitILBase::subfcx(UGeckoInstruction inst) ComputeRC(ibuild, val); } -void JitILBase::subfex(UGeckoInstruction inst) +void JitILBase::subfex(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITIntegerOff) @@ -492,7 +492,7 @@ void JitILBase::srawx(UGeckoInstruction inst) test = ibuild.EmitOr(val, mask2); test = ibuild.EmitICmpUgt(test, mask); ibuild.EmitStoreCarry(test); - + if (inst.Rc) ComputeRC(ibuild, val); } @@ -507,7 +507,7 @@ void JitILBase::srawix(UGeckoInstruction inst) unsigned int mask = -1u << inst.SH; test = ibuild.EmitOr(val, ibuild.EmitIntConst(mask & 0x7FFFFFFF)); test = ibuild.EmitICmpUgt(test, ibuild.EmitIntConst(mask)); - + ibuild.EmitStoreCarry(test); if (inst.Rc) ComputeRC(ibuild, val); diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_LoadStore.cpp index 495a6bb4e6..adbf31439a 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_LoadStore.cpp +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_LoadStore.cpp @@ -31,7 +31,7 @@ void JitILBase::lXz(UGeckoInstruction inst) IREmitter::InstLoc val; switch (inst.OPCD & ~0x1) { - case 32: val = ibuild.EmitLoad32(addr); break; //lwz + case 32: val = ibuild.EmitLoad32(addr); break; //lwz case 40: val = ibuild.EmitLoad16(addr); break; //lhz case 34: val = ibuild.EmitLoad8(addr); break; //lbz default: PanicAlert("lXz: invalid access size"); val = 0; break; @@ -111,7 +111,7 @@ void JitILBase::dcbz(UGeckoInstruction inst) // TODO! #if 0 if(Core::g_CoreStartupParameter.bJITOff || Core::g_CoreStartupParameter.bJITLoadStoreOff) - {Default(inst); return;} // turn off from debugger + {Default(inst); return;} // turn off from debugger INSTRUCTION_START; MOV(32, R(EAX), gpr.R(inst.RB)); if (inst.RA) diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Paired.cpp b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Paired.cpp index 74f070809f..7ed65497c7 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Paired.cpp +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_Paired.cpp @@ -38,7 +38,7 @@ void JitILBase::ps_arith(UGeckoInstruction inst) else rhs = ibuild.EmitCompactMRegToPacked(ibuild.EmitLoadFReg(inst.FB)); val = ibuild.EmitCompactMRegToPacked(val); - + switch (inst.SUBOP5) { case 20: @@ -58,7 +58,7 @@ void JitILBase::ps_sum(UGeckoInstruction inst) { // TODO: This operation strikes me as a bit strange... // perhaps we can optimize it depending on the users? - // TODO: ps_sum breaks Sonic Colours (black screen) + // TODO: ps_sum breaks Sonic Colours (black screen) Default(inst); return; INSTRUCTION_START JITDISABLE(bJITPairedOff) @@ -115,7 +115,7 @@ void JitILBase::ps_mergeXX(UGeckoInstruction inst) switch (inst.SUBOP10) { - case 528: + case 528: val = ibuild.EmitFPMerge00(val, rhs); break; //00 case 560: @@ -142,7 +142,7 @@ void JitILBase::ps_maddXX(UGeckoInstruction inst) if (inst.Rc) { Default(inst); return; } - + IREmitter::InstLoc val = ibuild.EmitLoadFReg(inst.FA), op2, op3; val = ibuild.EmitCompactMRegToPacked(val); switch (inst.SUBOP5) diff --git a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_SystemRegisters.cpp b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_SystemRegisters.cpp index 3d567d85a8..93c635839c 100644 --- a/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_SystemRegisters.cpp +++ b/Source/Core/Core/Src/PowerPC/JitILCommon/JitILBase_SystemRegisters.cpp @@ -171,12 +171,12 @@ void JitILBase::crXX(UGeckoInstruction inst) switch (subop) { case 257: // crand - eax = ibuild.EmitAnd(eax, ecx); + eax = ibuild.EmitAnd(eax, ecx); break; case 129: // crandc ecx = ibuild.EmitNot(ecx); - eax = ibuild.EmitAnd(eax, ecx); + eax = ibuild.EmitAnd(eax, ecx); break; case 289: // creqv diff --git a/Source/Core/Core/Src/PowerPC/JitInterface.cpp b/Source/Core/Core/Src/PowerPC/JitInterface.cpp index 54e1ce67a2..ce8cc2e3ef 100644 --- a/Source/Core/Core/Src/PowerPC/JitInterface.cpp +++ b/Source/Core/Core/Src/PowerPC/JitInterface.cpp @@ -44,7 +44,7 @@ namespace JitInterface { bFakeVMEM = SConfig::GetInstance().m_LocalCoreStartupParameter.bTLBHack == true; bMMU = SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU; - + CPUCoreBase *ptr = NULL; switch(core) { @@ -128,7 +128,7 @@ namespace JitInterface { // Can't really do this with no jit core available #ifndef _M_GENERIC - + std::vector stats; stats.reserve(jit->GetBlockCache()->GetNumBlocks()); u64 cost_sum = 0; @@ -169,14 +169,14 @@ namespace JitInterface { std::string name = g_symbolDB.GetDescription(block->originalAddress); double percent = 100.0 * (double)stat.cost / (double)cost_sum; - #ifdef _WIN32 + #ifdef _WIN32 double timePercent = 100.0 * (double)block->ticCounter / (double)timecost_sum; - fprintf(f.GetHandle(), "%08x\t%s\t%llu\t%llu\t%.2lf\t%llf\t%lf\t%i\n", + fprintf(f.GetHandle(), "%08x\t%s\t%llu\t%llu\t%.2lf\t%llf\t%lf\t%i\n", block->originalAddress, name.c_str(), stat.cost, block->ticCounter, percent, timePercent, (double)block->ticCounter*1000.0/(double)countsPerSec, block->codeSize); #else - fprintf(f.GetHandle(), "%08x\t%s\t%llu\t???\t%.2lf\t???\t???\t%i\n", + fprintf(f.GetHandle(), "%08x\t%s\t%llu\t???\t%.2lf\t???\t???\t%i\n", block->originalAddress, name.c_str(), stat.cost, percent, block->codeSize); #endif } @@ -211,7 +211,7 @@ namespace JitInterface u32 Read_Opcode_JIT(u32 _Address) { - #ifdef FAST_ICACHE + #ifdef FAST_ICACHE if (bMMU && !bFakeVMEM && (_Address & Memory::ADDR_MASK_MEM1)) { _Address = Memory::TranslateAddress(_Address, Memory::FLAG_OPCODE); @@ -233,7 +233,7 @@ namespace JitInterface #endif return inst; } - + void Shutdown() { if (jit) diff --git a/Source/Core/Core/Src/PowerPC/JitInterface.h b/Source/Core/Core/Src/PowerPC/JitInterface.h index 81764b3182..288330c707 100644 --- a/Source/Core/Core/Src/PowerPC/JitInterface.h +++ b/Source/Core/Core/Src/PowerPC/JitInterface.h @@ -8,7 +8,7 @@ namespace JitInterface { void DoState(PointerWrap &p); - + CPUCoreBase *InitJitCore(int core); void InitTables(int core); CPUCoreBase *GetCore(); @@ -25,11 +25,11 @@ namespace JitInterface // Clearing CodeCache void ClearCache(); - + void ClearSafe(); void InvalidateICache(u32 address, u32 size); - + void Shutdown(); } extern bool bFakeVMEM; diff --git a/Source/Core/Core/Src/PowerPC/PPCAnalyst.cpp b/Source/Core/Core/Src/PowerPC/PPCAnalyst.cpp index c0b5de8620..eb398539d9 100644 --- a/Source/Core/Core/Src/PowerPC/PPCAnalyst.cpp +++ b/Source/Core/Core/Src/PowerPC/PPCAnalyst.cpp @@ -86,8 +86,8 @@ bool AnalyzeFunction(u32 startAddr, Symbol &func, int max_size) func.callers.clear(); func.size = 0; func.flags = FFLAG_LEAF; - u32 addr = startAddr; - + u32 addr = startAddr; + u32 farthestInternalBranchTarget = startAddr; int numInternalBranches = 0; while (true) @@ -95,7 +95,7 @@ bool AnalyzeFunction(u32 startAddr, Symbol &func, int max_size) func.size += 4; if (func.size >= CODEBUFFER_SIZE * 4) //weird return false; - + UGeckoInstruction instr = (UGeckoInstruction)Memory::ReadUnchecked_U32(addr); if (max_size && func.size > max_size) { @@ -153,12 +153,12 @@ bool AnalyzeFunction(u32 startAddr, Symbol &func, int max_size) func.flags &= ~FFLAG_LEAF; func.flags |= FFLAG_RFI; } - else + else { if (instr.OPCD == 16) { u32 target = SignExt16(instr.BD << 2); - + if (!instr.AA) target += addr; @@ -249,7 +249,7 @@ bool CanSwapAdjacentOps(const CodeOp &a, const CodeOp &b) { int regInA = a.regsIn[j]; int regInB = b.regsIn[j]; - if (regInA >= 0 && + if (regInA >= 0 && (b.regsOut[0] == regInA || b.regsOut[1] == regInA)) { @@ -283,7 +283,7 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, size_of_merged_addresses = 1; memset(st, 0, sizeof(*st)); - + // Disabled the following optimization in preference of FAST_ICACHE //UGeckoInstruction previnst = Memory::Read_Opcode_JIT_LC(address - 4); //if (previnst.hex == 0x4e800020) @@ -291,7 +291,7 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, gpa->any = true; fpa->any = false; - + for (int i = 0; i < 32; i++) { gpa->firstRead[i] = -1; @@ -357,7 +357,7 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, inst = JitInterface::Read_Opcode_JIT(address); } } - + if (inst.hex != 0) { num_inst++; @@ -447,7 +447,7 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, code[i].fregsIn[j] = -1; code[i].fregOut = -1; - switch (opinfo->type) + switch (opinfo->type) { case OPTYPE_INTEGER: case OPTYPE_LOAD: @@ -576,7 +576,7 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, // A broken block is a block that does not end in a branch broken_block = true; } - + // Scan for CR0 dependency // assume next block wants CR0 to be safe bool wantsCR0 = true; @@ -605,9 +605,9 @@ u32 Flatten(u32 address, int *realsize, BlockStats *st, BlockRegStats *gpa, // Most functions that are relevant to analyze should be -// called by another function. Therefore, let's scan the +// called by another function. Therefore, let's scan the // entire space for bl operations and find what functions -// get called. +// get called. void FindFunctionsFromBranches(u32 startAddr, u32 endAddr, SymbolDB *func_db) { for (u32 addr = startAddr; addr < endAddr; addr+=4) @@ -652,7 +652,7 @@ void FindFunctionsAfterBLR(PPCSymbolDB *func_db) { if (PPCTables::IsValidInstruction(Memory::Read_Instruction(location))) { - //check if this function is already mapped + //check if this function is already mapped Symbol *f = func_db->AddFunction(location); if (!f) break; @@ -671,7 +671,7 @@ void FindFunctions(u32 startAddr, u32 endAddr, PPCSymbolDB *func_db) FindFunctionsFromBranches(startAddr, endAddr, func_db); FindFunctionsAfterBLR(func_db); - //Step 2: + //Step 2: func_db->FillInCallers(); int numLeafs = 0, numNice = 0, numUnNice = 0; @@ -716,7 +716,7 @@ void FindFunctions(u32 startAddr, u32 endAddr, PPCSymbolDB *func_db) if ((f.flags & FFLAG_STRAIGHT) && (f.flags & FFLAG_LEAF)) numStraightLeaf++; } - if (numLeafs == 0) + if (numLeafs == 0) leafSize = 0; else leafSize /= numLeafs; diff --git a/Source/Core/Core/Src/PowerPC/PPCAnalyst.h b/Source/Core/Core/Src/PowerPC/PPCAnalyst.h index d7495924fe..db7a52c812 100644 --- a/Source/Core/Core/Src/PowerPC/PPCAnalyst.h +++ b/Source/Core/Core/Src/PowerPC/PPCAnalyst.h @@ -63,7 +63,7 @@ struct BlockRegStats int GetTotalNumAccesses(int reg) {return numReads[reg] + numWrites[reg];} int GetUseRange(int reg) { - return std::max(lastRead[reg], lastWrite[reg]) - + return std::max(lastRead[reg], lastWrite[reg]) - std::min(firstRead[reg], firstWrite[reg]);} inline void SetInputRegister(int reg, short opindex) { diff --git a/Source/Core/Core/Src/PowerPC/PPCCache.cpp b/Source/Core/Core/Src/PowerPC/PPCCache.cpp index 4ead232b18..0785e37943 100644 --- a/Source/Core/Core/Src/PowerPC/PPCCache.cpp +++ b/Source/Core/Core/Src/PowerPC/PPCCache.cpp @@ -73,7 +73,7 @@ namespace PowerPC memset(tags, 0, sizeof(tags)); memset(way_from_valid, 0, sizeof(way_from_valid)); memset(way_from_plru, 0, sizeof(way_from_plru)); - + Reset(); } @@ -100,7 +100,7 @@ namespace PowerPC } u32 InstructionCache::ReadInstruction(u32 addr) - { + { if (!HID0.ICE) // instruction cache is disabled return Memory::ReadUnchecked_U32(addr); u32 set = (addr >> 5) & 0x7f; diff --git a/Source/Core/Core/Src/PowerPC/PPCSymbolDB.cpp b/Source/Core/Core/Src/PowerPC/PPCSymbolDB.cpp index 77826903c3..37621388fe 100644 --- a/Source/Core/Core/Src/PowerPC/PPCSymbolDB.cpp +++ b/Source/Core/Core/Src/PowerPC/PPCSymbolDB.cpp @@ -306,7 +306,7 @@ bool PPCSymbolDB::SaveMap(const char *filename, bool WithCodes) const { // Get the current and next address LastAddress = rSymbol.address; - LastSymbolName = rSymbol.name; + LastSymbolName = rSymbol.name; ++itr; /* To make nice straight lines we fill out the name with spaces, we also cut off @@ -326,7 +326,7 @@ bool PPCSymbolDB::SaveMap(const char *filename, bool WithCodes) const space = itr->second.address - LastAddress; else space = 0; - + for (int i = 0; i < space; i += 4) { int Address = LastAddress + i; diff --git a/Source/Core/Core/Src/PowerPC/PPCSymbolDB.h b/Source/Core/Core/Src/PowerPC/PPCSymbolDB.h index d77dac9a1e..157d9d1379 100644 --- a/Source/Core/Core/Src/PowerPC/PPCSymbolDB.h +++ b/Source/Core/Core/Src/PowerPC/PPCSymbolDB.h @@ -19,7 +19,7 @@ private: public: typedef void (*functionGetterCallback)(Symbol *f); - + PPCSymbolDB(); ~PPCSymbolDB(); diff --git a/Source/Core/Core/Src/PowerPC/PPCTables.cpp b/Source/Core/Core/Src/PowerPC/PPCTables.cpp index 456785e73e..0041904a75 100644 --- a/Source/Core/Core/Src/PowerPC/PPCTables.cpp +++ b/Source/Core/Core/Src/PowerPC/PPCTables.cpp @@ -38,7 +38,7 @@ GekkoOPInfo *GetOpInfo(UGeckoInstruction _inst) if ((info->type & 0xFFFFFF) == OPTYPE_SUBTABLE) { int table = info->type>>24; - switch(table) + switch(table) { case 4: return m_infoTable4[_inst.SUBOP10]; case 19: return m_infoTable19[_inst.SUBOP10]; @@ -67,7 +67,7 @@ Interpreter::_interpreterInstruction GetInterpreterOp(UGeckoInstruction _inst) if ((info->type & 0xFFFFFF) == OPTYPE_SUBTABLE) { int table = info->type>>24; - switch(table) + switch(table) { case 4: return Interpreter::m_opTable4[_inst.SUBOP10]; case 19: return Interpreter::m_opTable19[_inst.SUBOP10]; @@ -197,7 +197,7 @@ void PrintInstructionRunCounts() std::sort(temp.begin(), temp.end()); for (int i = 0; i < m_numInstructions; i++) { - if (temp[i].count == 0) + if (temp[i].count == 0) break; DEBUG_LOG(POWERPC, "%s : %i", temp[i].name,temp[i].count); //PanicAlert("%s : %i", temp[i].name,temp[i].count); diff --git a/Source/Core/Core/Src/PowerPC/PPCTables.h b/Source/Core/Core/Src/PowerPC/PPCTables.h index 4a32f5515c..6da82a953e 100644 --- a/Source/Core/Core/Src/PowerPC/PPCTables.h +++ b/Source/Core/Core/Src/PowerPC/PPCTables.h @@ -10,7 +10,7 @@ enum { - FL_SET_CR0 = (1<<0), // + FL_SET_CR0 = (1<<0), // FL_SET_CR1 = (1<<1), // FL_SET_CRn = (1<<2), // FL_SET_CRx = FL_SET_CR0 | FL_SET_CR1 | FL_SET_CRn, // diff --git a/Source/Core/Core/Src/PowerPC/PowerPC.cpp b/Source/Core/Core/Src/PowerPC/PowerPC.cpp index 39bbf37d90..2401f0bb65 100644 --- a/Source/Core/Core/Src/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/Src/PowerPC/PowerPC.cpp @@ -199,7 +199,7 @@ void SetMode(CoreMode new_mode) } } -void SingleStep() +void SingleStep() { cpu_core_base->SingleStep(); } @@ -342,7 +342,7 @@ void CheckExceptions() INFO_LOG(POWERPC, "EXCEPTION_PROGRAM"); Common::AtomicAnd(ppcState.Exceptions, ~EXCEPTION_PROGRAM); - } + } else if (exceptions & EXCEPTION_SYSCALL) { SRR0 = NPC; @@ -355,7 +355,7 @@ void CheckExceptions() Common::AtomicAnd(ppcState.Exceptions, ~EXCEPTION_SYSCALL); } else if (exceptions & EXCEPTION_FPU_UNAVAILABLE) - { + { //This happens a lot - Gamecube OS uses deferred FPU context switching SRR0 = PC; // re-execute the instruction SRR1 = MSR & 0x87C0FFFF; @@ -377,7 +377,7 @@ void CheckExceptions() INFO_LOG(POWERPC, "EXCEPTION_DSI"); Common::AtomicAnd(ppcState.Exceptions, ~EXCEPTION_DSI); - } + } else if (exceptions & EXCEPTION_ALIGNMENT) { //This never happens ATM diff --git a/Source/Core/Core/Src/PowerPC/PowerPC.h b/Source/Core/Core/Src/PowerPC/PowerPC.h index 82c912d213..a5c2bac0d5 100644 --- a/Source/Core/Core/Src/PowerPC/PowerPC.h +++ b/Source/Core/Core/Src/PowerPC/PowerPC.h @@ -51,7 +51,7 @@ struct GC_ALIGNED64(PowerPCState) u32 sr[16]; // Segment registers. u32 DebugCount; - + // special purpose registers - controls quantizers, DMA, and lots of other misc extensions. // also for power management, but we don't care about that. u32 spr[1024]; @@ -90,7 +90,7 @@ void DoState(PointerWrap &p); CoreMode GetMode(); void SetMode(CoreMode _coreType); -void SingleStep(); +void SingleStep(); void CheckExceptions(); void CheckExternalExceptions(); void CheckBreakPoints(); @@ -130,7 +130,7 @@ void UpdatePerformanceMonitor(u32 cycles, u32 num_load_stores, u32 num_fp_inst); #define rDEC PowerPC::ppcState.spr[SPR_DEC] #define SRR0 PowerPC::ppcState.spr[SPR_SRR0] #define SRR1 PowerPC::ppcState.spr[SPR_SRR1] -#define SPRG0 PowerPC::ppcState.spr[SPR_SPRG0] +#define SPRG0 PowerPC::ppcState.spr[SPR_SPRG0] #define SPRG1 PowerPC::ppcState.spr[SPR_SPRG1] #define SPRG2 PowerPC::ppcState.spr[SPR_SPRG2] #define SPRG3 PowerPC::ppcState.spr[SPR_SPRG3] diff --git a/Source/Core/Core/Src/PowerPC/Profiler.h b/Source/Core/Core/Src/PowerPC/Profiler.h index b15d911a97..d70483b2de 100644 --- a/Source/Core/Core/Src/PowerPC/Profiler.h +++ b/Source/Core/Core/Src/PowerPC/Profiler.h @@ -13,7 +13,7 @@ LEA(32, EAX, M(pt)); PUSH(EAX); \ CALL(QueryPerformanceCounter) // TODO: r64 way -// asm write : (u64) dt += t1-t0 +// asm write : (u64) dt += t1-t0 #define PROFILER_ADD_DIFF_LARGE_INTEGER(pdt, pt1, pt0) \ MOV(32, R(EAX), M(pt1)); \ SUB(32, R(EAX), M(pt0)); \ @@ -30,16 +30,16 @@ #else -#define PROFILER_QUERY_PERFORMANCE_COUNTER(pt) -#define PROFILER_ADD_DIFF_LARGE_INTEGER(pdt, pt1, pt0) +#define PROFILER_QUERY_PERFORMANCE_COUNTER(pt) +#define PROFILER_ADD_DIFF_LARGE_INTEGER(pdt, pt1, pt0) #define PROFILER_VPUSH #define PROFILER_VPOP #endif #else // TODO -#define PROFILER_QUERY_PERFORMANCE_COUNTER(pt) -#define PROFILER_ADD_DIFF_LARGE_INTEGER(pdt, pt1, pt0) +#define PROFILER_QUERY_PERFORMANCE_COUNTER(pt) +#define PROFILER_ADD_DIFF_LARGE_INTEGER(pdt, pt1, pt0) #define PROFILER_VPUSH #define PROFILER_VPOP #endif diff --git a/Source/Core/Core/Src/PowerPC/SignatureDB.cpp b/Source/Core/Core/Src/PowerPC/SignatureDB.cpp index 1292f1e6c3..4e91499306 100644 --- a/Source/Core/Core/Src/PowerPC/SignatureDB.cpp +++ b/Source/Core/Core/Src/PowerPC/SignatureDB.cpp @@ -114,7 +114,7 @@ void SignatureDB::Apply(PPCSymbolDB *symbol_db) function->name = iter->second.name; INFO_LOG(OSHLE, "Found %s at %08x (size: %08x)!", iter->second.name.c_str(), function->address, function->size); } - else + else { function->name = iter->second.name; ERROR_LOG(OSHLE, "Wrong size! Found %s at %08x (size: %08x instead of %08x)!", iter->second.name.c_str(), function->address, function->size, iter->second.size); @@ -142,18 +142,18 @@ void SignatureDB::Initialize(PPCSymbolDB *symbol_db, const char *prefix) /*static*/ u32 SignatureDB::ComputeCodeChecksum(u32 offsetStart, u32 offsetEnd) { u32 sum = 0; - for (u32 offset = offsetStart; offset <= offsetEnd; offset += 4) + for (u32 offset = offsetStart; offset <= offsetEnd; offset += 4) { u32 opcode = Memory::Read_Instruction(offset); - u32 op = opcode & 0xFC000000; + u32 op = opcode & 0xFC000000; u32 op2 = 0; u32 op3 = 0; u32 auxop = op >> 26; - switch (auxop) + switch (auxop) { case 4: //PS instructions op2 = opcode & 0x0000003F; - switch ( op2 ) + switch ( op2 ) { case 0: case 8: @@ -174,7 +174,7 @@ void SignatureDB::Initialize(PPCSymbolDB *symbol_db, const char *prefix) case 15: op2 = opcode & 0x03FF0000; break; - + case 19: // MCRF?? case 31: //integer case 63: //fpu @@ -190,7 +190,7 @@ void SignatureDB::Initialize(PPCSymbolDB *symbol_db, const char *prefix) op2 = opcode & 0x03FF0000; break; } - // Checksum only uses opcode, not opcode data, because opcode data changes + // Checksum only uses opcode, not opcode data, because opcode data changes // in all compilations, but opcodes don't! sum = ( ( (sum << 17 ) & 0xFFFE0000 ) | ( (sum >> 15) & 0x0001FFFF ) ); sum = sum ^ (op | op2 | op3); diff --git a/Source/Core/Core/Src/PowerPC/SignatureDB.h b/Source/Core/Core/Src/PowerPC/SignatureDB.h index 937dc3d540..c2e83dca83 100644 --- a/Source/Core/Core/Src/PowerPC/SignatureDB.h +++ b/Source/Core/Core/Src/PowerPC/SignatureDB.h @@ -36,7 +36,7 @@ public: void Clean(const char *prefix); void Clear(); void List(); - + void Initialize(PPCSymbolDB *func_db, const char *prefix = ""); void Apply(PPCSymbolDB *func_db); diff --git a/Source/Core/Core/Src/State.cpp b/Source/Core/Core/Src/State.cpp index 97d5ebf39f..99a1236123 100644 --- a/Source/Core/Core/Src/State.cpp +++ b/Source/Core/Core/Src/State.cpp @@ -135,7 +135,7 @@ void SaveToBuffer(std::vector& buffer) DoState(p); const size_t buffer_size = reinterpret_cast(ptr); buffer.resize(buffer_size); - + ptr = &buffer[0]; p.SetMode(PointerWrap::MODE_WRITE); DoState(p); @@ -227,7 +227,7 @@ void CompressAndDumpState(CompressAndDumpState_args save_args) if (!File::Rename(filename, File::GetUserPath(D_STATESAVES_IDX) + "lastState.sav")) Core::DisplayMessage("Failed to move previous state to state undo backup", 1000); - else + else File::Rename(filename + ".dtm", File::GetUserPath(D_STATESAVES_IDX) + "lastState.sav.dtm"); } @@ -360,8 +360,8 @@ void LoadFileStateData(const std::string& filename, std::vector& ret_data) StateHeader header; f.ReadArray(&header, 1); - - if (memcmp(SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), header.gameID, 6)) + + if (memcmp(SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), header.gameID, 6)) { Core::DisplayMessage(StringFromFormat("State belongs to a different game (ID %.*s)", 6, header.gameID), 2000); @@ -394,7 +394,7 @@ void LoadFileStateData(const std::string& filename, std::vector& ret_data) "Try loading the state again", res, i, new_len); return; } - + i += new_len; } } diff --git a/Source/Core/Core/Src/VolumeHandler.cpp b/Source/Core/Core/Src/VolumeHandler.cpp index 19058cd354..5ceba836e5 100644 --- a/Source/Core/Core/Src/VolumeHandler.cpp +++ b/Source/Core/Core/Src/VolumeHandler.cpp @@ -15,7 +15,7 @@ DiscIO::IVolume *GetVolume() return g_pVolume; } -void EjectVolume() +void EjectVolume() { if (g_pVolume) { diff --git a/Source/Core/DiscIO/Src/BannerLoaderGC.cpp b/Source/Core/DiscIO/Src/BannerLoaderGC.cpp index e253de488e..ce35258148 100644 --- a/Source/Core/DiscIO/Src/BannerLoaderGC.cpp +++ b/Source/Core/DiscIO/Src/BannerLoaderGC.cpp @@ -103,7 +103,7 @@ std::vector CBannerLoaderGC::GetNames() names.push_back(GetDecodedString(data)); } } - + return names; } diff --git a/Source/Core/DiscIO/Src/BannerLoaderGC.h b/Source/Core/DiscIO/Src/BannerLoaderGC.h index 133ee91978..7ad6d2122c 100644 --- a/Source/Core/DiscIO/Src/BannerLoaderGC.h +++ b/Source/Core/DiscIO/Src/BannerLoaderGC.h @@ -66,7 +66,7 @@ class CBannerLoaderGC std::string GetDecodedString(const char (&data)[N]) { auto const string_decoder = CVolumeGC::GetStringDecoder(m_country); - + // strnlen to trim NULLs return string_decoder(std::string(data, strnlen(data, sizeof(data)))); } diff --git a/Source/Core/DiscIO/Src/BannerLoaderWii.cpp b/Source/Core/DiscIO/Src/BannerLoaderWii.cpp index 2d63184023..15c4325748 100644 --- a/Source/Core/DiscIO/Src/BannerLoaderWii.cpp +++ b/Source/Core/DiscIO/Src/BannerLoaderWii.cpp @@ -15,7 +15,7 @@ namespace DiscIO { -CBannerLoaderWii::CBannerLoaderWii(DiscIO::IVolume *pVolume) +CBannerLoaderWii::CBannerLoaderWii(DiscIO::IVolume *pVolume) : m_pBannerFile(NULL) , m_IsValid(false) { @@ -42,7 +42,7 @@ CBannerLoaderWii::CBannerLoaderWii(DiscIO::IVolume *pVolume) File::GetUserPath(D_WIIUSER_IDX).c_str(), (u32)(TitleID>>32), (u32)TitleID); if(!File::Exists(titleFolder)) File::CreateFullPath(titleFolder); - + // Extracting banner.bin from opening.bnr sprintf(bnrFilename, "%stitle/%08x/%08x/data/opening.bnr", File::GetUserPath(D_WIIUSER_IDX).c_str(), (u32)(TitleID>>32), (u32)TitleID); @@ -61,7 +61,7 @@ CBannerLoaderWii::CBannerLoaderWii(DiscIO::IVolume *pVolume) // Now we have an LZ77-compressed file with a short IMD5 header // TODO: Finish the job - + File::Delete(bnrFilename); #else m_IsValid = false; @@ -115,15 +115,15 @@ bool CBannerLoaderWii::GetStringFromComments(const CommentIndex index, std::stri { auto const banner = reinterpret_cast(m_pBannerFile); auto const src_ptr = banner->m_Comment[index]; - + // Trim at first NULL auto const length = std::find(src_ptr, src_ptr + COMMENT_SIZE, 0x0) - src_ptr; - + std::wstring src; src.resize(length); std::transform(src_ptr, src_ptr + src.size(), src.begin(), (u16(&)(u16))Common::swap16); result = UTF16ToUTF8(src); - + return true; } @@ -133,7 +133,7 @@ bool CBannerLoaderWii::GetStringFromComments(const CommentIndex index, std::stri std::vector CBannerLoaderWii::GetNames() { std::vector ret(1); - + if (!GetStringFromComments(NAME_IDX, ret[0])) ret.clear(); diff --git a/Source/Core/DiscIO/Src/BannerLoaderWii.h b/Source/Core/DiscIO/Src/BannerLoaderWii.h index 84e106d1ba..2d7d0e6e90 100644 --- a/Source/Core/DiscIO/Src/BannerLoaderWii.h +++ b/Source/Core/DiscIO/Src/BannerLoaderWii.h @@ -27,7 +27,7 @@ class CBannerLoaderWii virtual std::vector GetDescriptions(); private: - + enum { TEXTURE_SIZE = 192 * 64 * 2, diff --git a/Source/Core/DiscIO/Src/Blob.cpp b/Source/Core/DiscIO/Src/Blob.cpp index 82a3c027fb..600b9e0a4b 100644 --- a/Source/Core/DiscIO/Src/Blob.cpp +++ b/Source/Core/DiscIO/Src/Blob.cpp @@ -39,7 +39,7 @@ const u8 *SectorReader::GetBlockData(u64 block_num) { return cache[0]; } - else + else { GetBlock(block_num, cache[0]); cache_tags[0] = block_num; diff --git a/Source/Core/DiscIO/Src/CISOBlob.cpp b/Source/Core/DiscIO/Src/CISOBlob.cpp index c4b3c60143..9f01e40c48 100644 --- a/Source/Core/DiscIO/Src/CISOBlob.cpp +++ b/Source/Core/DiscIO/Src/CISOBlob.cpp @@ -17,10 +17,10 @@ CISOFileReader::CISOFileReader(std::FILE* file) : m_file(file) { m_size = m_file.GetSize(); - + CISOHeader header; m_file.ReadArray(&header, 1); - + m_block_size = header.block_size; MapType count = 0; @@ -55,7 +55,7 @@ bool CISOFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr) { auto const block = offset / m_block_size; auto const data_offset = offset % m_block_size; - + auto const bytes_to_read = std::min(m_block_size - data_offset, nbytes); if (block < CISO_MAP_SIZE && UNUSED_BLOCK_ID != m_ciso_map[block]) { @@ -77,7 +77,7 @@ bool CISOFileReader::Read(u64 offset, u64 nbytes, u8* out_ptr) nbytes -= bytes_to_read; } } - + return true; } diff --git a/Source/Core/DiscIO/Src/CISOBlob.h b/Source/Core/DiscIO/Src/CISOBlob.h index 8c580b0ce1..0039fe4f43 100644 --- a/Source/Core/DiscIO/Src/CISOBlob.h +++ b/Source/Core/DiscIO/Src/CISOBlob.h @@ -20,10 +20,10 @@ struct CISOHeader { // "CISO" char magic[4]; - + // little endian u32 block_size; - + // 0=unused, 1=used, others=invalid u8 map[CISO_MAP_SIZE]; }; @@ -39,10 +39,10 @@ public: private: CISOFileReader(std::FILE* file); - + typedef u16 MapType; static const MapType UNUSED_BLOCK_ID = -1; - + File::IOFile m_file; u64 m_size; u32 m_block_size; diff --git a/Source/Core/DiscIO/Src/CompressedBlob.cpp b/Source/Core/DiscIO/Src/CompressedBlob.cpp index 9ee59fa28e..3fdc779a44 100644 --- a/Source/Core/DiscIO/Src/CompressedBlob.cpp +++ b/Source/Core/DiscIO/Src/CompressedBlob.cpp @@ -89,7 +89,7 @@ void CompressedBlobReader::GetBlock(u64 block_num, u8 *out_ptr) // clear unused part of zlib buffer. maybe this can be deleted when it works fully. memset(zlib_buffer + comp_block_size, 0, zlib_buffer_size - comp_block_size); - + m_file.Seek(offset, SEEK_SET); m_file.ReadBytes(zlib_buffer, comp_block_size); diff --git a/Source/Core/DiscIO/Src/DiscScrubber.cpp b/Source/Core/DiscIO/Src/DiscScrubber.cpp index d8bd968866..4f289cef9f 100644 --- a/Source/Core/DiscIO/Src/DiscScrubber.cpp +++ b/Source/Core/DiscIO/Src/DiscScrubber.cpp @@ -32,7 +32,7 @@ struct SPartitionHeader u64 TMDOffset; u32 CertChainSize; u64 CertChainOffset; - // H3Size is always 0x18000 + // H3Size is always 0x18000 u64 H3Offset; u64 DataOffset; u64 DataSize; diff --git a/Source/Core/DiscIO/Src/DriveBlob.cpp b/Source/Core/DiscIO/Src/DriveBlob.cpp index e7b0c70bfd..017cd702bc 100644 --- a/Source/Core/DiscIO/Src/DriveBlob.cpp +++ b/Source/Core/DiscIO/Src/DriveBlob.cpp @@ -30,7 +30,7 @@ DriveReader::DriveReader(const char *drive) return; } delete [] buffer; - + #ifdef _LOCKDRIVE // Do we want to lock the drive? // Lock the compact disc in the CD-ROM drive to prevent accidental // removal while reading from it. diff --git a/Source/Core/DiscIO/Src/FileMonitor.cpp b/Source/Core/DiscIO/Src/FileMonitor.cpp index 26a24046b5..4b64f61914 100644 --- a/Source/Core/DiscIO/Src/FileMonitor.cpp +++ b/Source/Core/DiscIO/Src/FileMonitor.cpp @@ -134,7 +134,7 @@ void FindFilename(u64 offset) // There's something wrong with the paths if (!fname || (strlen(fname) == 512)) return; - + CheckFile(fname, pFileSystem->GetFileSize(fname)); } diff --git a/Source/Core/DiscIO/Src/FileSystemGCWii.cpp b/Source/Core/DiscIO/Src/FileSystemGCWii.cpp index 5addc25812..90731b2573 100644 --- a/Source/Core/DiscIO/Src/FileSystemGCWii.cpp +++ b/Source/Core/DiscIO/Src/FileSystemGCWii.cpp @@ -190,7 +190,7 @@ bool CFileSystemGCWii::ExportDOL(const char* _rExportFolder) const return true; } } - + return false; } @@ -207,14 +207,14 @@ std::string CFileSystemGCWii::GetStringFromOffset(u64 _Offset) const data.resize(255); m_rVolume->Read(_Offset, data.size(), (u8*)&data[0]); data.erase(std::find(data.begin(), data.end(), 0x00), data.end()); - + // TODO: Should we really always use SHIFT-JIS? // It makes some filenames in Pikmin (NTSC-U) sane, but is it correct? return SHIFTJISToUTF8(data); } size_t CFileSystemGCWii::GetFileList(std::vector &_rFilenames) -{ +{ if (!m_Initialized) InitFileSystem(); diff --git a/Source/Core/DiscIO/Src/FileSystemGCWii.h b/Source/Core/DiscIO/Src/FileSystemGCWii.h index 8817e44153..5240c2d3fb 100644 --- a/Source/Core/DiscIO/Src/FileSystemGCWii.h +++ b/Source/Core/DiscIO/Src/FileSystemGCWii.h @@ -32,7 +32,7 @@ private: bool m_Initialized; bool m_Valid; u32 m_OffsetShift; // WII offsets are all shifted - + std::vector m_FileInfoVector; u32 Read32(u64 _Offset) const; std::string GetStringFromOffset(u64 _Offset) const; diff --git a/Source/Core/DiscIO/Src/Filesystem.h b/Source/Core/DiscIO/Src/Filesystem.h index 6995eec5fa..0fcaa88453 100644 --- a/Source/Core/DiscIO/Src/Filesystem.h +++ b/Source/Core/DiscIO/Src/Filesystem.h @@ -24,7 +24,7 @@ struct SFileInfo memset(m_FullPath, 0, sizeof(m_FullPath)); } - SFileInfo(const SFileInfo &rhs) : m_NameOffset(rhs.m_NameOffset), + SFileInfo(const SFileInfo &rhs) : m_NameOffset(rhs.m_NameOffset), m_Offset(rhs.m_Offset), m_FileSize(rhs.m_FileSize) { memcpy(m_FullPath, rhs.m_FullPath, strlen(rhs.m_FullPath) + 1); } diff --git a/Source/Core/DiscIO/Src/NANDContentLoader.cpp b/Source/Core/DiscIO/Src/NANDContentLoader.cpp index 14845e56ea..8dc6a9e3cb 100644 --- a/Source/Core/DiscIO/Src/NANDContentLoader.cpp +++ b/Source/Core/DiscIO/Src/NANDContentLoader.cpp @@ -238,10 +238,10 @@ bool CNANDContentLoader::Initialize(const std::string& _rName) m_Content.resize(m_numEntries); - for (u32 i=0; i PartitionsVec; }; SPartitionGroup PartitionGroup[4]; - + // read all partitions for (u32 x = 0; x < 4; x++) { @@ -184,10 +184,10 @@ static IVolume* CreateVolumeFromCryptedWiiImage(IBlobReader& _rReader, u32 _Part _rReader.Read(rPartition.Offset + 0x44c, 8, IV); aes_context AES_ctx; - aes_setkey_dec(&AES_ctx, (Korean ? g_MasterKeyK : g_MasterKey), 128); + aes_setkey_dec(&AES_ctx, (Korean ? g_MasterKeyK : g_MasterKey), 128); u8 VolumeKey[16]; - aes_crypt_cbc(&AES_ctx, AES_DECRYPT, 16, IV, SubKey, VolumeKey); + aes_crypt_cbc(&AES_ctx, AES_DECRYPT, 16, IV, SubKey, VolumeKey); // -1 means the caller just wanted the partition with matching type if ((int)_VolumeNum == -1 || i == _VolumeNum) diff --git a/Source/Core/DiscIO/Src/VolumeDirectory.cpp b/Source/Core/DiscIO/Src/VolumeDirectory.cpp index f1832202be..b949932b0b 100644 --- a/Source/Core/DiscIO/Src/VolumeDirectory.cpp +++ b/Source/Core/DiscIO/Src/VolumeDirectory.cpp @@ -23,12 +23,12 @@ CVolumeDirectory::CVolumeDirectory(const std::string& _rDirectory, bool _bIsWii, , FST_ADDRESS(0) , DOL_ADDRESS(0) { - m_rootDirectory = ExtractDirectoryName(_rDirectory); + m_rootDirectory = ExtractDirectoryName(_rDirectory); // create the default disk header m_diskHeader = new u8[DISKHEADERINFO_ADDRESS]; memset(m_diskHeader, 0, (size_t)DISKHEADERINFO_ADDRESS); - SetUniqueID("AGBJ01"); + SetUniqueID("AGBJ01"); SetName("Default name"); if(_bIsWii) @@ -105,7 +105,7 @@ bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer) const { WriteToBuffer(FST_ADDRESS, m_fstSize, m_FSTData, _Offset, _Length, _pBuffer); } - + if(m_virtualDisk.size() == 0) return true; @@ -118,16 +118,16 @@ bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer) const PadToAddress(fileIter->first, _Offset, _Length, _pBuffer); while(fileIter != m_virtualDisk.end() && _Length > 0) - { + { _dbg_assert_(DVDINTERFACE, fileIter->first <= _Offset); u64 fileOffset = _Offset - fileIter->first; - PlainFileReader* reader = PlainFileReader::Create(fileIter->second.c_str()); + PlainFileReader* reader = PlainFileReader::Create(fileIter->second.c_str()); if(reader == NULL) return false; u64 fileSize = reader->GetDataSize(); - + if(fileOffset < fileSize) { u64 fileBytes = fileSize - fileOffset; @@ -152,14 +152,14 @@ bool CVolumeDirectory::Read(u64 _Offset, u64 _Length, u8* _pBuffer) const delete reader; } - + return true; } std::string CVolumeDirectory::GetUniqueID() const { _dbg_assert_(DVDINTERFACE, m_diskHeader); - + char buffer[7]; memcpy(buffer, m_diskHeader, 6); buffer[6] = 0; @@ -182,7 +182,7 @@ void CVolumeDirectory::SetUniqueID(std::string _ID) IVolume::ECountry CVolumeDirectory::GetCountry() const { _dbg_assert_(DVDINTERFACE, m_diskHeader); - + u8 CountryCode = m_diskHeader[3]; return CountrySwitch(CountryCode); @@ -263,7 +263,7 @@ void CVolumeDirectory::SetDiskTypeWii() m_diskHeader[0x18] = 0x5d; m_diskHeader[0x19] = 0x1c; m_diskHeader[0x1a] = 0x9e; - m_diskHeader[0x1b] = 0xa3; + m_diskHeader[0x1b] = 0xa3; memset(m_diskHeader + 0x1c, 0, 4); m_addressShift = 2; @@ -399,7 +399,7 @@ void CVolumeDirectory::WriteToBuffer(u64 _SrcStartAddress, u64 _SrcLength, u8* _ _Length -= srcBytes; _pBuffer += srcBytes; _Address += srcBytes; - } + } } void CVolumeDirectory::PadToAddress(u64 _StartAddress, u64& _Address, u64& _Length, u8*& _pBuffer) const @@ -446,12 +446,12 @@ void CVolumeDirectory::WriteEntryData(u32& entryOffset, u8 type, u32 nameOffset, void CVolumeDirectory::WriteEntryName(u32& nameOffset, const std::string& name) { strncpy((char*)(m_FSTData + nameOffset + m_fstNameOffset), name.c_str(), name.length() + 1); - + nameOffset += (u32)(name.length() + 1); } void CVolumeDirectory::WriteEntry(const File::FSTEntry& entry, u32& fstOffset, u32& nameOffset, u64& dataOffset, u32 parentEntryNum) -{ +{ if(entry.isDirectory) { u32 myOffset = fstOffset; diff --git a/Source/Core/DiscIO/Src/VolumeDirectory.h b/Source/Core/DiscIO/Src/VolumeDirectory.h index 31f7d9b255..fbab0f18b3 100644 --- a/Source/Core/DiscIO/Src/VolumeDirectory.h +++ b/Source/Core/DiscIO/Src/VolumeDirectory.h @@ -96,7 +96,7 @@ private: u8* m_diskHeader; #pragma pack(push, 1) - struct SDiskHeaderInfo + struct SDiskHeaderInfo { u32 debug_mntr_size; u32 simulated_mem_size; diff --git a/Source/Core/DiscIO/Src/VolumeGC.cpp b/Source/Core/DiscIO/Src/VolumeGC.cpp index a172229684..325e200a34 100644 --- a/Source/Core/DiscIO/Src/VolumeGC.cpp +++ b/Source/Core/DiscIO/Src/VolumeGC.cpp @@ -98,7 +98,7 @@ int CVolumeGC::GetRevision() const std::vector CVolumeGC::GetNames() const { std::vector names; - + auto const string_decoder = GetStringDecoder(GetCountry()); char name[0x60 + 1] = {}; diff --git a/Source/Core/DiscIO/Src/VolumeGC.h b/Source/Core/DiscIO/Src/VolumeGC.h index 55f84c1c0c..5fc7cf892d 100644 --- a/Source/Core/DiscIO/Src/VolumeGC.h +++ b/Source/Core/DiscIO/Src/VolumeGC.h @@ -30,9 +30,9 @@ public: u64 GetSize() const; u64 GetRawSize() const; bool IsDiscTwo() const; - + typedef std::string(*StringDecoder)(const std::string&); - + static StringDecoder GetStringDecoder(ECountry country); private: diff --git a/Source/Core/DiscIO/Src/VolumeWad.cpp b/Source/Core/DiscIO/Src/VolumeWad.cpp index e3356ad5b4..cc50ec8c66 100644 --- a/Source/Core/DiscIO/Src/VolumeWad.cpp +++ b/Source/Core/DiscIO/Src/VolumeWad.cpp @@ -104,15 +104,15 @@ std::vector CVolumeWAD::GetNames() const { return names; } - + footer_size = Common::swap32(footer_size); - + //Japanese, English, German, French, Spanish, Italian, Dutch, unknown, unknown, Korean for (int i = 0; i != 10; ++i) { static const u32 string_length = 42; static const u32 bytes_length = string_length * sizeof(u16); - + u16 temp[string_length]; if (footer_size < 0xF1 || !Read(0x9C + (i * bytes_length) + OpeningBnrOffset, bytes_length, (u8*)&temp)) @@ -125,7 +125,7 @@ std::vector CVolumeWAD::GetNames() const out_temp.resize(string_length); std::transform(temp, temp + out_temp.size(), out_temp.begin(), (u16(&)(u16))Common::swap16); out_temp.erase(std::find(out_temp.begin(), out_temp.end(), 0x00), out_temp.end()); - + names.push_back(UTF16ToUTF8(out_temp)); } } diff --git a/Source/Core/DiscIO/Src/VolumeWad.h b/Source/Core/DiscIO/Src/VolumeWad.h index 59edf79cd4..62c4d23762 100644 --- a/Source/Core/DiscIO/Src/VolumeWad.h +++ b/Source/Core/DiscIO/Src/VolumeWad.h @@ -11,7 +11,7 @@ // --- this volume type is used for Wad files --- // Some of this code might look redundant with the CNANDContentLoader class, however, -// We do not do any decryption here, we do raw read, so things are -Faster- +// We do not do any decryption here, we do raw read, so things are -Faster- namespace DiscIO { @@ -27,7 +27,7 @@ public: std::string GetMakerID() const; std::vector GetNames() const; u32 GetFSTSize() const { return 0; } - std::string GetApploaderDate() const { return "0"; } + std::string GetApploaderDate() const { return "0"; } ECountry GetCountry() const; u64 GetSize() const; u64 GetRawSize() const; diff --git a/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp b/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp index c20ccf4b7f..8d2e46a0f6 100644 --- a/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp +++ b/Source/Core/DiscIO/Src/VolumeWiiCrypted.cpp @@ -70,7 +70,7 @@ bool CVolumeWiiCrypted::Read(u64 _ReadOffset, u64 _Length, u8* _pBuffer) const if (m_LastDecryptedBlockOffset != Block) { memcpy(IV, m_pBuffer + 0x3d0, 16); - aes_crypt_cbc(m_AES_ctx, AES_DECRYPT, 0x7C00, IV, m_pBuffer + 0x400, m_LastDecryptedBlock); + aes_crypt_cbc(m_AES_ctx, AES_DECRYPT, 0x7C00, IV, m_pBuffer + 0x400, m_LastDecryptedBlock); m_LastDecryptedBlockOffset = Block; } @@ -108,7 +108,7 @@ void CVolumeWiiCrypted::GetTMD(u8* _pBuffer, u32 * _sz) const RAWRead(m_VolumeOffset + tmdAddr, tmdSz, _pBuffer); *_sz = tmdSz; } - + std::string CVolumeWiiCrypted::GetUniqueID() const { if (m_pReader == NULL) @@ -153,7 +153,7 @@ std::string CVolumeWiiCrypted::GetMakerID() const { return std::string(); } - + makerID[2] = '\0'; return makerID; @@ -162,7 +162,7 @@ std::string CVolumeWiiCrypted::GetMakerID() const std::vector CVolumeWiiCrypted::GetNames() const { std::vector names; - + auto const string_decoder = CVolumeGC::GetStringDecoder(GetCountry()); char name[0xFF] = {}; @@ -202,7 +202,7 @@ std::string CVolumeWiiCrypted::GetApploaderDate() const { return std::string(); } - + date[10] = '\0'; return date; @@ -253,7 +253,7 @@ bool CVolumeWiiCrypted::CheckIntegrity() const NOTICE_LOG(DISCIO, "Integrity Check: fail at cluster %d: could not read metadata", clusterID); return false; } - aes_crypt_cbc(m_AES_ctx, AES_DECRYPT, 0x400, IV, clusterMDCrypted, clusterMD); + aes_crypt_cbc(m_AES_ctx, AES_DECRYPT, 0x400, IV, clusterMDCrypted, clusterMD); // Some clusters have invalid data and metadata because they aren't diff --git a/Source/Core/DiscIO/Src/WbfsBlob.cpp b/Source/Core/DiscIO/Src/WbfsBlob.cpp index f1d5a2b76a..7a4d8d99d6 100644 --- a/Source/Core/DiscIO/Src/WbfsBlob.cpp +++ b/Source/Core/DiscIO/Src/WbfsBlob.cpp @@ -138,13 +138,13 @@ File::IOFile& WbfsFileReader::SeekToCluster(u64 offset, u64* available) { u64 base_cluster = offset >> wbfs_sector_shift; if(base_cluster < m_blocks_per_disc) - { + { u64 cluster_address = wbfs_sector_size * Common::swap16(m_wlba_table[base_cluster]); u64 cluster_offset = offset & (wbfs_sector_size - 1); u64 final_address = cluster_address + cluster_offset; for(u32 i = 0; i != m_total_files; i ++) - { + { if(final_address < (m_files[i]->base_address + m_files[i]->size)) { m_files[i]->file.Seek(final_address - m_files[i]->base_address, SEEK_SET); @@ -187,7 +187,7 @@ bool IsWbfsBlob(const char* filename) u8 magic[4] = {0, 0, 0, 0}; f.ReadBytes(&magic, 4); - return (magic[0] == 'W') && + return (magic[0] == 'W') && (magic[1] == 'B') && (magic[2] == 'F') && (magic[3] == 'S'); diff --git a/Source/Core/DiscIO/Src/WbfsBlob.h b/Source/Core/DiscIO/Src/WbfsBlob.h index c59eb84173..b703d59931 100644 --- a/Source/Core/DiscIO/Src/WbfsBlob.h +++ b/Source/Core/DiscIO/Src/WbfsBlob.h @@ -18,7 +18,7 @@ class WbfsFileReader : public IBlobReader WbfsFileReader(const char* filename); ~WbfsFileReader(); - bool OpenFiles(const char* filename); + bool OpenFiles(const char* filename); bool ReadHeader(); File::IOFile& SeekToCluster(u64 offset, u64* available); diff --git a/Source/Core/DiscIO/Src/WiiWad.cpp b/Source/Core/DiscIO/Src/WiiWad.cpp index ed58977670..783ede511d 100644 --- a/Source/Core/DiscIO/Src/WiiWad.cpp +++ b/Source/Core/DiscIO/Src/WiiWad.cpp @@ -5,7 +5,7 @@ #include "NANDContentLoader.h" #include -#include +#include #include "MathUtil.h" #include "FileUtil.h" #include "Log.h" @@ -78,15 +78,15 @@ bool WiiWAD::ParseWAD(DiscIO::IBlobReader& _rReader) { CBlobBigEndianReader ReaderBig(_rReader); - // get header size + // get header size u32 HeaderSize = ReaderBig.Read32(0); - if (HeaderSize != 0x20) + if (HeaderSize != 0x20) { _dbg_assert_msg_(BOOT, (HeaderSize==0x20), "WiiWAD: Header size != 0x20"); return false; } - // get header + // get header u8 Header[0x20]; _rReader.Read(0, HeaderSize, Header); u32 HeaderType = ReaderBig.Read32(0x4); diff --git a/Source/Core/DiscIO/Src/WiiWad.h b/Source/Core/DiscIO/Src/WiiWad.h index 6483c10f52..0711c82cb0 100644 --- a/Source/Core/DiscIO/Src/WiiWad.h +++ b/Source/Core/DiscIO/Src/WiiWad.h @@ -30,13 +30,13 @@ public: u32 GetTMDSize() const { return m_TMDSize; } u32 GetDataAppSize() const { return m_DataAppSize; } u32 GetFooterSize() const { return m_FooterSize; } - + u8* GetCertificateChain() const { return m_pCertificateChain; } u8* GetTicket() const { return m_pTicket; } u8* GetTMD() const { return m_pTMD; } u8* GetDataApp() const { return m_pDataApp; } u8* GetFooter() const { return m_pFooter; } - + static bool IsWiiWAD(const std::string& _rName); private: diff --git a/Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp b/Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp index e9ac18c1e3..d3dacf5fdf 100644 --- a/Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp +++ b/Source/Core/DolphinWX/Src/ARCodeAddEdit.cpp @@ -38,7 +38,7 @@ CARCodeAddEdit::CARCodeAddEdit(int _selection, wxWindow* parent, wxWindowID id, EditCheatName = new wxTextCtrl(this, ID_EDITCHEAT_NAME, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); EditCheatName->SetValue(currentName); EntrySelection = new wxSpinButton(this, ID_ENTRY_SELECT, wxDefaultPosition, wxDefaultSize, wxVERTICAL); - EntrySelection->SetRange(1, ((int)arCodes.size()) > 0 ? (int)arCodes.size() : 1); + EntrySelection->SetRange(1, ((int)arCodes.size()) > 0 ? (int)arCodes.size() : 1); EntrySelection->SetValue((int)(arCodes.size() - selection)); EditCheatCode = new wxTextCtrl(this, ID_EDITCHEAT_CODE, wxEmptyString, wxDefaultPosition, wxSize(300, 100), wxTE_MULTILINE); UpdateTextCtrl(tempEntries); diff --git a/Source/Core/DolphinWX/Src/Android/ButtonManager.cpp b/Source/Core/DolphinWX/Src/Android/ButtonManager.cpp index 1aa7187075..c8a190cea1 100644 --- a/Source/Core/DolphinWX/Src/Android/ButtonManager.cpp +++ b/Source/Core/DolphinWX/Src/Android/ButtonManager.cpp @@ -55,7 +55,7 @@ namespace ButtonManager "InputL", "InputR" }; const int configStringNum = 20; - + void AddBind(std::string dev, sBind *bind) { auto it = m_controllers.find(dev); @@ -93,9 +93,9 @@ namespace ButtonManager { hasbind = true; type = BIND_AXIS; - sscanf(value.c_str(), "Device '%[^\']'-Axis %d%c", dev, &bindnum, &modifier); + sscanf(value.c_str(), "Device '%[^\']'-Axis %d%c", dev, &bindnum, &modifier); } - else if (std::string::npos != value.find("Button")) + else if (std::string::npos != value.find("Button")) { hasbind = true; type = BIND_BUTTON; @@ -123,7 +123,7 @@ namespace ButtonManager auto it = m_controllers.begin(); if (it == m_controllers.end()) return 0.0f; - return it->second->AxisValue(axis); + return it->second->AxisValue(axis); } void TouchEvent(int action, float x, float y) { @@ -185,7 +185,7 @@ namespace ButtonManager { // XXX: Make platform specific drawing } - + // InputDevice void InputDevice::PressEvent(int button, int action) { @@ -212,8 +212,8 @@ namespace ButtonManager return 0.0f; if (it->second->m_bindtype == BIND_BUTTON) return ButtonValue(axis); - else + else return m_axises[it->second->m_bind] * it->second->m_neg; } - + } diff --git a/Source/Core/DolphinWX/Src/Android/ButtonManager.h b/Source/Core/DolphinWX/Src/Android/ButtonManager.h index 39b828efb7..484332bc03 100644 --- a/Source/Core/DolphinWX/Src/Android/ButtonManager.h +++ b/Source/Core/DolphinWX/Src/Android/ButtonManager.h @@ -72,7 +72,7 @@ namespace ButtonManager char *image; // image = LoadPNG((std::string(DOLPHIN_DATA_DIR "/") + filename).c_str(), width, height); // XXX: Make platform specific drawing - + m_button = button; memcpy(m_coords, coords, sizeof(float) * 8); m_state = BUTTON_RELEASED; @@ -87,7 +87,7 @@ namespace ButtonManager ButtonType GetButtonType() { return m_button; } GLuint GetTexture() { return m_tex; } float *GetCoords() { return m_coords; } - + ~Button() { } }; @@ -97,11 +97,11 @@ namespace ButtonManager const BindType m_bindtype; const int m_bind; const float m_neg; - sBind(ButtonType buttontype, BindType bindtype, int bind, float neg) - : m_buttontype(buttontype), m_bindtype(bindtype), m_bind(bind), m_neg(neg) + sBind(ButtonType buttontype, BindType bindtype, int bind, float neg) + : m_buttontype(buttontype), m_bindtype(bindtype), m_bind(bind), m_neg(neg) {} }; - + class InputDevice { @@ -120,7 +120,7 @@ namespace ButtonManager for (auto it = m_binds.begin(); it != m_binds.end(); ++it) delete it->second; } - void AddBind(sBind *bind) { m_binds[bind->m_buttontype] = bind; } + void AddBind(sBind *bind) { m_binds[bind->m_buttontype] = bind; } void PressEvent(int button, int action); void AxisEvent(int axis, float value); bool ButtonValue(ButtonType button); diff --git a/Source/Core/DolphinWX/Src/Android/TextureLoader.cpp b/Source/Core/DolphinWX/Src/Android/TextureLoader.cpp index 093370da78..de4c3ee093 100644 --- a/Source/Core/DolphinWX/Src/Android/TextureLoader.cpp +++ b/Source/Core/DolphinWX/Src/Android/TextureLoader.cpp @@ -40,7 +40,7 @@ char* LoadPNG(const char *filename, u32 &width, u32 &height) /* Open the file. */ infile = fopen(filename, "rb"); - if (!infile) + if (!infile) return NULL; /* @@ -55,8 +55,8 @@ char* LoadPNG(const char *filename, u32 &width, u32 &height) return NULL; } - /* - * Set up the PNG structs + /* + * Set up the PNG structs */ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) { @@ -73,7 +73,7 @@ char* LoadPNG(const char *filename, u32 &width, u32 &height) /* - * block to handle libpng errors, + * block to handle libpng errors, * then check whether the PNG file had a bKGD chunk */ if (setjmp(png_jmpbuf(png_ptr))) { @@ -82,16 +82,16 @@ char* LoadPNG(const char *filename, u32 &width, u32 &height) return NULL; } - /* - * takes our file stream pointer (infile) and + /* + * takes our file stream pointer (infile) and * stores it in the png_ptr struct for later use. */ /* png_ptr->io_ptr = (png_voidp)infile;*/ png_init_io(png_ptr, infile); /* - * lets libpng know that we already checked the 8 - * signature bytes, so it should not expect to find + * lets libpng know that we already checked the 8 + * signature bytes, so it should not expect to find * them at the current file pointer location */ png_set_sig_bytes(png_ptr, 8); @@ -99,25 +99,25 @@ char* LoadPNG(const char *filename, u32 &width, u32 &height) /* Read the image */ /* - * reads and processes not only the PNG file's IHDR chunk - * but also any other chunks up to the first IDAT + * reads and processes not only the PNG file's IHDR chunk + * but also any other chunks up to the first IDAT * (i.e., everything before the image data). */ /* read all the info up to the image data */ png_read_info(png_ptr, info_ptr); - png_get_IHDR(png_ptr, info_ptr, &_width, &_height, &bit_depth, + png_get_IHDR(png_ptr, info_ptr, &_width, &_height, &bit_depth, &color_type, NULL, NULL, NULL); /* Set up some transforms. */ - if (bit_depth > 8) + if (bit_depth > 8) png_set_strip_16(png_ptr); - - if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) + + if (color_type == PNG_COLOR_TYPE_GRAY || color_type == PNG_COLOR_TYPE_GRAY_ALPHA) png_set_gray_to_rgb(png_ptr); - if (color_type == PNG_COLOR_TYPE_PALETTE) + if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png_ptr); /* Update the png info struct.*/ diff --git a/Source/Core/DolphinWX/Src/CheatsWindow.cpp b/Source/Core/DolphinWX/Src/CheatsWindow.cpp index 413713b4ae..8bea682734 100644 --- a/Source/Core/DolphinWX/Src/CheatsWindow.cpp +++ b/Source/Core/DolphinWX/Src/CheatsWindow.cpp @@ -73,7 +73,7 @@ void wxCheatsWindow::Init_ChildControls() sizer_tab_cheats->Add(m_CheckListBox_CheatsList, 1, wxEXPAND | wxTOP | wxBOTTOM | wxLEFT, 10); sizer_tab_cheats->Add(sGroupBoxInfo, 0, wxALIGN_LEFT | wxEXPAND | wxALL, 5); - m_Tab_Cheats->SetSizerAndFit(sizer_tab_cheats); + m_Tab_Cheats->SetSizerAndFit(sizer_tab_cheats); // $ Cheat Search Tab wxPanel* const tab_cheat_search = new CheatSearchTab(m_Notebook_Main); @@ -594,7 +594,7 @@ CreateCodeDialog::CreateCodeDialog(wxWindow* const parent, const u32 address) sizer_main->Add(textctrl_code, 0, wxALL, 5); sizer_main->Add(sizer_value_label, 0, wxALL, 5); sizer_main->Add(textctrl_value, 0, wxALL, 5); - sizer_main->Add(CreateButtonSizer(wxOK | wxCANCEL | wxNO_DEFAULT), 0, wxALL, 5); + sizer_main->Add(CreateButtonSizer(wxOK | wxCANCEL | wxNO_DEFAULT), 0, wxALL, 5); Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CreateCodeDialog::PressOK, this, wxID_OK); Bind(wxEVT_COMMAND_BUTTON_CLICKED, &CreateCodeDialog::PressCancel, this, wxID_CANCEL); diff --git a/Source/Core/DolphinWX/Src/ConfigMain.cpp b/Source/Core/DolphinWX/Src/ConfigMain.cpp index 7087c96bde..0dfa714318 100644 --- a/Source/Core/DolphinWX/Src/ConfigMain.cpp +++ b/Source/Core/DolphinWX/Src/ConfigMain.cpp @@ -103,7 +103,7 @@ static const wxLanguage langIds[] = #define WXSTR_TRANS(a) wxString(wxGetTranslation(wxT(a))) #ifdef WIN32 //only used with xgettext to be picked up as translatable string. -//win32 does not have wx on its path, the provided wxALL_FILES +//win32 does not have wx on its path, the provided wxALL_FILES //translation does not work there. #define unusedALL_FILES wxTRANSLATE("All files (*.*)|*.*"); #endif @@ -216,7 +216,7 @@ void CConfigMain::UpdateGUI() CPUThread->Disable(); SkipIdle->Disable(); EnableCheats->Disable(); - + CPUEngine->Disable(); _NTSCJ->Disable(); @@ -253,12 +253,12 @@ void CConfigMain::InitializeGUILists() // Emulator Engine for (auto& CPUCores_a : CPUCores) arrayStringFor_CPUEngine.Add(wxGetTranslation(CPUCores_a.name)); - - // DSP Engine + + // DSP Engine arrayStringFor_DSPEngine.Add(_("DSP HLE emulation (fast)")); arrayStringFor_DSPEngine.Add(_("DSP LLE recompiler")); arrayStringFor_DSPEngine.Add(_("DSP LLE interpreter (slow)")); - + // Gamecube page // GC Language arrayStrings arrayStringFor_GCSystemLang.Add(_("English")); @@ -268,16 +268,16 @@ void CConfigMain::InitializeGUILists() arrayStringFor_GCSystemLang.Add(_("Italian")); arrayStringFor_GCSystemLang.Add(_("Dutch")); - + // Wii page // Sensorbar Position arrayStringFor_WiiSensBarPos.Add(_("Bottom")); arrayStringFor_WiiSensBarPos.Add(_("Top")); - + // Aspect ratio arrayStringFor_WiiAspectRatio.Add(wxT("4:3")); arrayStringFor_WiiAspectRatio.Add(wxT("16:9")); - + // Wii Language arrayStrings arrayStringFor_WiiSystemLang = arrayStringFor_GCSystemLang; arrayStringFor_WiiSystemLang.Insert(_("Japanese"), 0); @@ -318,7 +318,7 @@ void CConfigMain::InitializeGUILists() void CConfigMain::InitializeGUIValues() { const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter; - + // General - Basic CPUThread->SetValue(startup_params.bCPUThread); SkipIdle->SetValue(startup_params.bSkipIdle); @@ -473,7 +473,7 @@ void CConfigMain::InitializeGUIValues() WiiEuRGB60->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.E60")); WiiAspectRatio->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("IPL.AR")); WiiSystemLang->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("IPL.LNG")); - + // Wii - Devices WiiSDCard->SetValue(SConfig::GetInstance().m_WiiSDCard); WiiKeyboard->SetValue(SConfig::GetInstance().m_WiiKeyboard); @@ -525,7 +525,7 @@ void CConfigMain::InitializeGUITooltips() void CConfigMain::CreateGUIControls() { InitializeGUILists(); - + // Create the notebook and pages Notebook = new wxNotebook(this, ID_NOTEBOOK, wxDefaultPosition, wxDefaultSize); wxPanel* const GeneralPage = new wxPanel(Notebook, ID_GENERALPAGE, wxDefaultPosition, wxDefaultSize); @@ -613,7 +613,7 @@ void CConfigMain::CreateGUIControls() if (-1 == theme_selection->FindString(wxname)) theme_selection->Append(wxname); }); - + theme_selection->SetStringSelection(StrToWxStr(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name)); // std::function = avoid error on msvc @@ -639,7 +639,7 @@ void CConfigMain::CreateGUIControls() sDisplayPage->Add(sbInterface, 0, wxEXPAND | wxALL, 5); DisplayPage->SetSizer(sDisplayPage); - + // Audio page DSPEngine = new wxRadioBox(AudioPage, ID_DSPENGINE, _("DSP Emulator Engine"), wxDefaultPosition, wxDefaultSize, arrayStringFor_DSPEngine, 0, wxRA_SPECIFY_ROWS); @@ -796,7 +796,7 @@ void CConfigMain::CreateGUIControls() sWiiPage->Add(sbWiiDeviceSettings, 0, wxEXPAND|wxALL, 5); WiiPage->SetSizer(sWiiPage); - + // Paths page ISOPaths = new wxListBox(PathsPage, ID_ISOPATHS, wxDefaultPosition, wxDefaultSize, arrayStringFor_ISOPaths, wxLB_SINGLE, wxDefaultValidator); RecursiveISOPath = new wxCheckBox(PathsPage, ID_RECURSIVEISOPATH, _("Search Subfolders"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); @@ -988,7 +988,7 @@ void CConfigMain::AddAudioBackends() { std::vector backends = AudioCommon::GetSoundBackends(); // I'm sure Billiard will change this into an auto sometimes soon :P - for (std::vector::const_iterator iter = backends.begin(); + for (std::vector::const_iterator iter = backends.begin(); iter != backends.end(); ++iter) { BackendSelection->Append(wxGetTranslation(StrToWxStr(*iter))); diff --git a/Source/Core/DolphinWX/Src/ConfigMain.h b/Source/Core/DolphinWX/Src/ConfigMain.h index 094fb6df85..1624254003 100644 --- a/Source/Core/DolphinWX/Src/ConfigMain.h +++ b/Source/Core/DolphinWX/Src/ConfigMain.h @@ -124,7 +124,7 @@ private: wxCheckBox* EnableCheats; wxChoice* Framelimit; wxCheckBox* UseFPSForLimiting; - + // Advanced wxCheckBox* EnableOpenCL; wxRadioBox* CPUEngine; diff --git a/Source/Core/DolphinWX/Src/Debugger/BreakpointDlg.h b/Source/Core/DolphinWX/Src/Debugger/BreakpointDlg.h index b5d6248e6f..208f1038b9 100644 --- a/Source/Core/DolphinWX/Src/Debugger/BreakpointDlg.h +++ b/Source/Core/DolphinWX/Src/Debugger/BreakpointDlg.h @@ -14,7 +14,7 @@ class BreakPointDlg : public wxDialog { public: BreakPointDlg(CBreakPointWindow *_Parent); - + private: CBreakPointWindow *Parent; wxTextCtrl *m_pEditAddress; diff --git a/Source/Core/DolphinWX/Src/Debugger/BreakpointView.cpp b/Source/Core/DolphinWX/Src/Debugger/BreakpointView.cpp index 29ad9b4d7e..c23412e7ad 100644 --- a/Source/Core/DolphinWX/Src/Debugger/BreakpointView.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/BreakpointView.cpp @@ -41,14 +41,14 @@ void CBreakPointView::Update() int Item = InsertItem(0, temp); temp = StrToWxStr("BP"); SetItem(Item, 1, temp); - + Symbol *symbol = g_symbolDB.GetSymbolFromAddr(rBP.iAddress); if (symbol) { temp = StrToWxStr(g_symbolDB.GetDescription(rBP.iAddress)); SetItem(Item, 2, temp); } - + sprintf(szBuffer, "%08x", rBP.iAddress); temp = StrToWxStr(szBuffer); SetItem(Item, 3, temp); diff --git a/Source/Core/DolphinWX/Src/Debugger/BreakpointWindow.cpp b/Source/Core/DolphinWX/Src/Debugger/BreakpointWindow.cpp index 0dfd614853..7a2f91ccf2 100644 --- a/Source/Core/DolphinWX/Src/Debugger/BreakpointWindow.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/BreakpointWindow.cpp @@ -176,10 +176,10 @@ void CBreakPointWindow::LoadAll(wxCommandEvent& WXUNUSED(event)) IniFile ini; BreakPoints::TBreakPointsStr newbps; MemChecks::TMemChecksStr newmcs; - + if (!ini.Load(File::GetUserPath(F_DEBUGGERCONFIG_IDX))) return; - + if (ini.GetLines("BreakPoints", newbps, false)) PowerPC::breakpoints.AddFromStrings(newbps); if (ini.GetLines("MemoryChecks", newmcs, false)) diff --git a/Source/Core/DolphinWX/Src/Debugger/CodeView.cpp b/Source/Core/DolphinWX/Src/Debugger/CodeView.cpp index bcfb1ab586..b4d6c4378d 100644 --- a/Source/Core/DolphinWX/Src/Debugger/CodeView.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/CodeView.cpp @@ -269,7 +269,7 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) case IDM_JITRESULTS: debugger->showJitResults(selection); break; - + case IDM_FOLLOWBRANCH: { u32 dest = AddrToBranch(selection); @@ -280,7 +280,7 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) } } break; - + case IDM_ADDFUNCTION: symbol_db->AddFunction(selection); Host_NotifyMapLoaded(); @@ -378,7 +378,7 @@ void CCodeView::OnPaint(wxPaintEvent& event) // -------------------------------------------------------------------- // Colors and brushes - // ------------------------- + // ------------------------- dc.SetBackgroundMode(wxTRANSPARENT); // the text background const wxChar* bgColor = _T("#ffffff"); wxPen nullPen(bgColor); @@ -387,7 +387,7 @@ void CCodeView::OnPaint(wxPaintEvent& event) nullPen.SetStyle(wxTRANSPARENT); currentPen.SetStyle(wxSOLID); wxBrush currentBrush(_T("#FFEfE8")); // light gray - wxBrush pcBrush(_T("#70FF70")); // green + wxBrush pcBrush(_T("#70FF70")); // green wxBrush bpBrush(_T("#FF3311")); // red wxBrush bgBrush(bgColor); @@ -526,7 +526,7 @@ void CCodeView::OnPaint(wxPaintEvent& event) // Colors and brushes // ------------------------- dc.SetPen(currentPen); - + for (int i = 0; i < numBranches; i++) { int x = 17 + 49 * charWidth + (branches[i].srcAddr % 9) * 8; diff --git a/Source/Core/DolphinWX/Src/Debugger/CodeView.h b/Source/Core/DolphinWX/Src/Debugger/CodeView.h index 5618abf4d7..fcd3164eec 100644 --- a/Source/Core/DolphinWX/Src/Debugger/CodeView.h +++ b/Source/Core/DolphinWX/Src/Debugger/CodeView.h @@ -34,7 +34,7 @@ public: void InsertBlrNop(int); u32 GetSelection() {return(selection);} - void ToggleBreakpoint(u32 address); + void ToggleBreakpoint(u32 address); struct BlrStruct // for IDM_INSERTBLR { diff --git a/Source/Core/DolphinWX/Src/Debugger/CodeWindow.cpp b/Source/Core/DolphinWX/Src/Debugger/CodeWindow.cpp index 49db840f7c..3a6c9d4f42 100644 --- a/Source/Core/DolphinWX/Src/Debugger/CodeWindow.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/CodeWindow.cpp @@ -348,20 +348,20 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParam // CPU Mode wxMenu* pCoreMenu = new wxMenu; - wxMenuItem* interpreter = pCoreMenu->Append(IDM_INTERPRETER, _("&Interpreter core"), + wxMenuItem* interpreter = pCoreMenu->Append(IDM_INTERPRETER, _("&Interpreter core"), StrToWxStr("This is necessary to get break points" " and stepping to work as explained in the Developer Documentation. But it can be very" - " slow, perhaps slower than 1 fps."), + " slow, perhaps slower than 1 fps."), wxITEM_CHECK); interpreter->Check(_LocalCoreStartupParameter.iCPUCore == 0); pCoreMenu->AppendSeparator(); pCoreMenu->Append(IDM_JITBLOCKLINKING, _("&JIT Block Linking off"), - _("Provide safer execution by not linking the JIT blocks."), + _("Provide safer execution by not linking the JIT blocks."), wxITEM_CHECK); pCoreMenu->Append(IDM_JITNOBLOCKCACHE, _("&Disable JIT Cache"), - _("Avoid any involuntary JIT cache clearing, this may prevent Zelda TP from crashing.\n[This option must be selected before a game is started.]"), + _("Avoid any involuntary JIT cache clearing, this may prevent Zelda TP from crashing.\n[This option must be selected before a game is started.]"), wxITEM_CHECK); pCoreMenu->Append(IDM_CLEARCODECACHE, _("&Clear JIT cache")); @@ -412,17 +412,17 @@ void CCodeWindow::CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParam void CCodeWindow::CreateMenuOptions(wxMenu* pMenu) { wxMenuItem* boottopause = pMenu->Append(IDM_BOOTTOPAUSE, _("Boot to pause"), - _("Start the game directly instead of booting to pause"), + _("Start the game directly instead of booting to pause"), wxITEM_CHECK); boottopause->Check(bBootToPause); - wxMenuItem* automaticstart = pMenu->Append(IDM_AUTOMATICSTART, _("&Automatic start"), + wxMenuItem* automaticstart = pMenu->Append(IDM_AUTOMATICSTART, _("&Automatic start"), StrToWxStr( "Automatically load the Default ISO when Dolphin starts, or the last game you loaded," " if you have not given it an elf file with the --elf command line. [This can be" " convenient if you are bug-testing with a certain game and want to rebuild" " and retry it several times, either with changes to Dolphin or if you are" - " developing a homebrew game.]"), + " developing a homebrew game.]"), wxITEM_CHECK); automaticstart->Check(bAutomaticStart); @@ -480,7 +480,7 @@ void CCodeWindow::OnCPUMode(wxCommandEvent& event) // Clear the JIT cache to enable these changes JitInterface::ClearCache(); - + // Update UpdateButtonStates(); } diff --git a/Source/Core/DolphinWX/Src/Debugger/CodeWindowFunctions.cpp b/Source/Core/DolphinWX/Src/Debugger/CodeWindowFunctions.cpp index d9fe275abd..3582866c48 100644 --- a/Source/Core/DolphinWX/Src/Debugger/CodeWindowFunctions.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/CodeWindowFunctions.cpp @@ -108,7 +108,7 @@ void CCodeWindow::Save() "Registers", "Breakpoints", "Memory", - "JIT", + "JIT", "Sound", "Video", "Code" diff --git a/Source/Core/DolphinWX/Src/Debugger/DSPDebugWindow.cpp b/Source/Core/DolphinWX/Src/Debugger/DSPDebugWindow.cpp index d5e589c09b..3be7432eca 100644 --- a/Source/Core/DolphinWX/Src/Debugger/DSPDebugWindow.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/DSPDebugWindow.cpp @@ -19,7 +19,7 @@ DSPDebuggerLLE* m_DebuggerFrame = NULL; -BEGIN_EVENT_TABLE(DSPDebuggerLLE, wxPanel) +BEGIN_EVENT_TABLE(DSPDebuggerLLE, wxPanel) EVT_CLOSE(DSPDebuggerLLE::OnClose) EVT_MENU_RANGE(ID_RUNTOOL, ID_SHOWPCTOOL, DSPDebuggerLLE::OnChangeState) EVT_TEXT_ENTER(ID_ADDRBOX, DSPDebuggerLLE::OnAddrBoxChange) diff --git a/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.cpp b/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.cpp index a12e4d638a..eea0bf9426 100644 --- a/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.cpp @@ -68,7 +68,7 @@ void GFXDebuggerPanel::SaveSettings() const // TODO: get the screen resolution and make limits from that if (GetPosition().x < 1000 && GetPosition().y < 1000 - && GetSize().GetWidth() < 1000 + && GetSize().GetWidth() < 1000 && GetSize().GetHeight() < 1000) { file.Set("VideoWindow", "x", GetPosition().x); diff --git a/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.h b/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.h index eac6734bc9..90d4773841 100644 --- a/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.h +++ b/Source/Core/DolphinWX/Src/Debugger/DebuggerPanel.h @@ -74,7 +74,7 @@ private: ID_COUNT }; - void OnClose(wxCloseEvent& event); + void OnClose(wxCloseEvent& event); void CreateGUIControls(); void GeneralSettings(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/Src/Debugger/MemoryCheckDlg.h b/Source/Core/DolphinWX/Src/Debugger/MemoryCheckDlg.h index 9783869ffe..cc212fb88b 100644 --- a/Source/Core/DolphinWX/Src/Debugger/MemoryCheckDlg.h +++ b/Source/Core/DolphinWX/Src/Debugger/MemoryCheckDlg.h @@ -13,7 +13,7 @@ class MemoryCheckDlg : public wxDialog { public: MemoryCheckDlg(CBreakPointWindow *parent); - + private: CBreakPointWindow *m_parent; wxCheckBox* m_pReadFlag; diff --git a/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp b/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp index 99f80e0936..6e60451e07 100644 --- a/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/MemoryWindow.cpp @@ -238,7 +238,7 @@ void CMemoryWindow::OnDumpMemory( wxCommandEvent& event ) // Write exram (aram or mem2) to file void CMemoryWindow::OnDumpMem2( wxCommandEvent& event ) -{ +{ if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) { DumpArray(File::GetUserPath(F_ARAMDUMP_IDX), Memory::m_pEXRAM, Memory::EXRAM_SIZE); diff --git a/Source/Core/DolphinWX/Src/Debugger/RegisterView.cpp b/Source/Core/DolphinWX/Src/Debugger/RegisterView.cpp index ac56b8e4cc..d059a908ae 100644 --- a/Source/Core/DolphinWX/Src/Debugger/RegisterView.cpp +++ b/Source/Core/DolphinWX/Src/Debugger/RegisterView.cpp @@ -33,7 +33,7 @@ static u32 GetSpecialRegValue(int reg) case 8: return PowerPC::ppcState.Exceptions; case 9: return ProcessorInterface::GetMask(); case 10: return ProcessorInterface::GetCause(); - default: return 0; + default: return 0; } } @@ -154,7 +154,7 @@ wxGridCellAttr *CRegTable::GetAttr(int row, int col, wxGridCellAttr::wxAttrKind) switch (col) { case 1: red = row < 32 ? m_CachedRegHasChanged[row] : m_CachedSpecialRegHasChanged[row-32]; break; - case 3: + case 3: case 4: red = row < 32 ? m_CachedFRegHasChanged[row][col-3] : false; break; } diff --git a/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp b/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp index c7ae3f7756..0a957c7b06 100644 --- a/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp +++ b/Source/Core/DolphinWX/Src/FifoPlayerDlg.cpp @@ -74,75 +74,75 @@ void FifoPlayerDlg::CreateGUIControls() { wxBoxSizer* sMain; sMain = new wxBoxSizer(wxVERTICAL); - + m_Notebook = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0); { m_PlayPage = new wxPanel(m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); wxBoxSizer* sPlayPage; sPlayPage = new wxBoxSizer(wxVERTICAL); - + wxStaticBoxSizer* sPlayInfo; sPlayInfo = new wxStaticBoxSizer(new wxStaticBox(m_PlayPage, wxID_ANY, _("File Info")), wxVERTICAL); - + m_NumFramesLabel = new wxStaticText(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_NumFramesLabel->Wrap(-1); sPlayInfo->Add(m_NumFramesLabel, 0, wxALL, 5); - + m_CurrentFrameLabel = new wxStaticText(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_CurrentFrameLabel->Wrap(-1); sPlayInfo->Add(m_CurrentFrameLabel, 0, wxALL, 5); - + m_NumObjectsLabel = new wxStaticText(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_NumObjectsLabel->Wrap(-1); sPlayInfo->Add(m_NumObjectsLabel, 0, wxALL, 5); - + sPlayPage->Add(sPlayInfo, 1, wxEXPAND, 5); - + wxStaticBoxSizer* sFrameRange; sFrameRange = new wxStaticBoxSizer(new wxStaticBox(m_PlayPage, wxID_ANY, _("Frame Range")), wxHORIZONTAL); - + m_FrameFromLabel = new wxStaticText(m_PlayPage, wxID_ANY, _("From"), wxDefaultPosition, wxDefaultSize, 0); m_FrameFromLabel->Wrap(-1); sFrameRange->Add(m_FrameFromLabel, 0, wxALL, 5); - + m_FrameFromCtrl = new wxSpinCtrl(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10, 0); sFrameRange->Add(m_FrameFromCtrl, 0, wxALL, 5); - + m_FrameToLabel = new wxStaticText(m_PlayPage, wxID_ANY, _("To"), wxDefaultPosition, wxDefaultSize, 0); m_FrameToLabel->Wrap(-1); sFrameRange->Add(m_FrameToLabel, 0, wxALL, 5); - + m_FrameToCtrl = new wxSpinCtrl(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), wxSP_ARROW_KEYS, 0, 10, 0); sFrameRange->Add(m_FrameToCtrl, 0, wxALL, 5); - + sPlayPage->Add(sFrameRange, 0, wxEXPAND, 5); - + wxStaticBoxSizer* sObjectRange; sObjectRange = new wxStaticBoxSizer(new wxStaticBox(m_PlayPage, wxID_ANY, _("Object Range")), wxHORIZONTAL); - + m_ObjectFromLabel = new wxStaticText(m_PlayPage, wxID_ANY, _("From"), wxDefaultPosition, wxDefaultSize, 0); m_ObjectFromLabel->Wrap(-1); sObjectRange->Add(m_ObjectFromLabel, 0, wxALL, 5); - + m_ObjectFromCtrl = new wxSpinCtrl(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10000, 0); sObjectRange->Add(m_ObjectFromCtrl, 0, wxALL, 5); - + m_ObjectToLabel = new wxStaticText(m_PlayPage, wxID_ANY, _("To"), wxDefaultPosition, wxDefaultSize, 0); m_ObjectToLabel->Wrap(-1); sObjectRange->Add(m_ObjectToLabel, 0, wxALL, 5); - + m_ObjectToCtrl = new wxSpinCtrl(m_PlayPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10000, 0); sObjectRange->Add(m_ObjectToCtrl, 0, wxALL, 5); - + sPlayPage->Add(sObjectRange, 0, wxEXPAND, 5); - + wxStaticBoxSizer* sPlayOptions; sPlayOptions = new wxStaticBoxSizer(new wxStaticBox(m_PlayPage, wxID_ANY, _("Playback Options")), wxVERTICAL); - + m_EarlyMemoryUpdates = new wxCheckBox(m_PlayPage, wxID_ANY, _("Early Memory Updates"), wxDefaultPosition, wxDefaultSize, 0); sPlayOptions->Add(m_EarlyMemoryUpdates, 0, wxALL, 5); - + sPlayPage->Add(sPlayOptions, 0, wxEXPAND, 5); sPlayPage->AddStretchSpacer(); @@ -156,46 +156,46 @@ void FifoPlayerDlg::CreateGUIControls() m_RecordPage = new wxPanel(m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); wxBoxSizer* sRecordPage; sRecordPage = new wxBoxSizer(wxVERTICAL); - + wxStaticBoxSizer* sRecordInfo; sRecordInfo = new wxStaticBoxSizer(new wxStaticBox(m_RecordPage, wxID_ANY, _("Recording Info")), wxVERTICAL); - + m_RecordingFifoSizeLabel = new wxStaticText(m_RecordPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_RecordingFifoSizeLabel->Wrap(-1); sRecordInfo->Add(m_RecordingFifoSizeLabel, 0, wxALL, 5); - + m_RecordingMemSizeLabel = new wxStaticText(m_RecordPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_RecordingMemSizeLabel->Wrap(-1); sRecordInfo->Add(m_RecordingMemSizeLabel, 0, wxALL, 5); - + m_RecordingFramesLabel = new wxStaticText(m_RecordPage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); m_RecordingFramesLabel->Wrap(-1); sRecordInfo->Add(m_RecordingFramesLabel, 0, wxALL, 5); - + sRecordPage->Add(sRecordInfo, 0, wxEXPAND, 5); - + wxBoxSizer* sRecordButtons; sRecordButtons = new wxBoxSizer(wxHORIZONTAL); - + m_RecordStop = new wxButton(m_RecordPage, wxID_ANY, _("Record"), wxDefaultPosition, wxDefaultSize, 0); sRecordButtons->Add(m_RecordStop, 0, wxALL, 5); - + m_Save = new wxButton(m_RecordPage, wxID_ANY, _("Save"), wxDefaultPosition, wxDefaultSize, 0); sRecordButtons->Add(m_Save, 0, wxALL, 5); - + sRecordPage->Add(sRecordButtons, 0, wxEXPAND, 5); - + wxStaticBoxSizer* sRecordingOptions; sRecordingOptions = new wxStaticBoxSizer(new wxStaticBox(m_RecordPage, wxID_ANY, _("Recording Options")), wxHORIZONTAL); - + m_FramesToRecordLabel = new wxStaticText(m_RecordPage, wxID_ANY, _("Frames To Record"), wxDefaultPosition, wxDefaultSize, 0); m_FramesToRecordLabel->Wrap(-1); sRecordingOptions->Add(m_FramesToRecordLabel, 0, wxALL, 5); - + wxString initialNum = wxString::Format(_T("%d"), m_FramesToRecord); m_FramesToRecordCtrl = new wxSpinCtrl(m_RecordPage, wxID_ANY, initialNum, wxDefaultPosition, wxDefaultSize, wxSP_ARROW_KEYS, 0, 10000, 1); sRecordingOptions->Add(m_FramesToRecordCtrl, 0, wxALL, 5); - + sRecordPage->Add(sRecordingOptions, 0, wxEXPAND, 5); sRecordPage->AddStretchSpacer(); @@ -353,7 +353,7 @@ void FifoPlayerDlg::OnFrameTo(wxSpinEvent& event) player.SetFrameRangeEnd(event.GetPosition()); m_FrameFromCtrl->SetValue(player.GetFrameRangeStart()); - m_FrameToCtrl->SetValue(player.GetFrameRangeEnd()); + m_FrameToCtrl->SetValue(player.GetFrameRangeEnd()); } void FifoPlayerDlg::OnObjectFrom(wxSpinEvent& event) @@ -388,7 +388,7 @@ void FifoPlayerDlg::OnSaveFile(wxCommandEvent& WXUNUSED(event)) wxBeginBusyCursor(); bool result = file->Save(WxStrToStr(path).c_str()); wxEndBusyCursor(); - + // Wasn't able to save the file, shit's whack, yo. if (!result) PanicAlert("Error saving file"); @@ -624,8 +624,8 @@ void FifoPlayerDlg::OnObjectListSelectionChanged(wxCommandEvent& event) { const AnalyzedFrameInfo& frame = player.GetAnalyzedFrameInfo(frame_idx); const FifoFrameInfo& fifo_frame = player.GetFile()->GetFrame(frame_idx); - const u8* objectdata_start = &fifo_frame.fifoData[frame.objectStarts[object_idx]]; - const u8* objectdata_end = &fifo_frame.fifoData[frame.objectEnds[object_idx]]; + const u8* objectdata_start = &fifo_frame.fifoData[frame.objectStarts[object_idx]]; + const u8* objectdata_end = &fifo_frame.fifoData[frame.objectEnds[object_idx]]; u8* objectdata = (u8*)objectdata_start; const int obj_offset = objectdata_start - &fifo_frame.fifoData[frame.objectStarts[0]]; @@ -647,7 +647,7 @@ void FifoPlayerDlg::OnObjectListSelectionChanged(wxCommandEvent& event) // Between objectdata_end and next_objdata_start, there are register setting commands if (object_idx + 1 < (int)frame.objectStarts.size()) { - const u8* next_objdata_start = &fifo_frame.fifoData[frame.objectStarts[object_idx+1]]; + const u8* next_objdata_start = &fifo_frame.fifoData[frame.objectStarts[object_idx+1]]; while (objectdata < next_objdata_start) { m_objectCmdOffsets.push_back(objectdata - objectdata_start); @@ -807,7 +807,7 @@ void FifoPlayerDlg::OnRecordingFinished(wxEvent&) void FifoPlayerDlg::OnFrameWritten(wxEvent&) { m_CurrentFrameLabel->SetLabel(CreateCurrentFrameLabel()); - m_NumObjectsLabel->SetLabel(CreateFileObjectCountLabel()); + m_NumObjectsLabel->SetLabel(CreateFileObjectCountLabel()); } void FifoPlayerDlg::UpdatePlayGui() @@ -836,7 +836,7 @@ void FifoPlayerDlg::UpdateRecorderGui() { m_RecordingFifoSizeLabel->SetLabel(CreateRecordingFifoSizeLabel()); m_RecordingMemSizeLabel->SetLabel(CreateRecordingMemSizeLabel()); - m_RecordingFramesLabel->SetLabel(CreateRecordingFrameCountLabel()); + m_RecordingFramesLabel->SetLabel(CreateRecordingFrameCountLabel()); m_Save->Enable(GetSaveButtonEnabled()); } @@ -867,7 +867,7 @@ wxString FifoPlayerDlg::CreateFileFrameCountLabel() const if (file) return CreateIntegerLabel(file->GetFrameCount(), _("Frame")); - + return _("No file loaded"); } @@ -877,7 +877,7 @@ wxString FifoPlayerDlg::CreateCurrentFrameLabel() const if (file) return _("Frame ") + wxString::Format(wxT("%i"), FifoPlayer::GetInstance().GetCurrentFrameNum()); - + return wxEmptyString; } @@ -887,7 +887,7 @@ wxString FifoPlayerDlg::CreateFileObjectCountLabel() const if (file) return CreateIntegerLabel(FifoPlayer::GetInstance().GetFrameObjectCount(), _("Object")); - + return wxEmptyString; } @@ -901,9 +901,9 @@ wxString FifoPlayerDlg::CreateRecordingFifoSizeLabel() const for (int i = 0; i < file->GetFrameCount(); ++i) fifoBytes += file->GetFrame(i).fifoDataSize; - return CreateIntegerLabel(fifoBytes, _("FIFO Byte")); + return CreateIntegerLabel(fifoBytes, _("FIFO Byte")); } - + return _("No recorded file"); } @@ -921,9 +921,9 @@ wxString FifoPlayerDlg::CreateRecordingMemSizeLabel() const memBytes += memUpdate.size; } - return CreateIntegerLabel(memBytes, _("Memory Byte")); + return CreateIntegerLabel(memBytes, _("Memory Byte")); } - + return wxEmptyString; } @@ -936,7 +936,7 @@ wxString FifoPlayerDlg::CreateRecordingFrameCountLabel() const int numFrames = file->GetFrameCount(); return CreateIntegerLabel(numFrames, _("Frame")); } - + return wxEmptyString; } diff --git a/Source/Core/DolphinWX/Src/FifoPlayerDlg.h b/Source/Core/DolphinWX/Src/FifoPlayerDlg.h index 6f4a8074b9..1d6b8e3895 100644 --- a/Source/Core/DolphinWX/Src/FifoPlayerDlg.h +++ b/Source/Core/DolphinWX/Src/FifoPlayerDlg.h @@ -28,7 +28,7 @@ private: void OnObjectTo( wxSpinEvent& event ); void OnCheckEarlyMemoryUpdates( wxCommandEvent& event ); void OnRecordStop( wxCommandEvent& event ); - void OnSaveFile( wxCommandEvent& event ); + void OnSaveFile( wxCommandEvent& event ); void OnNumFramesToRecord( wxSpinEvent& event ); void OnCloseClick( wxCommandEvent& event ); diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp index a85e20f46d..1ca16ff1ac 100644 --- a/Source/Core/DolphinWX/Src/Frame.cpp +++ b/Source/Core/DolphinWX/Src/Frame.cpp @@ -446,7 +446,7 @@ void CFrame::OnActive(wxActivateEvent& event) #else m_RenderParent->SetFocus(); #endif - + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && Core::GetState() == Core::CORE_RUN) m_RenderParent->SetCursor(wxCURSOR_BLANK); @@ -609,7 +609,7 @@ void CFrame::OnHostMessage(wxCommandEvent& event) { wxString caption = event.GetString().BeforeFirst(':'); wxString text = event.GetString().AfterFirst(':'); - bPanicResult = (wxYES == wxMessageBox(text, + bPanicResult = (wxYES == wxMessageBox(text, caption, event.GetInt() ? wxYES_NO : wxOK, wxGetActiveWindow())); panic_event.Set(); } @@ -642,7 +642,7 @@ void CFrame::GetRenderWindowSize(int& x, int& y, int& width, int& height) void CFrame::OnRenderWindowSizeRequest(int width, int height) { if (Core::GetState() == Core::CORE_UNINITIALIZED || - !SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize || + !SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize || RendererIsFullscreen() || m_RenderFrame->IsMaximized()) return; @@ -933,7 +933,7 @@ void CFrame::OnKeyDown(wxKeyEvent& event) { int cmd = GetCmdForHotkey(i); if (cmd >= 0) - { + { wxCommandEvent evt(wxEVT_COMMAND_MENU_SELECTED, cmd); wxMenuItem *item = GetMenuBar()->FindItem(cmd); if (item && item->IsCheckable()) diff --git a/Source/Core/DolphinWX/Src/Frame.h b/Source/Core/DolphinWX/Src/Frame.h index 376ced5b10..4abf453041 100644 --- a/Source/Core/DolphinWX/Src/Frame.h +++ b/Source/Core/DolphinWX/Src/Frame.h @@ -164,7 +164,7 @@ public: std::vector Width, Height; }; std::vector Perspectives; - u32 ActivePerspective; + u32 ActivePerspective; private: CGameListCtrl* m_GameListCtrl; @@ -250,10 +250,10 @@ private: void OnPaneClose(wxAuiManagerEvent& evt); void ReloadPanes(); void DoLoadPerspective(); - void OnDropDownToolbarSelect(wxCommandEvent& event); + void OnDropDownToolbarSelect(wxCommandEvent& event); void OnDropDownSettingsToolbar(wxAuiToolBarEvent& event); void OnDropDownToolbarItem(wxAuiToolBarEvent& event); - void OnSelectPerspective(wxCommandEvent& event); + void OnSelectPerspective(wxCommandEvent& event); #ifdef _WIN32 // Override window proc for tricks like screensaver disabling @@ -284,7 +284,7 @@ private: void OnChangeDisc(wxCommandEvent& event); void OnScreenshot(wxCommandEvent& event); void OnActive(wxActivateEvent& event); - void OnClose(wxCloseEvent &event); + void OnClose(wxCloseEvent &event); void OnLoadState(wxCommandEvent& event); void OnSaveState(wxCommandEvent& event); void OnLoadStateFromFile(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/Src/FrameAui.cpp b/Source/Core/DolphinWX/Src/FrameAui.cpp index b43b41a7cf..2333541f2e 100644 --- a/Source/Core/DolphinWX/Src/FrameAui.cpp +++ b/Source/Core/DolphinWX/Src/FrameAui.cpp @@ -38,7 +38,7 @@ void CFrame::OnPaneClose(wxAuiManagerEvent& event) if (!g_pCodeWindow) { - if (nb->GetPage(0)->GetId() == IDM_LOGWINDOW || + if (nb->GetPage(0)->GetId() == IDM_LOGWINDOW || nb->GetPage(0)->GetId() == IDM_LOGCONFIGWINDOW || nb->GetPage(0)->GetId() == IDM_CONSOLEWINDOW) { @@ -494,7 +494,7 @@ void CFrame::DoRemovePage(wxWindow *Win, bool bHide) void CFrame::DoAddPage(wxWindow *Win, int i, bool Float) { if (!Win) return; - + // Ensure accessor remains within valid bounds. if (i < 0 || i > GetNotebookCount()-1) i = 0; @@ -577,7 +577,7 @@ void CFrame::OnDropDownToolbarItem(wxAuiToolBarEvent& event) wxMenuItem* mItem = new wxMenuItem(menuPopup, IDM_PERSPECTIVES_0 + i, StrToWxStr(Perspectives[i].Name), wxT(""), wxITEM_CHECK); - + menuPopup->Append(mItem); if (i == ActivePerspective) diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp index caa77ce0ee..359b09f0aa 100644 --- a/Source/Core/DolphinWX/Src/FrameTools.cpp +++ b/Source/Core/DolphinWX/Src/FrameTools.cpp @@ -98,7 +98,7 @@ void CFrame::CreateMenu() wxMenu *externalDrive = new wxMenu; fileMenu->Append(IDM_DRIVES, _("&Boot from DVD Drive..."), externalDrive); - + drives = cdio_get_devices(); // Windows Limitation of 24 character drives for (unsigned int i = 0; i < drives.size() && i < 24; i++) { @@ -155,7 +155,7 @@ void CFrame::CreateMenu() saveMenu->AppendSeparator(); loadMenu->Append(IDM_LOADSTATEFILE, GetMenuLabel(HK_LOAD_STATE_FILE)); - + loadMenu->Append(IDM_UNDOLOADSTATE, GetMenuLabel(HK_UNDO_LOAD_STATE)); loadMenu->AppendSeparator(); @@ -386,7 +386,7 @@ wxString CFrame::GetMenuLabel(int Id) case HK_LOAD_STATE_SLOT_8: case HK_LOAD_STATE_SLOT_9: case HK_LOAD_STATE_SLOT_10: - Label = wxString::Format(_("Slot %i"), + Label = wxString::Format(_("Slot %i"), Id - HK_LOAD_STATE_SLOT_1 + 1); break; @@ -400,7 +400,7 @@ wxString CFrame::GetMenuLabel(int Id) case HK_SAVE_STATE_SLOT_8: case HK_SAVE_STATE_SLOT_9: case HK_SAVE_STATE_SLOT_10: - Label = wxString::Format(_("Slot %i"), + Label = wxString::Format(_("Slot %i"), Id - HK_SAVE_STATE_SLOT_1 + 1); break; case HK_SAVE_STATE_FILE: @@ -437,7 +437,7 @@ wxString CFrame::GetMenuLabel(int Id) hotkeymodifier |= wxMOD_CONTROL; #endif hotkeymodifier &= wxMOD_CONTROL | wxMOD_ALT | wxMOD_SHIFT; - + Modifier = InputCommon::WXKeymodToString(hotkeymodifier); Hotkey = InputCommon::WXKeyToString(hotkey); if (Modifier.Len() + Hotkey.Len() > 0) @@ -505,7 +505,7 @@ void CFrame::RecreateToolbar() m_ToolBar = new wxAuiToolBar(this, ID_TOOLBAR, wxDefaultPosition, wxDefaultSize, TOOLBAR_STYLE); PopulateToolbar(m_ToolBar); - + m_Mgr->AddPane(m_ToolBar, wxAuiPaneInfo(). Name(wxT("TBMain")).Caption(wxT("TBMain")). ToolbarPane().Top(). @@ -515,7 +515,7 @@ void CFrame::RecreateToolbar() { m_ToolBarDebug = new wxAuiToolBar(this, ID_TOOLBAR_DEBUG, wxDefaultPosition, wxDefaultSize, TOOLBAR_STYLE); g_pCodeWindow->PopulateToolbar(m_ToolBarDebug); - + m_Mgr->AddPane(m_ToolBarDebug, wxAuiPaneInfo(). Name(wxT("TBDebug")).Caption(wxT("TBDebug")). ToolbarPane().Top(). @@ -695,7 +695,7 @@ void CFrame::OnChangeDisc(wxCommandEvent& WXUNUSED (event)) void CFrame::OnRecord(wxCommandEvent& WXUNUSED (event)) { int controllers = 0; - + if (Movie::IsReadOnly()) { //PanicAlertT("Cannot record movies in read-only mode."); @@ -723,7 +723,7 @@ void CFrame::OnPlayRecording(wxCommandEvent& WXUNUSED (event)) wxString path = wxFileSelector( _("Select The Recording File"), wxEmptyString, wxEmptyString, wxEmptyString, - _("Dolphin TAS Movies (*.dtm)") + + _("Dolphin TAS Movies (*.dtm)") + wxString::Format(wxT("|*.dtm|%s"), wxGetTranslation(wxALL_FILES)), wxFD_OPEN | wxFD_PREVIEW | wxFD_FILE_MUST_EXIST, this); @@ -951,7 +951,7 @@ void CFrame::StartGame(const std::string& filename) #else m_RenderParent->SetFocus(); #endif - + wxTheApp->Bind(wxEVT_KEY_DOWN, &CFrame::OnKeyDown, this); wxTheApp->Bind(wxEVT_KEY_UP, &CFrame::OnKeyUp, this); wxTheApp->Bind(wxEVT_RIGHT_DOWN, &CFrame::OnMouse, this); @@ -1135,23 +1135,23 @@ void CFrame::DoStop() void CFrame::DoRecordingSave() { bool paused = (Core::GetState() == Core::CORE_PAUSE); - + if (!paused) DoPause(); - + wxString path = wxFileSelector( _("Select The Recording File"), wxEmptyString, wxEmptyString, wxEmptyString, - _("Dolphin TAS Movies (*.dtm)") + + _("Dolphin TAS Movies (*.dtm)") + wxString::Format(wxT("|*.dtm|%s"), wxGetTranslation(wxALL_FILES)), wxFD_SAVE | wxFD_PREVIEW | wxFD_OVERWRITE_PROMPT, this); if(path.IsEmpty()) return; - + Movie::SaveRecording(WxStrToStr(path).c_str()); - + if (!paused) DoPause(); } @@ -1323,12 +1323,12 @@ void CFrame::OnMemcard(wxCommandEvent& WXUNUSED (event)) MemcardManager.ShowModal(); } -void CFrame::OnExportAllSaves(wxCommandEvent& WXUNUSED (event)) +void CFrame::OnExportAllSaves(wxCommandEvent& WXUNUSED (event)) { CWiiSaveCrypted::ExportAllSaves(); } -void CFrame::OnImportSave(wxCommandEvent& WXUNUSED (event)) +void CFrame::OnImportSave(wxCommandEvent& WXUNUSED (event)) { wxString path = wxFileSelector(_("Select the save file"), wxEmptyString, wxEmptyString, wxEmptyString, @@ -1477,7 +1477,7 @@ void CFrame::OnLoadStateFromFile(wxCommandEvent& WXUNUSED (event)) wxString path = wxFileSelector( _("Select the state to load"), wxEmptyString, wxEmptyString, wxEmptyString, - _("All Save States (sav, s##)") + + _("All Save States (sav, s##)") + wxString::Format(wxT("|*.sav;*.s??|%s"), wxGetTranslation(wxALL_FILES)), wxFD_OPEN | wxFD_PREVIEW | wxFD_FILE_MUST_EXIST, this); @@ -1491,7 +1491,7 @@ void CFrame::OnSaveStateToFile(wxCommandEvent& WXUNUSED (event)) wxString path = wxFileSelector( _("Select the state to save"), wxEmptyString, wxEmptyString, wxEmptyString, - _("All Save States (sav, s##)") + + _("All Save States (sav, s##)") + wxString::Format(wxT("|*.sav;*.s??|%s"), wxGetTranslation(wxALL_FILES)), wxFD_SAVE, this); @@ -1658,9 +1658,9 @@ void CFrame::UpdateGUI() m_ToolBar->SetToolLabel(IDM_PLAY, _("Play")); } } - + GetMenuBar()->FindItem(IDM_RECORDREADONLY)->Enable(Running || Paused); - + if (!Initialized && !m_bGameLoading) { if (m_GameListCtrl->IsEnabled()) @@ -1791,17 +1791,17 @@ void CFrame::GameListChanged(wxCommandEvent& event) Directories.push_back(File::GetUserPath(D_CACHE_IDX).c_str()); CFileSearch::XStringVector Extensions; Extensions.push_back("*.cache"); - + CFileSearch FileSearch(Extensions, Directories); const CFileSearch::XStringVector& rFilenames = FileSearch.GetFileNames(); - + for (auto& rFilename : rFilenames) { File::Delete(rFilename); } break; } - + // Update gamelist if (m_GameListCtrl) { diff --git a/Source/Core/DolphinWX/Src/GLInterface/AGL.cpp b/Source/Core/DolphinWX/Src/GLInterface/AGL.cpp index 2062268e05..1068e870a0 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/AGL.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/AGL.cpp @@ -114,10 +114,10 @@ void cInterfaceAGL::Update() if( s_backbuffer_width == size.width && s_backbuffer_height == size.height) return; - + s_backbuffer_width = size.width; s_backbuffer_height = size.height; - + [GLWin.cocoaCtx update]; } diff --git a/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp b/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp index d6f3631cfb..741492e0a4 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/EGL.cpp @@ -53,7 +53,7 @@ bool cInterfaceEGL::Create(void *&window_handle) #ifdef USE_GLES #ifdef USE_GLES3 EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, - + // OpenGL ES 3 bit is disabled for now, until we have a way to select it from runtime // Qualcomm drivers don't even care if it is ES2 or ES3 bit set. // Intel drivers /might/ not care, but that code path is untested diff --git a/Source/Core/DolphinWX/Src/GLInterface/EGL.h b/Source/Core/DolphinWX/Src/GLInterface/EGL.h index cd0969c4b7..ce32edd264 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/EGL.h +++ b/Source/Core/DolphinWX/Src/GLInterface/EGL.h @@ -43,7 +43,7 @@ public: void UpdateFPSDisplay(const char *Text); bool Create(void *&window_handle); bool MakeCurrent(); - void Shutdown(); + void Shutdown(); }; #endif diff --git a/Source/Core/DolphinWX/Src/GLInterface/GLX.h b/Source/Core/DolphinWX/Src/GLInterface/GLX.h index ba8e6a9b82..2e8bde121f 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/GLX.h +++ b/Source/Core/DolphinWX/Src/GLInterface/GLX.h @@ -37,7 +37,7 @@ public: bool Create(void *&window_handle); bool MakeCurrent(); bool ClearCurrent(); - void Shutdown(); + void Shutdown(); }; #endif diff --git a/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h b/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h index 506adcbb6e..b69d9fea9c 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h +++ b/Source/Core/DolphinWX/Src/GLInterface/InterfaceBase.h @@ -16,13 +16,13 @@ public: virtual bool Create(void *&window_handle) { return true; } virtual bool MakeCurrent() { return true; } virtual bool ClearCurrent() { return true; } - virtual void Shutdown() {} + virtual void Shutdown() {} virtual void SwapInterval(int Interval) { } virtual u32 GetBackBufferWidth() { return s_backbuffer_width; } virtual u32 GetBackBufferHeight() { return s_backbuffer_height; } virtual void SetBackBufferDimensions(u32 W, u32 H) {s_backbuffer_width = W; s_backbuffer_height = H; } - virtual void Update() { } + virtual void Update() { } virtual bool PeekMessages() { return false; } }; #endif diff --git a/Source/Core/DolphinWX/Src/GLInterface/Platform.cpp b/Source/Core/DolphinWX/Src/GLInterface/Platform.cpp index 64e32591d8..8094eef810 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/Platform.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/Platform.cpp @@ -110,7 +110,7 @@ out: if (GLWin.wl_display) wl_display_disconnect(GLWin.wl_display); } - + #endif #if HAVE_X11 if (selected_platform != EGL_PLATFORM_X11) { @@ -179,7 +179,7 @@ EGLNativeWindowType cPlatform::CreateWindow(void) return (EGLNativeWindowType) XInterface.CreateWindow(); #endif #ifdef ANDROID - return (EGLNativeWindowType)Host_GetRenderHandle(); + return (EGLNativeWindowType)Host_GetRenderHandle(); #endif return 0; } diff --git a/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp b/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp index 5a4276b9c5..62a4438c6d 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp +++ b/Source/Core/DolphinWX/Src/GLInterface/WGL.cpp @@ -84,7 +84,7 @@ bool cInterfaceWGL::Create(void *&window_handle) 0, // Shift Bit Ignored 0, // No Accumulation Buffer 0, 0, 0, 0, // Accumulation Bits Ignored - 0, // 0Bit Z-Buffer (Depth Buffer) + 0, // 0Bit Z-Buffer (Depth Buffer) 0, // 0bit Stencil Buffer 0, // No Auxiliary Buffer PFD_MAIN_PLANE, // Main Drawing Layer diff --git a/Source/Core/DolphinWX/Src/GLInterface/WGL.h b/Source/Core/DolphinWX/Src/GLInterface/WGL.h index 5c968d963e..02526984ff 100644 --- a/Source/Core/DolphinWX/Src/GLInterface/WGL.h +++ b/Source/Core/DolphinWX/Src/GLInterface/WGL.h @@ -22,7 +22,7 @@ public: bool Create(void *&window_handle); bool MakeCurrent(); bool ClearCurrent(); - void Shutdown(); + void Shutdown(); void Update(); bool PeekMessages(); diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp index a6a6e2b6a0..c1d8ef3787 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp +++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp @@ -62,7 +62,7 @@ static int CompareGameListItems(const GameListItem* iso1, const GameListItem* is int indexOne = 0; int indexOther = 0; - + // index only matters for WADS and PAL GC games, but invalid indicies for the others // will return the (only) language in the list if (iso1->GetPlatform() == GameListItem::WII_WAD) @@ -307,7 +307,7 @@ void CGameListCtrl::Update() #else const int platform_padding = 8; #endif - + // set initial sizes for columns SetColumnWidth(COLUMN_DUMMY,0); SetColumnWidth(COLUMN_PLATFORM, 35 + platform_padding); @@ -375,10 +375,10 @@ void CGameListCtrl::Update() wxString NiceSizeFormat(u64 _size) { const char* const unit_symbols[] = {"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"}; - + auto const unit = Log2(std::max(_size, 1)) / 10; auto const unit_size = (1 << (unit * 10)); - + // ugly rounding integer math auto const value = (_size + unit_size / 2) / unit_size; auto const frac = (_size % unit_size * 10 + unit_size / 2) / unit_size % 10; @@ -409,13 +409,13 @@ void CGameListCtrl::InsertItemInReportView(long _Index) SetItemColumnImage(_Index, COLUMN_BANNER, ImageIndex); int SelectedLanguage = SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage; - + // Is this sane? if (rISOFile.GetPlatform() == GameListItem::WII_WAD) { SelectedLanguage = SConfig::GetInstance().m_SYSCONF->GetData("IPL.LNG"); } - + std::string const name = rISOFile.GetName(SelectedLanguage); SetItem(_Index, COLUMN_TITLE, StrToWxStr(name), -1); @@ -826,7 +826,7 @@ void CGameListCtrl::OnLeftClick(wxMouseEvent& event) } void CGameListCtrl::OnRightClick(wxMouseEvent& event) -{ +{ // Focus the clicked item. int flags; long item = HitTest(event.GetPosition(), flags); @@ -869,7 +869,7 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event) { if (selected_iso->IsCompressed()) popupMenu->Append(IDM_COMPRESSGCM, _("Decompress ISO...")); - else if (selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".ciso" + else if (selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".ciso" && selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".wbfs") popupMenu->Append(IDM_COMPRESSGCM, _("Compress ISO...")); } @@ -1105,7 +1105,7 @@ void CGameListCtrl::CompressSelection(bool _compress) if (wxFileExists(StrToWxStr(OutputFileName)) && wxMessageBox( wxString::Format(_("The file %s already exists.\nDo you wish to replace it?"), - StrToWxStr(OutputFileName)), + StrToWxStr(OutputFileName)), _("Confirm File Overwrite"), wxYES_NO) == wxNO) continue; @@ -1133,7 +1133,7 @@ void CGameListCtrl::CompressSelection(bool _compress) if (wxFileExists(StrToWxStr(OutputFileName)) && wxMessageBox( wxString::Format(_("The file %s already exists.\nDo you wish to replace it?"), - StrToWxStr(OutputFileName)), + StrToWxStr(OutputFileName)), _("Confirm File Overwrite"), wxYES_NO) == wxNO) continue; @@ -1194,7 +1194,7 @@ void CGameListCtrl::OnCompressGCM(wxCommandEvent& WXUNUSED (event)) StrToWxStr(FilePath), StrToWxStr(FileName) + _T(".gcz"), wxEmptyString, - _("All compressed GC/Wii ISO files (gcz)") + + _("All compressed GC/Wii ISO files (gcz)") + wxString::Format(wxT("|*.gcz|%s"), wxGetTranslation(wxALL_FILES)), wxFD_SAVE, this); @@ -1203,7 +1203,7 @@ void CGameListCtrl::OnCompressGCM(wxCommandEvent& WXUNUSED (event)) return; } while (wxFileExists(path) && wxMessageBox( - wxString::Format(_("The file %s already exists.\nDo you wish to replace it?"), path.c_str()), + wxString::Format(_("The file %s already exists.\nDo you wish to replace it?"), path.c_str()), _("Confirm File Overwrite"), wxYES_NO) == wxNO); diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.h b/Source/Core/DolphinWX/Src/GameListCtrl.h index ad46ec6d67..7ac02eae16 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.h +++ b/Source/Core/DolphinWX/Src/GameListCtrl.h @@ -75,7 +75,7 @@ private: void InsertItemInReportView(long _Index); void SetBackgroundColor(); void ScanForISOs(); - + DECLARE_EVENT_TABLE() // events diff --git a/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp b/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp index 514fea3463..fc1e62896e 100644 --- a/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp +++ b/Source/Core/DolphinWX/Src/GeckoCodeDiag.cpp @@ -52,7 +52,7 @@ CodeConfigPanel::CodeConfigPanel(wxWindow* const parent) wxBoxSizer* const sizer_vert = new wxBoxSizer(wxVERTICAL); sizer_vert->Add(sizer_infobox, 1, wxEXPAND); sizer_vert->Add(sizer_buttons, 0, wxEXPAND | wxTOP, 5); - + wxBoxSizer* const sizer_main = new wxBoxSizer(wxVERTICAL); sizer_main->Add(m_listbox_gcodes, 1, wxALL | wxEXPAND, 5); sizer_main->Add(sizer_vert, 0, wxALL | wxEXPAND, 5); @@ -76,7 +76,7 @@ void CodeConfigPanel::UpdateCodeList(bool checkRunning) if (gcodes_iter->enabled) m_listbox_gcodes->Check(m_listbox_gcodes->GetCount()-1, true); } - + wxCommandEvent evt; UpdateInfoBox(evt); } @@ -146,7 +146,7 @@ void CodeConfigPanel::DownloadCodes(wxCommandEvent&) std::string gameid = m_gameid; - + switch (m_gameid[0]) { case 'R': @@ -225,7 +225,7 @@ void CodeConfigPanel::DownloadCodes(wxCommandEvent&) // read code lines case 1 : { - std::istringstream ssline(line); + std::istringstream ssline(line); std::string addr, data; ssline >> addr >> data; ssline.seekg(0); diff --git a/Source/Core/DolphinWX/Src/Globals.h b/Source/Core/DolphinWX/Src/Globals.h index 42c0154405..2cb8a41519 100644 --- a/Source/Core/DolphinWX/Src/Globals.h +++ b/Source/Core/DolphinWX/Src/Globals.h @@ -128,7 +128,7 @@ enum IDM_CONFIG_HOTKEYS, IDM_CONFIG_LOGGER, - // Views + // Views IDM_LOGWINDOW, IDM_LOGCONFIGWINDOW, IDM_CONSOLEWINDOW, diff --git a/Source/Core/DolphinWX/Src/HotkeyDlg.cpp b/Source/Core/DolphinWX/Src/HotkeyDlg.cpp index 67d540b16e..03b40dd286 100644 --- a/Source/Core/DolphinWX/Src/HotkeyDlg.cpp +++ b/Source/Core/DolphinWX/Src/HotkeyDlg.cpp @@ -255,12 +255,12 @@ void HotkeyConfigDialog::CreateHotkeyGUIControls(void) wxStaticText *StaticTextHeader = new wxStaticText(Page, wxID_ANY, _("Action")); HeaderSizer->Add(StaticTextHeader, 1, wxALL, 2); StaticTextHeader = new wxStaticText(Page, wxID_ANY, _("Key"), wxDefaultPosition, size); - HeaderSizer->Add(StaticTextHeader, 0, wxALL, 2); + HeaderSizer->Add(StaticTextHeader, 0, wxALL, 2); sHotkeys->Add(HeaderSizer, wxGBPosition(0, i), wxDefaultSpan, wxEXPAND | wxLEFT, (i > 0) ? 30 : 1); } int column_break = (page_breaks[j+1] + page_breaks[j] + 1) / 2; - + for (int i = page_breaks[j]; i < page_breaks[j+1]; i++) { // Text for the action diff --git a/Source/Core/DolphinWX/Src/ISOFile.cpp b/Source/Core/DolphinWX/Src/ISOFile.cpp index 2a70a550f7..a867d9b6ca 100644 --- a/Source/Core/DolphinWX/Src/ISOFile.cpp +++ b/Source/Core/DolphinWX/Src/ISOFile.cpp @@ -82,7 +82,7 @@ GameListItem::GameListItem(const std::string& _rFileName) m_names = pBannerLoader->GetNames(); m_company = pBannerLoader->GetCompany(); m_descriptions = pBannerLoader->GetDescriptions(); - + std::vector Buffer = pBannerLoader->GetBanner(&m_ImageWidth, &m_ImageHeight); u32* pData = &Buffer[0]; // resize vector to image size @@ -212,7 +212,7 @@ std::string GameListItem::GetDescription(int _index) const if (index < m_descriptions.size()) return m_descriptions[index]; - + if (!m_descriptions.empty()) return m_descriptions[0]; @@ -229,7 +229,7 @@ std::string GameListItem::GetVolumeName(int _index) const if (!m_volume_names.empty()) return m_volume_names[0]; - + return ""; } @@ -240,7 +240,7 @@ std::string GameListItem::GetBannerName(int _index) const if (index < m_names.size() && !m_names[index].empty()) return m_names[index]; - + if (!m_names.empty()) return m_names[0]; @@ -251,9 +251,9 @@ std::string GameListItem::GetBannerName(int _index) const std::string GameListItem::GetName(int _index) const { // Prefer name from banner, fallback to name from volume, fallback to filename - + std::string name = GetBannerName(_index); - + if (name.empty()) name = GetVolumeName(_index); diff --git a/Source/Core/DolphinWX/Src/ISOProperties.cpp b/Source/Core/DolphinWX/Src/ISOProperties.cpp index e73726e02a..b6c3d9e8ea 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.cpp +++ b/Source/Core/DolphinWX/Src/ISOProperties.cpp @@ -196,7 +196,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW m_Country->SetValue(_("UNKNOWN")); break; } - + if (IsWiiDisc) // Only one language with wii banners { m_Lang->SetSelection(0); @@ -218,7 +218,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW { ChangeBannerDetails(SConfig::GetInstance().m_SYSCONF->GetData("IPL.LNG")); } - + m_Banner->SetBitmap(OpenGameListItem->GetBitmap()); m_Banner->Bind(wxEVT_RIGHT_DOWN, &CISOProperties::RightClickOnBanner, this); @@ -233,7 +233,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW WiiPartition partition = WiiDisc.at(i); wxTreeItemId PartitionRoot = m_Treectrl->AppendItem(RootId, wxString::Format(_("Partition %i"), i), 0, 0); - CreateDirectoryTree(PartitionRoot, partition.Files, 1, partition.Files.at(0)->m_FileSize); + CreateDirectoryTree(PartitionRoot, partition.Files, 1, partition.Files.at(0)->m_FileSize); if (i == 1) m_Treectrl->Expand(PartitionRoot); } @@ -260,7 +260,7 @@ CISOProperties::~CISOProperties() size_t CISOProperties::CreateDirectoryTree(wxTreeItemId& parent, std::vector fileInfos, - const size_t _FirstIndex, + const size_t _FirstIndex, const size_t _LastIndex) { size_t CurrentIndex = _FirstIndex; @@ -365,7 +365,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) UseZTPSpeedupHack = new wxCheckBox(m_GameConfig, ID_ZTP_SPEEDUP, _("ZTP hack"), wxDefaultPosition, wxDefaultSize, GetElementStyle("Video", "ZTPSpeedupHack")); UseZTPSpeedupHack->SetToolTip(_("Enable this to speed up The Legend of Zelda: Twilight Princess. Disable for ANY other game.")); - + // Hack wxFlexGridSizer * const szrPHackSettings = new wxFlexGridSizer(0); PHackEnable = new wxCheckBox(m_GameConfig, ID_PHACKENABLE, _("Custom Projection Hack"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE); @@ -396,7 +396,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) sbCoreOverrides->Add(DCBZOFF, 0, wxLEFT, 5); sbCoreOverrides->Add(VBeam, 0, wxLEFT, 5); sbCoreOverrides->Add(SyncGPU, 0, wxLEFT, 5); - sbCoreOverrides->Add(FastDiscSpeed, 0, wxLEFT, 5); + sbCoreOverrides->Add(FastDiscSpeed, 0, wxLEFT, 5); sbCoreOverrides->Add(BlockMerging, 0, wxLEFT, 5); sbCoreOverrides->Add(DSPHLE, 0, wxLEFT, 5); @@ -430,7 +430,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) sConfigPage->Add(sEmuState, 0, wxEXPAND|wxALL, 5); m_GameConfig->SetSizer(sConfigPage); - + // Patches wxBoxSizer * const sPatches = new wxBoxSizer(wxVERTICAL); Patches = new wxCheckListBox(m_PatchPage, ID_PATCHES_LIST, wxDefaultPosition, @@ -452,7 +452,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) sPatchPage->Add(sPatches, 1, wxEXPAND|wxALL, 5); m_PatchPage->SetSizer(sPatchPage); - + // Action Replay Cheats wxBoxSizer * const sCheats = new wxBoxSizer(wxVERTICAL); Cheats = new wxCheckListBox(m_CheatPage, ID_CHEATS_LIST, wxDefaultPosition, @@ -475,7 +475,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) sCheatPage->Add(sCheats, 1, wxEXPAND|wxALL, 5); m_CheatPage->SetSizer(sCheatPage); - + wxStaticText * const m_NameText = new wxStaticText(m_Information, wxID_ANY, _("Name:")); m_Name = new wxTextCtrl(m_Information, ID_NAME, wxEmptyString, @@ -501,7 +501,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) m_Date = new wxTextCtrl(m_Information, ID_DATE, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY); wxStaticText * const m_FSTText = - new wxStaticText(m_Information, wxID_ANY, _("FST Size:")); + new wxStaticText(m_Information, wxID_ANY, _("FST Size:")); m_FST = new wxTextCtrl(m_Information, ID_FST, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY); @@ -519,12 +519,12 @@ void CISOProperties::CreateGUIControls(bool IsWad) arrayStringFor_Lang.Add(_("Simplified Chinese")); arrayStringFor_Lang.Add(_("Traditional Chinese")); arrayStringFor_Lang.Add(_("Korean")); - + language = SConfig::GetInstance().m_SYSCONF->GetData("IPL.LNG"); } m_Lang = new wxChoice(m_Information, ID_LANG, wxDefaultPosition, wxDefaultSize, arrayStringFor_Lang); m_Lang->SetSelection(language); - + wxStaticText * const m_ShortText = new wxStaticText(m_Information, wxID_ANY, _("Short Name:")); m_ShortName = new wxTextCtrl(m_Information, ID_SHORTNAME, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY); wxStaticText * const m_MakerText = new wxStaticText(m_Information, wxID_ANY, _("Maker:")); @@ -670,9 +670,9 @@ void CISOProperties::OnRightClickOnTree(wxTreeEvent& event) popupMenu->Append(IDM_EXTRACTDIR, _("Extract Directory...")); else if (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 2) popupMenu->Append(IDM_EXTRACTFILE, _("Extract File...")); - + popupMenu->Append(IDM_EXTRACTALL, _("Extract All Files...")); - + if (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0 && m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection()) { @@ -682,7 +682,7 @@ void CISOProperties::OnRightClickOnTree(wxTreeEvent& event) popupMenu->AppendSeparator(); popupMenu->Append(IDM_CHECKINTEGRITY, _("Check Partition Integrity")); } - + PopupMenu(popupMenu); event.Skip(); @@ -694,7 +694,7 @@ void CISOProperties::OnExtractFile(wxCommandEvent& WXUNUSED (event)) wxString File; File = m_Treectrl->GetItemText(m_Treectrl->GetSelection()); - + Path = wxFileSelector( _("Export File"), wxEmptyString, File, wxEmptyString, @@ -784,7 +784,7 @@ void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolde { dialog.SetTitle(wxString::Format(wxT("%s : %d%%"), dialogTitle.c_str(), (u32)(((float)(i - index[0]) / (float)(index[1] - index[0])) * 100))); - + dialog.Update(i, wxString::Format(_("Extracting %s"), StrToWxStr(fst[i]->m_FullPath))); @@ -794,7 +794,7 @@ void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolde if (fst[i]->IsDirectory()) { snprintf(exportName, sizeof(exportName), "%s/%s/", _rExportFolder, fst[i]->m_FullPath); - DEBUG_LOG(DISCIO, "%s", exportName); + DEBUG_LOG(DISCIO, "%s", exportName); if (!File::Exists(exportName) && !File::CreateFullPath(exportName)) { @@ -879,7 +879,7 @@ void CISOProperties::OnExtractDataFromHeader(wxCommandEvent& event) wxString Directory = m_Treectrl->GetItemText(m_Treectrl->GetSelection()); std::size_t partitionNum = (std::size_t)wxAtoi(Directory.Mid(Directory.find_first_of("/"), 1)); Directory.Remove(0, Directory.find_first_of("/") +1); // Remove "Partition x/" - + if(WiiDisc.size() > partitionNum) { // Get the filesystem of the LAST partition @@ -895,7 +895,7 @@ void CISOProperties::OnExtractDataFromHeader(wxCommandEvent& event) { FS = pFileSystem; } - + bool ret = false; if (event.GetId() == IDM_EXTRACTAPPLOADER) { @@ -1159,7 +1159,7 @@ void CISOProperties::LaunchExternalEditor(const std::string& filename) bRefreshList = true; // Just in case - // Once we're done with the ini edit, give the focus back to Dolphin + // Once we're done with the ini edit, give the focus back to Dolphin SetFocus(); } @@ -1273,7 +1273,7 @@ void CISOProperties::PHackButtonClicked(wxCommandEvent& event) void CISOProperties::PatchButtonClicked(wxCommandEvent& event) { int selection = Patches->GetSelection(); - + switch (event.GetId()) { case ID_EDITPATCH: @@ -1352,7 +1352,7 @@ void CISOProperties::ActionReplayList_Save() void CISOProperties::ActionReplayButtonClicked(wxCommandEvent& event) { int selection = Cheats->GetSelection(); - + switch (event.GetId()) { case ID_EDITCHEAT: diff --git a/Source/Core/DolphinWX/Src/ISOProperties.h b/Source/Core/DolphinWX/Src/ISOProperties.h index f58c51dbee..d19e2f9dc4 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.h +++ b/Source/Core/DolphinWX/Src/ISOProperties.h @@ -192,7 +192,7 @@ private: size_t CreateDirectoryTree(wxTreeItemId& parent, std::vector fileInfos, - const size_t _FirstIndex, + const size_t _FirstIndex, const size_t _LastIndex); void ExportDir(const char* _rFullPath, const char* _rExportFilename, const int partitionNum = 0); diff --git a/Source/Core/DolphinWX/Src/InputConfigDiag.cpp b/Source/Core/DolphinWX/Src/InputConfigDiag.cpp index 03d51acbee..a8b7b8aaec 100644 --- a/Source/Core/DolphinWX/Src/InputConfigDiag.cpp +++ b/Source/Core/DolphinWX/Src/InputConfigDiag.cpp @@ -307,7 +307,7 @@ bool ControlDialog::Validate() void GamepadPage::SetDevice(wxCommandEvent&) { controller->default_device.FromString(WxStrToStr(device_cbox->GetValue())); - + // show user what it was validated as device_cbox->SetValue(StrToWxStr(controller->default_device.ToString())); @@ -322,7 +322,7 @@ void GamepadPage::SetDevice(wxCommandEvent&) void ControlDialog::SetDevice(wxCommandEvent&) { m_devq.FromString(WxStrToStr(device_cbox->GetValue())); - + // show user what it was validated as device_cbox->SetValue(StrToWxStr(m_devq.ToString())); @@ -647,7 +647,7 @@ void GamepadPage::SaveProfile(wxCommandEvent&) IniFile inifile; controller->SaveConfig(inifile.GetOrCreateSection("Profile")); inifile.Save(fname); - + m_config_dialog->UpdateProfileComboBox(); } else @@ -731,7 +731,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin { wxStaticText* const label = new wxStaticText(parent, -1, wxGetTranslation(StrToWxStr((*ci)->name))); - + ControlButton* const control_button = new ControlButton(parent, (*ci)->control_ref, 80); control_button->SetFont(m_SmallFont); @@ -827,7 +827,7 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin if (GROUP_TYPE_MIXED_TRIGGERS == group->type) width = 64+12+1; - + if (GROUP_TYPE_TRIGGERS != group->type) height /= 2; diff --git a/Source/Core/DolphinWX/Src/InputConfigDiag.h b/Source/Core/DolphinWX/Src/InputConfigDiag.h index 7d337ed0de..cf88046aeb 100644 --- a/Source/Core/DolphinWX/Src/InputConfigDiag.h +++ b/Source/Core/DolphinWX/Src/InputConfigDiag.h @@ -86,7 +86,7 @@ class ControlDialog : public wxDialog { public: ControlDialog(GamepadPage* const parent, InputPlugin& plugin, ControllerInterface::ControlReference* const ref); - + wxStaticBoxSizer* CreateControlChooser(GamepadPage* const parent); virtual bool Validate(); @@ -207,7 +207,7 @@ public: std::vector control_groups; protected: - + ControllerEmu* const controller; private: diff --git a/Source/Core/DolphinWX/Src/InputConfigDiagBitmaps.cpp b/Source/Core/DolphinWX/Src/InputConfigDiagBitmaps.cpp index 6aa37d78e9..fd132475ef 100644 --- a/Source/Core/DolphinWX/Src/InputConfigDiagBitmaps.cpp +++ b/Source/Core/DolphinWX/Src/InputConfigDiagBitmaps.cpp @@ -263,7 +263,7 @@ void InputConfigDialog::UpdateBitmaps(wxTimerEvent& WXUNUSED(event)) } delete[] bitmasks; - + } break; case GROUP_TYPE_TRIGGERS : diff --git a/Source/Core/DolphinWX/Src/LogConfigWindow.cpp b/Source/Core/DolphinWX/Src/LogConfigWindow.cpp index 1518acdf24..23faa656c8 100644 --- a/Source/Core/DolphinWX/Src/LogConfigWindow.cpp +++ b/Source/Core/DolphinWX/Src/LogConfigWindow.cpp @@ -101,13 +101,13 @@ void LogConfigWindow::LoadSettings() // Retrieve the verbosity value from the config ini file. int verbosity; ini.Get("Options", "Verbosity", &verbosity, 0); - + // Ensure the verbosity level is valid. if (verbosity < 1) verbosity = 1; if (verbosity > MAX_LOGLEVEL) verbosity = MAX_LOGLEVEL; - + // Actually set the logging verbosity. m_verbosity->SetSelection(verbosity - 1); @@ -136,10 +136,10 @@ void LogConfigWindow::LoadSettings() { bool log_enabled; ini.Get("Logs", m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), &log_enabled, true); - + if (log_enabled) enableAll = false; - + m_checks->Check(i, log_enabled); } } @@ -175,7 +175,7 @@ void LogConfigWindow::OnVerbosityChange(wxCommandEvent& event) { // Get the new verbosity int v = m_verbosity->GetSelection() + 1; - + // Set all log types to that verbosity level for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; i++) { diff --git a/Source/Core/DolphinWX/Src/LogWindow.cpp b/Source/Core/DolphinWX/Src/LogWindow.cpp index 421ca9ae6b..6579a8831e 100644 --- a/Source/Core/DolphinWX/Src/LogWindow.cpp +++ b/Source/Core/DolphinWX/Src/LogWindow.cpp @@ -51,7 +51,7 @@ void CLogWindow::CreateGUIControls() // Set up log listeners int verbosity; ini.Get("Options", "Verbosity", &verbosity, 0); - + // Ensure the verbosity level is valid if (verbosity < 1) verbosity = 1; @@ -305,23 +305,23 @@ void CLogWindow::UpdateLog() case ERROR_LEVEL: m_Log->SetDefaultStyle(wxTextAttr(*wxRED)); break; - + case WARNING_LEVEL: m_Log->SetDefaultStyle(wxTextAttr(wxColour(255, 255, 0))); // YELLOW break; - + case NOTICE_LEVEL: m_Log->SetDefaultStyle(wxTextAttr(*wxGREEN)); break; - + case INFO_LEVEL: m_Log->SetDefaultStyle(wxTextAttr(*wxCYAN)); break; - + case DEBUG_LEVEL: m_Log->SetDefaultStyle(wxTextAttr(*wxLIGHT_GREY)); break; - + default: m_Log->SetDefaultStyle(wxTextAttr(*wxWHITE)); break; diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp index 285fc2729e..d1fc31bc1a 100644 --- a/Source/Core/DolphinWX/Src/Main.cpp +++ b/Source/Core/DolphinWX/Src/Main.cpp @@ -112,11 +112,11 @@ bool DolphinApp::Initialize(int& c, wxChar **v) { #if defined HAVE_X11 && HAVE_X11 XInitThreads(); -#endif +#endif return wxApp::Initialize(c, v); } -// The `main program' equivalent that creates the main window and return the main frame +// The `main program' equivalent that creates the main window and return the main frame bool DolphinApp::OnInit() { @@ -190,7 +190,7 @@ bool DolphinApp::OnInit() if (parser.Parse() != 0) { return false; - } + } UseDebugger = parser.Found(wxT("debugger")); UseLogger = parser.Found(wxT("logger")); @@ -229,7 +229,7 @@ bool DolphinApp::OnInit() #ifndef _M_ARM // TODO: if First Boot - if (!cpu_info.bSSE2) + if (!cpu_info.bSSE2) { PanicAlertT("Hi,\n\nDolphin requires that your CPU has support for SSE2 extensions.\n" "Unfortunately your CPU does not support them, so Dolphin will not run.\n\n" @@ -321,7 +321,7 @@ bool DolphinApp::OnInit() int leftPos = GetSystemMetrics(SM_XVIRTUALSCREEN); int topPos = GetSystemMetrics(SM_YVIRTUALSCREEN); int width = GetSystemMetrics(SM_CXVIRTUALSCREEN); - int height = GetSystemMetrics(SM_CYVIRTUALSCREEN); + int height = GetSystemMetrics(SM_CYVIRTUALSCREEN); if ((leftPos + width) < (x + w) || leftPos > x || (topPos + height) < (y + h) || topPos > y) x = y = wxDefaultCoord; #elif defined __APPLE__ @@ -456,7 +456,7 @@ void DolphinApp::OnFatalException() // ------------ // Talk to GUI -void Host_SysMessage(const char *fmt, ...) +void Host_SysMessage(const char *fmt, ...) { va_list list; char msg[512]; diff --git a/Source/Core/DolphinWX/Src/MainAndroid.cpp b/Source/Core/DolphinWX/Src/MainAndroid.cpp index 5b8699bb0d..21bb84446b 100644 --- a/Source/Core/DolphinWX/Src/MainAndroid.cpp +++ b/Source/Core/DolphinWX/Src/MainAndroid.cpp @@ -94,8 +94,8 @@ void Host_GetRenderWindowSize(int& x, int& y, int& width, int& height) { x = SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowXPos; y = SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowYPos; - width = g_width; - height = g_height; + width = g_width; + height = g_height; } void Host_RequestRenderWindowSize(int width, int height) {} @@ -227,12 +227,12 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_UnPauseEmula { PowerPC::Start(); } -JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_PauseEmulation(JNIEnv *env, jobject obj) +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_PauseEmulation(JNIEnv *env, jobject obj) { PowerPC::Pause(); } -JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StopEmulation(JNIEnv *env, jobject obj) +JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_StopEmulation(JNIEnv *env, jobject obj) { Core::Stop(); updateMainFrameEvent.Set(); // Kick the waiting event @@ -289,12 +289,12 @@ JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetConfig const char *Key = env->GetStringUTFChars(jKey, NULL); const char *Value = env->GetStringUTFChars(jValue, NULL); const char *Default = env->GetStringUTFChars(jDefault, NULL); - + ini.Load(File::GetUserPath(D_CONFIG_IDX) + std::string(File)); std::string value; - + ini.Get(Key, Value, &value, Default); - + env->ReleaseStringUTFChars(jFile, File); env->ReleaseStringUTFChars(jKey, Key); env->ReleaseStringUTFChars(jValue, Value); @@ -309,7 +309,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetConfig(JN const char *Key = env->GetStringUTFChars(jKey, NULL); const char *Value = env->GetStringUTFChars(jValue, NULL); const char *Default = env->GetStringUTFChars(jDefault, NULL); - + ini.Load(File::GetUserPath(D_CONFIG_IDX) + std::string(File)); ini.Set(Key, Value, Default); diff --git a/Source/Core/DolphinWX/Src/MainNoGUI.cpp b/Source/Core/DolphinWX/Src/MainNoGUI.cpp index ad1ac8120d..c9e61b46f7 100644 --- a/Source/Core/DolphinWX/Src/MainNoGUI.cpp +++ b/Source/Core/DolphinWX/Src/MainNoGUI.cpp @@ -260,7 +260,7 @@ int main(int argc, char* argv[]) { #ifdef __APPLE__ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSEvent *event = [[NSEvent alloc] init]; + NSEvent *event = [[NSEvent alloc] init]; [NSApplication sharedApplication]; [NSApp activateIgnoringOtherApps: YES]; [NSApp finishLaunching]; @@ -313,7 +313,7 @@ int main(int argc, char* argv[]) event = [NSApp nextEventMatchingMask: NSAnyEventMask untilDate: [NSDate distantFuture] inMode: NSDefaultRunLoopMode dequeue: YES]; - + if ([event type] == NSKeyDown && [event modifierFlags] & NSCommandKeyMask && [[event characters] UTF8String][0] == 'q') @@ -321,10 +321,10 @@ int main(int argc, char* argv[]) Core::Stop(); break; } - + if ([event type] != NSKeyDown) [NSApp sendEvent: event]; - } + } [event release]; [pool release]; diff --git a/Source/Core/DolphinWX/Src/MemcardManager.cpp b/Source/Core/DolphinWX/Src/MemcardManager.cpp index 68f56c014c..9b345c3469 100644 --- a/Source/Core/DolphinWX/Src/MemcardManager.cpp +++ b/Source/Core/DolphinWX/Src/MemcardManager.cpp @@ -176,7 +176,7 @@ void CMemcardManager::CreateGUIControls() m_ConvertToGci = new wxButton(this, ID_CONVERTTOGCI, _("Convert to GCI")); wxStaticBoxSizer *sMemcard[2]; - + for (int slot = SLOT_A; slot <= SLOT_B; slot++) { m_CopyFrom[slot] = new wxButton(this, ID_COPYFROM_A + slot, @@ -203,10 +203,10 @@ void CMemcardManager::CreateGUIControls() m_MemcardPath[slot] = new wxFilePickerCtrl(this, ID_MEMCARDPATH_A + slot, StrToWxStr(File::GetUserPath(D_GCUSER_IDX)), _("Choose a memory card:"), _("Gamecube Memory Cards (*.raw,*.gcp)") + wxString(wxT("|*.raw;*.gcp")), wxDefaultPosition, wxDefaultSize, wxFLP_USE_TEXTCTRL|wxFLP_OPEN); - + m_MemcardList[slot] = new CMemcardListCtrl(this, ID_MEMCARDLIST_A + slot, wxDefaultPosition, wxSize(350,400), wxLC_REPORT | wxSUNKEN_BORDER | wxLC_ALIGN_LEFT | wxLC_SINGLE_SEL, mcmSettings); - + m_MemcardList[slot]->AssignImageList(new wxImageList(96,32),wxIMAGE_LIST_SMALL); sMemcard[slot] = new wxStaticBoxSizer(wxVERTICAL, this, _("Memory Card") + wxString::Format(wxT(" %c"), 'A' + slot)); @@ -499,7 +499,7 @@ void CMemcardManager::CopyDeleteClick(wxCommandEvent& event) { PanicAlert(E_SAVEFAILED); } - break; + break; case ID_CONVERTTOGCI: fileName2 = "convert"; case ID_SAVEIMPORT_A: @@ -703,7 +703,7 @@ bool CMemcardManager::ReloadMemcard(const char *fileName, int card) auto const string_decoder = memoryCard[card]->IsAsciiEncoding() ? CP1252ToUTF8 : SHIFTJISToUTF8; - + wxTitle = StrToWxStr(string_decoder(title)); wxComment = StrToWxStr(string_decoder(comment)); @@ -711,10 +711,10 @@ bool CMemcardManager::ReloadMemcard(const char *fileName, int card) m_MemcardList[card]->SetItem(index, COLUMN_COMMENT, wxComment); blocks = memoryCard[card]->DEntry_BlockCount(fileIndex); - + if (blocks == 0xFFFF) blocks = 0; - + wxBlock.Printf(wxT("%10d"), blocks); m_MemcardList[card]->SetItem(index,COLUMN_BLOCKS, wxBlock); firstblock = memoryCard[card]->DEntry_FirstBlock(fileIndex); @@ -777,7 +777,7 @@ void CMemcardManager::CMemcardListCtrl::OnRightClick(wxMouseEvent& event) long item = HitTest(event.GetPosition(), flags); wxMenu* popupMenu = new wxMenu; - if (item != wxNOT_FOUND) + if (item != wxNOT_FOUND) { if (GetItemState(item, wxLIST_STATE_SELECTED) != wxLIST_STATE_SELECTED) { @@ -791,7 +791,7 @@ void CMemcardManager::CMemcardListCtrl::OnRightClick(wxMouseEvent& event) popupMenu->Append(ID_SAVEIMPORT_A + slot, _("Import Save")); popupMenu->Append(ID_SAVEEXPORT_A + slot, _("Export Save")); popupMenu->Append(ID_EXPORTALL_A + slot, _("Export all saves")); - + popupMenu->FindItem(ID_COPYFROM_A + slot)->Enable(__mcmSettings.twoCardsLoaded); popupMenu->AppendSeparator(); @@ -805,7 +805,7 @@ void CMemcardManager::CMemcardListCtrl::OnRightClick(wxMouseEvent& event) popupMenu->FindItem(ID_PREVPAGE_A + slot)->Enable(prevPage && __mcmSettings.usePages); popupMenu->FindItem(ID_NEXTPAGE_A + slot)->Enable(nextPage && __mcmSettings.usePages); popupMenu->FindItem(ID_USEPAGES)->Check(__mcmSettings.usePages); - + popupMenu->AppendSeparator(); // popupMenu->AppendCheckItem(COLUMN_BANNER, _("Show save banner")); diff --git a/Source/Core/DolphinWX/Src/MemcardManager.h b/Source/Core/DolphinWX/Src/MemcardManager.h index 9f2f8f0d9b..4310fbcfcf 100644 --- a/Source/Core/DolphinWX/Src/MemcardManager.h +++ b/Source/Core/DolphinWX/Src/MemcardManager.h @@ -103,7 +103,7 @@ class CMemcardManager : public wxDialog COLUMN_COMMENTSADDRESS, NUMBER_OF_COLUMN }; - + GCMemcard *memoryCard[2]; void CreateGUIControls(); @@ -146,9 +146,9 @@ class CMemcardManager : public wxDialog bool prevPage, nextPage; private: - void OnRightClick(wxMouseEvent& event); + void OnRightClick(wxMouseEvent& event); }; - + CMemcardListCtrl *m_MemcardList[2]; }; diff --git a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp index 30c0639ab2..10cebc904e 100644 --- a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp +++ b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.cpp @@ -40,11 +40,11 @@ void CWiiSaveCrypted::ExportAllSaves() std::vector titles; u32 pathMask = 0x00010000; for (int i = 0; i < 8; ++i) - { + { File::FSTEntry FST_Temp; std::string folder = StringFromFormat("%s/%08x/", titleFolder.c_str(), pathMask | i); File::ScanDirectoryTree(folder, FST_Temp); - + for (auto& entry : FST_Temp.children) { if (entry.isDirectory) @@ -61,7 +61,7 @@ void CWiiSaveCrypted::ExportAllSaves() } } } - } + } SuccessAlertT("Found %x save files", (unsigned int) titles.size()); for (auto& title : titles) { @@ -96,7 +96,7 @@ CWiiSaveCrypted::CWiiSaveCrypted(const char* FileName, u64 TitleID) else { aes_setkey_enc(&m_AES_ctx, SDKey, 128); - + if (getPaths(true)) { b_valid = true; @@ -133,7 +133,7 @@ void CWiiSaveCrypted::ReadHDR() } fpData_bin.Close(); - aes_crypt_cbc(&m_AES_ctx, AES_DECRYPT, HEADER_SZ, SD_IV, (const u8*)&_encryptedHeader, (u8*)&_header); + aes_crypt_cbc(&m_AES_ctx, AES_DECRYPT, HEADER_SZ, SD_IV, (const u8*)&_encryptedHeader, (u8*)&_header); u32 bannerSize = Common::swap32(_header.hdr.BannerSize); if ((bannerSize < FULL_BNR_MIN) || (bannerSize > FULL_BNR_MAX) || (((bannerSize - BNR_SZ) % ICON_SZ) != 0)) @@ -144,7 +144,7 @@ void CWiiSaveCrypted::ReadHDR() } m_TitleID = Common::swap64(_header.hdr.SaveGameTitle); - + u8 md5_file[16], md5_calc[16]; memcpy(md5_file, _header.hdr.Md5, 0x10); @@ -155,11 +155,11 @@ void CWiiSaveCrypted::ReadHDR() PanicAlertT("MD5 mismatch\n %016llx%016llx != %016llx%016llx", Common::swap64(md5_file),Common::swap64(md5_file+8), Common::swap64(md5_calc), Common::swap64(md5_calc+8)); b_valid= false; } - + if (!getPaths()) { b_valid = false; - return; + return; } std::string BannerFilePath = WiiTitlePath + "banner.bin"; if (!File::Exists(BannerFilePath) || AskYesNoT("%s already exists, overwrite?", BannerFilePath.c_str())) @@ -198,7 +198,7 @@ void CWiiSaveCrypted::WriteHDR() memcpy(_header.hdr.Md5, md5_calc, 0x10); aes_crypt_cbc(&m_AES_ctx, AES_ENCRYPT, HEADER_SZ, SD_IV, (const u8*)&_header, (u8*)&_encryptedHeader); - + File::IOFile fpData_bin(encryptedSavePath, "wb"); if (!fpData_bin.WriteBytes(&_encryptedHeader, HEADER_SZ)) { @@ -212,7 +212,7 @@ void CWiiSaveCrypted::WriteHDR() void CWiiSaveCrypted::ReadBKHDR() { if (!b_valid) return; - + File::IOFile fpData_bin(encryptedSavePath, "rb"); if (!fpData_bin) { @@ -228,7 +228,7 @@ void CWiiSaveCrypted::ReadBKHDR() return; } fpData_bin.Close(); - + if (bkhdr.size != Common::swap32(BK_LISTED_SZ) || bkhdr.magic != Common::swap32(BK_HDR_MAGIC)) { @@ -236,11 +236,11 @@ void CWiiSaveCrypted::ReadBKHDR() b_valid = false; return; } - + _numberOfFiles = Common::swap32(bkhdr.numberOfFiles); _sizeOfFiles = Common::swap32(bkhdr.sizeOfFiles); _totalSize = Common::swap32(bkhdr.totalSize); - + if (_sizeOfFiles + FULL_CERT_SZ != _totalSize) WARN_LOG(CONSOLE, "Size(%x) + cert(%x) does not equal totalsize(%x)", _sizeOfFiles, FULL_CERT_SZ, _totalSize); if (m_TitleID != Common::swap64(bkhdr.SaveGameTitle)) @@ -252,7 +252,7 @@ void CWiiSaveCrypted::WriteBKHDR() if (!b_valid) return; _numberOfFiles = 0; _sizeOfFiles = 0; - + ScanForFiles(WiiTitlePath, FilesList, &_numberOfFiles, &_sizeOfFiles); memset(&bkhdr, 0, BK_SZ); bkhdr.size = Common::swap32(BK_LISTED_SZ); @@ -293,13 +293,13 @@ void CWiiSaveCrypted::ImportWiiSaveFiles() memset(&_tmpFileHDR, 0, FILE_HDR_SZ); memset(IV, 0, 0x10); u32 _fileSize = 0; - + if (!fpData_bin.ReadBytes(&_tmpFileHDR, FILE_HDR_SZ)) { PanicAlertT("Failed to read header for file %d", i); b_valid = false; } - + if (Common::swap32(_tmpFileHDR.magic) != FILE_HDR_MAGIC) { PanicAlertT("Bad File Header"); @@ -315,7 +315,7 @@ void CWiiSaveCrypted::ImportWiiSaveFiles() } std::string fullFilePath = WiiTitlePath + fileName; - File::CreateFullPath(fullFilePath); + File::CreateFullPath(fullFilePath); if (_tmpFileHDR.type == 1) { _fileSize = Common::swap32(_tmpFileHDR.size); @@ -329,20 +329,20 @@ void CWiiSaveCrypted::ImportWiiSaveFiles() b_valid = false; break; } - - + + memcpy(IV, _tmpFileHDR.IV, 0x10); - aes_crypt_cbc(&m_AES_ctx, AES_DECRYPT, RoundedFileSize, IV, (const u8*)&_encryptedData[0], &_data[0]); - + aes_crypt_cbc(&m_AES_ctx, AES_DECRYPT, RoundedFileSize, IV, (const u8*)&_encryptedData[0], &_data[0]); + if (!File::Exists(fullFilePath) || AskYesNoT("%s already exists, overwrite?", fullFilePath.c_str())) { INFO_LOG(CONSOLE, "Creating file %s", fullFilePath.c_str()); - + File::IOFile fpRawSaveFile(fullFilePath, "wb"); fpRawSaveFile.WriteBytes(&_data[0], _fileSize); } } - } + } } } @@ -355,18 +355,18 @@ void CWiiSaveCrypted::ExportWiiSaveFiles() FileHDR tmpFileHDR; std::string __name, __ext; memset(&tmpFileHDR, 0, FILE_HDR_SZ); - + u32 _fileSize = 0; if (File::IsDirectory(FilesList[i])) { - tmpFileHDR.type = 2; + tmpFileHDR.type = 2; } else { _fileSize = File::GetSize(FilesList[i]); tmpFileHDR.type = 1; } - + u32 _roundedfileSize = ROUND_UP(_fileSize, BLOCK_SZ); tmpFileHDR.magic = Common::swap32(FILE_HDR_MAGIC); tmpFileHDR.size = Common::swap32(_fileSize); @@ -374,7 +374,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles() __name = FilesList[i].substr(WiiTitlePath.length()+1); - + for (Common::replace_v::const_iterator iter = replacements.begin(); iter != replacements.end(); ++iter) { for (size_t j = 0; (j = __name.find(iter->second, j)) != __name.npos; ++j) @@ -382,7 +382,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles() __name.replace(j, iter->second.length(), 1, iter->first); } } - + if (__name.length() > 0x44) { PanicAlertT("%s is too long for the filename, max chars is 45", __name.c_str()); @@ -390,7 +390,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles() return; } strncpy((char *)tmpFileHDR.name, __name.c_str(), __name.length()); - + { File::IOFile fpData_bin(encryptedSavePath, "ab"); fpData_bin.WriteBytes(&tmpFileHDR, FILE_HDR_SZ); @@ -410,7 +410,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles() PanicAlertT("%s failed to open", FilesList[i].c_str()); b_valid = false; } - + std::vector _data,_encryptedData; _data.reserve(_roundedfileSize); _encryptedData.reserve(_roundedfileSize); @@ -422,7 +422,7 @@ void CWiiSaveCrypted::ExportWiiSaveFiles() } aes_crypt_cbc(&m_AES_ctx, AES_ENCRYPT, _roundedfileSize, tmpFileHDR.IV, (const u8*)&_data[0], &_encryptedData[0]); - + File::IOFile fpData_bin(encryptedSavePath, "ab"); if (!fpData_bin.WriteBytes(&_encryptedData[0], _roundedfileSize)) PanicAlertT("Failed to write data to file: %s", encryptedSavePath.c_str()); @@ -445,7 +445,7 @@ void CWiiSaveCrypted::do_sig() char name[64]; u8 *data; u32 data_size; - + u32 NG_key_id = 0x6AAB8C59; u8 NG_priv[30] = { 0, 0xAB, 0xEE, 0xC1, 0xDD, 0xB4, 0xA6, 0x16, 0x6B, 0x70, 0xFD, 0x7E, 0x56, 0x67, 0x70, @@ -503,7 +503,7 @@ void CWiiSaveCrypted::do_sig() } generate_ecdsa(sig, sig + 30, ap_priv, hash); *(u32*)(sig + 60) = Common::swap32(0x2f536969); - + fpData_bin.WriteArray(sig, sizeof(sig)); fpData_bin.WriteArray(ng_cert, sizeof(ng_cert)); fpData_bin.WriteArray(ap_cert, sizeof(ap_cert)); @@ -545,21 +545,21 @@ bool CWiiSaveCrypted::getPaths(bool forExport) PanicAlertT("No save folder found for title %s", GameID); return false; } - + if(!File::Exists(WiiTitlePath + "banner.bin")) { b_valid = false; PanicAlertT("No banner file found for title %s", GameID); return false; } - if (encryptedSavePath.length() == 0) + if (encryptedSavePath.length() == 0) encryptedSavePath = "."; // If no path was passed, use current dir encryptedSavePath += StringFromFormat("/private/wii/title/%s/data.bin", GameID); File::CreateFullPath(encryptedSavePath); } else { - File::CreateFullPath(WiiTitlePath); + File::CreateFullPath(WiiTitlePath); if (!AskYesNoT("Warning! it is advised to backup all files in the folder:\n%s\nDo you wish to continue?", WiiTitlePath.c_str())) return false; } diff --git a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h index 6ec4194f88..68afad43cf 100644 --- a/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h +++ b/Source/Core/DolphinWX/Src/MemoryCards/WiiSaveCrypted.h @@ -44,7 +44,7 @@ private: std::string WiiTitlePath; u8 IV[0x10]; - + u32 //_bannerSize, _numberOfFiles, _sizeOfFiles, diff --git a/Source/Core/DolphinWX/Src/NetWindow.cpp b/Source/Core/DolphinWX/Src/NetWindow.cpp index 682dedb7b0..79ec2b59a5 100644 --- a/Source/Core/DolphinWX/Src/NetWindow.cpp +++ b/Source/Core/DolphinWX/Src/NetWindow.cpp @@ -32,7 +32,7 @@ std::string BuildGameName(const GameListItem& game) { // Lang needs to be consistent auto const lang = 0; - + std::string name(game.GetBannerName(lang)); if (name.empty()) name = game.GetVolumeName(lang); @@ -62,7 +62,7 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl* // top row wxStaticText* const nick_lbl = new wxStaticText(panel, wxID_ANY, _("Nickname :"), wxDefaultPosition, wxDefaultSize); - + std::string nickname; netplay_section.Get("Nickname", &nickname, "Player"); m_nickname_text = new wxTextCtrl(panel, wxID_ANY, StrToWxStr(nickname)); @@ -84,17 +84,17 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl* { wxStaticText* const ip_lbl = new wxStaticText(connect_tab, wxID_ANY, _("Address :"), wxDefaultPosition, wxDefaultSize); - + std::string address; netplay_section.Get("Address", &address, "localhost"); m_connect_ip_text = new wxTextCtrl(connect_tab, wxID_ANY, StrToWxStr(address)); wxStaticText* const port_lbl = new wxStaticText(connect_tab, wxID_ANY, _("Port :"), wxDefaultPosition, wxDefaultSize); - + // string? w/e std::string port; - netplay_section.Get("ConnectPort", &port, "2626"); + netplay_section.Get("ConnectPort", &port, "2626"); m_connect_port_text = new wxTextCtrl(connect_tab, wxID_ANY, StrToWxStr(port)); wxButton* const connect_btn = new wxButton(connect_tab, wxID_ANY, _("Connect")); @@ -136,10 +136,10 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl* { wxStaticText* const port_lbl = new wxStaticText(host_tab, wxID_ANY, _("Port :"), wxDefaultPosition, wxDefaultSize); - + // string? w/e std::string port; - netplay_section.Get("HostPort", &port, "2626"); + netplay_section.Get("HostPort", &port, "2626"); m_host_port_text = new wxTextCtrl(host_tab, wxID_ANY, StrToWxStr(port)); wxButton* const host_btn = new wxButton(host_tab, wxID_ANY, _("Host")); @@ -147,7 +147,7 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl* m_game_lbox = new wxListBox(host_tab, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, nullptr, wxLB_SORT); m_game_lbox->Bind(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, &NetPlaySetupDiag::OnHost, this); - + FillWithGameNames(m_game_lbox, *game_list); wxBoxSizer* const top_szr = new wxBoxSizer(wxHORIZONTAL); @@ -294,7 +294,7 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game m_game_btn = new wxButton(panel, wxID_ANY, StrToWxStr(m_selected_game).Prepend(_(" Game : ")), wxDefaultPosition, wxDefaultSize, wxBU_LEFT); - + if (is_hosting) m_game_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &NetPlayDiag::OnChangeGame, this); else @@ -422,7 +422,7 @@ std::string NetPlayDiag::FindGame() for (u32 i = 0 ; auto game = m_game_list->GetISO(i); ++i) if (m_selected_game == BuildGameName(*game)) return game->GetFileName(); - + PanicAlertT("Game not found!"); return ""; } diff --git a/Source/Core/DolphinWX/Src/PatchAddEdit.cpp b/Source/Core/DolphinWX/Src/PatchAddEdit.cpp index e730b21afe..9850d2bc32 100644 --- a/Source/Core/DolphinWX/Src/PatchAddEdit.cpp +++ b/Source/Core/DolphinWX/Src/PatchAddEdit.cpp @@ -74,7 +74,7 @@ void CPatchAddEdit::CreateGUIControls(int _selection) wxGridBagSizer* sgEntry = new wxGridBagSizer(0, 0); sgEntry->Add(EditPatchType, wxGBPosition(0, 0), wxGBSpan(1, 2), wxEXPAND|wxALL, 5); sgEntry->Add(EditPatchOffsetText, wxGBPosition(1, 0), wxGBSpan(1, 1), wxALIGN_CENTER_VERTICAL|wxALL, 5); - sgEntry->Add(EditPatchOffset, wxGBPosition(1, 1), wxGBSpan(1, 1), wxEXPAND|wxALL, 5); + sgEntry->Add(EditPatchOffset, wxGBPosition(1, 1), wxGBSpan(1, 1), wxEXPAND|wxALL, 5); sgEntry->Add(EditPatchValueText, wxGBPosition(2, 0), wxGBSpan(1, 1), wxALIGN_CENTER_VERTICAL|wxALL, 5); sgEntry->Add(EditPatchValue, wxGBPosition(2, 1), wxGBSpan(1, 1), wxEXPAND|wxALL, 5); sgEntry->Add(EntrySelection, wxGBPosition(0, 2), wxGBSpan(3, 1), wxEXPAND|wxALL, 5); @@ -95,7 +95,7 @@ void CPatchAddEdit::ChangeEntry(wxSpinEvent& event) { if (!UpdateTempEntryData(itCurEntry)) return; - + itCurEntry = tempEntries.end() - event.GetPosition() - 1; currentItem = (int)tempEntries.size() - event.GetPosition(); UpdateEntryCtrls(*itCurEntry); @@ -147,9 +147,9 @@ void CPatchAddEdit::AddRemoveEntry(wxCommandEvent& event) } break; case ID_ENTRY_REMOVE: - { + { itCurEntry = tempEntries.erase(itCurEntry); - + if (itCurEntry != tempEntries.begin()) { --itCurEntry; @@ -159,8 +159,8 @@ void CPatchAddEdit::AddRemoveEntry(wxCommandEvent& event) { EntrySelection->SetValue(EntrySelection->GetValue() - 1); } - - EntrySelection->SetRange(EntrySelection->GetMin(), EntrySelection->GetMax() - 1); + + EntrySelection->SetRange(EntrySelection->GetMin(), EntrySelection->GetMax() - 1); UpdateEntryCtrls(*itCurEntry); if ((int)tempEntries.size() <= 1) @@ -193,7 +193,7 @@ bool CPatchAddEdit::UpdateTempEntryData(std::vector::it else parsed_ok = false; - PatchEngine::PatchType tempType = + PatchEngine::PatchType tempType = (*iterEntry).type = (PatchEngine::PatchType)EditPatchType->GetSelection(); if (EditPatchValue->GetValue().ToULong(&value, 16)) diff --git a/Source/Core/DolphinWX/Src/TASInputDlg.cpp b/Source/Core/DolphinWX/Src/TASInputDlg.cpp index 2bae92287b..8952725463 100644 --- a/Source/Core/DolphinWX/Src/TASInputDlg.cpp +++ b/Source/Core/DolphinWX/Src/TASInputDlg.cpp @@ -32,7 +32,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, A_turbo = B_turbo = X_turbo = Y_turbo = Z_turbo = L_turbo = R_turbo = START_turbo = DL_turbo = DR_turbo = DD_turbo = DU_turbo = false; xaxis = yaxis = c_xaxis = c_yaxis = 128; A_cont = B_cont = X_cont = Y_cont = Z_cont = L_cont = L_button_cont = R_cont = R_button_cont = START_cont = DL_cont = DR_cont = DD_cont = DU_cont = mstickx = msticky = cstickx = csticky = false; - + wxBoxSizer* const top_box = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* const bottom_box = new wxBoxSizer(wxHORIZONTAL); wxStaticBoxSizer* const main_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Main Stick")); @@ -66,7 +66,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, wxBoxSizer* const c_xslider_box = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer* const c_yslider_box = new wxBoxSizer(wxVERTICAL); wxBoxSizer* const c_stick_box = new wxBoxSizer(wxVERTICAL); - + static_bitmap_c = new wxStaticBitmap(this, ID_C_STICK, TASInputDlg::CreateStickBitmap(128,128), wxDefaultPosition, wxDefaultSize); static_bitmap_c->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::OnMouseDownL, this); static_bitmap_c->Bind(wxEVT_MOTION, &TASInputDlg::OnMouseDownL, this); @@ -90,7 +90,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, c_box->Add(c_yslider_box); wxStaticBoxSizer* const shoulder_box = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Shoulder Buttons")); - + wx_l_s = new wxSlider(this, ID_L_SLIDER, 0, 0, 255, wxDefaultPosition, wxDefaultSize, wxSL_VERTICAL | wxSL_INVERSE); wx_l_s->SetMinSize(wxSize(-1,100)); wx_l_t = new wxTextCtrl(this, ID_L_TEXT, wxT("0"), wxDefaultPosition, wxSize(40, 20)); @@ -99,7 +99,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, wx_r_s->SetMinSize(wxSize(-1,100)); wx_r_t = new wxTextCtrl(this, ID_R_TEXT, wxT("0"), wxDefaultPosition, wxSize(40, 20)); wx_r_t->SetMaxLength(3); - + shoulder_box->Add(wx_l_s, 0, wxALIGN_CENTER_VERTICAL); shoulder_box->Add(wx_l_t, 0, wxALIGN_CENTER_VERTICAL); shoulder_box->Add(wx_r_s, 0, wxALIGN_CENTER_VERTICAL); @@ -107,7 +107,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, wxStaticBoxSizer* const buttons_box = new wxStaticBoxSizer(wxVERTICAL, this, _("Buttons")); wxGridSizer* const buttons_grid = new wxGridSizer(4); - + wx_a_button = new wxCheckBox(this,ID_A,_T("A"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr); wx_a_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this); wx_a_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this); @@ -132,7 +132,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, wx_start_button = new wxCheckBox(this,ID_START,_T("Start"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr); wx_start_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this); wx_start_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this); - + buttons_grid->Add(wx_a_button,false); buttons_grid->Add(wx_b_button,false); buttons_grid->Add(wx_x_button,false); @@ -144,7 +144,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, buttons_grid->AddSpacer(5); wxGridSizer* const buttons_dpad = new wxGridSizer(3); - + wx_up_button = new wxCheckBox(this,ID_UP,_T("Up"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr); wx_up_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this); wx_up_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this); @@ -157,7 +157,7 @@ TASInputDlg::TASInputDlg(wxWindow *parent, wxWindowID id, const wxString &title, wx_left_button = new wxCheckBox(this,ID_LEFT,_T("Left"),wxDefaultPosition,wxDefaultSize,0,wxDefaultValidator,wxCheckBoxNameStr); wx_left_button->Bind(wxEVT_RIGHT_DOWN, &TASInputDlg::SetTurbo, this); wx_left_button->Bind(wxEVT_LEFT_DOWN, &TASInputDlg::SetTurboFalse, this); - + buttons_dpad->AddSpacer(20); buttons_dpad->Add(wx_up_button,false); buttons_dpad->AddSpacer(20); @@ -192,21 +192,21 @@ void TASInputDlg::ResetValues() { mainX = mainY = cX = cY = 128; lTrig = rTrig = 0; - + wx_mainX_s->SetValue(128); wx_mainY_s->SetValue(128); wx_cX_s->SetValue(128); wx_cY_s->SetValue(128); wx_l_s->SetValue(0); wx_r_s->SetValue(0); - + wx_mainX_t->SetValue(wxT("128")); wx_mainY_t->SetValue(wxT("128")); wx_cX_t->SetValue(wxT("128")); wx_cY_t->SetValue(wxT("128")); wx_l_t->SetValue(wxT("0")); wx_r_t->SetValue(wxT("0")); - + wx_up_button->SetValue(false); wx_down_button->SetValue(false); wx_left_button->SetValue(false); @@ -229,7 +229,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) mstickx = true; wx_mainX_t->SetValue(wxString::Format(wxT("%i"), mainX)); } - + else if(mstickx) { mstickx = false; @@ -308,7 +308,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) wx_left_button->SetValue(false); DL_cont = false; } - + if(((PadStatus->button & PAD_BUTTON_RIGHT) != 0)) { wx_right_button->SetValue(true); @@ -388,7 +388,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) wx_l_t->SetValue(wxT("0")); L_cont = false; } - + if(((PadStatus->triggerRight) != 0)) { if (PadStatus->triggerRight == 255) @@ -424,7 +424,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) wx_z_button->SetValue(false); Z_cont = false; } - + if(((PadStatus->button & PAD_BUTTON_START) != 0)) { wx_start_button->SetValue(true); @@ -454,7 +454,7 @@ void TASInputDlg::GetValues(SPADStatus *PadStatus, int controllerID) { if (!IsShown()) return; - + //TODO:: Make this instant not when polled. GetKeyBoardInput(PadStatus); SetLandRTriggers(); @@ -485,7 +485,7 @@ void TASInputDlg::GetValues(SPADStatus *PadStatus, int controllerID) PadStatus->button |= PAD_BUTTON_RIGHT; else PadStatus->button &= ~PAD_BUTTON_RIGHT; - + if(wx_a_button->IsChecked()) { PadStatus->button |= PAD_BUTTON_A; @@ -537,7 +537,7 @@ void TASInputDlg::GetValues(SPADStatus *PadStatus, int controllerID) PadStatus->button |= PAD_TRIGGER_L; else PadStatus->button &= ~PAD_TRIGGER_L; - + ButtonTurbo(); } @@ -594,12 +594,12 @@ void TASInputDlg::UpdateFromSliders(wxCommandEvent& event) int value = ((wxSlider *) event.GetEventObject())->GetValue(); *v = (u8) value; text->SetValue(wxString::Format(wxT("%i"), value)); - + if(update == 1) { static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis, yaxis)); } - + if(update == 2) { static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis, c_yaxis)); @@ -612,7 +612,7 @@ void TASInputDlg::UpdateFromText(wxCommandEvent& event) u8 *v; update = 0; update_axis = 0; - + switch(event.GetId()) { case ID_MAIN_X_TEXT: @@ -639,7 +639,7 @@ void TASInputDlg::UpdateFromText(wxCommandEvent& event) case ID_C_Y_TEXT: slider = wx_cY_s; v = &cY; - update = 2; + update = 2; update_axis = 2; break; @@ -662,7 +662,7 @@ void TASInputDlg::UpdateFromText(wxCommandEvent& event) { *v = (u8) (value > 255 ? 255 : value); slider->SetValue(*v); - + if(update == 1) { if(update_axis == 1) @@ -670,13 +670,13 @@ void TASInputDlg::UpdateFromText(wxCommandEvent& event) xaxis = *v; static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis,yaxis)); } - + if(update_axis == 2) { yaxis =256 - *v; static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis,yaxis)); } - + } if(update == 2) @@ -686,13 +686,13 @@ void TASInputDlg::UpdateFromText(wxCommandEvent& event) c_xaxis = *v; static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis,c_yaxis)); } - + if(update_axis == 2) { c_yaxis =256- *v; static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis,c_yaxis)); } - + } } } @@ -708,7 +708,7 @@ void TASInputDlg::OnCloseWindow(wxCloseEvent& event) } bool TASInputDlg::TASHasFocus() -{ +{ //allows numbers to be used as hotkeys if(TextBoxHasFocus()) return false; @@ -782,10 +782,10 @@ void TASInputDlg::OnMouseUpR(wxMouseEvent& event) *y = 128; sbitmap->SetBitmap(TASInputDlg::CreateStickBitmap(*x,*y)); - + textX->SetValue(wxString::Format(wxT("%i"), *x)); textY->SetValue(wxString::Format(wxT("%i"), 256 - *y)); - + sliderX->SetValue(*x); sliderY->SetValue(256 - *y); event.Skip(true); @@ -828,21 +828,21 @@ void TASInputDlg::OnMouseDownL(wxMouseEvent& event) return; } - wxPoint ptM(event.GetPosition()); + wxPoint ptM(event.GetPosition()); *x = ptM.x *2; *y = ptM.y * 2; if(*x > 255) *x = 255; - + if(*y > 255) *y = 255; sbitmap->SetBitmap(TASInputDlg::CreateStickBitmap(*x,*y)); - + textX->SetValue(wxString::Format(wxT("%i"), *x)); textY->SetValue(wxString::Format(wxT("%i"), 256 - *y)); - + sliderX->SetValue(*x); sliderY->SetValue(256 - *y); event.Skip(true); @@ -915,7 +915,7 @@ void TASInputDlg::SetTurbo(wxMouseEvent& event) { case ID_A: placeholder = wx_a_button; - + if(A_turbo) A_turbo = false; else diff --git a/Source/Core/DolphinWX/Src/UDPConfigDiag.cpp b/Source/Core/DolphinWX/Src/UDPConfigDiag.cpp index 9619f38dee..3504ae5c85 100644 --- a/Source/Core/DolphinWX/Src/UDPConfigDiag.cpp +++ b/Source/Core/DolphinWX/Src/UDPConfigDiag.cpp @@ -45,7 +45,7 @@ UDPConfigDiag::UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp) : point->SetValue(wrp->updIR); nun->SetValue(wrp->updNun); nunaccel->SetValue(wrp->updNunAccel); - + sizer1->Add(enable, 1, wxALL | wxEXPAND, 5); sizer1->Add(port_sizer, 1, wxBOTTOM | wxLEFT| wxRIGHT | wxEXPAND, 5); diff --git a/Source/Core/DolphinWX/Src/VideoConfigDiag.cpp b/Source/Core/DolphinWX/Src/VideoConfigDiag.cpp index 7f6f1e0080..dc91670f4b 100644 --- a/Source/Core/DolphinWX/Src/VideoConfigDiag.cpp +++ b/Source/Core/DolphinWX/Src/VideoConfigDiag.cpp @@ -101,7 +101,7 @@ wxString wireframe_desc = wxTRANSLATE("Render the scene as a wireframe.\n\nIf un wxString disable_fog_desc = wxTRANSLATE("Makes distant objects more visible by removing fog, thus increasing the overall detail.\nDisabling fog will break some games which rely on proper fog emulation.\n\nIf unsure, leave this unchecked."); wxString disable_dstalpha_desc = wxTRANSLATE("Disables emulation of a hardware feature called destination alpha, which is used in many games for various graphical effects.\n\nIf unsure, leave this unchecked."); wxString show_fps_desc = wxTRANSLATE("Show the number of frames rendered per second as a measure of emulation speed.\n\nIf unsure, leave this unchecked."); -wxString log_fps_to_file_desc = wxTRANSLATE("Log the number of frames rendered per second to User/Logs/fps.txt. Use this feature when you want to measure the performance of Dolphin.\n\nIf unsure, leave this unchecked."); +wxString log_fps_to_file_desc = wxTRANSLATE("Log the number of frames rendered per second to User/Logs/fps.txt. Use this feature when you want to measure the performance of Dolphin.\n\nIf unsure, leave this unchecked."); wxString show_input_display_desc = wxTRANSLATE("Display the inputs read by the emulator.\n\nIf unsure, leave this unchecked."); wxString show_stats_desc = wxTRANSLATE("Show various statistics.\n\nIf unsure, leave this unchecked."); wxString texfmt_desc = wxTRANSLATE("Modify textures to show the format they're encoded in. Needs an emulation reset in most cases.\n\nIf unsure, leave this unchecked."); @@ -344,7 +344,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con // Internal resolution { const wxString efbscale_choices[] = { _("Auto (Window Size)"), _("Auto (Multiple of 640x528)"), - _("1x Native (640x528)"), _("1.5x Native (960x792)"), _("2x Native (1280x1056)"), + _("1x Native (640x528)"), _("1.5x Native (960x792)"), _("2x Native (1280x1056)"), _("2.5x Native (1600x1320)"), _("3x Native (1920x1584)"), _("4x Native (2560x2112)") }; wxChoice *const choice_efbscale = CreateChoice(page_enh, @@ -503,7 +503,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con szr_other->Add(CreateCheckBox(page_hacks, _("OpenMP Texture Decoder"), wxGetTranslation(omp_desc), vconfig.bOMPDecoder)); szr_other->Add(CreateCheckBox(page_hacks, _("Fast Depth Calculation"), wxGetTranslation(fast_depth_calc_desc), vconfig.bFastDepthCalc)); szr_other->Add(hacked_buffer_upload = CreateCheckBox(page_hacks, _("Vertex Streaming Hack"), wxGetTranslation(hacked_buffer_upload_desc), vconfig.bHackedBufferUpload)); - + wxStaticBoxSizer* const group_other = new wxStaticBoxSizer(wxVERTICAL, page_hacks, _("Other")); group_other->Add(szr_other, 1, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 5); szr_hacks->Add(group_other, 0, wxEXPAND | wxALL, 5); diff --git a/Source/Core/DolphinWX/Src/VideoConfigDiag.h b/Source/Core/DolphinWX/Src/VideoConfigDiag.h index 563f5076d6..a1b3b59e12 100644 --- a/Source/Core/DolphinWX/Src/VideoConfigDiag.h +++ b/Source/Core/DolphinWX/Src/VideoConfigDiag.h @@ -166,7 +166,7 @@ protected: // XFB virtual_xfb->Enable(vconfig.bUseXFB); real_xfb->Enable(vconfig.bUseXFB); - + // OGL Hacked buffer hacked_buffer_upload->Enable(Core::GetState() == Core::CORE_UNINITIALIZED && vconfig.backend_info.APIType == API_OPENGL); hacked_buffer_upload->Show(vconfig.backend_info.APIType == API_OPENGL); diff --git a/Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp b/Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp index 06b839b960..86127eba6b 100644 --- a/Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp +++ b/Source/Core/DolphinWX/Src/WiimoteConfigDiag.cpp @@ -54,8 +54,8 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin wiimote_sizer->Add(wiimote_configure_bt[i]); } wiimote_group->Add(wiimote_sizer, 1, wxEXPAND, 5 ); - - + + // "BalanceBoard" layout wxStaticBoxSizer* const bb_group = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Balance Board")); wxFlexGridSizer* const bb_sizer = new wxFlexGridSizer(1, 5, 5); @@ -64,27 +64,27 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin const wxString src_choices[] = { _("None"), _("Real Balance Board") }; wxChoice* bb_source = new wxChoice(this, source_ctrl_id, wxDefaultPosition, wxDefaultSize, sizeof(src_choices)/sizeof(*src_choices), src_choices); bb_source->Bind(wxEVT_COMMAND_CHOICE_SELECTED, &WiimoteConfigDiag::SelectSource, this); - + m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] = g_wiimote_sources[WIIMOTE_BALANCE_BOARD]; bb_source->Select(m_orig_wiimote_sources[WIIMOTE_BALANCE_BOARD] ? 1 : 0); - + bb_sizer->Add(bb_source, 0, wxALIGN_CENTER_VERTICAL); - + bb_group->Add(bb_sizer, 1, wxEXPAND, 5 ); - + // "Real wiimotes" controls wxButton* const refresh_btn = new wxButton(this, -1, _("Refresh"), wxDefaultPosition); refresh_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, &WiimoteConfigDiag::RefreshRealWiimotes, this); wxStaticBoxSizer* const real_wiimotes_group = new wxStaticBoxSizer(wxVERTICAL, this, _("Real Wiimotes")); - + wxBoxSizer* const real_wiimotes_sizer = new wxBoxSizer(wxHORIZONTAL); - + if (!WiimoteReal::g_wiimote_scanner.IsReady()) real_wiimotes_group->Add(new wxStaticText(this, -1, _("A supported bluetooth device could not be found.\n" "You must manually connect your wiimotes.")), 0, wxALIGN_CENTER | wxALL, 5); - + wxCheckBox* const continuous_scanning = new wxCheckBox(this, wxID_ANY, _("Continuous Scanning")); continuous_scanning->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &WiimoteConfigDiag::OnContinuousScanning, this); continuous_scanning->SetValue(SConfig::GetInstance().m_WiimoteContinuousScanning); @@ -92,7 +92,7 @@ WiimoteConfigDiag::WiimoteConfigDiag(wxWindow* const parent, InputPlugin& plugin auto wiimote_speaker = new wxCheckBox(this, wxID_ANY, _("Enable Speaker Data")); wiimote_speaker->Bind(wxEVT_COMMAND_CHECKBOX_CLICKED, &WiimoteConfigDiag::OnEnableSpeaker, this); wiimote_speaker->SetValue(SConfig::GetInstance().m_WiimoteEnableSpeaker); - + real_wiimotes_sizer->Add(continuous_scanning, 0, wxALIGN_CENTER_VERTICAL); real_wiimotes_sizer->AddStretchSpacer(1); real_wiimotes_sizer->Add(refresh_btn, 0, wxALL | wxALIGN_CENTER, 5); @@ -209,7 +209,7 @@ void WiimoteConfigDiag::SelectSource(wxCommandEvent& event) // This needs to be changed now in order for refresh to work right. // Revert if the dialog is canceled. int index = m_wiimote_index_from_ctrl_id[event.GetId()]; - + if(index != WIIMOTE_BALANCE_BOARD) { WiimoteReal::ChangeWiimoteSource(index, event.GetInt()); @@ -220,7 +220,7 @@ void WiimoteConfigDiag::SelectSource(wxCommandEvent& event) } else { - WiimoteReal::ChangeWiimoteSource(index, event.GetInt() ? WIIMOTE_SRC_REAL : WIIMOTE_SRC_NONE); + WiimoteReal::ChangeWiimoteSource(index, event.GetInt() ? WIIMOTE_SRC_REAL : WIIMOTE_SRC_NONE); } } @@ -245,7 +245,7 @@ void WiimoteConfigDiag::Save(wxCommandEvent& event) sec.Set("Source", (int)g_wiimote_sources[i]); } - + std::string secname("BalanceBoard"); IniFile::Section& sec = *inifile.GetOrCreateSection(secname.c_str()); sec.Set("Source", (int)g_wiimote_sources[WIIMOTE_BALANCE_BOARD]); diff --git a/Source/Core/DolphinWX/Src/X11Utils.cpp b/Source/Core/DolphinWX/Src/X11Utils.cpp index 9c509add91..71f0e43a2d 100644 --- a/Source/Core/DolphinWX/Src/X11Utils.cpp +++ b/Source/Core/DolphinWX/Src/X11Utils.cpp @@ -166,7 +166,7 @@ void XRRConfiguration::Update() { if(SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution == "Auto") return; - + if (!bValid) return; diff --git a/Source/Core/DolphinWX/resource.h b/Source/Core/DolphinWX/resource.h index 2032a4efd9..bd0d18386d 100644 --- a/Source/Core/DolphinWX/resource.h +++ b/Source/Core/DolphinWX/resource.h @@ -5,7 +5,7 @@ #define IDI_ICON1 101 // Next default values for new objects -// +// #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 diff --git a/Source/Core/DolphinWX/resources/dolphin_logo.cpp b/Source/Core/DolphinWX/resources/dolphin_logo.cpp index a78ca0fb95..2514e4ae37 100644 --- a/Source/Core/DolphinWX/resources/dolphin_logo.cpp +++ b/Source/Core/DolphinWX/resources/dolphin_logo.cpp @@ -1,2868 +1,2868 @@ static const unsigned char dolphin_logo_png[] = { -0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, -0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x76, -0x08, 0x02, 0x00, 0x00, 0x00, 0xec, 0xb7, 0xca, 0x94, 0x00, 0x00, 0x00, -0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, -0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, -0x61, 0x05, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x00, 0x00, -0x7a, 0x26, 0x00, 0x00, 0x80, 0x84, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, -0x80, 0xe8, 0x00, 0x00, 0x75, 0x30, 0x00, 0x00, 0xea, 0x60, 0x00, 0x00, -0x3a, 0x98, 0x00, 0x00, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x00, 0x00, -0x85, 0xcd, 0x49, 0x44, 0x41, 0x54, 0x78, 0x5e, 0xed, 0x9d, 0x07, 0x98, -0x14, 0x55, 0xb6, 0xc7, 0x7b, 0x62, 0x4f, 0x1e, 0x18, 0x26, 0x90, 0xd3, -0x30, 0xe4, 0xcc, 0x90, 0xe3, 0x90, 0x73, 0x8e, 0x22, 0x41, 0x92, 0x82, -0x48, 0x14, 0x15, 0x45, 0x24, 0x89, 0xc0, 0xc0, 0x90, 0x83, 0x04, 0x45, -0x50, 0x11, 0x31, 0x60, 0xc0, 0xac, 0x6b, 0x5c, 0x73, 0x5a, 0xd3, 0xa6, -0xf7, 0x36, 0xb9, 0xcf, 0x4d, 0xba, 0xee, 0xae, 0xae, 0xab, 0xee, 0x2e, -0xef, 0xd7, 0x1c, 0xbc, 0x73, 0xa7, 0xaa, 0xba, 0xbb, 0x3a, 0x4c, 0xe8, -0x50, 0xdf, 0xc0, 0xd7, 0xd3, 0x53, 0x75, 0xeb, 0xd6, 0xad, 0xf3, 0xbf, -0x27, 0x9f, 0x13, 0x13, 0x17, 0x17, 0x97, 0x9e, 0x9e, 0xfe, 0xed, 0xb7, -0xdf, 0xc6, 0xc4, 0xc4, 0x38, 0xac, 0x8e, 0xf3, 0xe7, 0xcf, 0x5b, 0x7e, -0x1f, 0xfd, 0x32, 0xba, 0x02, 0xa1, 0xbb, 0x02, 0x96, 0xd4, 0x0e, 0xa9, -0x3b, 0x9d, 0xce, 0x7f, 0xfc, 0xe3, 0x1f, 0x8e, 0xcc, 0xcc, 0xcc, 0x7d, -0xfb, 0xf6, 0xdd, 0x7b, 0xef, 0xbd, 0xa7, 0x4c, 0xc7, 0xdd, 0x17, 0x8e, -0xbb, 0x2e, 0x1c, 0x77, 0xde, 0x79, 0xe7, 0xc9, 0x0b, 0xc7, 0x89, 0x0b, -0xc7, 0x1d, 0x6e, 0x8e, 0xe3, 0xc7, 0x8f, 0xab, 0xbf, 0xf0, 0xd9, 0xeb, -0x71, 0x7b, 0x39, 0x1f, 0xb7, 0xd9, 0x3e, 0x8e, 0x95, 0xc3, 0x71, 0xf4, -0xe8, 0x51, 0x46, 0xe5, 0x7f, 0x9f, 0x8e, 0x23, 0x47, 0x8e, 0xf8, 0x74, -0xbe, 0xdc, 0x25, 0xe8, 0x87, 0xed, 0x95, 0xbb, 0x8d, 0x77, 0xc8, 0xc9, -0xe5, 0xf1, 0x26, 0xa1, 0x1f, 0x86, 0xf5, 0x4a, 0x45, 0x3a, 0xd5, 0x99, -0x09, 0x53, 0x28, 0x56, 0xa8, 0x17, 0x32, 0x16, 0x7a, 0x16, 0xda, 0x36, -0x90, 0x3c, 0x28, 0x00, 0x0b, 0x20, 0xc2, 0x91, 0x92, 0x92, 0xc2, 0x9f, -0x41, 0x89, 0x7e, 0xfc, 0xf7, 0xc2, 0xf1, 0x9f, 0x0b, 0xc7, 0xbf, 0xff, -0xfd, 0xef, 0xef, 0xbf, 0xff, 0x1e, 0x66, 0xf2, 0xcd, 0x37, 0xdf, 0xfc, -0xf3, 0x9f, 0xff, 0xfc, 0xfa, 0xeb, 0xaf, 0xbf, 0xfa, 0xea, 0x2b, 0xf0, -0xc4, 0xf1, 0x77, 0xd3, 0xf1, 0xb7, 0xbf, 0xfd, 0x4d, 0x7d, 0xc7, 0x67, -0xcb, 0xe3, 0x4b, 0x1b, 0xc7, 0x5f, 0x6d, 0x1c, 0x5f, 0xd8, 0x38, 0x3e, -0xb7, 0x71, 0xfc, 0xc5, 0x74, 0xfc, 0xf9, 0xcf, 0x7f, 0xd6, 0xbf, 0xe3, -0x57, 0x3b, 0xc7, 0x9f, 0x4c, 0xc7, 0x1f, 0xff, 0xf8, 0x47, 0xf5, 0x1d, -0x9f, 0x2d, 0x8f, 0x3f, 0xfc, 0xe1, 0x0f, 0x86, 0xef, 0xcd, 0xdf, 0x58, -0x5e, 0x68, 0xbe, 0x9d, 0xf9, 0x1b, 0x3b, 0xd3, 0x36, 0x3f, 0xbe, 0x7c, -0xa3, 0x56, 0x4e, 0xff, 0xac, 0x2f, 0xa7, 0xbe, 0xfc, 0x7c, 0xef, 0xee, -0x6d, 0xa8, 0x37, 0xc9, 0x09, 0xee, 0xde, 0xaa, 0xa2, 0x08, 0x4e, 0xb0, -0xa4, 0x0e, 0x77, 0xb4, 0xa4, 0xbe, 0x37, 0x93, 0x22, 0xdf, 0x40, 0xa2, -0xd0, 0x2a, 0x07, 0x44, 0x0b, 0xe9, 0xfe, 0xeb, 0x5f, 0xff, 0x82, 0x8c, -0xbf, 0xfb, 0xee, 0x3b, 0xe8, 0x19, 0xaa, 0x86, 0xb6, 0x85, 0xce, 0x75, -0xca, 0x07, 0x0b, 0x20, 0xc2, 0x02, 0x15, 0x82, 0x07, 0x01, 0x03, 0x43, -0x08, 0x1e, 0x18, 0x97, 0x7b, 0x30, 0x09, 0x79, 0x30, 0x59, 0x1d, 0x77, -0xf4, 0xe4, 0xee, 0x65, 0x78, 0x78, 0x91, 0xee, 0x88, 0x86, 0xef, 0x85, -0x4a, 0xf8, 0xdf, 0xf2, 0xf8, 0xcc, 0xdb, 0xf1, 0x7f, 0xee, 0x8f, 0xdf, -0xff, 0xfe, 0xf7, 0xfc, 0x91, 0xff, 0x0d, 0xc7, 0xa7, 0x9f, 0x7e, 0xca, -0x37, 0xfc, 0xef, 0xe1, 0xf8, 0x9d, 0xc7, 0xe3, 0xb7, 0xa6, 0xe3, 0x37, -0xbf, 0xf9, 0x0d, 0xdf, 0xf1, 0x7f, 0xe0, 0x87, 0x79, 0x70, 0xf9, 0xc6, -0xf3, 0x94, 0x3c, 0x3f, 0x8e, 0xfc, 0xd5, 0xbc, 0x14, 0xb2, 0x3e, 0x96, -0x4b, 0xe8, 0x6d, 0xe1, 0x3f, 0xe3, 0x7d, 0x71, 0x8e, 0xbb, 0x17, 0xa7, -0xde, 0xac, 0x4f, 0x98, 0x77, 0x47, 0x5a, 0x90, 0xa2, 0xfa, 0x93, 0x22, -0x4b, 0xc1, 0xaa, 0x20, 0x4d, 0x40, 0x02, 0x19, 0x43, 0xcc, 0xc0, 0xc3, -0x80, 0x0d, 0x05, 0x0c, 0x6b, 0x54, 0xe8, 0x90, 0x30, 0xe3, 0x81, 0xfb, -0x41, 0xd9, 0x3c, 0x86, 0xac, 0x88, 0x2c, 0x96, 0x79, 0x29, 0xe5, 0x1b, -0xb5, 0xca, 0xe6, 0xf7, 0x61, 0xf9, 0xfe, 0xdc, 0xbd, 0x6c, 0xa1, 0x27, -0x77, 0x24, 0xf5, 0x6b, 0x37, 0xc7, 0xaf, 0x7e, 0xf5, 0x2b, 0xf9, 0x0b, -0x1f, 0xcc, 0xc7, 0xff, 0x9a, 0x8e, 0xff, 0x71, 0x73, 0xfc, 0xf2, 0x97, -0xbf, 0x94, 0xbf, 0xf0, 0xc1, 0x7c, 0xfc, 0xc2, 0xcd, 0xf1, 0x73, 0xd3, -0xf1, 0xb3, 0x9f, 0xfd, 0x4c, 0xbe, 0xe3, 0x83, 0xf9, 0xf8, 0xe9, 0x0f, -0x87, 0xe5, 0x5f, 0x0d, 0x5f, 0x9a, 0x07, 0xb7, 0x9c, 0x85, 0xcc, 0x96, -0x3f, 0x59, 0xce, 0x5c, 0x3d, 0x97, 0xe1, 0xb9, 0x65, 0x61, 0xf8, 0xd2, -0xbc, 0x44, 0x96, 0x2b, 0xa9, 0xd6, 0xd9, 0xf0, 0x1e, 0x04, 0xfc, 0x7c, -0xe9, 0x6e, 0x17, 0xb0, 0x7c, 0xdd, 0x42, 0x18, 0x3a, 0xc2, 0x85, 0x78, -0xf8, 0xd2, 0x1d, 0xaa, 0x2d, 0xc9, 0x4f, 0xc1, 0x58, 0xb6, 0x54, 0x00, -0x03, 0x42, 0x04, 0x1e, 0x0a, 0x1b, 0xc2, 0x37, 0x14, 0xd3, 0x10, 0x60, -0x58, 0xa0, 0x42, 0x41, 0x82, 0xb3, 0x85, 0x3f, 0x80, 0x30, 0xc6, 0x02, -0x0c, 0xcf, 0x3c, 0xf3, 0xcc, 0x8a, 0x15, 0x2b, 0x7a, 0xf4, 0xe8, 0x91, -0x9b, 0x9b, 0x1b, 0x1b, 0x1b, 0x1b, 0xba, 0x6a, 0x56, 0x74, 0xe6, 0x91, -0xb3, 0x02, 0x10, 0x6a, 0x76, 0x76, 0x36, 0x44, 0xbb, 0x7c, 0xf9, 0xf2, -0xc7, 0x1f, 0x7f, 0x1c, 0xa8, 0x80, 0x10, 0x88, 0x19, 0x06, 0x82, 0xd4, -0x83, 0x64, 0x05, 0x91, 0x0b, 0xd3, 0x10, 0x69, 0xca, 0x02, 0x15, 0x06, -0x48, 0x00, 0x29, 0x80, 0xc5, 0x10, 0xf7, 0xdd, 0x77, 0x5f, 0x9f, 0x3e, -0x7d, 0x22, 0x67, 0x29, 0xa3, 0x4f, 0x1a, 0xae, 0x2b, 0xd0, 0xbb, 0x77, -0x6f, 0xd4, 0x6b, 0x78, 0x0e, 0x62, 0x0e, 0x84, 0x0d, 0x79, 0x2b, 0x60, -0x28, 0x8e, 0x51, 0x86, 0x57, 0x18, 0x20, 0x01, 0x8b, 0x80, 0xe3, 0xc0, -0x7d, 0xe6, 0xce, 0x9d, 0xcb, 0x1a, 0x0d, 0x1c, 0x38, 0x30, 0x5c, 0x57, -0x2a, 0xfa, 0x5c, 0x91, 0xb6, 0x02, 0xb3, 0x67, 0xcf, 0x46, 0x3e, 0x44, -0x24, 0x83, 0x6f, 0xc0, 0x34, 0xd8, 0xfd, 0x85, 0x63, 0x08, 0x30, 0x30, -0x4f, 0x95, 0x6a, 0xdb, 0xa0, 0x42, 0xd4, 0x6b, 0xce, 0xe0, 0x3c, 0x20, -0x81, 0xbc, 0xd8, 0xaf, 0x5f, 0xbf, 0xac, 0xac, 0xac, 0x48, 0x5b, 0xb5, -0xe8, 0xf3, 0x86, 0xfd, 0x0a, 0xc0, 0x34, 0x3e, 0xf8, 0xe0, 0x03, 0x14, -0x1e, 0xf6, 0x7d, 0x14, 0x04, 0x38, 0x86, 0xe8, 0xdf, 0x40, 0x00, 0xd3, -0x6d, 0x72, 0x72, 0xb2, 0xcb, 0x06, 0x05, 0x3e, 0x40, 0x89, 0x98, 0x5f, -0xd1, 0x25, 0xe0, 0x2c, 0x9c, 0x5d, 0x54, 0x54, 0x34, 0x69, 0xd2, 0xa4, -0x32, 0x0b, 0x54, 0x30, 0xc8, 0x31, 0xe1, 0x88, 0x63, 0xe5, 0x27, 0x8e, -0x4d, 0xdf, 0x38, 0x36, 0xff, 0xdb, 0xb1, 0xe5, 0xbf, 0xe5, 0xf9, 0xf3, -0x1f, 0xc7, 0x16, 0x6e, 0x21, 0x3f, 0x7c, 0xe6, 0xc7, 0xb7, 0xdb, 0xc5, -0x6c, 0xf9, 0x6f, 0xcc, 0x96, 0xff, 0xc4, 0x6e, 0xf9, 0x0f, 0xff, 0xcb, -0x4f, 0xec, 0x56, 0x7e, 0xfe, 0x1d, 0x1b, 0xc0, 0x98, 0xbe, 0xce, 0xc1, -0xe3, 0xf9, 0xf2, 0x50, 0xea, 0xd1, 0x64, 0x92, 0x17, 0x9f, 0x51, 0x26, -0x1f, 0xd4, 0xdb, 0xf9, 0xb6, 0x7a, 0x61, 0x72, 0x6b, 0x08, 0x15, 0x72, -0x85, 0x68, 0x21, 0xdd, 0xb2, 0x47, 0xcf, 0x9e, 0x3d, 0x31, 0x5a, 0xa0, -0xd6, 0xa3, 0x88, 0x43, 0xf0, 0xd8, 0x6d, 0x21, 0x7e, 0x20, 0x60, 0x44, -0x85, 0x68, 0xd8, 0xc8, 0x4e, 0x88, 0x5c, 0xf3, 0xe6, 0xcd, 0x73, 0xf9, -0x32, 0x7e, 0x38, 0x12, 0x72, 0xf2, 0x1d, 0xb3, 0x1f, 0xad, 0xd8, 0x95, -0x12, 0x72, 0x09, 0x04, 0x15, 0x2e, 0x3a, 0x2b, 0x3b, 0x67, 0x9d, 0x0a, -0xab, 0x02, 0x95, 0x18, 0xd0, 0x5e, 0x8a, 0x0a, 0xa6, 0xad, 0x10, 0x52, -0xb1, 0xcb, 0x5e, 0x15, 0x96, 0xa5, 0x7c, 0xe6, 0x30, 0xfb, 0xd1, 0x78, -0xc8, 0x58, 0x3b, 0x2e, 0xbd, 0xf4, 0x52, 0x0c, 0x71, 0xa8, 0xe0, 0x10, -0xbc, 0x92, 0xa3, 0x2e, 0xa2, 0x02, 0x7e, 0xc1, 0x27, 0x78, 0x87, 0x30, -0x0a, 0x18, 0x0a, 0xea, 0xb5, 0x7e, 0x71, 0x52, 0x93, 0x5e, 0x8e, 0x9b, -0xbe, 0xa8, 0x8c, 0x77, 0x63, 0xd8, 0x4d, 0xcb, 0x67, 0xb1, 0x7c, 0x64, -0x41, 0xc1, 0x5e, 0x87, 0x32, 0xb8, 0x8d, 0x22, 0x21, 0xd8, 0xcb, 0x5b, -0x96, 0x66, 0x6e, 0xfa, 0xc2, 0x99, 0xdf, 0x4b, 0xa7, 0x6d, 0x9c, 0xe2, -0xb0, 0x0b, 0x14, 0x0c, 0xd8, 0x05, 0xc4, 0x0f, 0x04, 0xf0, 0x7f, 0xbb, -0x24, 0x28, 0x41, 0x85, 0xd2, 0x28, 0xc0, 0x4d, 0xdf, 0xbe, 0x7d, 0x1b, -0x34, 0x68, 0x20, 0x17, 0xbb, 0xb8, 0x44, 0xe5, 0x40, 0x82, 0xe7, 0x11, -0x8a, 0xf1, 0x47, 0x7c, 0x2a, 0xdf, 0xc5, 0xad, 0x64, 0x20, 0x85, 0xe5, -0xee, 0x50, 0x51, 0x0f, 0x75, 0xd3, 0x17, 0x3a, 0xc7, 0xe8, 0xde, 0xbd, -0x3b, 0x6e, 0x19, 0xd8, 0x85, 0x52, 0xbb, 0x89, 0x0d, 0xb9, 0x88, 0x0a, -0xf0, 0x21, 0x8c, 0x02, 0x23, 0xee, 0xd3, 0x4f, 0x3f, 0x5d, 0x46, 0x00, -0xab, 0x68, 0xc1, 0xc9, 0x72, 0x75, 0xa2, 0x12, 0x76, 0x45, 0x11, 0x4d, -0x24, 0x00, 0x1e, 0x92, 0xd6, 0x8e, 0xb3, 0x67, 0xcf, 0x62, 0x8f, 0x42, -0xbb, 0x80, 0xf8, 0x81, 0x00, 0x61, 0x54, 0x17, 0x51, 0x01, 0x3e, 0xc4, -0xf4, 0x84, 0xf8, 0xb4, 0x72, 0xe5, 0xca, 0xd2, 0x4b, 0xd0, 0x51, 0x42, -0x69, 0x99, 0xa2, 0xe0, 0x89, 0x82, 0xc7, 0xde, 0x0a, 0x68, 0xca, 0xf7, -0xa2, 0x45, 0x8b, 0x70, 0xc0, 0x2b, 0x2b, 0x2d, 0x32, 0x55, 0x29, 0x2a, -0xd0, 0xc1, 0xc1, 0x0a, 0xe2, 0x13, 0xba, 0x79, 0x29, 0x2a, 0x50, 0xde, -0x43, 0x09, 0x15, 0xf6, 0x56, 0x24, 0xfa, 0x44, 0xd1, 0x15, 0x80, 0xb0, -0x7f, 0x38, 0x3a, 0x77, 0xee, 0x8c, 0xfb, 0x42, 0x74, 0x6e, 0x4c, 0x4d, -0xa5, 0xa8, 0x80, 0x6b, 0x88, 0x9e, 0x4d, 0x8c, 0x53, 0x4e, 0x4e, 0x4e, -0x29, 0x2a, 0xb0, 0x6a, 0x45, 0x57, 0x30, 0xba, 0x02, 0xe1, 0xb7, 0x02, -0x10, 0xf6, 0x0f, 0x07, 0x21, 0x21, 0x98, 0x68, 0x11, 0xa2, 0x20, 0x7e, -0x74, 0x6e, 0x42, 0xe2, 0x2f, 0xf2, 0x0a, 0xf0, 0x81, 0x23, 0x03, 0x85, -0x03, 0x3e, 0x52, 0x26, 0xc6, 0x09, 0x73, 0x6f, 0xf8, 0xad, 0x48, 0xf4, -0x89, 0xa2, 0x2b, 0x00, 0x61, 0xff, 0x70, 0x40, 0xf0, 0x44, 0x66, 0x8a, -0x25, 0x0a, 0xc6, 0x50, 0x06, 0x15, 0xe2, 0xcf, 0x26, 0x3e, 0xa4, 0x8c, -0xaa, 0x1d, 0x5d, 0xbe, 0xe8, 0x0a, 0x84, 0xe5, 0x0a, 0xe0, 0x83, 0xd6, -0x8e, 0x4f, 0x3e, 0xf9, 0x04, 0xd5, 0x02, 0xe2, 0x87, 0x31, 0x44, 0x51, -0x11, 0xd5, 0x43, 0x22, 0x78, 0x05, 0x34, 0x54, 0x7c, 0xfc, 0xf1, 0xc7, -0xd6, 0xa8, 0x10, 0x97, 0x36, 0x3a, 0x47, 0x94, 0x57, 0x44, 0x85, 0xc6, -0x88, 0x58, 0x01, 0x8d, 0xd0, 0x3f, 0xfa, 0xe8, 0x23, 0xa2, 0xfe, 0x20, -0x7e, 0xc4, 0x25, 0x12, 0x7d, 0x4b, 0xf5, 0x8a, 0x28, 0x2a, 0x22, 0x82, -0x14, 0xc2, 0x52, 0x1c, 0xf2, 0xef, 0xa1, 0xec, 0xa3, 0x82, 0xb4, 0xa6, -0x28, 0xaf, 0x88, 0xc2, 0x23, 0x22, 0x56, 0x20, 0x8a, 0x8a, 0x88, 0x78, -0xcd, 0xfe, 0x6d, 0x99, 0x11, 0x7b, 0x55, 0x14, 0x15, 0x21, 0x87, 0x8a, -0xa4, 0x6d, 0xdf, 0xe5, 0xed, 0xf8, 0x47, 0xfe, 0xce, 0xcf, 0x5b, 0xee, -0xfc, 0xac, 0x5d, 0xc9, 0x6f, 0x46, 0x6e, 0x3c, 0x5d, 0x74, 0xed, 0xb1, -0x76, 0x57, 0xec, 0x6e, 0x3c, 0x73, 0x6b, 0xdb, 0xcb, 0x77, 0xf7, 0xbf, -0xe6, 0xe8, 0x98, 0xe2, 0x73, 0xfc, 0x35, 0xe4, 0x9e, 0xab, 0x0a, 0x4d, -0x58, 0x43, 0xc5, 0x87, 0x1f, 0x7e, 0x28, 0xd1, 0x50, 0xd6, 0x7a, 0x45, -0x54, 0x82, 0xaa, 0x94, 0xd7, 0x96, 0xbd, 0xfd, 0xeb, 0x56, 0x25, 0x9f, -0x8e, 0xdc, 0x74, 0xa6, 0xdf, 0xc2, 0xcd, 0x1d, 0x47, 0xce, 0x6a, 0xd4, -0xa6, 0x73, 0x66, 0xcd, 0xc6, 0xce, 0xcc, 0x3c, 0x67, 0x7a, 0x96, 0x33, -0xbd, 0x86, 0x33, 0xad, 0x46, 0x62, 0x52, 0x7a, 0x62, 0x52, 0x9a, 0xfe, -0xe3, 0x4c, 0xad, 0x96, 0xde, 0xb0, 0x43, 0xcf, 0x79, 0x1b, 0xda, 0xee, -0xfe, 0x2c, 0x67, 0xc7, 0x3f, 0x2b, 0x65, 0xda, 0xa1, 0x7d, 0x53, 0xaf, -0xbc, 0x82, 0x42, 0x54, 0x84, 0x7b, 0x10, 0x20, 0x15, 0x45, 0x45, 0x05, -0xbf, 0x69, 0xf6, 0xfb, 0xa1, 0xab, 0x8f, 0xd6, 0xef, 0x50, 0xe4, 0x88, -0x4b, 0x8a, 0x8b, 0x89, 0x4b, 0x75, 0x26, 0x55, 0x4f, 0x4d, 0xcd, 0xcd, -0xcc, 0xa8, 0x59, 0x3d, 0xb3, 0x65, 0x7e, 0xe3, 0x3e, 0xdd, 0xba, 0xf6, -0xec, 0x5c, 0xd8, 0xbf, 0x57, 0xcf, 0x99, 0xd3, 0xa6, 0x5e, 0x36, 0xe3, -0xd2, 0x39, 0xda, 0xcf, 0x88, 0x41, 0x83, 0xb2, 0x33, 0xd2, 0x12, 0x1c, -0x8e, 0xd8, 0xe4, 0x8c, 0x66, 0x43, 0x66, 0x8d, 0xdd, 0xf9, 0x74, 0x93, -0xdd, 0x5f, 0x56, 0xf0, 0xe4, 0x43, 0xfb, 0x76, 0x5e, 0x51, 0x81, 0x6f, -0x1b, 0x1b, 0x54, 0x14, 0x15, 0x15, 0xf6, 0x9a, 0xb3, 0x77, 0x7c, 0xdd, -0x66, 0xd7, 0xff, 0xf5, 0x59, 0xbc, 0x23, 0x31, 0xaf, 0x80, 0xb7, 0x93, -0x93, 0x99, 0xd1, 0xbd, 0xb0, 0x70, 0xce, 0xcc, 0x99, 0xc5, 0x5b, 0xb6, -0x3c, 0xfa, 0xc8, 0x23, 0xd4, 0xaa, 0x81, 0xa1, 0x4b, 0x45, 0x19, 0x55, -0xf5, 0x47, 0x2f, 0xfd, 0x22, 0xb5, 0x61, 0x5e, 0x7d, 0xf5, 0xd5, 0xe5, -0x4b, 0x97, 0xb6, 0x6d, 0xde, 0x3c, 0x35, 0x01, 0x74, 0xc4, 0xa5, 0x34, -0xea, 0x58, 0xb4, 0x62, 0x5f, 0xc1, 0x9e, 0xbf, 0x55, 0xd8, 0x53, 0x84, -0xf6, 0x8d, 0xa2, 0xa8, 0xa8, 0x3a, 0xef, 0xaf, 0xf1, 0xce, 0xcf, 0x47, -0x6f, 0x7f, 0xa2, 0xdd, 0xa5, 0x37, 0x26, 0x64, 0xd6, 0xe2, 0xbd, 0x34, -0xa8, 0x95, 0x37, 0x7d, 0xca, 0x94, 0xfb, 0xcf, 0x9c, 0x81, 0xd0, 0xa5, -0x18, 0x99, 0xd4, 0x2f, 0x92, 0x72, 0x72, 0x52, 0xf6, 0xcb, 0xb2, 0x74, -0x9f, 0x14, 0x05, 0xe3, 0x1c, 0xb2, 0xc9, 0x6e, 0x3d, 0x78, 0x70, 0xcc, -0x88, 0x61, 0xb5, 0xb3, 0x5c, 0xb9, 0x93, 0x69, 0xf9, 0x9d, 0x07, 0xaf, -0x39, 0xd9, 0x34, 0x8a, 0x0d, 0xaf, 0x56, 0x04, 0x9b, 0x7a, 0x45, 0x94, -0x57, 0x94, 0x37, 0x78, 0x90, 0x97, 0x7a, 0x2f, 0xda, 0xe6, 0xac, 0x56, -0x93, 0x37, 0xd2, 0xb8, 0x4e, 0xad, 0x15, 0x4b, 0x97, 0x3c, 0xf9, 0xc4, -0x13, 0x52, 0xa4, 0x48, 0xca, 0x78, 0xa9, 0x42, 0x77, 0x52, 0x28, 0x52, -0xaa, 0x44, 0x4a, 0xf1, 0x52, 0xf3, 0xc1, 0x9f, 0xa4, 0x94, 0x23, 0x57, -0x71, 0xf9, 0x13, 0x8f, 0x3f, 0x3e, 0x77, 0xd6, 0xac, 0xcc, 0x24, 0x17, -0xdf, 0xc8, 0xe9, 0x36, 0x7e, 0xc8, 0xe6, 0x87, 0x0a, 0xf6, 0x44, 0x65, -0x2a, 0xf7, 0xce, 0x7b, 0xaf, 0xa8, 0x50, 0x7a, 0x05, 0xa5, 0x72, 0xa2, -0xfe, 0x8a, 0xf2, 0xc0, 0x46, 0xe3, 0x92, 0xbf, 0x0c, 0xb8, 0xf1, 0xee, -0x8c, 0x26, 0x1d, 0x59, 0xde, 0x3a, 0x35, 0xaa, 0x6d, 0xde, 0xb8, 0x01, -0xf9, 0x07, 0x3c, 0x40, 0xcd, 0x90, 0x35, 0xc4, 0x2d, 0x05, 0xed, 0x88, -0xe7, 0x97, 0x7a, 0x8f, 0xfa, 0x41, 0x42, 0x98, 0xe5, 0xc1, 0x39, 0xaa, -0xf2, 0xaf, 0x14, 0x3b, 0x65, 0xb4, 0x87, 0x1f, 0x7e, 0x78, 0x58, 0xff, -0x7e, 0xdc, 0x25, 0x21, 0x35, 0xab, 0xd7, 0xac, 0xd5, 0x51, 0x81, 0xca, -0xed, 0xdb, 0xb4, 0x8f, 0x8a, 0xa8, 0xb6, 0x5d, 0x1e, 0x90, 0x80, 0x45, -0xf4, 0xba, 0x62, 0xb3, 0x33, 0x3d, 0x9b, 0x17, 0x31, 0x79, 0xdc, 0xd8, -0x97, 0x5e, 0x7a, 0x89, 0x75, 0x86, 0x3f, 0xc0, 0x1c, 0x04, 0x0f, 0x02, -0x06, 0x21, 0x7d, 0x29, 0x65, 0x67, 0x38, 0xc8, 0xaa, 0x37, 0x1c, 0x72, -0x02, 0x27, 0xeb, 0x85, 0x80, 0xe1, 0x1e, 0x52, 0x9f, 0xe5, 0x8e, 0xdb, -0x6e, 0x6b, 0xde, 0xb0, 0x3e, 0x8d, 0x17, 0x9c, 0x19, 0xb9, 0x7d, 0xae, -0xd8, 0x5c, 0x10, 0x55, 0xc4, 0xcd, 0x02, 0x55, 0x14, 0x15, 0xe5, 0x41, -0xeb, 0x76, 0xc6, 0x84, 0x45, 0x0c, 0xda, 0xf4, 0x40, 0x6a, 0xc3, 0xb6, -0xbc, 0x82, 0x7a, 0x79, 0x39, 0xbb, 0x76, 0xee, 0x44, 0x8d, 0x56, 0x85, -0xeb, 0x04, 0x0f, 0x86, 0x4a, 0xc0, 0x52, 0x07, 0x5e, 0x6a, 0x65, 0x7b, -0x3d, 0xcc, 0x45, 0xe3, 0x55, 0x11, 0x54, 0x6e, 0xb4, 0xee, 0xc6, 0x35, -0x75, 0xb3, 0x6b, 0x50, 0xfc, 0xb4, 0x70, 0xc4, 0xcc, 0xa8, 0xa6, 0x61, -0x7c, 0x5f, 0x26, 0x54, 0xb0, 0x55, 0xa1, 0xad, 0x95, 0xc6, 0x41, 0x45, -0x25, 0x28, 0x3b, 0x24, 0xee, 0xeb, 0x39, 0x28, 0xd6, 0xfd, 0x96, 0xee, -0x89, 0x4b, 0xcb, 0x8e, 0x77, 0x38, 0xc6, 0x8e, 0x18, 0xf1, 0xc6, 0xeb, -0xaf, 0x23, 0xa0, 0x4a, 0x26, 0x24, 0x9b, 0xba, 0xd4, 0x72, 0x34, 0x14, -0x00, 0x56, 0x30, 0x30, 0x34, 0x4e, 0x70, 0xf7, 0xab, 0x3a, 0x5f, 0x6a, -0xc8, 0xc3, 0x37, 0xc0, 0x18, 0x48, 0x63, 0x70, 0xa9, 0x86, 0xfa, 0xfe, -0xfb, 0xef, 0x8f, 0x1b, 0x35, 0x0a, 0x55, 0x23, 0x21, 0x3d, 0x7b, 0xd0, -0x9a, 0x3b, 0xa2, 0x02, 0x55, 0xe9, 0x4b, 0xb4, 0x42, 0x45, 0x19, 0x2f, -0x5e, 0x14, 0x15, 0xbe, 0x52, 0xbc, 0xd7, 0xf3, 0x91, 0x9a, 0xba, 0xcf, -0xb8, 0x96, 0x95, 0xaf, 0x9d, 0x5d, 0x63, 0xc7, 0xf6, 0xed, 0x58, 0x52, -0x95, 0xc8, 0xe4, 0x0e, 0x0f, 0x36, 0x91, 0x60, 0x79, 0x9a, 0xea, 0x37, -0x22, 0x62, 0x95, 0x60, 0x43, 0x12, 0xf1, 0x29, 0xe7, 0xbd, 0x71, 0xdd, -0xba, 0x2c, 0x57, 0x75, 0xaf, 0x84, 0x3e, 0x0b, 0x36, 0x35, 0xdd, 0xfb, -0x77, 0xaf, 0x93, 0x8f, 0x88, 0x13, 0xa2, 0xa8, 0xa8, 0xe0, 0xd7, 0x9c, -0xbf, 0xeb, 0x8b, 0x4e, 0xc3, 0x2e, 0x61, 0xd9, 0xbb, 0x15, 0x76, 0x7a, -0xe8, 0xc1, 0x07, 0x61, 0xcd, 0x98, 0x50, 0x21, 0x50, 0x58, 0x84, 0x59, -0x64, 0x32, 0x74, 0x15, 0xf1, 0x1b, 0x1b, 0x0a, 0x18, 0x7a, 0x17, 0x1e, -0x10, 0x88, 0xea, 0xc2, 0x16, 0x78, 0xee, 0xd1, 0x47, 0xdb, 0xb7, 0x68, -0xce, 0x94, 0xaa, 0xb5, 0xe8, 0x35, 0xd4, 0x65, 0x9e, 0x8a, 0x78, 0xb7, -0x86, 0x4d, 0x54, 0xf0, 0xe6, 0xa2, 0x36, 0xa8, 0x00, 0xf1, 0xe3, 0xb2, -0x35, 0xad, 0xbb, 0x27, 0xbd, 0x8e, 0x8b, 0xfe, 0xa6, 0x4e, 0x9a, 0xf8, -0xfa, 0x6b, 0xaf, 0x49, 0x9a, 0xbc, 0x54, 0x55, 0x51, 0x75, 0xe1, 0xdd, -0x35, 0xda, 0xf1, 0x1b, 0x12, 0xea, 0x42, 0x77, 0xd8, 0x40, 0xa0, 0xfa, -0xc9, 0xfb, 0xef, 0xe3, 0x20, 0x67, 0x62, 0xc9, 0xd5, 0xeb, 0x0c, 0xba, -0x21, 0xe2, 0xa5, 0xa9, 0x28, 0x2a, 0x02, 0xa4, 0x75, 0x9b, 0x97, 0xa3, -0x48, 0xf4, 0x5d, 0xb6, 0x37, 0x21, 0xb5, 0x3a, 0x8a, 0xc4, 0xaa, 0x15, -0xcb, 0x55, 0xb5, 0x46, 0x81, 0x84, 0xaa, 0xef, 0x6b, 0xd9, 0x78, 0x2a, -0x70, 0x3c, 0x18, 0x1a, 0xb8, 0xe9, 0xdd, 0xaa, 0xa4, 0x15, 0x09, 0xd3, -0x80, 0x6b, 0xed, 0x2a, 0x29, 0xa9, 0x9e, 0xec, 0x8c, 0x8d, 0x4d, 0xe8, -0x35, 0xe3, 0xda, 0x88, 0x56, 0xc1, 0xed, 0xa0, 0x82, 0xbd, 0x24, 0xca, -0x2b, 0x6c, 0x52, 0xbf, 0xe5, 0x69, 0x28, 0x12, 0x5d, 0xa7, 0x5f, 0xcd, -0x52, 0xe7, 0x56, 0xcf, 0xdc, 0xb3, 0x67, 0x37, 0x11, 0x19, 0xd8, 0x9a, -0x10, 0x5d, 0x44, 0x6a, 0x92, 0xca, 0xbe, 0x86, 0xb6, 0x3a, 0xc1, 0x45, -0x82, 0xbb, 0xce, 0x86, 0x4a, 0xa0, 0x12, 0xf3, 0x14, 0xba, 0xfe, 0xb3, -0xcf, 0x3c, 0xdd, 0xb1, 0x55, 0x4b, 0xa6, 0xda, 0xa1, 0xff, 0xe8, 0xc8, -0x55, 0x33, 0x6c, 0xda, 0xa0, 0xa2, 0xa8, 0xf0, 0x1b, 0x15, 0xf9, 0x3b, -0xbf, 0xe8, 0x38, 0xdc, 0xa5, 0x48, 0xb4, 0x6b, 0xd5, 0xea, 0xec, 0x83, -0x0f, 0x4a, 0x6f, 0x04, 0x03, 0x24, 0x2a, 0x80, 0x45, 0x98, 0x61, 0x26, -0x02, 0x95, 0x00, 0x43, 0x57, 0xc1, 0xa9, 0xf5, 0x82, 0x34, 0x15, 0x17, -0xe3, 0x48, 0xa8, 0x5e, 0x7b, 0xf0, 0xda, 0x53, 0x91, 0xe8, 0x05, 0xb7, -0x8f, 0x0a, 0x5e, 0x67, 0xd4, 0xb7, 0xed, 0x2b, 0x36, 0xd0, 0xad, 0xdb, -0xf5, 0x1d, 0xc1, 0xba, 0x8d, 0x1d, 0x39, 0x52, 0x14, 0x09, 0x29, 0xfe, -0x2e, 0x65, 0xae, 0xe1, 0x12, 0x15, 0xc9, 0x22, 0xdc, 0x59, 0xa8, 0xa4, -0x13, 0x83, 0x94, 0x9d, 0x57, 0x2a, 0x78, 0xc9, 0x8e, 0x1d, 0x19, 0x49, -0xce, 0xf8, 0x94, 0xea, 0x83, 0xd7, 0xdd, 0x13, 0x71, 0xd2, 0x94, 0x1b, -0x54, 0xd0, 0xa6, 0xf9, 0x62, 0xde, 0xb6, 0x58, 0x66, 0xe1, 0x15, 0x51, -0x54, 0xf8, 0x04, 0x89, 0x0b, 0x4e, 0xba, 0x07, 0x93, 0x73, 0x1b, 0xe3, -0x29, 0x5b, 0xbc, 0x70, 0xa1, 0x2a, 0x41, 0xa7, 0xb7, 0x96, 0x52, 0x3d, -0xd7, 0x82, 0x65, 0x6b, 0xf2, 0x4f, 0xee, 0xd2, 0x7b, 0x59, 0xc1, 0x34, -0x94, 0x34, 0x75, 0xf4, 0xf0, 0xe1, 0xcc, 0xc4, 0x78, 0xc2, 0x43, 0x06, -0xaf, 0x3b, 0xdd, 0x74, 0x6f, 0x24, 0x19, 0xa6, 0xbc, 0xa2, 0x82, 0x1a, -0x38, 0xa2, 0x57, 0x44, 0x51, 0x61, 0x1f, 0x15, 0x2e, 0x48, 0x6c, 0x78, -0x20, 0x25, 0x2f, 0x1f, 0x48, 0xac, 0x5e, 0xb5, 0x8a, 0xb0, 0x6f, 0x42, -0x2d, 0x44, 0x6a, 0x32, 0xeb, 0xd6, 0xfe, 0x91, 0x72, 0x70, 0xaf, 0x32, -0x77, 0xc7, 0x95, 0xd6, 0x87, 0xb7, 0x1f, 0x3d, 0x9a, 0x99, 0x10, 0x9b, -0x98, 0x9e, 0x3d, 0x64, 0xdd, 0xe9, 0x08, 0xb2, 0xd8, 0x6a, 0xa8, 0xa0, -0xef, 0x11, 0x3b, 0x9a, 0xf8, 0xb6, 0x4b, 0x79, 0x45, 0x14, 0x15, 0xf6, -0xc1, 0x20, 0x67, 0x36, 0x72, 0x41, 0xe2, 0xbe, 0xe4, 0xbc, 0x7c, 0xcc, -0x4d, 0xab, 0xaf, 0xb9, 0x86, 0x2c, 0x08, 0xd1, 0xad, 0x61, 0xb9, 0xe2, -0x91, 0xa8, 0x60, 0xdd, 0xda, 0x26, 0x7e, 0x0c, 0xc0, 0x50, 0x9e, 0xbe, -0x13, 0xb7, 0xdf, 0x9e, 0x91, 0x18, 0x87, 0xff, 0x7b, 0xc8, 0x4d, 0xf7, -0x44, 0x0a, 0x30, 0xa2, 0xbc, 0xc2, 0x57, 0xa2, 0xf7, 0x7c, 0x3e, 0x90, -0x18, 0xb8, 0xfe, 0x8c, 0x33, 0xa7, 0x51, 0x62, 0x6c, 0xcc, 0xea, 0x6b, -0xaf, 0xc5, 0xdc, 0xa4, 0xb8, 0x84, 0x32, 0x37, 0x55, 0x8a, 0x6e, 0x6d, -0x07, 0x1b, 0xba, 0x43, 0x43, 0xfa, 0xa9, 0x4b, 0x78, 0xc8, 0x89, 0xe3, -0xb7, 0x57, 0x4b, 0x4e, 0x8a, 0x4b, 0xcd, 0xba, 0xc0, 0x31, 0x22, 0x20, -0x04, 0x3d, 0x8a, 0x8a, 0x20, 0xa2, 0x02, 0xc1, 0x49, 0x20, 0xe1, 0x04, -0x12, 0xd7, 0x5c, 0x23, 0x90, 0x90, 0xd0, 0x26, 0x03, 0x24, 0xec, 0xd0, -0x68, 0x65, 0x9d, 0x23, 0x4c, 0x43, 0x3a, 0x21, 0x0a, 0x30, 0x70, 0xbd, -0xdf, 0x7e, 0xec, 0x58, 0x46, 0x6a, 0x4a, 0x42, 0xf5, 0xba, 0xc3, 0xb6, -0x3d, 0x1e, 0xc4, 0x15, 0xab, 0xa2, 0x43, 0xd9, 0x44, 0x05, 0xc6, 0x44, -0xde, 0x71, 0xd4, 0x06, 0xe5, 0xf9, 0x2d, 0x0e, 0x5a, 0x7f, 0x26, 0x39, -0xa7, 0x21, 0xf1, 0x76, 0xc2, 0x25, 0x54, 0xdf, 0x83, 0x10, 0x82, 0x84, -0x40, 0xd1, 0xd0, 0x4b, 0x5a, 0x38, 0xc6, 0xce, 0xed, 0xdb, 0x9d, 0x09, -0xf1, 0x29, 0xb5, 0x9a, 0x35, 0xdb, 0x17, 0xee, 0xe1, 0x52, 0x36, 0xf5, -0x8a, 0x28, 0x2a, 0xbc, 0xee, 0x6a, 0xf8, 0x25, 0x92, 0x72, 0x1a, 0xa2, -0x4b, 0x5c, 0x7f, 0xed, 0xb5, 0xd2, 0x97, 0x36, 0xe4, 0xb8, 0x84, 0xd9, -0x05, 0x2e, 0x1c, 0x43, 0x74, 0x0c, 0x1e, 0xe7, 0xc6, 0xd5, 0xab, 0x49, -0xcc, 0x28, 0xec, 0x3f, 0x36, 0xcc, 0x1d, 0x7c, 0x51, 0x54, 0x78, 0x25, -0x77, 0x3b, 0x27, 0x10, 0xd0, 0xd1, 0xbe, 0xff, 0x58, 0x2c, 0x4e, 0x37, -0xac, 0xbe, 0x8e, 0x4a, 0x03, 0x66, 0xd7, 0xb5, 0xe8, 0x12, 0x95, 0x25, -0x14, 0xf9, 0x77, 0x5f, 0x5d, 0x94, 0x02, 0x18, 0xc8, 0x81, 0xd8, 0x0c, -0x16, 0x2e, 0x58, 0xe0, 0x0a, 0x6d, 0x1c, 0x3d, 0x2b, 0x9c, 0x81, 0x11, -0x45, 0x85, 0x1d, 0xa2, 0xf7, 0x7c, 0x0e, 0xea, 0x44, 0x97, 0x49, 0x57, -0xb1, 0x92, 0xf3, 0x67, 0xcf, 0x96, 0x8a, 0x5a, 0x12, 0xf3, 0xa7, 0x2c, -0x4e, 0xa1, 0x08, 0x09, 0x5d, 0x94, 0x52, 0xdd, 0xd6, 0x79, 0xa8, 0xdf, -0xfc, 0xfa, 0xd7, 0x93, 0xc6, 0x8f, 0xe7, 0x61, 0x7b, 0xcd, 0x58, 0x15, -0xb6, 0x26, 0x29, 0x3b, 0xa8, 0x40, 0xd9, 0x0a, 0x03, 0x09, 0xaa, 0xc6, -0xf6, 0xaf, 0x5a, 0x95, 0xfc, 0x8e, 0x0a, 0x4b, 0x9d, 0xa7, 0x2e, 0xaf, -0x53, 0x38, 0xb8, 0x76, 0xe1, 0x90, 0x4e, 0x13, 0xae, 0x1c, 0x7a, 0xc3, -0xed, 0xd0, 0x74, 0x80, 0xc0, 0xe8, 0xb3, 0x64, 0x8f, 0x8b, 0x4a, 0xba, -0x75, 0x7d, 0xf7, 0x9d, 0x77, 0xc5, 0x7b, 0x2d, 0x31, 0x7f, 0x12, 0xe0, -0x54, 0x65, 0x2d, 0x4e, 0x76, 0x18, 0x88, 0x21, 0x2a, 0x44, 0x14, 0x0c, -0x8a, 0xd7, 0xf7, 0xbb, 0xd0, 0x0b, 0xae, 0xef, 0x15, 0xb7, 0x84, 0x67, -0xa5, 0xa9, 0x48, 0x40, 0x85, 0xcb, 0x81, 0xb0, 0x72, 0x6f, 0x9d, 0xd6, -0xbc, 0xc8, 0xb8, 0xf8, 0x18, 0x47, 0xb5, 0x94, 0xe4, 0x5a, 0xd9, 0x35, -0xf8, 0xa9, 0x9e, 0x96, 0x8a, 0xcc, 0x13, 0x9f, 0x5a, 0xbd, 0xcf, 0xb2, -0x3d, 0x7e, 0x63, 0x03, 0xd9, 0x29, 0x3e, 0x23, 0xb7, 0x56, 0x4e, 0xce, -0x7d, 0x67, 0xce, 0x10, 0x6c, 0x2f, 0x01, 0x1d, 0xe2, 0xaa, 0x13, 0xbf, -0x84, 0x10, 0x96, 0x1d, 0x12, 0xac, 0x9a, 0xe7, 0x18, 0x34, 0x6f, 0x49, -0x57, 0x7a, 0xed, 0xd5, 0x57, 0xdb, 0x36, 0x6f, 0x06, 0xf1, 0x0c, 0x5c, -0x73, 0x47, 0x80, 0x7b, 0x4a, 0x55, 0xbc, 0x3c, 0xec, 0x51, 0x01, 0xb9, -0x77, 0x9f, 0x75, 0x43, 0x8c, 0x23, 0xa6, 0x6e, 0x4e, 0xd6, 0xb0, 0x41, -0x83, 0xae, 0x5d, 0xb5, 0xea, 0xf0, 0xa1, 0x43, 0x8f, 0x3f, 0xf6, 0xd8, -0x63, 0xe7, 0xce, 0x9d, 0x38, 0x7e, 0x9c, 0x58, 0x8c, 0x3a, 0x79, 0x79, -0x14, 0xe7, 0x2b, 0xba, 0xfa, 0x90, 0x1f, 0xaf, 0x87, 0xc1, 0xdb, 0xf5, -0x1b, 0x95, 0x10, 0x1f, 0xbf, 0x71, 0xfd, 0x7a, 0xd5, 0x3d, 0x8d, 0x0d, -0x55, 0x20, 0x11, 0xd2, 0x5c, 0xc2, 0xa0, 0x79, 0x4b, 0x1c, 0xa1, 0xc4, -0x4a, 0x49, 0xef, 0xab, 0x47, 0x1e, 0x7e, 0x38, 0x2f, 0x3b, 0xdb, 0x99, -0xd7, 0x24, 0x0c, 0x3d, 0x18, 0x26, 0x54, 0xb0, 0xdf, 0x19, 0x7d, 0xdb, -0xa1, 0x2c, 0x41, 0x9d, 0xef, 0xb3, 0xb8, 0xc4, 0x11, 0x97, 0xd0, 0xb1, -0x6d, 0x9b, 0x87, 0xce, 0x9e, 0xc5, 0x75, 0x8f, 0xc1, 0x94, 0x27, 0x44, -0xce, 0xe1, 0xc0, 0x8d, 0x8f, 0xb1, 0xe8, 0xae, 0x93, 0x27, 0x6b, 0x54, -0xaf, 0x16, 0xeb, 0x4c, 0x27, 0x92, 0xcf, 0x27, 0x60, 0xc0, 0x82, 0xba, -0x4d, 0x5d, 0xce, 0x02, 0x4e, 0x99, 0x38, 0x11, 0x75, 0x42, 0x8c, 0x4e, -0x92, 0x62, 0x0a, 0xf5, 0x84, 0x01, 0x97, 0xb0, 0xcc, 0xca, 0x10, 0x93, -0x94, 0x94, 0xd2, 0xb9, 0x74, 0xea, 0x54, 0x1e, 0x7f, 0xcc, 0x2d, 0x0f, -0xf8, 0xb4, 0x6e, 0x21, 0x70, 0xb2, 0x4d, 0x54, 0xf0, 0xca, 0x21, 0xa0, -0x90, 0xf3, 0x57, 0x60, 0x2d, 0x4d, 0xc9, 0x69, 0x50, 0xb3, 0x5a, 0x3a, -0x65, 0xc2, 0x28, 0x41, 0x29, 0xe9, 0xa0, 0xec, 0x73, 0xe0, 0x5c, 0x2a, -0x88, 0xa1, 0x2f, 0xf1, 0x25, 0x1e, 0x37, 0x2c, 0xaa, 0x5d, 0xa7, 0x2e, -0x41, 0x1c, 0xb2, 0xff, 0xce, 0xa8, 0x04, 0x1e, 0x9f, 0x9c, 0xd1, 0x3c, -0xbf, 0xd1, 0x9b, 0x6f, 0xbe, 0x29, 0x7b, 0x09, 0x56, 0x1a, 0x05, 0x89, -0xd0, 0xd5, 0xb0, 0x3d, 0x94, 0x47, 0x10, 0xef, 0x1e, 0x9c, 0x50, 0x5c, -0x7b, 0x6c, 0x28, 0xd5, 0xd3, 0xd3, 0x0a, 0x8a, 0xa6, 0xe4, 0xee, 0x0c, -0xaf, 0xd6, 0xa1, 0xf6, 0x51, 0x11, 0x82, 0x5e, 0xbc, 0xf3, 0xc3, 0xae, -0xde, 0xcb, 0x03, 0xae, 0xb9, 0xee, 0x3a, 0xf6, 0x72, 0x3d, 0x43, 0x9a, -0x97, 0x8a, 0x18, 0x20, 0x79, 0x36, 0xe0, 0xe4, 0x17, 0xbf, 0xfc, 0x65, -0xbb, 0x16, 0x2d, 0x62, 0xe3, 0x93, 0x46, 0x17, 0x3f, 0x6a, 0x13, 0x15, -0xe0, 0x27, 0xbd, 0x5e, 0x6b, 0xb0, 0x44, 0x1d, 0x5e, 0xf6, 0x0b, 0xd0, -0x25, 0xea, 0x84, 0xae, 0x61, 0x57, 0x4d, 0x3d, 0x21, 0x90, 0x59, 0x29, -0x39, 0x4a, 0x0c, 0xb5, 0xb0, 0x8b, 0xae, 0x1d, 0xda, 0xc7, 0x26, 0xa6, -0x76, 0xd8, 0x1f, 0xa8, 0xc5, 0xc2, 0xe6, 0xb2, 0x57, 0xd0, 0x69, 0x61, -0x8d, 0x8a, 0xff, 0xf6, 0x9a, 0x7c, 0x45, 0x7a, 0x8c, 0xe3, 0x47, 0xcf, -0x3d, 0xa7, 0x9a, 0xc3, 0x82, 0x07, 0x31, 0x98, 0x4a, 0x69, 0x3d, 0xd1, -0x1d, 0x71, 0x2f, 0x6c, 0xda, 0xb0, 0x3e, 0x29, 0xd1, 0xd9, 0xeb, 0xf2, -0x4d, 0x76, 0xd6, 0xdd, 0xa5, 0xab, 0xcc, 0x5c, 0xcd, 0xd2, 0x5d, 0x31, -0x7f, 0x3e, 0xb9, 0xa6, 0xe2, 0x9d, 0x30, 0xa8, 0x13, 0x81, 0x10, 0x5f, -0x95, 0xbd, 0x56, 0x69, 0xde, 0x12, 0x70, 0xce, 0x9e, 0xb2, 0x7e, 0xed, -0x8d, 0x49, 0xce, 0xa4, 0x81, 0xab, 0x0e, 0xdb, 0x59, 0xb7, 0x90, 0x39, -0xc7, 0x0a, 0x15, 0x6c, 0x01, 0x65, 0x62, 0x66, 0xa1, 0x9b, 0x10, 0x95, -0xa0, 0x5a, 0xf7, 0x18, 0xdc, 0xa5, 0x6d, 0xab, 0x77, 0xdf, 0x79, 0xc7, -0xe0, 0x43, 0x50, 0x75, 0xf5, 0x24, 0x97, 0x00, 0x76, 0xf1, 0xf4, 0x53, -0x4f, 0xa5, 0x27, 0x27, 0x35, 0xec, 0x39, 0x36, 0xa3, 0xf8, 0x5f, 0x5e, -0x5f, 0x5e, 0xd1, 0x35, 0xc7, 0x28, 0x15, 0xd3, 0xae, 0x75, 0x4b, 0x4c, -0x31, 0x12, 0x63, 0x8c, 0x9c, 0xad, 0xab, 0x13, 0x55, 0x96, 0xac, 0x03, -0x9f, 0x98, 0x00, 0x43, 0xd4, 0x6e, 0x96, 0x6e, 0xdf, 0xee, 0xdd, 0x89, -0x09, 0x89, 0x79, 0x7d, 0xa6, 0x37, 0xdb, 0xf7, 0x0f, 0xaf, 0xeb, 0x16, -0x32, 0x27, 0xd8, 0xe7, 0x15, 0x95, 0xa8, 0x57, 0xb0, 0x37, 0x0f, 0xbf, -0xe1, 0xb6, 0x3e, 0xf3, 0xd7, 0xb7, 0x1c, 0x38, 0x35, 0xaf, 0xe3, 0x90, -0xf4, 0x96, 0xfd, 0x72, 0xdb, 0x0f, 0x6c, 0x33, 0x62, 0xee, 0x80, 0x15, -0x7b, 0x47, 0x6f, 0x39, 0xeb, 0xc1, 0xa8, 0xda, 0xa0, 0x75, 0xd7, 0xbe, -0x5d, 0x3a, 0x11, 0x22, 0x2f, 0x5d, 0xc4, 0xe1, 0x0c, 0xaa, 0x6e, 0x80, -0xca, 0xcc, 0x64, 0x8f, 0x67, 0xa7, 0x87, 0x99, 0xe4, 0x66, 0xa6, 0xa7, -0xd6, 0x6c, 0xe2, 0x55, 0xe7, 0xe6, 0x76, 0x49, 0x75, 0x9a, 0x3b, 0x63, -0x1d, 0xb7, 0x1d, 0x3b, 0x26, 0xa6, 0x58, 0xb3, 0x77, 0x22, 0x70, 0xe2, -0xab, 0xb2, 0x23, 0xe8, 0x0e, 0x6f, 0xf6, 0x94, 0xdb, 0x6f, 0xbb, 0xad, -0xa0, 0x41, 0x03, 0x97, 0xef, 0x62, 0xfe, 0x3a, 0xc7, 0x96, 0xf3, 0x21, -0x43, 0xf7, 0x9e, 0xcb, 0x92, 0x57, 0x71, 0x54, 0x34, 0xdc, 0xfe, 0xa7, -0xa2, 0x1b, 0x4e, 0x12, 0x91, 0xc6, 0x3c, 0xe3, 0x1c, 0x8e, 0xba, 0x59, -0x19, 0x0d, 0x72, 0xaa, 0xd7, 0xcf, 0xae, 0xde, 0x28, 0xb7, 0x46, 0xb5, -0x24, 0xe7, 0x85, 0xc9, 0x27, 0x64, 0x36, 0xed, 0xda, 0x7f, 0xed, 0xa9, -0xc6, 0x25, 0x16, 0x8a, 0x72, 0x56, 0x41, 0x97, 0xb6, 0x4d, 0x1a, 0x52, -0x24, 0x4f, 0xdc, 0x08, 0x22, 0xe4, 0x88, 0x81, 0x48, 0x0e, 0xb1, 0xa8, -0x20, 0x09, 0x20, 0x05, 0x15, 0xf5, 0xec, 0xee, 0xcc, 0xc8, 0x69, 0xb7, -0xeb, 0x53, 0xcf, 0xaf, 0xb6, 0xfb, 0xec, 0x35, 0xdc, 0x75, 0xee, 0x65, -0x97, 0xa1, 0xbe, 0x0b, 0xd8, 0x0c, 0xde, 0x89, 0x2a, 0x4b, 0xd0, 0xc1, -0x9a, 0x98, 0xc1, 0x4a, 0x4b, 0xed, 0xf4, 0xcc, 0x78, 0x47, 0x66, 0xb3, -0x1e, 0xe1, 0xc3, 0x2e, 0xaa, 0x38, 0x2a, 0xfa, 0x5c, 0x7d, 0x30, 0x3e, -0x2d, 0x2b, 0x39, 0x3e, 0x6e, 0xc1, 0x9c, 0xcb, 0xee, 0xb8, 0xe3, 0x8e, -0x47, 0x1f, 0x7d, 0x14, 0x57, 0x03, 0xaf, 0x81, 0x9f, 0xfb, 0xef, 0xbf, -0x7f, 0xdb, 0x2d, 0xb7, 0x4c, 0x1c, 0x3d, 0x92, 0x78, 0xb5, 0xe4, 0xea, -0xb5, 0x8b, 0xae, 0x3b, 0x66, 0x6e, 0x06, 0x97, 0xd7, 0x69, 0x48, 0xad, -0x8c, 0xe4, 0xb7, 0xde, 0x7a, 0x4b, 0x95, 0x5d, 0x52, 0xda, 0xb0, 0x94, -0x61, 0x15, 0x49, 0x00, 0xc0, 0x40, 0xdf, 0x37, 0x5c, 0x77, 0x6d, 0x7c, -0x6c, 0xfc, 0x10, 0x14, 0x74, 0xf7, 0x1b, 0x49, 0xa3, 0x1d, 0x7f, 0x8e, -0xab, 0x56, 0xa7, 0x49, 0xa3, 0x86, 0x2f, 0x3c, 0xff, 0x3c, 0x8c, 0x02, -0x26, 0xa3, 0xf3, 0x9f, 0xf0, 0xb3, 0x3b, 0x79, 0x4e, 0xf5, 0x16, 0xed, -0x02, 0xe9, 0x7a, 0x68, 0xbf, 0xde, 0xce, 0xac, 0x7a, 0x93, 0x0f, 0xbc, -0x1c, 0x7e, 0xbc, 0xe2, 0x27, 0x3f, 0xf9, 0x09, 0xaa, 0xa3, 0xb5, 0xbf, -0xa2, 0x52, 0xf4, 0x0a, 0x48, 0x30, 0xb9, 0x5e, 0x2b, 0x6c, 0x7f, 0xc5, -0x5b, 0xb7, 0xfe, 0xec, 0x67, 0x3f, 0xc3, 0x8e, 0x24, 0x4d, 0x7d, 0xc4, -0xd5, 0xc0, 0x67, 0x76, 0x6b, 0xa2, 0x0f, 0x6e, 0xb9, 0x79, 0x53, 0x7a, -0x7c, 0x4c, 0xbc, 0x33, 0xad, 0xef, 0xd2, 0xbd, 0x65, 0x2b, 0x6c, 0x9f, -0x6f, 0x3f, 0x6e, 0x21, 0xb0, 0x7f, 0xe5, 0xe5, 0x97, 0xcd, 0xe1, 0xab, -0x82, 0x0a, 0xb1, 0x33, 0x8a, 0xf5, 0xfd, 0xa9, 0x27, 0x9f, 0xe4, 0xe4, -0xa6, 0xfd, 0x26, 0x64, 0xbb, 0xef, 0x25, 0x37, 0x62, 0xf3, 0x59, 0xce, -0x19, 0x3d, 0x62, 0x84, 0x54, 0x4a, 0x8e, 0x04, 0xbb, 0x93, 0x3b, 0x60, -0x28, 0xa7, 0x1e, 0xda, 0xc5, 0xfa, 0x35, 0xd7, 0xb3, 0x2c, 0x83, 0xaf, -0x3f, 0x5e, 0x6d, 0xc7, 0xb7, 0xe1, 0x00, 0x0c, 0x3b, 0xbc, 0x02, 0x92, -0xaa, 0x14, 0x54, 0x8c, 0x58, 0x7f, 0x8f, 0x90, 0x20, 0xa4, 0x4f, 0xcf, -0x2b, 0x31, 0xad, 0x4a, 0x83, 0x1f, 0x69, 0xe7, 0xc3, 0xac, 0x00, 0x09, -0x7f, 0x22, 0x8b, 0xb2, 0x76, 0x76, 0x96, 0x23, 0x3e, 0x79, 0xc0, 0xb5, -0xc7, 0xb4, 0x58, 0xce, 0xf3, 0xfd, 0xaf, 0x2a, 0x66, 0x84, 0x53, 0x77, -0xdd, 0x29, 0x4a, 0x05, 0xc2, 0x92, 0x88, 0x4f, 0x02, 0x09, 0x95, 0x5b, -0xc3, 0x9f, 0x18, 0xf0, 0xe3, 0x8f, 0x3e, 0x6a, 0x54, 0x33, 0x27, 0xb5, -0x6e, 0x2b, 0x1a, 0x70, 0x59, 0xbe, 0xda, 0xf4, 0x6d, 0xdf, 0x74, 0x9d, -0xb1, 0x3a, 0x39, 0x21, 0x61, 0xc3, 0x4d, 0x37, 0xa1, 0x87, 0x30, 0x19, -0x29, 0xd5, 0xa1, 0x7c, 0x76, 0xc1, 0x12, 0x51, 0xaa, 0xfe, 0x38, 0xba, -0x76, 0x81, 0x5c, 0xfa, 0xe4, 0xe3, 0x8f, 0xb3, 0xce, 0x2d, 0xc6, 0x2e, -0x69, 0xba, 0x37, 0x2c, 0x74, 0x6e, 0x3b, 0x36, 0xa8, 0xca, 0x42, 0x45, -0xcf, 0x59, 0xd7, 0xa7, 0x27, 0x25, 0x6d, 0xdf, 0xb6, 0x8d, 0x0a, 0x45, -0x52, 0x46, 0x89, 0x99, 0xb0, 0x3d, 0x4b, 0x23, 0x1f, 0x3e, 0x48, 0x23, -0x1f, 0xf6, 0x6c, 0xfe, 0x7a, 0xfa, 0xd4, 0xa9, 0x9c, 0x6a, 0x99, 0x8e, -0xc4, 0xf4, 0xa1, 0x1b, 0xce, 0x34, 0x3f, 0xf0, 0xb5, 0x90, 0xf5, 0xd8, -0x0d, 0xa7, 0x78, 0xc0, 0x4d, 0x37, 0xad, 0xd5, 0x2b, 0x6b, 0x28, 0xaf, -0xb3, 0xc8, 0xc7, 0xc8, 0x54, 0xbc, 0x57, 0x86, 0x02, 0x5d, 0xd3, 0x27, -0x8e, 0xc7, 0xc9, 0x3d, 0x7a, 0xf3, 0x7d, 0x96, 0xa8, 0x80, 0x77, 0xd5, -0x6c, 0xd5, 0xa3, 0x66, 0x76, 0x8d, 0x67, 0x9e, 0x7e, 0x5a, 0x58, 0xaa, -0x28, 0x2a, 0x02, 0xb3, 0xaa, 0x4f, 0xca, 0xc1, 0x9d, 0xa1, 0xee, 0xbb, -0xa0, 0x20, 0x67, 0xdd, 0xcc, 0x94, 0xcc, 0x96, 0x45, 0x1d, 0xf7, 0xff, -0x29, 0x5c, 0x79, 0x85, 0xd1, 0x32, 0x2b, 0xca, 0x28, 0xe2, 0x4a, 0x05, -0xfb, 0xb6, 0x5b, 0x14, 0x8d, 0xcf, 0xad, 0x56, 0x8d, 0x12, 0xc5, 0x22, -0xae, 0xa8, 0x1a, 0x19, 0xe2, 0x6a, 0x90, 0xa2, 0xf3, 0x20, 0x04, 0x3e, -0x20, 0x7c, 0xe3, 0xe4, 0x1d, 0x77, 0x54, 0xcb, 0x48, 0x8f, 0x4b, 0xcb, -0x19, 0xb5, 0xfd, 0xa9, 0x96, 0x87, 0x5c, 0xde, 0xd6, 0x19, 0xb7, 0xbf, -0x93, 0x54, 0xa3, 0x7e, 0xbf, 0x6e, 0x5d, 0xd8, 0xd7, 0xcd, 0xb1, 0x18, -0x3a, 0x2a, 0x18, 0x04, 0xc1, 0xac, 0xa4, 0x78, 0x1b, 0xcf, 0x38, 0x60, -0x69, 0x89, 0xa5, 0x39, 0xa5, 0xf5, 0xf6, 0x5f, 0xc5, 0x25, 0xa6, 0x76, -0x6e, 0xdf, 0x0e, 0x94, 0x72, 0x32, 0xcb, 0x22, 0x6e, 0xbb, 0x08, 0x51, -0x27, 0xcc, 0xa0, 0x92, 0xca, 0x9c, 0xbc, 0x0e, 0x56, 0x63, 0xf4, 0xe0, -0x01, 0x31, 0xe9, 0x35, 0x27, 0xed, 0x7f, 0x31, 0xcc, 0x50, 0xa1, 0xf4, -0x8a, 0xaa, 0x82, 0x8a, 0xec, 0x26, 0x9d, 0x6a, 0xe7, 0x64, 0xd3, 0xfe, -0x47, 0x59, 0x7b, 0x54, 0x21, 0x7b, 0xe9, 0xfd, 0xa3, 0x3c, 0x71, 0xb0, -0x0e, 0x68, 0x94, 0xcd, 0x9b, 0xc8, 0xbf, 0x14, 0xbc, 0x4a, 0xd9, 0x0d, -0xc6, 0xec, 0x7b, 0x09, 0xca, 0x6e, 0x75, 0xeb, 0xb7, 0xd9, 0xed, 0x07, -0xa7, 0xc6, 0x38, 0x7e, 0xf9, 0x8b, 0x5f, 0x18, 0xb2, 0x1d, 0x54, 0x8c, -0x34, 0xf2, 0x0f, 0xc4, 0x2d, 0x7d, 0x80, 0x88, 0x7b, 0x05, 0x15, 0x9d, -0xa7, 0x5f, 0x63, 0x89, 0x8a, 0x61, 0xd7, 0xdf, 0x96, 0x98, 0x98, 0x74, -0xf9, 0xbc, 0xb9, 0x34, 0x32, 0x05, 0xa5, 0x00, 0x49, 0x44, 0xb2, 0x88, -0x45, 0x85, 0x6c, 0x2b, 0x12, 0x00, 0xb2, 0xe1, 0xa6, 0xb5, 0x2c, 0xdd, -0xf0, 0x75, 0xa7, 0xa2, 0xa8, 0x70, 0xdf, 0x6f, 0xcf, 0x6b, 0x9b, 0x4a, -0x1b, 0x27, 0x64, 0x17, 0x14, 0xd6, 0xce, 0xce, 0x7e, 0xf9, 0xa5, 0x97, -0x70, 0x95, 0x88, 0x5b, 0x40, 0x12, 0xa0, 0x95, 0x5d, 0x55, 0xb2, 0x61, -0x54, 0xb3, 0x12, 0x91, 0xac, 0xf0, 0x2b, 0x61, 0xc3, 0x4d, 0xaf, 0x55, -0x30, 0xee, 0xd0, 0x6b, 0x10, 0x77, 0xc3, 0x49, 0xab, 0xe3, 0x1c, 0x31, -0xc7, 0x8f, 0x1d, 0x95, 0x5a, 0x7d, 0x7a, 0x28, 0xab, 0x2e, 0x03, 0x70, -0x21, 0x12, 0x1a, 0xa2, 0x11, 0x41, 0x1c, 0xf5, 0xfb, 0x4d, 0x4d, 0x2d, -0xfe, 0xce, 0xfc, 0x76, 0x7b, 0x5d, 0x76, 0x43, 0x72, 0x42, 0xe2, 0xf6, -0xe2, 0x62, 0xa2, 0x0c, 0x81, 0x10, 0xa8, 0x10, 0xa5, 0x22, 0x92, 0x51, -0xc1, 0xb3, 0xb3, 0xaa, 0x2e, 0xc7, 0xc5, 0x31, 0x3c, 0x9b, 0x8e, 0x5e, -0x4b, 0xf7, 0xa6, 0x16, 0x7f, 0x1f, 0xf2, 0xc0, 0xd0, 0x84, 0xa2, 0x2a, -0xc7, 0x2b, 0x5a, 0x0d, 0x9c, 0x96, 0x9d, 0x99, 0x79, 0xe6, 0xde, 0x7b, -0x15, 0x2a, 0xf4, 0xd8, 0x3b, 0x61, 0xdf, 0x52, 0x0a, 0x52, 0xf1, 0x0d, -0x5e, 0x0f, 0x1a, 0xf0, 0xb6, 0x2d, 0x5b, 0x78, 0xae, 0xb4, 0x3a, 0xcd, -0x78, 0x3d, 0x6d, 0x6f, 0x7e, 0xc1, 0x99, 0x52, 0x7d, 0xcc, 0xb0, 0x21, -0xe6, 0xba, 0xdf, 0x4a, 0x65, 0x14, 0x37, 0x2d, 0xc0, 0xc3, 0x57, 0x5d, -0x37, 0x2b, 0x3d, 0xa3, 0x79, 0x9f, 0xfa, 0xbb, 0xbf, 0x32, 0xbf, 0xda, -0xd6, 0x03, 0xa7, 0xa4, 0x26, 0xc4, 0x3d, 0xfc, 0xd0, 0x43, 0x48, 0x74, -0x12, 0xf8, 0xa4, 0x47, 0x8c, 0x07, 0x57, 0x6a, 0x0f, 0x89, 0xd1, 0x64, -0x01, 0xc5, 0xe7, 0x43, 0xdd, 0x30, 0xd6, 0xbc, 0xe5, 0x9c, 0xad, 0xf5, -0x77, 0x5d, 0x54, 0xea, 0x42, 0x18, 0x1b, 0x55, 0x19, 0x15, 0xbd, 0x66, -0x5d, 0x9f, 0x91, 0x9c, 0xbc, 0x7b, 0x67, 0x89, 0xa0, 0x02, 0xc2, 0x35, -0x53, 0xb6, 0x01, 0x1b, 0x12, 0xe0, 0x04, 0x36, 0x36, 0xaf, 0x5f, 0xc7, -0xa3, 0x25, 0xd7, 0x2a, 0xe8, 0xb0, 0xed, 0xf5, 0x6a, 0x2d, 0xfb, 0xd4, -0xce, 0xaa, 0xfe, 0xa7, 0x3f, 0xfe, 0xd1, 0xc0, 0x28, 0x14, 0x2a, 0x44, -0x06, 0x40, 0x6f, 0xf9, 0xe0, 0x27, 0x3f, 0xe9, 0xd4, 0xa2, 0x69, 0x52, -0x9d, 0xd6, 0xad, 0xf7, 0xff, 0xd5, 0xf4, 0x52, 0xcf, 0xe7, 0x36, 0xef, -0x9c, 0x16, 0x1f, 0xfb, 0xd6, 0x9b, 0x6f, 0x22, 0xd1, 0xa1, 0xa8, 0xc0, -0x5e, 0xa2, 0xa8, 0x10, 0x9f, 0x0f, 0xa8, 0x38, 0x7d, 0x8f, 0xcb, 0x60, -0x98, 0xd7, 0xe7, 0xd2, 0x56, 0x7b, 0x7d, 0x88, 0x3b, 0xae, 0xa2, 0xc8, -0xa9, 0xca, 0xa8, 0x18, 0xb9, 0xc1, 0xb5, 0xd0, 0x93, 0x2f, 0x64, 0x2f, -0xc8, 0xde, 0xac, 0x24, 0x28, 0x95, 0xd0, 0x23, 0x94, 0xad, 0xb0, 0xa1, -0x58, 0x07, 0x1b, 0x58, 0xc9, 0xb6, 0x6d, 0x88, 0x52, 0x49, 0xb5, 0x5b, -0xe4, 0x76, 0x9b, 0x90, 0x91, 0x96, 0x7e, 0xcf, 0xdd, 0x77, 0xab, 0xab, -0xd4, 0x4e, 0x2c, 0x17, 0x8a, 0x0c, 0x80, 0x44, 0x84, 0x57, 0xa4, 0x5f, -0xd7, 0xc2, 0x84, 0x9c, 0xfc, 0xc2, 0x03, 0x7f, 0x36, 0xa3, 0xa2, 0x56, -0xa7, 0xc1, 0x69, 0x09, 0xf1, 0x4f, 0x3f, 0xf9, 0xa4, 0x8e, 0x52, 0xee, -0x18, 0xd2, 0xa9, 0x76, 0x81, 0x30, 0x25, 0x15, 0x13, 0xc5, 0x7b, 0xf9, -0xf9, 0xcf, 0x7e, 0xd6, 0xbb, 0x4b, 0xa1, 0xc3, 0x99, 0xd9, 0x61, 0x8f, -0xb5, 0x5d, 0xbb, 0x8a, 0x02, 0xc0, 0x52, 0x92, 0xaf, 0xca, 0xa8, 0x20, -0xe2, 0x28, 0xbe, 0x46, 0xfd, 0x82, 0xc6, 0x8d, 0x70, 0xc3, 0xa1, 0xdd, -0x4a, 0x4e, 0x8f, 0xb2, 0x84, 0x8a, 0xba, 0xac, 0x1f, 0x0a, 0x1e, 0x22, -0x59, 0x71, 0x1c, 0xdc, 0xb7, 0x2f, 0x39, 0x31, 0x21, 0x21, 0xa7, 0x31, -0xf0, 0x58, 0x30, 0x67, 0x8e, 0x39, 0x59, 0x54, 0x99, 0xa1, 0x24, 0x93, -0x06, 0xe3, 0xec, 0xc8, 0x41, 0xfd, 0x1d, 0x58, 0xb1, 0x76, 0xff, 0xc8, -0xfc, 0x16, 0x3b, 0x8c, 0x5f, 0x94, 0x92, 0x90, 0x70, 0xc7, 0xed, 0xb7, -0xe3, 0xac, 0x90, 0x6c, 0x0a, 0xe1, 0x15, 0x11, 0x8e, 0x0a, 0xd9, 0x53, -0xe0, 0xb4, 0x57, 0xcc, 0x9d, 0x03, 0x39, 0x4d, 0xd8, 0xfd, 0x4c, 0x28, -0x01, 0x20, 0xe4, 0x50, 0xc1, 0xe2, 0x76, 0x9b, 0xe9, 0x72, 0x9a, 0x2e, -0xba, 0xe2, 0x0a, 0xc9, 0xff, 0x14, 0x85, 0x5b, 0x79, 0xe2, 0x74, 0x2a, -0x57, 0xf0, 0x50, 0x1e, 0x3a, 0xe1, 0x03, 0xc7, 0x8f, 0x1d, 0x4b, 0x49, -0x4e, 0x66, 0x90, 0xee, 0xdd, 0xba, 0x99, 0xc9, 0x57, 0xed, 0x76, 0xd0, -0x37, 0x0a, 0x09, 0x72, 0xda, 0xbc, 0x79, 0x73, 0x39, 0x39, 0xa7, 0xeb, -0xb8, 0x2e, 0x07, 0x8c, 0xa6, 0xf7, 0x01, 0x8b, 0x8b, 0x93, 0x13, 0x9c, -0x84, 0x99, 0xe0, 0x4f, 0x14, 0x88, 0x8a, 0xea, 0x1f, 0xc9, 0xa8, 0x50, -0x0e, 0x9f, 0x4f, 0x3e, 0xfe, 0xb8, 0x67, 0xa7, 0x8e, 0xb1, 0xd5, 0xea, -0xb5, 0xdb, 0xf3, 0xc7, 0x08, 0x42, 0x05, 0xfb, 0x68, 0x05, 0xfb, 0x2b, -0x58, 0x5c, 0x42, 0x9b, 0x92, 0x6a, 0x35, 0x75, 0xc6, 0x39, 0x76, 0xef, -0xdc, 0x29, 0x2e, 0x02, 0xdd, 0x9d, 0x6c, 0x69, 0xfc, 0x31, 0xf3, 0x90, -0x07, 0xce, 0x9c, 0x69, 0xdb, 0xa2, 0xc5, 0x94, 0x09, 0x13, 0xcc, 0xd2, -0x82, 0x21, 0x02, 0x94, 0xed, 0xff, 0x9d, 0x77, 0xde, 0x19, 0x3b, 0x7c, -0x18, 0x4f, 0xda, 0x60, 0xda, 0x86, 0x91, 0x25, 0xcf, 0xea, 0x11, 0x6f, -0x63, 0x36, 0x9e, 0x72, 0x26, 0x26, 0xaf, 0x58, 0xba, 0x44, 0xcc, 0xb2, -0x6c, 0x90, 0x11, 0xe8, 0xd5, 0xd6, 0xd7, 0x50, 0xf6, 0x1d, 0xd9, 0x50, -0x8e, 0x1e, 0x39, 0xe2, 0x72, 0x6f, 0x8f, 0x59, 0x98, 0x53, 0x12, 0xfa, -0x79, 0x79, 0x55, 0x59, 0x82, 0x92, 0x2d, 0x67, 0xc0, 0xf5, 0x27, 0x62, -0x93, 0x32, 0x32, 0x52, 0x92, 0xb0, 0xfd, 0x89, 0x7b, 0x5b, 0xbc, 0x16, -0xaa, 0x82, 0x86, 0x1d, 0xc9, 0x98, 0xee, 0xbd, 0xc4, 0x4e, 0x79, 0x0d, -0xe9, 0x91, 0x9e, 0x26, 0x08, 0x6c, 0x05, 0x8d, 0x1a, 0x39, 0x62, 0x9c, -0x54, 0xa8, 0x4f, 0xab, 0xd3, 0xbc, 0xf7, 0x9c, 0x35, 0x82, 0x8d, 0xe6, -0xfb, 0xbf, 0x8a, 0x4f, 0x4c, 0xeb, 0xd7, 0xb3, 0x87, 0xa8, 0xfe, 0x32, -0x87, 0x08, 0x37, 0xcb, 0xb2, 0x02, 0xac, 0xc3, 0x2f, 0x7f, 0xfe, 0xf3, -0xb6, 0x2d, 0x9a, 0x51, 0x14, 0x62, 0x5c, 0xf1, 0x23, 0x21, 0xcf, 0x28, -0xa0, 0x3a, 0xaf, 0xa8, 0xa0, 0x1f, 0x3d, 0x22, 0x63, 0xa5, 0xf8, 0xb6, -0x65, 0x7d, 0xc9, 0x05, 0xed, 0x7f, 0xcd, 0x61, 0x80, 0x91, 0x95, 0x96, -0x72, 0xef, 0xe9, 0xd3, 0xc8, 0x51, 0x12, 0xbe, 0x11, 0xac, 0x5c, 0x50, -0x61, 0x17, 0x22, 0x09, 0xa8, 0x66, 0x3f, 0x84, 0x99, 0x14, 0xf5, 0xea, -0x31, 0x6e, 0xd8, 0x90, 0x7a, 0xd9, 0x59, 0x78, 0x30, 0x52, 0x72, 0x1b, -0x4d, 0x3b, 0x84, 0x5b, 0xf0, 0xbf, 0x19, 0x4d, 0xbb, 0xd7, 0xcd, 0xcd, -0x79, 0xe7, 0xad, 0xb7, 0x0c, 0x1a, 0x8e, 0x1d, 0x64, 0x86, 0xd3, 0x39, -0x06, 0x1f, 0xe8, 0xfa, 0x1b, 0x5d, 0xd1, 0xf5, 0x03, 0x96, 0xec, 0x08, -0x93, 0x60, 0x72, 0xfb, 0xa8, 0xa8, 0x14, 0x09, 0x4a, 0x80, 0x41, 0x26, -0x50, 0xff, 0xab, 0x0f, 0xc7, 0x3b, 0x53, 0xa9, 0x4b, 0xf0, 0xe8, 0xc3, -0x0f, 0xab, 0xca, 0x7c, 0xc1, 0x12, 0x60, 0x74, 0x39, 0x4a, 0x0c, 0xbb, -0x12, 0x48, 0xc2, 0x8d, 0xd0, 0x67, 0x56, 0x2e, 0x5d, 0xca, 0x2a, 0x55, -0x6b, 0xd5, 0x8f, 0x99, 0xd4, 0x9f, 0xb6, 0x3e, 0x29, 0x36, 0x76, 0xdb, -0xe6, 0xcd, 0x51, 0xff, 0x1d, 0x8b, 0x26, 0x5e, 0xd4, 0x47, 0x1e, 0x7e, -0x28, 0x3d, 0xd6, 0x91, 0x56, 0xb7, 0x45, 0x8b, 0x83, 0xff, 0x0c, 0x07, -0x46, 0x61, 0x9f, 0x57, 0x20, 0xd3, 0x57, 0x22, 0x2a, 0x58, 0xeb, 0x26, -0xbb, 0xfe, 0xda, 0x7f, 0xc5, 0x81, 0xf8, 0x78, 0x67, 0xc3, 0x5a, 0x79, -0x78, 0xa0, 0x95, 0x3d, 0x4a, 0x64, 0x98, 0x00, 0xb7, 0x61, 0xd9, 0xf9, -0x24, 0x84, 0x16, 0xa4, 0xe9, 0xce, 0xf2, 0x0b, 0x41, 0x56, 0x7f, 0x99, -0x77, 0xd9, 0x6c, 0x80, 0xd1, 0x74, 0xe1, 0xa1, 0xf6, 0xc5, 0xaf, 0xf1, -0x61, 0x70, 0xff, 0xa2, 0xaf, 0xbf, 0xfa, 0x2a, 0x2a, 0x3e, 0xb1, 0x02, -0xef, 0xbc, 0xfd, 0x76, 0xa3, 0x5a, 0x79, 0x89, 0xc9, 0x19, 0xae, 0x18, -0x7b, 0x1b, 0xf1, 0x0a, 0xa1, 0x71, 0x8e, 0x89, 0x57, 0xb0, 0x39, 0x96, -0x89, 0x83, 0x12, 0x09, 0xaa, 0xd2, 0x51, 0xe1, 0x02, 0xc6, 0xee, 0x2f, -0x8b, 0x96, 0xee, 0x66, 0xc2, 0xcd, 0x1a, 0x36, 0x78, 0xf1, 0x85, 0x17, -0xa4, 0x29, 0x44, 0xb0, 0x02, 0x2e, 0x14, 0x30, 0x54, 0xb3, 0x5d, 0x09, -0xb2, 0x92, 0x6a, 0x20, 0xcf, 0xff, 0xe8, 0x47, 0x8d, 0x6a, 0xe6, 0xa6, -0xb7, 0x19, 0xd8, 0xf9, 0xf0, 0xff, 0xd4, 0xec, 0x7f, 0x99, 0xab, 0xaf, -0xd7, 0x35, 0xd7, 0x70, 0x42, 0x24, 0x5b, 0x9f, 0xd8, 0x44, 0xb0, 0xc5, -0xf5, 0xea, 0xda, 0xc5, 0xe1, 0x88, 0x29, 0x58, 0x78, 0xb0, 0xe5, 0xa1, -0xb0, 0xc8, 0xac, 0x10, 0x60, 0x87, 0x10, 0x2a, 0x98, 0x2e, 0x65, 0xea, -0xfa, 0x2d, 0xde, 0xce, 0x9c, 0xdb, 0xb7, 0x6c, 0xf1, 0xce, 0xdb, 0xef, -0x04, 0xdd, 0x36, 0xaa, 0x63, 0x43, 0x02, 0x49, 0xc4, 0x59, 0x4e, 0xdc, -0x78, 0xcf, 0xce, 0x85, 0xb1, 0xb9, 0x4d, 0x3a, 0x1f, 0xfe, 0x75, 0xe1, -0xde, 0x8f, 0xe3, 0x6b, 0x36, 0x6f, 0x96, 0xdf, 0xf0, 0xa3, 0x0f, 0x3f, -0x8c, 0x70, 0x54, 0x48, 0x95, 0xb4, 0x9a, 0xfd, 0x66, 0xb5, 0xdb, 0xf2, -0x72, 0x93, 0xf9, 0x7b, 0x87, 0xdd, 0x74, 0x4f, 0xb3, 0xfd, 0x16, 0x91, -0x32, 0xa1, 0xc1, 0x1f, 0x74, 0x46, 0xa7, 0xa1, 0x82, 0xf4, 0x66, 0x82, -0x41, 0xab, 0x2e, 0xaf, 0x90, 0xc5, 0x25, 0xa9, 0xa8, 0xdf, 0xc2, 0xcd, -0x4c, 0xbb, 0x47, 0x61, 0x21, 0x11, 0xdd, 0x2a, 0xe6, 0x22, 0x40, 0x21, -0xca, 0xb2, 0x4e, 0x9e, 0x08, 0x54, 0x02, 0x8f, 0x59, 0xd3, 0xa7, 0x73, -0xd3, 0xdc, 0x6e, 0xe3, 0x5b, 0x5d, 0xff, 0x50, 0x4a, 0xe3, 0xce, 0xb9, -0x19, 0xa9, 0xaf, 0xbc, 0xf4, 0x52, 0x10, 0x6f, 0x1a, 0x5a, 0x43, 0xc9, -0xf6, 0x41, 0xa7, 0x0e, 0xd6, 0xc4, 0x59, 0xbd, 0x4e, 0x52, 0x56, 0x9d, -0xb8, 0x38, 0x67, 0x7c, 0x42, 0x4a, 0x52, 0xf5, 0x5a, 0x5d, 0xc7, 0xce, -0x29, 0x9b, 0x11, 0x59, 0xbe, 0x21, 0xa4, 0xe5, 0x02, 0xb9, 0xd0, 0xe2, -0x15, 0xb2, 0x04, 0x18, 0x3a, 0xfa, 0x2e, 0xd8, 0xc0, 0xcc, 0x47, 0x0c, -0x1a, 0x88, 0x49, 0x2a, 0x58, 0x42, 0x94, 0x01, 0x18, 0xca, 0x36, 0x25, -0x32, 0x15, 0x62, 0xe4, 0xcc, 0x69, 0x53, 0x29, 0xa0, 0x90, 0x10, 0x9f, -0x84, 0x55, 0xea, 0xea, 0x65, 0xcb, 0x22, 0x96, 0x51, 0xb0, 0x50, 0x82, -0x0a, 0x38, 0xe9, 0xe3, 0xe7, 0xce, 0x0d, 0xee, 0xd7, 0x67, 0xdc, 0xb0, -0x61, 0x1b, 0xd6, 0xae, 0x59, 0xb5, 0x6c, 0x69, 0x9f, 0x2e, 0x85, 0x29, -0xf1, 0x71, 0xce, 0xcc, 0xdc, 0xf1, 0x7b, 0x9f, 0x2d, 0x17, 0x7a, 0xad, -0x18, 0xd5, 0xc5, 0x0a, 0x15, 0x50, 0x5a, 0x69, 0x3d, 0xa8, 0xaa, 0xa3, -0x57, 0xe8, 0xab, 0xdc, 0xf5, 0xd0, 0xe7, 0xd5, 0x5a, 0xf6, 0x4d, 0x74, -0x38, 0x08, 0xbf, 0x29, 0x0f, 0x54, 0xa8, 0x17, 0x2f, 0xd8, 0x50, 0x07, -0x89, 0x4d, 0x57, 0x2e, 0x58, 0xf0, 0xf8, 0xa3, 0x8f, 0x02, 0x95, 0xd0, -0xda, 0xdd, 0x83, 0x3e, 0x5b, 0xdd, 0xa2, 0xad, 0xea, 0xcd, 0x11, 0x60, -0x7f, 0xf3, 0x86, 0x0d, 0xa9, 0x71, 0x8e, 0xd4, 0x5a, 0x05, 0x4d, 0x76, -0x9b, 0x23, 0x2c, 0x43, 0x84, 0x6f, 0xd8, 0xe7, 0x15, 0x84, 0xe8, 0x55, -0xbc, 0x6f, 0xdb, 0x72, 0xbf, 0x41, 0x88, 0xea, 0x7f, 0x55, 0x89, 0x2b, -0x88, 0xa3, 0x73, 0x21, 0xbe, 0xb9, 0x0a, 0x08, 0xbb, 0x50, 0xfe, 0xf2, -0xa0, 0xd3, 0x56, 0x48, 0x0f, 0xa8, 0x5b, 0xb4, 0x05, 0x18, 0xe2, 0xda, -0x5a, 0xb5, 0x72, 0xa5, 0xeb, 0xed, 0x4c, 0xb9, 0x2a, 0x54, 0x81, 0x61, -0x5f, 0xaf, 0xa8, 0x3a, 0xa8, 0xe8, 0xbf, 0xf2, 0x80, 0x2b, 0xb8, 0xa0, -0xa0, 0xc9, 0x1b, 0xaf, 0xbd, 0xa6, 0xa2, 0x68, 0x23, 0x59, 0x9e, 0xa9, -0x44, 0x68, 0x19, 0x80, 0x41, 0x64, 0x00, 0x4e, 0x1e, 0xb2, 0xb2, 0x7a, -0x74, 0xee, 0xe4, 0x48, 0x48, 0x19, 0xb5, 0xe9, 0x74, 0x48, 0x96, 0x4e, -0x0b, 0x39, 0x54, 0xe0, 0xd1, 0x73, 0xd6, 0x6c, 0x9a, 0x57, 0xbd, 0xda, -0xc3, 0x67, 0xcf, 0xaa, 0xcc, 0xe9, 0x48, 0x0e, 0xd1, 0xab, 0x44, 0x48, -0xc8, 0xad, 0x0d, 0xb1, 0x64, 0x02, 0x8c, 0x47, 0x1f, 0x7a, 0x08, 0xfb, -0x75, 0xcb, 0x51, 0x0b, 0x42, 0x32, 0x2c, 0x2a, 0xe4, 0x50, 0xd1, 0x73, -0xc1, 0xcd, 0xcc, 0x79, 0xe1, 0xe5, 0x97, 0xab, 0xcc, 0xe9, 0x48, 0xae, -0x27, 0x50, 0xe9, 0x90, 0x50, 0x0a, 0x98, 0x5e, 0xa1, 0x54, 0xba, 0x84, -0x51, 0xe1, 0x97, 0x18, 0xfe, 0xf6, 0xfb, 0xcc, 0x99, 0x2a, 0x55, 0x5e, -0xbb, 0xb0, 0x83, 0x0a, 0xa0, 0x8f, 0xbf, 0xa6, 0x2a, 0x48, 0x50, 0x34, -0x52, 0xa1, 0xb9, 0x4e, 0x83, 0xda, 0xb5, 0xe8, 0x47, 0x81, 0x62, 0xc7, -0xea, 0x47, 0x78, 0xe4, 0x45, 0x55, 0x40, 0x85, 0x62, 0x17, 0x7a, 0x33, -0x24, 0x62, 0x02, 0xae, 0x5e, 0xe6, 0x8a, 0x94, 0x19, 0xb7, 0x25, 0x04, -0x7b, 0xbe, 0x58, 0xa1, 0xc2, 0x68, 0x83, 0xaa, 0x3a, 0xa8, 0x18, 0xbd, -0xc3, 0x55, 0x8d, 0x6b, 0xec, 0xc8, 0x91, 0x84, 0x9f, 0x48, 0xba, 0x85, -0x42, 0x45, 0x15, 0xa1, 0x8f, 0x88, 0x9d, 0x86, 0x41, 0xc1, 0x20, 0xf2, -0x40, 0x72, 0x56, 0xfb, 0x5c, 0x7e, 0x73, 0xe8, 0x99, 0x68, 0xbd, 0xa2, -0x02, 0x1b, 0x6d, 0xd5, 0x41, 0xc5, 0xc0, 0xa5, 0x25, 0x94, 0xee, 0xbb, -0x71, 0xcd, 0x1a, 0x32, 0xa7, 0xa5, 0xea, 0x47, 0x84, 0x67, 0xc3, 0x55, -0x29, 0x10, 0x2a, 0x60, 0x48, 0x1e, 0x3c, 0x61, 0x32, 0x35, 0xd3, 0x93, -0x1b, 0xf4, 0x9b, 0x16, 0x7a, 0x65, 0x36, 0x43, 0x0b, 0x15, 0xdd, 0x26, -0xcc, 0xaf, 0x91, 0x91, 0x41, 0xd5, 0x8f, 0x68, 0x8e, 0x68, 0x95, 0xc2, -0x83, 0x9a, 0x0c, 0xc0, 0x50, 0x95, 0xde, 0xdf, 0x7b, 0xf7, 0x5d, 0x0a, -0xc2, 0x27, 0x37, 0xee, 0xd2, 0x6c, 0xdf, 0xdf, 0x43, 0x8c, 0x5d, 0xd8, -0x47, 0x05, 0xe6, 0xb6, 0x4a, 0xf7, 0x57, 0xb4, 0xee, 0x3e, 0xb0, 0x76, -0x4e, 0x0e, 0xe9, 0x72, 0xc4, 0xa5, 0x48, 0x3d, 0xf0, 0x0a, 0x70, 0x56, -0x54, 0x4d, 0xfa, 0xab, 0x9a, 0xb3, 0x12, 0x76, 0x21, 0x95, 0xde, 0xe1, -0xe7, 0x83, 0xfa, 0xf4, 0x74, 0x64, 0xd4, 0xe9, 0x74, 0x20, 0xd4, 0xfa, -0x83, 0x85, 0x16, 0x2a, 0x1a, 0x36, 0x6d, 0xdd, 0xb8, 0x6e, 0x6d, 0xc2, -0x9f, 0x08, 0xd7, 0x8b, 0x66, 0x4e, 0x57, 0x59, 0x60, 0xa8, 0x4a, 0xef, -0x33, 0xa6, 0x4c, 0x82, 0xc0, 0x26, 0xec, 0x7d, 0x2e, 0xa4, 0x78, 0xc5, -0x7f, 0xf4, 0xdd, 0x5f, 0x45, 0x07, 0x96, 0xd1, 0xb6, 0x95, 0x5e, 0x51, -0x15, 0x78, 0x45, 0x5e, 0xdd, 0x46, 0xed, 0x5a, 0x36, 0x27, 0x86, 0x11, -0x9b, 0x18, 0x56, 0x0e, 0x84, 0xd7, 0x60, 0x25, 0x1e, 0x55, 0x4d, 0x0a, -0x0b, 0xc5, 0x59, 0xa9, 0x6c, 0x24, 0x38, 0xf9, 0xbc, 0xd9, 0x33, 0xa1, -0xb0, 0x9e, 0x37, 0x3d, 0x18, 0x52, 0xa8, 0x28, 0x13, 0x49, 0x2e, 0xa8, -0x90, 0x12, 0xf4, 0xa5, 0x71, 0x50, 0x55, 0x0a, 0x15, 0xa9, 0x19, 0xd9, -0xfd, 0x7b, 0xf7, 0xa2, 0xcb, 0x06, 0xf9, 0x1e, 0x51, 0x54, 0x54, 0x4d, -0xcc, 0xe8, 0xa8, 0x98, 0x3b, 0xcb, 0x85, 0x8a, 0xe6, 0x57, 0x87, 0x5a, -0xf1, 0x59, 0x93, 0x04, 0x65, 0x8d, 0x0a, 0x24, 0x96, 0xaa, 0xc0, 0x2b, -0x12, 0x93, 0x32, 0x06, 0xf5, 0xeb, 0xcb, 0x4c, 0x14, 0x2a, 0xa2, 0x7a, -0x45, 0x55, 0xc3, 0x86, 0xa0, 0x02, 0x33, 0x14, 0xc6, 0xd9, 0x79, 0xb3, -0x67, 0xb9, 0x78, 0xc5, 0xba, 0x10, 0xe6, 0x15, 0xef, 0xbd, 0xf7, 0x1e, -0x12, 0x7b, 0x95, 0x46, 0x45, 0x4a, 0x66, 0x76, 0x87, 0x56, 0x2d, 0xa3, -0xa8, 0xa8, 0x6a, 0x48, 0x30, 0x04, 0xe1, 0x2b, 0x54, 0xcc, 0x99, 0xe1, -0x4a, 0x4a, 0x99, 0xb8, 0x3b, 0x84, 0xa2, 0xca, 0xff, 0x63, 0xc8, 0xc5, -0xf3, 0x82, 0x0a, 0xe4, 0x96, 0x4a, 0xb7, 0x41, 0xe5, 0xd5, 0x6b, 0xd2, -0xb8, 0x6e, 0x1d, 0x5d, 0x82, 0x8a, 0xf2, 0x8a, 0x2a, 0x85, 0x10, 0xdd, -0x65, 0x41, 0xdd, 0xd1, 0x41, 0xbd, 0x7b, 0x38, 0xaa, 0xd5, 0x2b, 0x3c, -0x18, 0x42, 0x36, 0x28, 0x4f, 0xa8, 0x38, 0x72, 0xe4, 0x48, 0x32, 0x15, -0xf7, 0xf8, 0x87, 0x5e, 0x81, 0xbf, 0xac, 0x8a, 0x48, 0x50, 0xf9, 0x1d, -0x7a, 0xd7, 0xc9, 0xcd, 0xa1, 0x46, 0xb2, 0xd2, 0xb6, 0xa3, 0xa8, 0xa8, -0x82, 0xa8, 0x10, 0xcb, 0xec, 0x4b, 0x2f, 0xbe, 0x58, 0x3b, 0x23, 0xa5, -0x41, 0xd1, 0x25, 0xcd, 0x43, 0xae, 0x15, 0xb7, 0xb6, 0xfd, 0xeb, 0xbc, -0xa2, 0x8a, 0xa2, 0xa2, 0x5d, 0xff, 0x71, 0x35, 0xb3, 0xaa, 0xbf, 0xf8, -0xe2, 0x8b, 0xd1, 0x9a, 0x96, 0x55, 0x0a, 0x0c, 0x6a, 0x32, 0x7a, 0x35, -0xeb, 0x53, 0x77, 0xdd, 0x05, 0x75, 0x15, 0x2d, 0xdb, 0x55, 0x6d, 0x87, -0x45, 0x33, 0x90, 0x2a, 0x6c, 0x95, 0x2a, 0x63, 0x99, 0x55, 0xa8, 0xa0, -0x42, 0x9f, 0x05, 0x2a, 0xaa, 0x82, 0x04, 0xd5, 0x6d, 0xdc, 0xfc, 0xec, -0x8c, 0x8c, 0xfb, 0xef, 0xbb, 0x4f, 0x79, 0xf1, 0xa2, 0x11, 0x1f, 0x55, -0x07, 0x1e, 0xe2, 0xd8, 0x16, 0x46, 0x81, 0xaa, 0xbd, 0x7c, 0xf1, 0x22, -0x50, 0x31, 0xbe, 0xf8, 0xe1, 0x2a, 0x0c, 0x00, 0x73, 0xf4, 0xae, 0x8f, -0x12, 0x54, 0x55, 0x40, 0x45, 0xbf, 0xf9, 0x6b, 0xe9, 0x68, 0xb1, 0x77, -0xd7, 0x2e, 0x6c, 0x02, 0x12, 0x07, 0x15, 0x8d, 0x99, 0xad, 0x0a, 0xa8, -0x50, 0xb5, 0x51, 0xa4, 0x6e, 0x1a, 0x7e, 0xa4, 0x0f, 0x3f, 0xf8, 0xa0, -0x61, 0x6e, 0x8d, 0xe4, 0xba, 0xad, 0x3b, 0x1c, 0xf8, 0x22, 0xd4, 0x50, -0x61, 0xcd, 0x2b, 0xf0, 0x57, 0x54, 0x51, 0x5e, 0x31, 0x72, 0xe3, 0xbd, -0xd4, 0xdc, 0x9f, 0x33, 0x7b, 0x36, 0x31, 0xb3, 0x86, 0x8e, 0x16, 0xd1, -0x5c, 0xbc, 0xca, 0x82, 0x87, 0x0e, 0x09, 0x29, 0x30, 0xc7, 0x6e, 0x75, -0xeb, 0xc1, 0x83, 0x30, 0x8a, 0x76, 0xd3, 0xae, 0xc9, 0xdd, 0xf9, 0xaf, -0x28, 0x2a, 0xca, 0x37, 0xa1, 0xa4, 0x55, 0xc9, 0xa7, 0xf4, 0x0e, 0xee, -0xda, 0xa9, 0x23, 0xc6, 0x59, 0xbd, 0xa3, 0x45, 0x24, 0x97, 0xf1, 0xab, -0x2c, 0x30, 0xe8, 0x11, 0x81, 0x52, 0x76, 0x51, 0x5a, 0x81, 0x21, 0x3b, -0x7d, 0xfa, 0xbb, 0xdf, 0x75, 0x6d, 0xdf, 0x26, 0x21, 0x23, 0x6f, 0xc2, -0xae, 0xa7, 0x43, 0x0d, 0x12, 0xc6, 0x2a, 0x69, 0x5e, 0xb4, 0xed, 0xaa, -0x20, 0x41, 0xd5, 0xd8, 0xfe, 0x55, 0xa3, 0x5e, 0x63, 0xd2, 0x9c, 0x09, -0x08, 0x51, 0xaa, 0xa3, 0x85, 0xb4, 0xf7, 0xd5, 0xbb, 0x7b, 0x55, 0x3a, -0xa1, 0x44, 0xc8, 0x04, 0x84, 0x4b, 0xa8, 0x6a, 0x8b, 0xc2, 0x25, 0x88, -0xda, 0x2c, 0xde, 0xb6, 0x15, 0x96, 0xde, 0x73, 0xda, 0x52, 0xea, 0x4e, -0x84, 0x14, 0x2a, 0x7e, 0xd8, 0xd3, 0x6d, 0xda, 0xa0, 0x20, 0xc1, 0xaa, -0x80, 0x0a, 0x96, 0x78, 0xc4, 0x2d, 0x67, 0x1d, 0xb1, 0xce, 0xfc, 0x7a, -0xf5, 0x48, 0xc7, 0x13, 0x76, 0x21, 0xa5, 0x35, 0x05, 0x18, 0xd2, 0x10, -0x5e, 0x95, 0xe4, 0xb0, 0xfc, 0x10, 0x21, 0x24, 0x5b, 0xae, 0x8f, 0xa9, -0xa4, 0x26, 0x1d, 0x12, 0x52, 0xe3, 0x03, 0x5b, 0x48, 0x8d, 0xd4, 0x24, -0x67, 0x46, 0x4e, 0x08, 0x42, 0xe2, 0x82, 0xaa, 0x5d, 0xb6, 0xa2, 0xa6, -0x27, 0x1b, 0x54, 0xd5, 0x41, 0x05, 0x6d, 0xc1, 0x7a, 0x5f, 0x59, 0x0c, -0x98, 0x5b, 0x36, 0x6d, 0x4a, 0x19, 0x66, 0xe9, 0x68, 0x01, 0x30, 0xe0, -0x18, 0x08, 0xb5, 0x60, 0x03, 0x1b, 0x88, 0xc0, 0xc3, 0x7c, 0xe8, 0x95, -0x9d, 0xe4, 0xbd, 0x96, 0x2b, 0xe9, 0x84, 0xdf, 0xe0, 0x0a, 0x0c, 0x7a, -0x93, 0x4e, 0xa9, 0xe2, 0x2e, 0x5c, 0xe2, 0xd5, 0x57, 0x5e, 0x69, 0x52, -0xbf, 0x1e, 0x95, 0x67, 0x07, 0x5e, 0x77, 0x2c, 0x04, 0xb9, 0x04, 0xa8, -0x70, 0x6b, 0x83, 0xb2, 0xb0, 0xcc, 0x82, 0x0a, 0x22, 0x07, 0x2b, 0xdd, -0xb7, 0x2d, 0x0b, 0x4d, 0x03, 0xa4, 0x3e, 0x57, 0xb8, 0x7a, 0x07, 0xb7, -0x69, 0xd9, 0xe2, 0x85, 0xe7, 0x9f, 0x17, 0x60, 0xf0, 0x56, 0x30, 0x7d, -0xf0, 0x7a, 0x78, 0x49, 0x02, 0x0f, 0x39, 0xa4, 0x24, 0xa6, 0x1c, 0xd2, -0x2c, 0x4f, 0x61, 0xc6, 0xdc, 0x3c, 0x32, 0xfc, 0xe8, 0x38, 0x58, 0x4f, -0xa4, 0xb8, 0xae, 0x8e, 0x07, 0x29, 0xc2, 0x2b, 0xad, 0x70, 0x48, 0xd8, -0x7c, 0xe0, 0x81, 0x07, 0x9a, 0x36, 0x68, 0xe0, 0xca, 0x4a, 0x5d, 0xb0, -0x91, 0x52, 0xd9, 0x21, 0x8b, 0x0a, 0xdb, 0xfe, 0x8a, 0x2a, 0x85, 0x0a, -0x17, 0x30, 0x76, 0x7d, 0xe1, 0x4a, 0x08, 0x76, 0xc4, 0x14, 0xb6, 0x6f, -0x47, 0x26, 0x24, 0xc1, 0x82, 0x18, 0xce, 0xd8, 0xab, 0x08, 0xa4, 0xe5, -0x0d, 0xc1, 0x3a, 0xe0, 0xe6, 0xbc, 0x2d, 0xc1, 0x89, 0x1c, 0x48, 0x59, -0x1c, 0xbc, 0x45, 0x05, 0x1b, 0x83, 0xc4, 0x15, 0x2c, 0x02, 0x0a, 0xbf, -0x71, 0x74, 0x79, 0x49, 0xef, 0x6e, 0xce, 0x22, 0x0b, 0x8b, 0xc0, 0xa9, -0xba, 0x79, 0xe3, 0xc6, 0xac, 0x8c, 0x74, 0x6a, 0x40, 0xf5, 0x9e, 0xbf, -0x31, 0xc4, 0xeb, 0xcc, 0x86, 0x2c, 0x2a, 0x5c, 0x85, 0xfb, 0x77, 0xfd, -0xb5, 0xd7, 0xfc, 0xf5, 0x8e, 0x98, 0xd8, 0x4e, 0x6d, 0xdb, 0x3c, 0xf9, -0xe4, 0x93, 0x78, 0x30, 0xc0, 0x06, 0x85, 0x3f, 0x80, 0x07, 0xfb, 0x16, -0xaf, 0x0a, 0x06, 0x02, 0x48, 0xe4, 0xa0, 0x1a, 0x88, 0xa0, 0x45, 0x01, -0x06, 0x84, 0x98, 0xbb, 0x77, 0x87, 0x1f, 0x41, 0x07, 0xfe, 0x44, 0xba, -0xe1, 0x55, 0x9a, 0x7b, 0xb0, 0xc5, 0x08, 0x1e, 0x58, 0x61, 0xbc, 0x46, -0x3f, 0x7e, 0xe5, 0x95, 0xc9, 0xe3, 0xc7, 0xc5, 0x50, 0x86, 0x39, 0xa7, -0xfe, 0xc0, 0xd5, 0xb7, 0x85, 0x26, 0x97, 0x40, 0x06, 0xf9, 0x41, 0xa9, -0x28, 0xab, 0x57, 0xbc, 0xfb, 0xee, 0xbb, 0xf4, 0x9b, 0x26, 0xa6, 0xab, -0xaa, 0x4b, 0x50, 0x8a, 0x35, 0xc3, 0x31, 0x7a, 0xcd, 0x5b, 0x07, 0xcb, -0xae, 0x5f, 0x33, 0x6f, 0xf2, 0x84, 0x09, 0xeb, 0xd6, 0xae, 0xdd, 0xb4, -0x7e, 0xfd, 0xf1, 0xdb, 0x6e, 0xc3, 0x6e, 0x0b, 0x73, 0x63, 0x03, 0x03, -0x27, 0x1c, 0x28, 0xe5, 0xa0, 0x45, 0x00, 0xc3, 0x5b, 0x04, 0x33, 0x4a, -0xe2, 0x32, 0xab, 0xe9, 0x81, 0x93, 0x51, 0x98, 0x8d, 0x60, 0x2e, 0x9b, -0xc9, 0x16, 0xc3, 0xa6, 0xc3, 0x62, 0xb2, 0xb6, 0x74, 0x94, 0x2d, 0xb8, -0x20, 0x35, 0x15, 0x8e, 0x98, 0x51, 0xb0, 0xe7, 0x6f, 0x21, 0x28, 0x35, -0x19, 0x7c, 0x09, 0x17, 0x54, 0x0b, 0x93, 0x0d, 0xca, 0x02, 0x15, 0x3c, -0x7f, 0x55, 0x93, 0xa0, 0xd4, 0xea, 0xd3, 0x35, 0xaf, 0xd7, 0xc2, 0x2d, -0x09, 0x35, 0xea, 0xb2, 0x57, 0x25, 0xc5, 0xc7, 0x53, 0x01, 0x04, 0xe7, -0x77, 0xbb, 0x16, 0x2d, 0xb0, 0x84, 0x10, 0x16, 0x0f, 0xca, 0xf9, 0x1f, -0x8d, 0x08, 0x03, 0x1a, 0x50, 0xa1, 0xa4, 0x15, 0xee, 0x3f, 0x0e, 0x18, -0x0b, 0x98, 0x01, 0xfd, 0xb0, 0x11, 0x61, 0x1a, 0x51, 0x69, 0xca, 0x12, -0xcc, 0xe6, 0x7a, 0x36, 0x82, 0x87, 0x0f, 0x3e, 0xf8, 0x60, 0xe3, 0xba, -0x9b, 0x0a, 0xdb, 0xb4, 0xa6, 0x48, 0x7b, 0x8c, 0x33, 0xb3, 0xf7, 0x15, -0xb7, 0x84, 0x6a, 0x49, 0xd9, 0xd2, 0x22, 0xe7, 0x8a, 0x57, 0x84, 0x3e, -0x2a, 0x04, 0x1e, 0x60, 0x63, 0xd4, 0xd6, 0x87, 0x7a, 0x2d, 0x2a, 0x6e, -0x31, 0xed, 0x86, 0x1a, 0x9d, 0x46, 0xc6, 0xc5, 0x25, 0x24, 0x38, 0x1c, -0x79, 0x19, 0xe9, 0xed, 0x9b, 0x17, 0xb4, 0x29, 0x68, 0x7c, 0xe1, 0x27, -0xbf, 0x6d, 0x41, 0x7e, 0x87, 0xe6, 0x4d, 0xf3, 0x6b, 0xe7, 0xa5, 0xc5, -0xc6, 0xd0, 0x7f, 0x9b, 0x9f, 0x94, 0x18, 0x47, 0x97, 0x4e, 0x9d, 0x30, -0x64, 0x49, 0x53, 0x56, 0xb3, 0x6d, 0x37, 0xcc, 0x76, 0x7d, 0x5f, 0x1f, -0x47, 0x20, 0x21, 0x35, 0x3b, 0xe8, 0x2b, 0x7b, 0xd3, 0x8d, 0x37, 0xae, -0x5c, 0xb2, 0x78, 0xea, 0xb8, 0xb1, 0x9d, 0xdb, 0xb4, 0xac, 0x91, 0xe2, -0x4c, 0x88, 0x89, 0x8d, 0x4f, 0x48, 0x2e, 0x1c, 0x31, 0x33, 0x64, 0x45, -0x26, 0xcb, 0x20, 0xa8, 0xb0, 0xe0, 0x15, 0x3a, 0xcb, 0xce, 0x28, 0xfe, -0x06, 0x78, 0xb4, 0x2d, 0xf9, 0xed, 0x88, 0xeb, 0x8f, 0xf5, 0x9d, 0xb6, -0xa4, 0x73, 0xd1, 0x88, 0xd6, 0x5d, 0xfb, 0x16, 0xb4, 0xef, 0x5e, 0xb7, -0x69, 0x87, 0xcc, 0xba, 0x4d, 0x53, 0x72, 0x1b, 0xa6, 0xe4, 0x34, 0x4c, -0xad, 0x5d, 0x90, 0xd1, 0xb0, 0x7d, 0x66, 0xa3, 0x0e, 0xd5, 0x9a, 0x14, -0xd2, 0x35, 0x18, 0x56, 0xb9, 0x61, 0xdd, 0x3a, 0x69, 0xca, 0x2a, 0xd2, -0x94, 0x32, 0xec, 0x46, 0xb8, 0x85, 0x4a, 0x79, 0xe8, 0x24, 0xda, 0xef, -0xc8, 0xad, 0xb7, 0xc6, 0xc7, 0xc6, 0x3a, 0x62, 0x12, 0x9d, 0xe9, 0x39, -0xc9, 0xd9, 0x0d, 0x9a, 0x74, 0x1d, 0x3a, 0x64, 0xc9, 0x56, 0x5a, 0x4f, -0x85, 0xbe, 0xc8, 0xe4, 0x45, 0x82, 0x72, 0xab, 0x57, 0x54, 0x65, 0x09, -0xca, 0xfd, 0x5b, 0x39, 0xaf, 0xff, 0xc9, 0xb9, 0xed, 0xfb, 0xac, 0x1d, -0xdf, 0xd4, 0xdd, 0xf9, 0x0f, 0x36, 0xb6, 0x56, 0x7b, 0x3f, 0xa7, 0xf8, -0x69, 0xe1, 0xfe, 0x3f, 0xb5, 0xbc, 0xee, 0x3e, 0x50, 0x41, 0x59, 0x79, -0x1e, 0x50, 0xd7, 0x34, 0x44, 0x0b, 0x8f, 0x64, 0x99, 0xca, 0x10, 0xda, -0xc4, 0x96, 0x71, 0xd3, 0x1a, 0x57, 0xef, 0xe0, 0x86, 0x53, 0xd7, 0x8e, -0xd8, 0xf1, 0x54, 0x87, 0x03, 0x9f, 0xe7, 0xee, 0x0c, 0xfd, 0x56, 0xf3, -0xc6, 0x06, 0x31, 0xe2, 0xac, 0x30, 0xfa, 0x2b, 0x3c, 0xa1, 0x02, 0x41, -0x1c, 0x01, 0xbd, 0x8a, 0xf8, 0x2b, 0x82, 0xb5, 0x3f, 0x0d, 0xdd, 0xf2, -0x28, 0x4f, 0x34, 0x79, 0xec, 0x58, 0x9e, 0x0e, 0x8d, 0x1c, 0x45, 0x1c, -0x35, 0x43, 0x1c, 0x82, 0x22, 0x50, 0x49, 0x01, 0x91, 0x48, 0x63, 0x1a, -0x86, 0x00, 0x58, 0x58, 0x28, 0x4d, 0x42, 0x86, 0x0c, 0xec, 0xcf, 0x5a, -0x75, 0x3d, 0x44, 0x56, 0x5d, 0x99, 0xed, 0x26, 0x58, 0xef, 0xa2, 0x52, -0xc7, 0xd1, 0x34, 0x0a, 0x93, 0x6f, 0xdb, 0x0b, 0x2a, 0xaa, 0x8e, 0x17, -0x2f, 0x58, 0x2b, 0x88, 0x82, 0x98, 0xde, 0xbc, 0x27, 0xda, 0x45, 0x49, -0x71, 0x31, 0x8a, 0x38, 0x16, 0x05, 0x4b, 0x6c, 0x44, 0x5a, 0xe8, 0xa1, -0x52, 0x27, 0x44, 0x76, 0xc2, 0x08, 0xbb, 0x71, 0x9d, 0xcb, 0xd0, 0xd7, -0x6b, 0xfa, 0x8a, 0x60, 0xad, 0x7c, 0x15, 0x1b, 0x47, 0xe3, 0x12, 0x51, -0x54, 0xf0, 0x6e, 0x8a, 0xae, 0x3d, 0x16, 0xe7, 0x4c, 0x4d, 0x8e, 0x73, -0x4c, 0x9d, 0x30, 0xe1, 0xb1, 0x73, 0xe7, 0x04, 0x1b, 0xd8, 0xa6, 0xb0, -0xb4, 0x88, 0xb3, 0x5c, 0x69, 0xe1, 0xc2, 0x31, 0x7c, 0x55, 0x58, 0x43, -0xee, 0x7c, 0xc5, 0x28, 0xc4, 0x35, 0x01, 0xf3, 0xdc, 0xb4, 0x6e, 0x1d, -0x96, 0x89, 0xa4, 0xda, 0xcd, 0x9a, 0x87, 0x47, 0x7f, 0x54, 0xeb, 0xce, -0x7a, 0x3f, 0xc8, 0x4e, 0xbe, 0xa2, 0x22, 0xfc, 0x24, 0x28, 0x50, 0x41, -0xe9, 0xff, 0xa2, 0xeb, 0x8f, 0x27, 0xd7, 0x6c, 0x42, 0x8c, 0x67, 0x4a, -0x5c, 0x4c, 0xf3, 0x86, 0xf5, 0xa7, 0x8e, 0x1f, 0xb7, 0x7b, 0xe7, 0x4e, -0xcc, 0xb8, 0x22, 0x50, 0xb1, 0x53, 0x2a, 0x9f, 0x46, 0x24, 0x00, 0x43, -0xb7, 0x3b, 0xe1, 0x8e, 0x28, 0xea, 0xd5, 0x8b, 0x95, 0x49, 0xce, 0xaa, -0x33, 0x75, 0xf7, 0x53, 0x55, 0x6c, 0x83, 0x0f, 0x7a, 0xce, 0x82, 0x2f, -0x5e, 0x3c, 0xf2, 0x8f, 0x50, 0x46, 0xc3, 0x52, 0xaf, 0x28, 0x75, 0x7a, -0x94, 0xfc, 0x65, 0xd0, 0xf2, 0x9d, 0x4d, 0xfb, 0x4e, 0xc0, 0x4e, 0xe5, -0xc0, 0xe7, 0x11, 0xe3, 0x58, 0xb7, 0x66, 0x0d, 0x0e, 0x0d, 0x1e, 0x5c, -0x80, 0x21, 0x1c, 0x43, 0xe9, 0x18, 0x21, 0xc7, 0x01, 0xec, 0x4f, 0x58, -0x2f, 0xd2, 0x31, 0x77, 0x16, 0xd5, 0x9c, 0x62, 0xfa, 0xce, 0xbc, 0xba, -0xe5, 0xa1, 0xf0, 0xd3, 0xad, 0x75, 0x50, 0x95, 0x65, 0x14, 0x76, 0x7c, -0xdb, 0x91, 0x80, 0x0a, 0x81, 0x47, 0xf6, 0x8e, 0x7f, 0xb6, 0xd9, 0xf5, -0xd9, 0x80, 0xd5, 0xb7, 0x27, 0xd7, 0x6a, 0x82, 0x18, 0x7d, 0xed, 0xca, -0x95, 0x52, 0x1b, 0x4b, 0x01, 0x43, 0x57, 0xbe, 0xed, 0xd3, 0x59, 0x68, -0x9d, 0xa9, 0x50, 0x71, 0xf2, 0xf8, 0xf1, 0x94, 0xa4, 0xa4, 0xea, 0x1d, -0x86, 0xf5, 0xb8, 0x2d, 0x2c, 0x1a, 0xcb, 0xfb, 0xd4, 0x92, 0x58, 0x33, -0x2b, 0x59, 0x6b, 0xdb, 0x91, 0x83, 0x8a, 0x1f, 0x58, 0xc7, 0x79, 0x82, -0xdb, 0xda, 0xf5, 0x1a, 0x42, 0x5b, 0xb7, 0x55, 0x2b, 0x56, 0x50, 0xf2, -0x07, 0x60, 0x88, 0x43, 0x43, 0x72, 0xc4, 0xc3, 0x9b, 0x63, 0x28, 0x54, -0x0c, 0x1d, 0x3c, 0x18, 0xda, 0xa8, 0xde, 0x76, 0xe0, 0xc8, 0x2d, 0x0f, -0x5f, 0xe0, 0x15, 0xe1, 0x67, 0x7a, 0x12, 0x76, 0x61, 0x62, 0x14, 0x51, -0x5e, 0xe1, 0x4e, 0x56, 0xc6, 0x3c, 0xd5, 0xb6, 0xe7, 0x10, 0x57, 0xb7, -0xf9, 0xe5, 0xcb, 0x25, 0xe9, 0x4f, 0xca, 0xda, 0x86, 0x3d, 0x30, 0x94, -0x5e, 0x71, 0xfb, 0xb1, 0x63, 0x5d, 0x3b, 0x76, 0x44, 0xcf, 0x8e, 0x4b, -0x48, 0x49, 0xab, 0xdf, 0xba, 0xcf, 0xf4, 0x15, 0x61, 0xaa, 0x6d, 0xfb, -0x8b, 0x0a, 0x6c, 0x32, 0xe1, 0xad, 0x57, 0x58, 0x62, 0x83, 0xd0, 0xc3, -0x36, 0x3d, 0x06, 0xa3, 0x63, 0xac, 0x5a, 0xbe, 0x1c, 0x1d, 0x03, 0xe5, -0x3b, 0x12, 0x38, 0x86, 0x6e, 0x83, 0xc2, 0x16, 0xbf, 0x73, 0xc7, 0x8e, -0xb1, 0xc3, 0x86, 0xe4, 0xd7, 0xcc, 0x73, 0x85, 0xc4, 0x56, 0xaf, 0xdd, -0x7b, 0xfe, 0x86, 0xb0, 0x08, 0x01, 0xf4, 0xa8, 0x54, 0xb8, 0xe1, 0x15, -0x44, 0x97, 0x96, 0xd6, 0xf8, 0xe0, 0x53, 0x64, 0xa2, 0x42, 0xb2, 0x38, -0x92, 0x6b, 0x35, 0x85, 0x63, 0xac, 0x5e, 0xb5, 0x0a, 0x51, 0x4a, 0xac, -0x52, 0x66, 0x8e, 0x11, 0x66, 0x16, 0x5b, 0x83, 0xbf, 0x02, 0xb7, 0x26, -0xc6, 0xa8, 0x92, 0xed, 0xdb, 0x1b, 0xd4, 0xac, 0x89, 0x4c, 0x95, 0xda, -0xa8, 0xc3, 0x80, 0xd5, 0xc7, 0x09, 0xe3, 0x0f, 0x17, 0x93, 0x94, 0x66, -0x7a, 0x52, 0xba, 0x87, 0x1d, 0xbd, 0x02, 0x54, 0x10, 0x49, 0x4b, 0xfc, -0x69, 0x98, 0xf9, 0xb6, 0xed, 0xbc, 0xd7, 0x81, 0x1b, 0xee, 0x4f, 0xae, -0x59, 0x80, 0x75, 0x72, 0xed, 0x0d, 0xd7, 0xeb, 0x1c, 0x23, 0x8c, 0x73, -0x33, 0xf4, 0x1c, 0x23, 0x2c, 0x6f, 0xe2, 0xc8, 0x83, 0x4f, 0xd2, 0xc9, -0x61, 0xd6, 0xf4, 0xe9, 0x59, 0x69, 0xa9, 0xb1, 0x09, 0xc9, 0x7d, 0x08, -0x92, 0x0d, 0x1f, 0x60, 0x98, 0x8c, 0xbc, 0x51, 0x54, 0x78, 0xc6, 0x06, -0x69, 0xe2, 0x83, 0x37, 0x3d, 0x98, 0x94, 0x97, 0x0f, 0x30, 0x08, 0x1a, -0xfd, 0xf4, 0xd3, 0x32, 0xa2, 0x54, 0xb8, 0xd6, 0x16, 0x31, 0x07, 0x7d, -0x00, 0x0c, 0xf8, 0x24, 0xfb, 0xe3, 0x89, 0x13, 0x27, 0x9a, 0x35, 0xc9, -0x87, 0x6c, 0x7a, 0x5c, 0xb2, 0x22, 0x5c, 0x80, 0x61, 0x62, 0x17, 0x51, -0x54, 0x78, 0xe5, 0x18, 0xc4, 0xe1, 0xba, 0x80, 0x91, 0xd3, 0x00, 0x51, -0x8a, 0x20, 0x39, 0x83, 0x8e, 0x11, 0xae, 0xc0, 0xc0, 0xa0, 0xac, 0x7b, -0xf4, 0x84, 0x63, 0x00, 0x0c, 0x0c, 0x0f, 0x2f, 0xbf, 0xf8, 0x62, 0x8f, -0x6e, 0xdd, 0x5c, 0x99, 0x46, 0xc3, 0x2f, 0x6d, 0xb2, 0x2b, 0xb4, 0x4a, -0x03, 0x5a, 0xfa, 0xfe, 0x3c, 0xa1, 0x82, 0x26, 0x8c, 0x3f, 0xfd, 0xe9, -0x4f, 0x8d, 0x59, 0x47, 0xa2, 0x57, 0x44, 0xac, 0x04, 0xa5, 0xf2, 0x37, -0x06, 0x6d, 0x7c, 0x20, 0x29, 0xbb, 0x41, 0x92, 0xc3, 0xb1, 0xce, 0xc5, -0x31, 0x5c, 0xe6, 0xda, 0x48, 0xf0, 0x7c, 0x9b, 0x13, 0xf1, 0x04, 0x18, -0x1f, 0x7f, 0xf2, 0xc9, 0xb4, 0x89, 0x13, 0x5d, 0x05, 0x25, 0xba, 0xf5, -0x0f, 0x17, 0x8e, 0xa1, 0x01, 0xc6, 0x0e, 0xaf, 0x40, 0xfb, 0x8e, 0x70, -0x54, 0xb8, 0x12, 0x9b, 0xf0, 0x7f, 0xaf, 0x3f, 0x93, 0x58, 0xad, 0x4e, -0x72, 0x7c, 0xdc, 0x05, 0x51, 0xca, 0x08, 0x8c, 0x70, 0xf5, 0x63, 0xe8, -0x1c, 0x83, 0xe0, 0x17, 0xd1, 0x31, 0x00, 0xc6, 0x6f, 0x7e, 0xfb, 0x5b, -0x8c, 0x10, 0x49, 0x09, 0x09, 0xad, 0x3b, 0xf7, 0x09, 0x37, 0x60, 0x58, -0xa1, 0x02, 0x14, 0x1c, 0x3e, 0x7c, 0xf8, 0x62, 0xff, 0x8a, 0x28, 0xaf, -0xd0, 0x03, 0x43, 0x06, 0xae, 0x3b, 0xe3, 0xcc, 0xaa, 0x9b, 0x18, 0xe3, -0xb8, 0xf6, 0x82, 0x55, 0xca, 0xec, 0xf9, 0x0e, 0x33, 0x7b, 0x94, 0x38, -0xe6, 0x75, 0x8e, 0x21, 0xa5, 0x6e, 0xe0, 0x18, 0xd2, 0xd5, 0x64, 0xcd, -0xf5, 0xd7, 0x27, 0x3a, 0x1c, 0xed, 0xfb, 0x8e, 0x0c, 0xa3, 0x0c, 0xd5, -0x32, 0xdd, 0x22, 0xdd, 0xfa, 0xb6, 0x45, 0x82, 0x42, 0xba, 0x8a, 0x40, -0x1b, 0x94, 0x41, 0xeb, 0x70, 0x29, 0xdf, 0x1b, 0xee, 0x4b, 0xa9, 0xd5, -0x94, 0xa5, 0x58, 0xba, 0xf8, 0xca, 0xdf, 0xfc, 0xc6, 0x55, 0x1a, 0x9d, -0xbd, 0xd3, 0x50, 0xd5, 0x33, 0xb4, 0xa2, 0x3c, 0xbc, 0xce, 0xd6, 0x50, -0xf9, 0x46, 0xd5, 0x80, 0xe2, 0xd9, 0x31, 0xda, 0x2e, 0x5c, 0x30, 0xdf, -0xa5, 0x63, 0x8c, 0x9c, 0x11, 0x9a, 0xc0, 0x70, 0x79, 0xf1, 0x62, 0x2e, -0xfc, 0x94, 0x96, 0xf9, 0xd0, 0x08, 0xdd, 0x8b, 0x5e, 0x11, 0x45, 0x85, -0x42, 0x08, 0xaf, 0xbf, 0x7d, 0xbf, 0x51, 0x2c, 0xdd, 0x92, 0x45, 0x0b, -0xa5, 0x93, 0x06, 0x46, 0xfd, 0xf0, 0xee, 0x19, 0x60, 0x09, 0x0c, 0xb6, -0x03, 0x80, 0xf1, 0xeb, 0x5f, 0xfd, 0x6a, 0xca, 0xc4, 0x09, 0xac, 0x46, -0xb7, 0x49, 0x57, 0x86, 0x94, 0x28, 0x25, 0x4a, 0xb6, 0xeb, 0xff, 0x98, -0x0b, 0x3f, 0xa5, 0x3b, 0x60, 0x14, 0x15, 0x5e, 0x6d, 0x50, 0x96, 0x27, -0x10, 0x2b, 0xd5, 0xa1, 0xff, 0x58, 0x56, 0x6f, 0xe3, 0xfa, 0x75, 0x52, -0x2b, 0x44, 0x4a, 0x7a, 0x8a, 0x76, 0xe1, 0x75, 0xf7, 0x0d, 0xd1, 0x13, -0x74, 0x07, 0x1f, 0x0f, 0x2b, 0x55, 0x03, 0x01, 0xc6, 0x4f, 0x3f, 0xf9, -0x64, 0xc8, 0xc0, 0x01, 0x2e, 0x73, 0xed, 0xa5, 0x2b, 0x71, 0x7d, 0xfa, -0xb7, 0xa4, 0x95, 0x7a, 0x55, 0x59, 0x33, 0x94, 0x09, 0x15, 0xbf, 0xfe, -0xf5, 0xaf, 0xa3, 0x7a, 0x85, 0xad, 0xd8, 0x7d, 0x72, 0xf9, 0x93, 0xb2, -0xea, 0x66, 0x24, 0x26, 0xdc, 0x71, 0xfc, 0x38, 0x94, 0x21, 0x01, 0xe7, -0x92, 0xb8, 0x17, 0xa2, 0x44, 0x6f, 0x67, 0xda, 0x06, 0xcf, 0x37, 0xc0, -0x10, 0x8e, 0xf1, 0xee, 0xdb, 0x6f, 0x77, 0x29, 0x2c, 0x74, 0x01, 0x63, -0xc6, 0xb5, 0x94, 0x3c, 0xad, 0x54, 0x12, 0xb7, 0xf5, 0xfa, 0xf4, 0x19, -0x96, 0x61, 0x14, 0xee, 0x23, 0x3e, 0x4a, 0xb5, 0x6d, 0x3e, 0x45, 0x6d, -0x50, 0xee, 0xde, 0xf1, 0xc0, 0xb5, 0x77, 0x39, 0xe2, 0x93, 0xf2, 0xeb, -0xd7, 0x47, 0xfa, 0x14, 0xed, 0x42, 0x82, 0x6a, 0xc3, 0x52, 0xe7, 0x56, -0x98, 0xb1, 0x04, 0x06, 0x86, 0x87, 0x17, 0x5f, 0x78, 0xa1, 0x79, 0xbe, -0xcb, 0xc1, 0xd7, 0x77, 0xf9, 0x1e, 0x9c, 0x3c, 0xa1, 0x02, 0x8c, 0x0b, -0xe2, 0x93, 0x5b, 0x5e, 0xa1, 0xb4, 0xed, 0x28, 0xaf, 0xb0, 0xbb, 0xd9, -0xb4, 0xdb, 0xfd, 0x7f, 0x35, 0x07, 0xce, 0x75, 0x26, 0x26, 0x50, 0x42, -0x8f, 0x2a, 0x21, 0x6c, 0x9c, 0x11, 0xd2, 0xd3, 0xd5, 0x9c, 0xdb, 0xcd, -0xe3, 0x23, 0x49, 0x3e, 0xf8, 0xc0, 0x03, 0xb5, 0x73, 0xb2, 0x63, 0x62, -0x13, 0x07, 0xde, 0x74, 0x2a, 0x74, 0x50, 0xa1, 0xb4, 0x6d, 0x8b, 0xfe, -0x15, 0x51, 0x54, 0xd8, 0x05, 0x43, 0xa9, 0xda, 0xbd, 0xeb, 0xf3, 0x46, -0xb3, 0x8a, 0x13, 0x1c, 0x31, 0x4b, 0x17, 0x2f, 0xa6, 0x50, 0x27, 0x3a, -0x77, 0xe4, 0x74, 0xaf, 0x34, 0x78, 0xbe, 0x79, 0x76, 0x80, 0x81, 0x49, -0x6a, 0xdf, 0x9e, 0x3d, 0xa9, 0xf1, 0x71, 0x69, 0x75, 0x5b, 0x84, 0x94, -0xe6, 0x5d, 0xf6, 0xd5, 0x47, 0xf5, 0x8a, 0x40, 0xb6, 0xb4, 0xcc, 0xe2, -0x6f, 0x1a, 0x4c, 0x5d, 0x97, 0x18, 0x1b, 0x77, 0xcd, 0xca, 0x95, 0xd2, -0xbd, 0x32, 0x72, 0x50, 0x61, 0xf0, 0x63, 0x48, 0x0b, 0x0b, 0x71, 0x62, -0x2c, 0x5b, 0xbc, 0x18, 0xba, 0xea, 0x32, 0x66, 0x4e, 0xa8, 0x02, 0xc3, -0xbe, 0x0d, 0x2a, 0x32, 0x63, 0x66, 0xbd, 0x62, 0xa6, 0xee, 0xd8, 0xab, -0x93, 0xe3, 0xe3, 0x29, 0xfc, 0x2c, 0xdd, 0x2b, 0x45, 0xe1, 0x0e, 0x6f, -0xbd, 0x42, 0x57, 0xca, 0x79, 0x52, 0x69, 0x77, 0x24, 0x26, 0x29, 0x89, -0x07, 0xa1, 0x16, 0xc4, 0xc8, 0x61, 0xc3, 0x5c, 0x9a, 0xf7, 0xcc, 0xeb, -0x42, 0xd2, 0x24, 0x15, 0x45, 0x85, 0x57, 0xba, 0xf7, 0x70, 0x42, 0x7a, -0xf1, 0xbf, 0x6a, 0x8f, 0x5c, 0x96, 0x92, 0x90, 0xb0, 0x69, 0xc3, 0x06, -0x41, 0x45, 0x44, 0xf1, 0x0a, 0x3d, 0x82, 0x50, 0x15, 0x8f, 0x42, 0x8e, -0x42, 0x31, 0x7d, 0xe3, 0xf5, 0xd7, 0x5b, 0x37, 0x6f, 0x46, 0x26, 0xdf, -0x80, 0x6b, 0x8e, 0x04, 0xb2, 0xc2, 0x95, 0x73, 0xad, 0x9d, 0x38, 0xa8, -0x68, 0x74, 0xa0, 0xbb, 0x77, 0xd3, 0x68, 0xc7, 0x9f, 0x6b, 0x0d, 0xbe, -0x3c, 0xd5, 0xe9, 0xdc, 0xbe, 0x6d, 0x9b, 0x8e, 0x8a, 0x48, 0xa8, 0x91, -0x63, 0x69, 0x92, 0x92, 0x1e, 0xaa, 0xb8, 0x35, 0x01, 0xc6, 0x99, 0xd3, -0xa7, 0xab, 0xa7, 0x26, 0x27, 0x52, 0x94, 0x76, 0x77, 0xa8, 0xa5, 0x28, -0x45, 0xe3, 0xa0, 0x02, 0xd9, 0x8d, 0x5a, 0x6f, 0xff, 0x55, 0x62, 0x7a, -0x4e, 0x4e, 0x66, 0xc6, 0xe9, 0x7b, 0xee, 0x89, 0x4c, 0x5e, 0x61, 0x0e, -0x94, 0x52, 0x9d, 0x54, 0xd1, 0xbc, 0x37, 0xdc, 0x74, 0x13, 0x04, 0xd6, -0xf5, 0x92, 0x50, 0x2b, 0x3a, 0x18, 0xe5, 0x15, 0x81, 0xa0, 0xa2, 0x68, -0xc1, 0xfa, 0xc4, 0xb8, 0xb8, 0x15, 0x4b, 0x96, 0x20, 0x49, 0x47, 0xa6, -0x5e, 0x61, 0xe0, 0x18, 0xd2, 0x75, 0x1b, 0xcd, 0x1b, 0x8e, 0x81, 0x51, -0xee, 0xa3, 0x0f, 0x3f, 0x2c, 0x6c, 0xdf, 0xd6, 0xe1, 0xcc, 0x0c, 0xb1, -0xea, 0xe5, 0x51, 0xbd, 0x22, 0x00, 0x54, 0x9c, 0xef, 0x30, 0x68, 0x52, -0x72, 0x5c, 0xcc, 0x53, 0x4f, 0x3e, 0x49, 0x29, 0x4e, 0x50, 0x11, 0x69, -0x36, 0x28, 0x83, 0x2f, 0x5c, 0xd7, 0xbc, 0x01, 0x86, 0x68, 0xde, 0x04, -0xd5, 0x92, 0xc6, 0x38, 0xe0, 0xf2, 0x75, 0x01, 0xac, 0xb3, 0xcf, 0x16, -0xf3, 0x40, 0xef, 0x15, 0xe5, 0x15, 0x7e, 0xaf, 0x60, 0xfa, 0xb6, 0x6f, -0x6a, 0x36, 0xed, 0x98, 0x1e, 0x1f, 0x8b, 0xa3, 0x07, 0x54, 0x40, 0x01, -0x11, 0x8e, 0x0a, 0xa5, 0x7c, 0x4b, 0x8d, 0x5a, 0x42, 0x60, 0xd0, 0xbc, -0x09, 0x2a, 0x6d, 0xd1, 0xa4, 0x49, 0xad, 0x06, 0x4d, 0x73, 0x4b, 0x42, -0xa7, 0x00, 0xa1, 0x4d, 0x54, 0x44, 0x60, 0xe5, 0x1b, 0xaf, 0x68, 0x69, -0xb4, 0xe3, 0x4f, 0x29, 0xb9, 0x8d, 0xea, 0xe7, 0x66, 0x93, 0xe6, 0x4f, -0xf4, 0x18, 0xa6, 0xfa, 0x88, 0xf2, 0xe2, 0x79, 0xe8, 0x18, 0x86, 0xad, -0x16, 0x60, 0x88, 0x07, 0x83, 0xcd, 0x62, 0xcc, 0xf0, 0xe1, 0x31, 0x8e, -0xb8, 0xf6, 0xfb, 0xa8, 0xf2, 0x5f, 0xe1, 0xbb, 0xbe, 0x7f, 0x77, 0x8c, -0xa2, 0xc2, 0xef, 0x57, 0xd5, 0xaa, 0xf8, 0x7f, 0x93, 0xaa, 0xd7, 0xee, -0xd8, 0xba, 0xe5, 0x87, 0x1f, 0x7e, 0x48, 0xfe, 0x89, 0xf8, 0xb6, 0x25, -0x8d, 0x3b, 0x72, 0xfc, 0x15, 0x66, 0x6c, 0xe8, 0x95, 0x6a, 0xf1, 0x60, -0x60, 0x8f, 0xa2, 0x36, 0xa9, 0x33, 0x21, 0x71, 0xec, 0xa6, 0x7b, 0xfc, -0x5e, 0xea, 0x8a, 0xbe, 0xd0, 0x8d, 0x0d, 0xaa, 0x4c, 0x3d, 0xa8, 0xb0, -0xaf, 0xbe, 0xec, 0xdf, 0xa2, 0x8f, 0xbc, 0xe5, 0xc1, 0xc4, 0xb4, 0xec, -0xc1, 0x45, 0x7d, 0x3f, 0xf9, 0xe4, 0x13, 0x78, 0x29, 0xaf, 0x1f, 0x99, -0x21, 0x42, 0xe2, 0xa0, 0x3c, 0x44, 0xd7, 0xea, 0x91, 0x20, 0xa2, 0x5d, -0x1c, 0x3b, 0x72, 0x24, 0x3d, 0x29, 0x79, 0xe0, 0xa2, 0xcd, 0xfe, 0xad, -0x73, 0x25, 0x5c, 0x65, 0x87, 0x57, 0x44, 0x51, 0x61, 0x7e, 0x31, 0x28, -0x15, 0x7d, 0x57, 0x1d, 0x8e, 0x4f, 0x4a, 0xbf, 0x64, 0xd2, 0x04, 0x7a, -0x18, 0x10, 0xe6, 0x10, 0x45, 0x85, 0x6e, 0x8f, 0x92, 0x1e, 0x93, 0x62, -0xa5, 0xfd, 0xf1, 0xcb, 0x2f, 0xd7, 0x48, 0x4f, 0xef, 0x30, 0x7c, 0x66, -0x25, 0xd0, 0x77, 0xf9, 0x49, 0x50, 0x51, 0x54, 0x98, 0x5f, 0x27, 0xfe, -0xbb, 0x16, 0x97, 0xac, 0x75, 0xc4, 0xc4, 0x2d, 0x5b, 0xbc, 0x88, 0xb6, -0xc5, 0x94, 0xc3, 0x89, 0xa8, 0x98, 0x59, 0xcf, 0x99, 0x18, 0xc2, 0x2e, -0xc4, 0xdb, 0x8d, 0x54, 0x89, 0x75, 0xae, 0x56, 0xf5, 0x6a, 0x79, 0x05, -0x1d, 0xa2, 0xa8, 0x08, 0x11, 0xbd, 0xca, 0xbf, 0xbd, 0x64, 0xcb, 0x7f, -0x51, 0x2a, 0x6a, 0xb4, 0x1b, 0x84, 0xcd, 0x91, 0x8a, 0xf6, 0x38, 0x2b, -0xf0, 0x58, 0x49, 0x3a, 0x5e, 0x24, 0xe4, 0x57, 0x78, 0x4d, 0x4e, 0x52, -0xa8, 0x10, 0x4b, 0xd4, 0x67, 0xff, 0xf7, 0x7f, 0x35, 0xab, 0x67, 0xa6, -0xd5, 0x69, 0x11, 0x3e, 0xa8, 0x38, 0x7a, 0xf4, 0x68, 0x94, 0x57, 0x98, -0x5f, 0xe7, 0xa8, 0x2d, 0x0f, 0xc5, 0xa5, 0x65, 0xf7, 0xe9, 0xda, 0xf9, -0x8d, 0x37, 0xde, 0xa0, 0xad, 0x3d, 0x01, 0x0e, 0x04, 0x41, 0x21, 0x30, -0x80, 0x8a, 0x88, 0x0a, 0xf7, 0xf0, 0x60, 0x89, 0x12, 0xfb, 0x2c, 0xbc, -0xe2, 0xbd, 0x77, 0xdf, 0xcd, 0xc9, 0x48, 0xaf, 0x5d, 0x38, 0x34, 0x0c, -0x51, 0x11, 0x7e, 0xdd, 0x22, 0x03, 0x79, 0x49, 0x43, 0xd7, 0xdc, 0x8e, -0x4a, 0xb6, 0x68, 0xfe, 0xdc, 0x8f, 0x3f, 0xfe, 0x18, 0xb3, 0xac, 0xb8, -0xf0, 0x40, 0x45, 0xa4, 0xb5, 0x96, 0x74, 0x67, 0x83, 0x12, 0xe3, 0xac, -0x48, 0x50, 0xcf, 0x3d, 0xfb, 0x4c, 0x56, 0x5a, 0x5a, 0x87, 0x31, 0x0b, -0x02, 0x59, 0xf0, 0x0a, 0xbd, 0xd6, 0xab, 0xb6, 0xad, 0x78, 0x45, 0x14, -0x15, 0xfa, 0x8b, 0x19, 0xb4, 0xea, 0x00, 0x4b, 0x77, 0xcd, 0x8a, 0xe5, -0x04, 0xd8, 0x4b, 0x4b, 0x24, 0x29, 0xf3, 0x11, 0x45, 0x85, 0x6e, 0x99, -0x65, 0x9b, 0x80, 0x85, 0xde, 0x79, 0xf2, 0x64, 0x46, 0x72, 0xf2, 0x80, -0xf9, 0x37, 0x55, 0x28, 0x65, 0xfb, 0x2b, 0x1b, 0xbb, 0x26, 0x69, 0x1f, -0x15, 0x61, 0xd9, 0x2d, 0xd2, 0xdf, 0xf7, 0x74, 0xbe, 0xff, 0xf2, 0x3d, -0x2c, 0xdd, 0xf5, 0xd7, 0x5e, 0xc3, 0xb2, 0x50, 0xfc, 0x46, 0x5c, 0x78, -0x51, 0x54, 0x98, 0x53, 0xba, 0x59, 0x99, 0xc1, 0x45, 0x45, 0xb1, 0x8e, -0xb8, 0x09, 0xc5, 0x0f, 0xf9, 0xbb, 0xda, 0x15, 0xae, 0xa3, 0xda, 0x44, -0x05, 0x2f, 0x3e, 0xca, 0x2b, 0xb4, 0x97, 0x7a, 0xbe, 0xef, 0xe2, 0xed, -0x2c, 0xdd, 0x86, 0x9b, 0xd6, 0xb2, 0x2c, 0x98, 0x65, 0x71, 0xe1, 0x45, -0x48, 0x8d, 0x0f, 0x3b, 0x9e, 0x0a, 0xd1, 0x28, 0xa4, 0xfc, 0x07, 0x71, -0x50, 0xf4, 0x52, 0xeb, 0x71, 0xc9, 0xf2, 0x66, 0xfb, 0xfe, 0x11, 0x45, -0x45, 0x85, 0xe3, 0x3b, 0x10, 0x8e, 0xe9, 0xf3, 0xb5, 0xe7, 0x7b, 0x5c, -0xbe, 0x19, 0x54, 0xdc, 0xb2, 0x69, 0xa3, 0x98, 0x65, 0xa3, 0xa8, 0x30, -0x94, 0x8a, 0x92, 0x70, 0x8f, 0xfd, 0x7b, 0xf6, 0x64, 0xa6, 0xa5, 0x24, -0x66, 0xd5, 0x0b, 0xb1, 0xee, 0x61, 0x51, 0x5e, 0xe1, 0xd7, 0x06, 0x76, -0xbe, 0x70, 0xf6, 0x3a, 0x96, 0xae, 0xa4, 0x78, 0x9b, 0x98, 0x65, 0x71, -0xe1, 0xb1, 0x35, 0x86, 0x7d, 0x95, 0x34, 0x77, 0x8c, 0xc2, 0x2c, 0x38, -0xb1, 0x20, 0x1b, 0xd6, 0xae, 0x4d, 0x4e, 0x8c, 0x8f, 0x4b, 0xca, 0x18, -0xba, 0xe1, 0x3e, 0xbf, 0x16, 0xb9, 0xf2, 0x36, 0x56, 0x0d, 0x15, 0xef, -0xbd, 0xf7, 0x1e, 0x42, 0xb2, 0xb1, 0x52, 0xbf, 0x68, 0xdb, 0x51, 0x09, -0xaa, 0xec, 0x7b, 0x3d, 0xdf, 0xf6, 0x92, 0xd5, 0x2c, 0xdd, 0xde, 0xdd, -0xbb, 0x88, 0x96, 0x35, 0xa3, 0x22, 0xa2, 0xe2, 0xa0, 0xcc, 0x90, 0x80, -0x73, 0x5e, 0xb5, 0x70, 0x61, 0x02, 0xed, 0xeb, 0xeb, 0x34, 0x1f, 0x7e, -0xcb, 0xc3, 0x4d, 0xf7, 0xfe, 0x3d, 0x0c, 0x51, 0x81, 0xc2, 0x14, 0x45, -0x85, 0x01, 0x15, 0x4d, 0xc7, 0x2f, 0x07, 0x15, 0xb7, 0x1e, 0x3c, 0x08, -0x2a, 0x3e, 0xfb, 0xec, 0x33, 0x71, 0x6c, 0x47, 0x20, 0xaf, 0x30, 0x43, -0x02, 0xef, 0xcd, 0xd4, 0x09, 0xe3, 0xd1, 0x25, 0x0a, 0x07, 0x8c, 0x09, -0x31, 0xc1, 0xc9, 0xaa, 0x2f, 0x9e, 0x5b, 0x5e, 0x11, 0x45, 0x85, 0x69, -0xab, 0x3b, 0x5f, 0x7f, 0xd8, 0x15, 0xa0, 0xe2, 0xb6, 0xa3, 0x47, 0x21, -0x02, 0x1d, 0x15, 0x61, 0x5f, 0x51, 0x53, 0x0f, 0x76, 0x32, 0x40, 0x82, -0xad, 0xe1, 0xc4, 0xf1, 0xe3, 0x8d, 0x6b, 0xe5, 0xb9, 0xaa, 0x7b, 0x8c, -0x5f, 0x10, 0xaa, 0x90, 0xb0, 0x69, 0x99, 0x8d, 0xa2, 0xc2, 0x8c, 0x8a, -0x5a, 0x03, 0xe7, 0xf0, 0xee, 0x4f, 0x9e, 0x38, 0x11, 0x99, 0xa8, 0x30, -0x37, 0xce, 0x7b, 0xed, 0xc7, 0xaf, 0x4e, 0x1e, 0x3b, 0x86, 0x06, 0xc4, -0x24, 0xb2, 0xf7, 0xbf, 0x72, 0x6b, 0xb3, 0xfd, 0x5f, 0x85, 0x98, 0xd4, -0xe4, 0xa6, 0x26, 0xb9, 0xf0, 0x0a, 0x71, 0x49, 0x95, 0x46, 0x92, 0xa3, -0x57, 0x44, 0x51, 0x61, 0xc1, 0x2b, 0x46, 0x2c, 0x12, 0x09, 0x2a, 0x02, -0x51, 0x61, 0x80, 0xc4, 0x87, 0x1f, 0x7c, 0xb0, 0xfe, 0xc6, 0x1b, 0xeb, -0xe5, 0xe5, 0xb2, 0x20, 0x39, 0x5d, 0xc7, 0x8d, 0x2c, 0x7e, 0x22, 0x94, -0x8c, 0xb0, 0x96, 0xe6, 0x47, 0x93, 0xb6, 0x6d, 0x8d, 0x0a, 0x4c, 0xf2, -0x98, 0x20, 0x75, 0x9f, 0x5f, 0x08, 0xef, 0x04, 0x3e, 0xdb, 0x61, 0xcd, -0xc6, 0x90, 0xf3, 0xcd, 0xa7, 0x5e, 0xcf, 0x6a, 0x6c, 0xdd, 0x7c, 0xb3, -0x01, 0x15, 0xe1, 0x5d, 0xa9, 0xdf, 0x5c, 0xd1, 0xe3, 0xb6, 0x63, 0xc7, -0x2e, 0xd4, 0x7d, 0x72, 0x38, 0x73, 0xf2, 0x87, 0x5c, 0x77, 0xb4, 0xf9, -0x81, 0xaf, 0xc3, 0x81, 0x30, 0xa2, 0xa8, 0xf0, 0xeb, 0x2d, 0x9e, 0x6f, -0x3f, 0x77, 0x0b, 0x4b, 0xb7, 0xfa, 0x9a, 0x55, 0x96, 0xa8, 0x08, 0x63, -0x1b, 0x94, 0x30, 0x0a, 0x09, 0x73, 0x22, 0xa0, 0xa3, 0xb0, 0x6d, 0x5b, -0xd6, 0x61, 0xe0, 0xb2, 0x3d, 0x2d, 0x0f, 0x86, 0x4e, 0x5a, 0xb6, 0xd7, -0x6d, 0xd1, 0x0a, 0x15, 0x84, 0xba, 0x19, 0x25, 0xa8, 0x28, 0xaf, 0x30, -0x80, 0xa7, 0xc3, 0x94, 0x15, 0x2c, 0x1d, 0x45, 0x97, 0x61, 0xa1, 0x11, -0x65, 0x83, 0x32, 0x24, 0xa0, 0xb6, 0x6a, 0xde, 0x2c, 0x2e, 0x35, 0xa7, -0xdb, 0xe1, 0xbf, 0xf9, 0xb5, 0xb9, 0x54, 0x9e, 0x47, 0xc2, 0x33, 0x30, -0xa2, 0xbc, 0xc2, 0xbf, 0xd7, 0xd9, 0xb2, 0x68, 0x7c, 0xa3, 0xbc, 0x1a, -0xb7, 0x1e, 0x3a, 0x64, 0xf0, 0xe2, 0x85, 0xbd, 0x0d, 0x4a, 0x18, 0x85, -0xe4, 0xd9, 0xa1, 0x70, 0xb6, 0x68, 0x92, 0x9f, 0x98, 0xd5, 0xb0, 0xf0, -0xd6, 0x28, 0x2a, 0x04, 0x49, 0x5e, 0xd9, 0x50, 0x58, 0x9f, 0xd0, 0x69, -0xf4, 0x9c, 0x6a, 0x09, 0x8e, 0x87, 0xce, 0x9e, 0x8d, 0x58, 0x54, 0x10, -0xd3, 0x41, 0x08, 0x7d, 0xd3, 0x86, 0x0d, 0x92, 0x6a, 0x35, 0x6f, 0x73, -0x30, 0xd4, 0xfc, 0x74, 0x51, 0x5e, 0x51, 0x1e, 0x00, 0xee, 0x31, 0x6d, -0x19, 0x89, 0x78, 0xf7, 0x9e, 0x3e, 0x1d, 0x69, 0x71, 0x50, 0xe4, 0x54, -0xa9, 0x0a, 0xe4, 0x94, 0x71, 0xc8, 0xaf, 0x57, 0x37, 0xa5, 0x7e, 0xbb, -0xfc, 0xbd, 0x61, 0xa1, 0x64, 0xbb, 0xf7, 0xe2, 0xb9, 0xb5, 0x41, 0xb1, -0x29, 0x46, 0x6d, 0x50, 0x3f, 0x00, 0xec, 0x7c, 0xd1, 0xbc, 0xb5, 0xe2, -0xaf, 0x88, 0xb4, 0x98, 0x59, 0x41, 0x05, 0x31, 0xf3, 0xc4, 0x08, 0xbf, -0xfd, 0xd6, 0x5b, 0x0d, 0x6b, 0xd5, 0xaa, 0xd1, 0xba, 0x4f, 0xde, 0xce, -0x7f, 0x95, 0xc7, 0xd6, 0x53, 0x69, 0x63, 0x6a, 0x84, 0x4e, 0xb1, 0x2f, -0x5e, 0xb1, 0xa0, 0x02, 0x2f, 0xc5, 0xc5, 0x2e, 0xf4, 0xe2, 0xaf, 0x40, -0xdb, 0x8e, 0xa2, 0x42, 0x8f, 0x24, 0x1f, 0x78, 0xe5, 0x56, 0xf1, 0x57, -0xa8, 0xfc, 0x0a, 0x3d, 0x92, 0x3c, 0x5c, 0x6d, 0x50, 0x4a, 0xd5, 0x96, -0xda, 0xe3, 0xaf, 0xbc, 0xfc, 0x72, 0xbd, 0xbc, 0xbc, 0xfc, 0x5e, 0x63, -0x93, 0xb6, 0x7d, 0x5f, 0x69, 0x14, 0x5c, 0x1e, 0x82, 0xba, 0x1d, 0x54, -0x10, 0xec, 0x15, 0x45, 0x85, 0xe1, 0xad, 0x0f, 0xbf, 0x90, 0xa1, 0x3a, -0xff, 0xb2, 0xd9, 0x9f, 0x7c, 0xfc, 0x71, 0xe4, 0xe4, 0xe2, 0xa9, 0x32, -0x05, 0x52, 0xd2, 0xe6, 0xb9, 0x67, 0x9f, 0xad, 0x93, 0x93, 0xdd, 0x3e, -0x84, 0x4a, 0xda, 0xd8, 0x84, 0x50, 0x14, 0x15, 0xfe, 0x6d, 0x72, 0x8d, -0x4b, 0xfe, 0x92, 0x5e, 0xaf, 0x25, 0x61, 0xa1, 0xfb, 0x76, 0xef, 0x96, -0x30, 0x63, 0xc9, 0xdb, 0x0e, 0xef, 0x1a, 0x1f, 0xca, 0x53, 0x81, 0xaa, -0x4d, 0x46, 0xd1, 0xfd, 0xf7, 0xdd, 0x47, 0x97, 0x82, 0x9e, 0xd3, 0x43, -0xad, 0x10, 0xbf, 0x57, 0x6c, 0xb8, 0xb1, 0xcc, 0x96, 0x91, 0xa0, 0xa2, -0xbc, 0xc2, 0x12, 0x39, 0xfd, 0x6f, 0x38, 0x91, 0x98, 0x5a, 0xad, 0x41, -0xcd, 0xdc, 0x5f, 0xfe, 0xe2, 0x17, 0x52, 0xe3, 0x23, 0xec, 0x2b, 0xdf, -0x28, 0x54, 0x48, 0xb3, 0xaf, 0x5d, 0x3b, 0x77, 0xa6, 0x25, 0x26, 0x0c, -0x59, 0xb1, 0xcb, 0xbf, 0x9d, 0xa5, 0xea, 0x5e, 0x65, 0xe2, 0x15, 0xc4, -0x8c, 0x1b, 0xf5, 0x8a, 0x28, 0x2a, 0x2c, 0xdf, 0x5f, 0xdb, 0x92, 0xdf, -0x65, 0x34, 0xee, 0x98, 0x1c, 0xe3, 0xf8, 0xe0, 0x83, 0x0f, 0x22, 0xa4, -0x1e, 0x94, 0x72, 0x56, 0x80, 0x0a, 0x22, 0x64, 0x97, 0x5e, 0x79, 0x25, -0xf4, 0x33, 0x6e, 0x6b, 0xe8, 0x24, 0x64, 0x7b, 0xe5, 0x12, 0x72, 0x82, -0x4d, 0x54, 0x90, 0x84, 0x69, 0xd2, 0xb6, 0xcb, 0x36, 0xee, 0xb6, 0x79, -0xbf, 0x30, 0x3a, 0x2d, 0x7f, 0xe7, 0xe7, 0xd5, 0xdb, 0xf4, 0x4f, 0x72, -0xf5, 0xaf, 0x78, 0x42, 0xd5, 0x0e, 0x8c, 0x04, 0x09, 0x0a, 0x17, 0x9e, -0xa0, 0x62, 0xec, 0xc8, 0x91, 0xd0, 0x4f, 0xc7, 0xbd, 0x7f, 0xa8, 0xba, -0xbb, 0xbe, 0x7f, 0xf4, 0x66, 0x1f, 0x15, 0xa4, 0xd7, 0x94, 0xb5, 0xcc, -0x46, 0x3a, 0x2a, 0x32, 0x8a, 0xbf, 0x69, 0x3c, 0x70, 0x46, 0x52, 0x7c, -0xfc, 0xf1, 0xdb, 0x6f, 0x83, 0xc3, 0x46, 0x42, 0x9d, 0x59, 0xc5, 0x2b, -0x5c, 0x15, 0x01, 0x3f, 0xfb, 0xac, 0x47, 0xd7, 0x2e, 0x8e, 0xe4, 0xac, -0xd6, 0xfb, 0xbe, 0x88, 0xa2, 0xe2, 0x07, 0x68, 0x6c, 0x89, 0x74, 0x54, -0x40, 0x0a, 0x3d, 0x17, 0x6c, 0x74, 0x26, 0x38, 0x89, 0xa3, 0xc6, 0x0c, -0x15, 0x09, 0x95, 0xfa, 0x41, 0x85, 0xf4, 0xf8, 0xc2, 0x2c, 0x4b, 0x97, -0xd4, 0xe6, 0x8d, 0x1a, 0x64, 0xb7, 0xec, 0xdb, 0x60, 0x77, 0x28, 0xa7, -0x52, 0x78, 0x8b, 0x24, 0x17, 0x7f, 0x85, 0xb5, 0x5e, 0x61, 0x25, 0x41, -0x55, 0xd5, 0xd0, 0x2e, 0xff, 0x98, 0xa6, 0x5f, 0x57, 0x51, 0x57, 0x33, -0xde, 0x99, 0x3a, 0x74, 0xe0, 0x00, 0xe9, 0xea, 0x12, 0xf6, 0xbd, 0x8e, -0x04, 0x15, 0x24, 0xe2, 0xf2, 0xa4, 0x0f, 0xdc, 0x7f, 0x7f, 0x4e, 0x5a, -0x72, 0xfb, 0x89, 0x4b, 0x53, 0x8b, 0xbf, 0x8b, 0xf2, 0x0a, 0xc5, 0x2b, -0xa2, 0xa8, 0xf8, 0x6f, 0xab, 0x92, 0x4f, 0x13, 0x33, 0x6a, 0x36, 0xaa, -0x53, 0x9b, 0x78, 0xf2, 0x48, 0xe8, 0x00, 0xa6, 0xa3, 0x02, 0x03, 0x14, -0xa4, 0x30, 0x68, 0xd5, 0xc1, 0x70, 0x83, 0x84, 0x4f, 0xda, 0xb6, 0x49, -0xaf, 0x88, 0xa2, 0xe2, 0xbf, 0xd9, 0xdb, 0xbf, 0xaa, 0xd6, 0xba, 0x28, -0xa7, 0x5a, 0xe6, 0xb9, 0x47, 0x1f, 0x8d, 0x84, 0x1e, 0xaa, 0x82, 0x0a, -0xc2, 0x3d, 0x30, 0x43, 0xaf, 0x5c, 0xba, 0x14, 0x54, 0x4c, 0xd8, 0xf1, -0x78, 0x24, 0xa2, 0xe2, 0xd8, 0xb1, 0x63, 0x48, 0xcc, 0x48, 0x50, 0x7e, -0xa1, 0xe2, 0x3f, 0x31, 0x5b, 0x5c, 0x3f, 0x8e, 0x8b, 0x3f, 0x61, 0x08, -0xa4, 0x1a, 0x5d, 0xc6, 0x66, 0xa5, 0xa7, 0x51, 0x4a, 0x35, 0x12, 0x7a, -0xa8, 0xaa, 0xae, 0x14, 0xff, 0xfb, 0x3f, 0xff, 0x53, 0xd4, 0xb3, 0xbb, -0x23, 0x25, 0xbb, 0xfd, 0xbe, 0x3f, 0x47, 0x51, 0xa1, 0x59, 0xa1, 0xbc, -0x0b, 0xe2, 0x80, 0xe1, 0xdf, 0xb1, 0x17, 0x7e, 0xf8, 0x70, 0x01, 0x18, -0xe1, 0x86, 0x8a, 0x1a, 0xdb, 0xbf, 0x4e, 0xae, 0xd3, 0xb2, 0x56, 0x4e, -0xf6, 0x5b, 0x6f, 0xbe, 0xa9, 0xa3, 0x22, 0x2c, 0x8b, 0xf5, 0xeb, 0xe1, -0x1e, 0x84, 0xd0, 0x27, 0x3b, 0x1c, 0xcd, 0x87, 0xce, 0xce, 0xdd, 0x19, -0x46, 0x29, 0x78, 0x56, 0x31, 0xb3, 0xd6, 0xda, 0x36, 0xbc, 0x02, 0x9b, -0x23, 0x5e, 0x2a, 0xdf, 0x79, 0xc5, 0x7f, 0xe2, 0xb6, 0x7c, 0x9f, 0xb8, -0xf5, 0xfb, 0xf8, 0xad, 0x02, 0x89, 0x30, 0x44, 0x45, 0xab, 0x1d, 0xbf, -0x4d, 0x70, 0xa6, 0xf5, 0xe9, 0xd6, 0x45, 0xba, 0xd0, 0x87, 0xb7, 0xb6, -0xad, 0xcc, 0xb2, 0xb8, 0xf0, 0x6f, 0xbc, 0xee, 0x5a, 0x36, 0xc8, 0xb1, -0x9b, 0x43, 0xad, 0x28, 0xa0, 0xcd, 0x7d, 0xd9, 0xca, 0x5f, 0x81, 0x35, -0xa5, 0x34, 0xe2, 0xc3, 0x2f, 0x54, 0xb8, 0xb8, 0x04, 0x90, 0x70, 0x6e, -0xfb, 0x2e, 0x69, 0xdb, 0x77, 0xf1, 0x5b, 0x09, 0xa8, 0x0c, 0x43, 0x48, -0xc0, 0xfa, 0x06, 0x2d, 0xdf, 0x9d, 0x98, 0xe0, 0x5c, 0xb5, 0x7c, 0xb9, -0xa0, 0x02, 0x69, 0x5b, 0xca, 0x92, 0x87, 0x5f, 0xcc, 0xac, 0x2a, 0xfd, -0x84, 0x01, 0x8a, 0x87, 0xed, 0xd6, 0xae, 0x4d, 0x7c, 0xf5, 0x7a, 0x1d, -0x0e, 0x7c, 0x1e, 0x7e, 0xfc, 0xdf, 0x9d, 0x6f, 0x3b, 0x40, 0x54, 0xb8, -0x20, 0x01, 0x7f, 0x00, 0x12, 0x29, 0xdb, 0xbf, 0x4d, 0x2e, 0xfe, 0x36, -0x7e, 0x2b, 0x96, 0xbb, 0x30, 0x44, 0x05, 0x0d, 0x23, 0x0b, 0xc7, 0x2d, -0x48, 0x8a, 0x8b, 0xa3, 0x09, 0x58, 0xd8, 0x77, 0xa1, 0xd7, 0x2b, 0x18, -0x3c, 0xfb, 0xec, 0x33, 0x6c, 0xa6, 0xad, 0xc7, 0x2c, 0xcc, 0x0d, 0xb3, -0xb4, 0x0a, 0x8f, 0x12, 0x54, 0x20, 0xa8, 0x70, 0x49, 0x4a, 0x17, 0xb8, -0xc4, 0xb7, 0x69, 0xdb, 0xbf, 0x4d, 0xdf, 0xf1, 0xaf, 0xe4, 0xed, 0xdf, -0xc6, 0x6e, 0x11, 0x5e, 0x11, 0x6e, 0xc0, 0xa0, 0x61, 0x64, 0xbd, 0x8e, -0xfd, 0x93, 0x62, 0x1d, 0xcf, 0x3f, 0xff, 0x7c, 0x78, 0x5b, 0x66, 0x55, -0x5a, 0x05, 0xfe, 0x3b, 0xbc, 0xda, 0xd7, 0xad, 0x5a, 0xe9, 0x12, 0x9f, -0x6e, 0xbe, 0xd7, 0xb1, 0xe5, 0x7c, 0xa4, 0xf3, 0x0a, 0x5e, 0xbc, 0x8d, -0x5c, 0xbc, 0x0b, 0x8c, 0x62, 0xcb, 0x77, 0xa9, 0xc5, 0xdf, 0x66, 0x94, -0xfc, 0x8b, 0xff, 0x13, 0xb7, 0x7e, 0x17, 0x13, 0xa6, 0xaa, 0x76, 0xeb, -0xe2, 0xff, 0x4d, 0xc9, 0xa9, 0x9f, 0x1a, 0xe7, 0xf8, 0xc9, 0x4f, 0x7e, -0x12, 0xc6, 0x5d, 0xe8, 0x95, 0xec, 0x24, 0x15, 0x0c, 0x7e, 0xfb, 0x9b, -0xdf, 0x34, 0xaf, 0x5f, 0x27, 0xa5, 0x56, 0xd3, 0x8e, 0x07, 0xff, 0x1a, -0x9e, 0x90, 0x28, 0xeb, 0xaf, 0xe0, 0xe5, 0x92, 0x84, 0x2c, 0x8d, 0x7b, -0x2c, 0xf4, 0x0a, 0x3b, 0xa8, 0xc0, 0x08, 0x0b, 0x67, 0x40, 0x70, 0xca, -0xd8, 0xe1, 0xfa, 0x49, 0xdd, 0xfe, 0x5d, 0x7c, 0x98, 0x32, 0x8a, 0x86, -0xdb, 0xff, 0xd8, 0x65, 0xca, 0x32, 0xb6, 0x89, 0x99, 0xd3, 0x2f, 0xa1, -0x09, 0x58, 0x18, 0xc7, 0x41, 0x89, 0xec, 0x24, 0x6e, 0x0a, 0x82, 0x02, -0xef, 0xbd, 0xe7, 0x1e, 0x9e, 0xba, 0xed, 0xa4, 0x65, 0x79, 0xbb, 0xc2, -0x2b, 0x2b, 0xd5, 0x4d, 0x45, 0x4d, 0x85, 0x8a, 0x32, 0x91, 0xe4, 0x4a, -0xdb, 0xb6, 0x81, 0x0a, 0x20, 0xf1, 0x6f, 0x98, 0x43, 0xaa, 0x0b, 0x15, -0x2e, 0x46, 0x91, 0xb0, 0xf5, 0xfb, 0x70, 0x65, 0x14, 0x23, 0x6e, 0x7e, -0x20, 0x21, 0x3d, 0xa7, 0x45, 0xe3, 0x86, 0x3f, 0x7a, 0xee, 0x39, 0x29, -0x68, 0x40, 0xbe, 0x01, 0x44, 0x13, 0x66, 0x31, 0xb3, 0xba, 0xec, 0x84, -0xe9, 0x89, 0x67, 0xec, 0xde, 0xa9, 0x43, 0x62, 0x72, 0xb5, 0xf1, 0xdb, -0x1f, 0x09, 0x5b, 0x46, 0x11, 0x54, 0x5e, 0x01, 0x24, 0x5c, 0x1a, 0x45, -0x4a, 0xf1, 0xbf, 0x50, 0x27, 0x10, 0x9f, 0xd0, 0xb6, 0xe3, 0x2e, 0xca, -0x4e, 0xe1, 0xa6, 0x51, 0x20, 0x4f, 0x0f, 0x58, 0xe6, 0x8a, 0x77, 0xa0, -0x76, 0xe0, 0x87, 0x1f, 0x7e, 0x28, 0xc5, 0xfa, 0x2b, 0x3e, 0xeb, 0x88, -0xfd, 0xfb, 0xcb, 0xbf, 0xfe, 0xf5, 0x8b, 0xcf, 0x3f, 0xe7, 0xe7, 0xaf, -0x5f, 0x7c, 0x81, 0x84, 0x23, 0x85, 0xfd, 0x82, 0x68, 0x01, 0x53, 0x3e, -0x0a, 0xe9, 0x9c, 0x7d, 0xf2, 0x8e, 0xe3, 0xc9, 0xf1, 0xf1, 0x79, 0xbd, -0xa6, 0x84, 0x7c, 0x25, 0x59, 0xdb, 0x95, 0x6f, 0x94, 0xbf, 0xc2, 0x3f, -0x09, 0x0a, 0x1f, 0x36, 0x76, 0x27, 0x94, 0xec, 0x7f, 0xa5, 0x63, 0x7a, -0x42, 0x76, 0x72, 0x31, 0x8a, 0x30, 0x54, 0xb2, 0x2f, 0xec, 0x91, 0xe7, -0x7b, 0xcf, 0x5f, 0x0f, 0x2a, 0x76, 0xed, 0xd8, 0x6e, 0xe8, 0x2c, 0x5c, -0x91, 0xfd, 0xb6, 0xef, 0xb9, 0xfb, 0xee, 0x41, 0x7d, 0xfa, 0x14, 0x75, -0x2d, 0xec, 0xd7, 0xb5, 0x70, 0xd4, 0xb0, 0x61, 0xcf, 0x3d, 0xf3, 0x8c, -0x54, 0xb9, 0x15, 0x1f, 0x62, 0x50, 0xb0, 0xa1, 0x7c, 0x14, 0x92, 0xa8, -0xdd, 0xa3, 0x4b, 0xe7, 0xf8, 0xa4, 0xf4, 0xe1, 0x37, 0x87, 0x5d, 0x9a, -0x91, 0x01, 0x24, 0x9a, 0x02, 0x1d, 0xa0, 0x5e, 0x01, 0xa3, 0xf8, 0x37, -0x76, 0xd8, 0xf4, 0xed, 0xff, 0x42, 0x82, 0x4a, 0xdc, 0xf6, 0xfd, 0x05, -0x97, 0x76, 0xf8, 0x71, 0x09, 0x71, 0xcf, 0x9f, 0xef, 0x7c, 0xa9, 0xcb, -0x8d, 0x45, 0x8d, 0x0f, 0xbd, 0xb3, 0x70, 0x45, 0xf6, 0xdb, 0x86, 0x5e, -0xa7, 0x4c, 0x98, 0xc0, 0x1c, 0x9c, 0xb5, 0x5a, 0xc4, 0xe5, 0xe4, 0xf3, -0xe1, 0xd0, 0x81, 0x03, 0x60, 0x12, 0x06, 0x22, 0xd8, 0x08, 0x0a, 0x30, -0xf4, 0xea, 0x4f, 0x87, 0x0f, 0x1e, 0x4c, 0x49, 0x72, 0x66, 0x77, 0x9d, -0x10, 0xe6, 0x8c, 0xc2, 0xbe, 0x04, 0x85, 0x84, 0xe0, 0x59, 0xaf, 0x40, -0x7c, 0x4a, 0xd8, 0xf2, 0x5d, 0x4a, 0xf1, 0xb7, 0xa8, 0xda, 0xc8, 0x4e, -0xfc, 0x1a, 0xbe, 0x90, 0x70, 0xa1, 0xa2, 0xd5, 0xf8, 0x25, 0x10, 0xe2, -0x1d, 0xc7, 0x8f, 0x5b, 0xd6, 0x83, 0x0a, 0xca, 0x3e, 0xed, 0xb9, 0x5b, -0x29, 0x55, 0x14, 0x92, 0x63, 0x1d, 0x99, 0x6d, 0x06, 0xb0, 0xce, 0x4d, -0xae, 0x38, 0xc4, 0x64, 0x76, 0x97, 0x94, 0x20, 0xe7, 0x20, 0x47, 0x89, -0x6e, 0x13, 0x94, 0xa8, 0x13, 0x55, 0xfd, 0x09, 0x8d, 0xa2, 0xa8, 0x67, -0x4f, 0x47, 0x5c, 0xf2, 0xf0, 0xe2, 0x27, 0xc3, 0x59, 0xa3, 0x30, 0x65, -0xa8, 0x0a, 0xaf, 0xa0, 0xc6, 0x8d, 0x85, 0x04, 0x05, 0x2a, 0x48, 0x21, -0x70, 0x6f, 0x99, 0x75, 0x31, 0x8a, 0x44, 0x50, 0xb1, 0xfd, 0x5b, 0x97, -0x33, 0x7b, 0xcb, 0xbf, 0x2f, 0xc8, 0x4e, 0xe1, 0x16, 0xf5, 0xa4, 0x9e, -0xc8, 0xb9, 0xf5, 0xfb, 0x06, 0x43, 0xe7, 0xb3, 0x1a, 0x27, 0x4e, 0x9c, -0xc0, 0xd1, 0x8b, 0xaa, 0xad, 0xba, 0x45, 0x96, 0x77, 0x17, 0x7a, 0xe1, -0x00, 0xef, 0xbf, 0xf7, 0x5e, 0xfd, 0x9a, 0xb9, 0xf1, 0x79, 0xcd, 0x26, -0x1c, 0x7e, 0x93, 0x59, 0x15, 0x5c, 0x75, 0x9c, 0xc9, 0x94, 0x14, 0x17, -0xa3, 0x10, 0x63, 0x29, 0x02, 0x1b, 0x41, 0x01, 0x86, 0xf2, 0xdc, 0x31, -0x2c, 0x8c, 0x82, 0x82, 0x26, 0x35, 0xba, 0x8e, 0x0f, 0x7f, 0x46, 0x61, -0xc5, 0x2b, 0x8c, 0xa8, 0xb8, 0xed, 0xb6, 0xdb, 0xc8, 0xd0, 0xf5, 0x88, -0x8a, 0x8b, 0x3e, 0x8a, 0xe4, 0x6d, 0x78, 0xb2, 0xbf, 0x0b, 0x77, 0xd9, -0xc9, 0x05, 0xf5, 0x1a, 0xdb, 0xff, 0x29, 0xbd, 0x8e, 0x08, 0x95, 0x55, -0x95, 0xfa, 0x21, 0x9d, 0xf2, 0xee, 0x8b, 0x27, 0x90, 0x60, 0xff, 0x3e, -0x73, 0xef, 0xbd, 0xdc, 0x3d, 0x7f, 0xd6, 0xb6, 0x1e, 0x77, 0xb8, 0xca, -0x93, 0x35, 0xba, 0x6c, 0x57, 0x3c, 0x35, 0x78, 0xf6, 0xec, 0x41, 0x21, -0x16, 0x60, 0xc0, 0x31, 0x02, 0xc7, 0xa7, 0x52, 0x2a, 0x7e, 0xfd, 0xab, -0x5f, 0xf5, 0xe9, 0xde, 0xcd, 0x11, 0x97, 0x32, 0xa2, 0xe4, 0xd9, 0x30, -0xde, 0xec, 0x4a, 0x1f, 0xcd, 0xa4, 0x57, 0xb8, 0x45, 0x85, 0x7b, 0x09, -0xca, 0x85, 0x0a, 0xc4, 0x27, 0xf0, 0x90, 0xb8, 0x8d, 0xf0, 0xa7, 0x70, -0x8e, 0x1b, 0x97, 0x85, 0xab, 0xb7, 0xe3, 0xcb, 0xda, 0x83, 0xe6, 0xb1, -0x74, 0x77, 0xdf, 0x75, 0x97, 0x14, 0x83, 0x42, 0xc0, 0x80, 0x1c, 0xa1, -0xc5, 0xf2, 0xeb, 0xea, 0xa2, 0x20, 0xc1, 0x2d, 0x76, 0x6d, 0x2f, 0xe6, -0xee, 0xbd, 0x6f, 0xbc, 0xaf, 0xf6, 0x5e, 0x17, 0x4f, 0x6e, 0x38, 0xfd, -0x16, 0xe7, 0x05, 0xbd, 0x02, 0x3b, 0x98, 0x02, 0x46, 0xe0, 0xec, 0x82, -0x3b, 0x4a, 0xe6, 0xdd, 0x81, 0x7d, 0xfb, 0xb8, 0x5d, 0x5e, 0xd1, 0xec, -0xd0, 0xee, 0xeb, 0x65, 0x5f, 0x78, 0xb1, 0x8f, 0x0a, 0xf7, 0x12, 0x94, -0xcb, 0x20, 0x8b, 0xb7, 0x0e, 0xa3, 0xd3, 0x05, 0x48, 0x84, 0xad, 0xe0, -0xa4, 0x1e, 0xad, 0x69, 0xc9, 0x9f, 0x84, 0x57, 0x9c, 0x3e, 0x75, 0x4a, -0x32, 0x7a, 0x21, 0x47, 0x54, 0x6d, 0x41, 0x45, 0x79, 0x28, 0x15, 0x0a, -0x12, 0x90, 0xe9, 0xd7, 0x5f, 0x7d, 0xb5, 0x68, 0xee, 0x6c, 0x47, 0x4c, -0xf2, 0xf4, 0xc3, 0x3f, 0xbe, 0x88, 0xd2, 0xa9, 0xeb, 0x53, 0x1c, 0x8e, -0x23, 0x87, 0x0f, 0x03, 0x4e, 0x32, 0xaa, 0x71, 0x9b, 0xc0, 0x2e, 0x02, -0x47, 0x85, 0x28, 0x15, 0xbf, 0xf8, 0xf9, 0xcf, 0xdb, 0x36, 0x6d, 0x12, -0x9b, 0x91, 0x37, 0x7a, 0xcf, 0x0b, 0x91, 0xf0, 0x72, 0x0d, 0xd1, 0x81, -0xd6, 0x7a, 0x85, 0x37, 0x09, 0xea, 0x62, 0x78, 0x2c, 0xa8, 0x40, 0xb5, -0x08, 0x6f, 0x75, 0x42, 0xd1, 0x44, 0xab, 0x92, 0xdf, 0xe7, 0xf4, 0x98, -0x9c, 0xe8, 0x70, 0x3c, 0xf2, 0xf0, 0xc3, 0xf0, 0x56, 0xb2, 0xb2, 0xb0, -0x5a, 0x2a, 0x42, 0x0c, 0x3a, 0x2a, 0x74, 0x48, 0x00, 0x3c, 0x8a, 0xb2, -0x35, 0xaf, 0x5f, 0x3b, 0x25, 0xbf, 0x4b, 0xeb, 0xc3, 0x17, 0x13, 0xa6, -0x73, 0xfb, 0xcf, 0xcb, 0x4a, 0x4d, 0xc2, 0xeb, 0x8c, 0x7a, 0x23, 0xec, -0x42, 0x20, 0x1a, 0x88, 0x10, 0xa5, 0x3c, 0x15, 0xbb, 0x2f, 0x64, 0xa2, -0x0e, 0x58, 0xb4, 0x25, 0x4c, 0xba, 0x7b, 0xd9, 0xd9, 0xb5, 0x03, 0xe3, -0x15, 0x2e, 0x48, 0xc4, 0xb8, 0x18, 0x05, 0x82, 0x93, 0x64, 0x17, 0x45, -0x04, 0xaf, 0x68, 0xb7, 0xe3, 0x57, 0xce, 0xbc, 0xfc, 0x5a, 0xd5, 0x32, -0x70, 0x11, 0x48, 0xa3, 0x23, 0x08, 0x11, 0x49, 0x23, 0x10, 0x2a, 0xf4, -0x6c, 0x71, 0x62, 0xdb, 0x96, 0x5e, 0x2a, 0xbf, 0xff, 0xf4, 0xd3, 0x4b, -0x26, 0x4f, 0xe6, 0xad, 0x0d, 0x5a, 0xb2, 0x5d, 0x50, 0x7a, 0xc9, 0x91, -0xd7, 0x1d, 0x09, 0xe9, 0x6d, 0xdb, 0xb6, 0xf9, 0xf9, 0xcf, 0x7e, 0x16, -0x5c, 0x54, 0x70, 0x47, 0x06, 0x1c, 0xd0, 0xa3, 0x6b, 0x42, 0x56, 0xfd, -0x96, 0x87, 0xc2, 0x31, 0xbb, 0xc8, 0x1d, 0x42, 0x02, 0x47, 0x05, 0x81, -0x4f, 0x3f, 0xe0, 0x21, 0x22, 0x20, 0x41, 0xa8, 0x6c, 0xc7, 0xe1, 0x97, -0xb2, 0x6e, 0xf3, 0xe7, 0xcc, 0xc1, 0xab, 0x2d, 0x4a, 0x05, 0x42, 0x4b, -0x80, 0x7b, 0xb3, 0x67, 0x54, 0x48, 0x1f, 0x3a, 0xd8, 0xd1, 0x92, 0xc5, -0xae, 0x72, 0x7d, 0x7d, 0xa6, 0x2d, 0x6d, 0x75, 0xeb, 0xb7, 0x40, 0xa2, -0xd6, 0x9e, 0xef, 0x5b, 0x8d, 0x98, 0x93, 0x92, 0x10, 0xbf, 0x7d, 0xeb, -0x56, 0x4c, 0x87, 0x41, 0x44, 0x85, 0xe0, 0x90, 0x4a, 0xa1, 0xad, 0x1b, -0xd7, 0x4f, 0xcb, 0x2f, 0x8c, 0xa2, 0xa2, 0x8c, 0x65, 0xd6, 0xa3, 0x04, -0x25, 0xbc, 0x22, 0xbc, 0x5d, 0x13, 0x46, 0x35, 0xa9, 0xef, 0x65, 0x37, -0x40, 0x97, 0xa3, 0x86, 0x0e, 0x25, 0xd6, 0x43, 0x4c, 0x13, 0xe5, 0x5a, -0x77, 0x59, 0x24, 0x19, 0xa9, 0xc2, 0x84, 0x42, 0xdf, 0x20, 0x2f, 0x27, -0x29, 0xbb, 0x7e, 0xf7, 0x63, 0x17, 0xbb, 0xa8, 0x74, 0x39, 0xfa, 0x55, -0x7c, 0x72, 0x46, 0xc7, 0x36, 0xad, 0x01, 0x27, 0x82, 0x1c, 0x5c, 0x8b, -0xc9, 0xe8, 0x7a, 0x85, 0xdf, 0xe2, 0x9c, 0xa0, 0x82, 0x58, 0x92, 0x11, -0x03, 0x8a, 0xe2, 0xb3, 0xea, 0x8d, 0xd9, 0xff, 0x4a, 0xb8, 0x2b, 0x15, -0xda, 0x9e, 0x1e, 0x00, 0xaf, 0x70, 0x41, 0x22, 0x2c, 0x13, 0x27, 0x3c, -0xbc, 0xfe, 0xac, 0xe2, 0x7f, 0xe4, 0x15, 0x74, 0x28, 0x68, 0xd4, 0xf0, -0xd9, 0x67, 0x9f, 0xc5, 0x53, 0x81, 0xf8, 0x24, 0x25, 0x03, 0xcb, 0x55, -0xa9, 0x50, 0x8c, 0x82, 0x1b, 0xe5, 0x64, 0xa4, 0xa6, 0xd6, 0x6a, 0xda, -0xea, 0xd0, 0xc5, 0x78, 0xd5, 0xa9, 0x87, 0x5e, 0x4e, 0x74, 0xa6, 0x4c, -0x9b, 0x38, 0x41, 0xa1, 0x02, 0x6d, 0x5b, 0x6c, 0xc4, 0x81, 0xc4, 0x29, -0x2a, 0x28, 0xf2, 0x5c, 0x5b, 0x6f, 0xde, 0x04, 0x91, 0xd4, 0x1e, 0x72, -0x45, 0xb8, 0x7b, 0x2a, 0x82, 0x83, 0x0a, 0x55, 0xa3, 0x20, 0x22, 0x04, -0x27, 0x81, 0x4a, 0x8b, 0x62, 0x57, 0x92, 0x49, 0xbf, 0x5e, 0xbd, 0x68, -0x7e, 0x85, 0x51, 0x4e, 0xd9, 0x64, 0xcb, 0x55, 0xa9, 0x50, 0xdd, 0x19, -0xe1, 0x03, 0xb9, 0xe9, 0xa9, 0x75, 0x9a, 0x75, 0xaa, 0xbe, 0x93, 0xc5, -0xff, 0x6f, 0xf5, 0x92, 0xef, 0x47, 0x6c, 0x7f, 0xd2, 0xe9, 0x4c, 0x9d, -0x33, 0x73, 0x06, 0x33, 0x09, 0xa2, 0xf8, 0xa4, 0x50, 0xc1, 0x73, 0x51, -0xce, 0xa3, 0x27, 0x95, 0x33, 0x79, 0xea, 0x85, 0xb7, 0x14, 0xec, 0x09, -0xaf, 0xae, 0x90, 0x65, 0xf4, 0x8a, 0x28, 0x2a, 0xec, 0x18, 0x22, 0xac, -0xce, 0xe9, 0xb1, 0xa8, 0x38, 0xd6, 0xe1, 0xb8, 0x6c, 0xe6, 0x4c, 0x69, -0x71, 0x24, 0xd6, 0x27, 0x65, 0x93, 0x0d, 0x4a, 0x90, 0x85, 0x41, 0xc1, -0xd0, 0x23, 0x91, 0x1e, 0x3f, 0x77, 0x2e, 0xc3, 0x99, 0xd0, 0x75, 0xe4, -0x8c, 0x8b, 0x10, 0x3d, 0xf0, 0x75, 0xe7, 0xd5, 0xa7, 0xe3, 0xe3, 0x9d, -0x23, 0x87, 0x0e, 0xc1, 0x3a, 0x0c, 0x2a, 0x94, 0xf8, 0x14, 0xa0, 0x92, -0xa3, 0xa3, 0x02, 0x79, 0xec, 0x8d, 0x37, 0xde, 0x68, 0xdd, 0xcc, 0xd5, -0x6a, 0xbe, 0xf7, 0xfc, 0x0d, 0xed, 0x76, 0x7d, 0xda, 0xb8, 0xe4, 0xcf, -0x64, 0xe7, 0x86, 0x97, 0x40, 0x55, 0x56, 0x0b, 0xb0, 0x29, 0x41, 0xa1, -0x75, 0xe1, 0xae, 0x2a, 0x1b, 0xf1, 0x11, 0x59, 0xea, 0x04, 0x44, 0xd0, -0xa0, 0xf8, 0x8f, 0x29, 0xf5, 0x5a, 0x65, 0xa4, 0xa7, 0xdd, 0x7e, 0xdb, -0x6d, 0x12, 0x3d, 0x8e, 0x9e, 0x2d, 0xd6, 0xa7, 0xf2, 0x0b, 0x95, 0x55, -0x91, 0x48, 0x7f, 0xfb, 0xf2, 0x4b, 0xf6, 0xec, 0x98, 0xd8, 0xc4, 0x49, -0x25, 0x8f, 0x09, 0x45, 0x76, 0x3e, 0xf4, 0x45, 0x76, 0x87, 0x21, 0x34, -0xad, 0xdc, 0xbe, 0x6d, 0x1b, 0xea, 0x8d, 0x4c, 0x26, 0x70, 0xf1, 0x49, -0x60, 0xa9, 0xac, 0x5e, 0x60, 0x1e, 0x6b, 0xef, 0x8f, 0x5f, 0xf9, 0x71, -0xeb, 0xa6, 0x05, 0x10, 0x40, 0xcd, 0xfe, 0x97, 0xb5, 0x99, 0xb7, 0xbd, -0xff, 0x0d, 0x27, 0x87, 0x6f, 0x3e, 0xdb, 0x62, 0xeb, 0x2f, 0x1a, 0x6c, -0xfb, 0x43, 0xda, 0xd6, 0x7f, 0x86, 0x38, 0x42, 0x4c, 0x7e, 0x67, 0x8d, -0xd0, 0x69, 0xc3, 0x80, 0xa8, 0x6c, 0xed, 0xdb, 0x76, 0x83, 0x8a, 0xf0, -0x77, 0xd8, 0xa9, 0xf7, 0xdd, 0xa0, 0xf8, 0x0f, 0x85, 0x53, 0x5c, 0xd5, -0xf2, 0x86, 0x0c, 0x18, 0x40, 0xf4, 0xb8, 0x74, 0xfd, 0x62, 0x6f, 0x16, -0x97, 0x76, 0xb9, 0xda, 0x64, 0x25, 0x0f, 0x8e, 0xf8, 0xdc, 0xe4, 0xc4, -0xc4, 0xac, 0xc2, 0xd1, 0x2d, 0x0e, 0x5e, 0xa4, 0xc2, 0xd1, 0xeb, 0xee, -0x8c, 0x4b, 0x48, 0xea, 0xdf, 0xab, 0x27, 0x59, 0xa3, 0xa0, 0x02, 0xda, -0x15, 0x3d, 0x3b, 0x28, 0xf3, 0x51, 0x41, 0x50, 0x60, 0x1e, 0x5d, 0x05, -0x46, 0xf4, 0xe2, 0x8b, 0x2f, 0x0a, 0x30, 0x62, 0xe3, 0x53, 0x12, 0xd3, -0x6a, 0x24, 0x66, 0xe4, 0xa6, 0xd4, 0x6c, 0x52, 0xaf, 0xd3, 0x60, 0x96, -0x65, 0xf0, 0x0d, 0x77, 0xd4, 0xdf, 0x26, 0xf5, 0xfa, 0x43, 0x51, 0x9c, -0x36, 0xed, 0xef, 0x76, 0x50, 0xc1, 0x26, 0x14, 0xe1, 0xa8, 0xe0, 0x95, -0x77, 0x9f, 0xb3, 0x3e, 0x26, 0x36, 0x01, 0xb2, 0x78, 0xee, 0xb9, 0xe7, -0x88, 0x93, 0xa5, 0x40, 0x96, 0x44, 0x04, 0x4a, 0xa9, 0x9b, 0xf2, 0x90, -0x9d, 0xd8, 0xb0, 0x95, 0x2b, 0x8d, 0x0d, 0x7b, 0xd2, 0xf8, 0xf1, 0xbc, -0xac, 0xd1, 0x7b, 0x5f, 0x12, 0xa0, 0xe6, 0xed, 0xfa, 0xae, 0x59, 0xff, -0x49, 0x44, 0xec, 0x3d, 0xf5, 0xc4, 0x13, 0x4c, 0x46, 0xc9, 0x72, 0xa2, -0xe1, 0x04, 0xee, 0x62, 0x37, 0xd8, 0xbe, 0xc0, 0x3f, 0xbb, 0x00, 0xc0, -0xb8, 0x6e, 0xd5, 0xd5, 0xf3, 0x67, 0xcf, 0x1e, 0x39, 0x68, 0x60, 0xff, -0x9e, 0xdd, 0x6b, 0x67, 0x65, 0xe2, 0xca, 0x4c, 0x88, 0x89, 0x8d, 0x77, -0xa6, 0x55, 0x6b, 0xd5, 0xaf, 0xcf, 0x35, 0xc7, 0xea, 0x6f, 0xfb, 0x2c, -0x04, 0x81, 0x61, 0x42, 0xb2, 0x15, 0x2a, 0x58, 0xe1, 0xd2, 0xbc, 0x6d, -0x2c, 0xb3, 0x11, 0x8e, 0x0a, 0xde, 0x74, 0xf7, 0xcb, 0x6f, 0x89, 0x49, -0x48, 0xae, 0x59, 0x23, 0x8b, 0xb0, 0x3c, 0x49, 0x33, 0xaa, 0x80, 0x28, -0x0f, 0x41, 0x85, 0x18, 0xa0, 0x30, 0xb9, 0xf6, 0xed, 0x41, 0x05, 0xcb, -0x9c, 0xae, 0x87, 0xbf, 0x14, 0x54, 0x74, 0x38, 0xf0, 0x45, 0x4a, 0xed, -0xe6, 0xed, 0x9a, 0xe6, 0x13, 0x92, 0x20, 0x10, 0x65, 0x47, 0x17, 0x46, -0x11, 0xac, 0x30, 0x72, 0xb9, 0xbb, 0x84, 0x42, 0x49, 0x23, 0x3c, 0x9e, -0x5a, 0x6a, 0xab, 0x62, 0x6c, 0x20, 0x49, 0xed, 0xcd, 0x37, 0xdf, 0x7c, -0xf8, 0xec, 0xd9, 0x4d, 0x1b, 0x36, 0x14, 0xb6, 0x6d, 0x9b, 0x18, 0xe3, -0x88, 0x75, 0xa6, 0x76, 0x99, 0xb5, 0x06, 0x99, 0x2a, 0xa4, 0x04, 0x2a, -0x2b, 0xe6, 0x66, 0xa5, 0x57, 0xd8, 0x44, 0x45, 0x44, 0x88, 0x4f, 0xf5, -0xb7, 0x7e, 0xd6, 0xfd, 0x8a, 0x2d, 0x8e, 0x84, 0xe4, 0x8c, 0xe4, 0xa4, -0x03, 0xfb, 0xf7, 0x4b, 0xbe, 0x22, 0x52, 0xa6, 0x50, 0x61, 0xf9, 0x99, -0x9e, 0x44, 0xb8, 0x57, 0xa8, 0xb8, 0x98, 0xde, 0x90, 0x9c, 0xd5, 0xf1, -0xf0, 0x3f, 0x84, 0xe6, 0x26, 0x1f, 0x78, 0x21, 0x3e, 0xa3, 0xe6, 0xb0, -0xfe, 0xfd, 0x40, 0xa9, 0x84, 0xb2, 0x0b, 0x2a, 0x82, 0xa8, 0xe1, 0x08, -0xbb, 0x50, 0x76, 0x61, 0x18, 0x23, 0xc0, 0x40, 0x54, 0x03, 0x84, 0x08, -0x90, 0x60, 0x03, 0x93, 0xc3, 0x47, 0x1f, 0x7d, 0xf4, 0xde, 0x7b, 0xef, -0xbd, 0xfa, 0xea, 0xab, 0x37, 0xde, 0xb0, 0x86, 0x2e, 0xc3, 0x90, 0x53, -0xd7, 0xd9, 0x6b, 0x90, 0x36, 0x2b, 0x04, 0x18, 0x81, 0x4b, 0x6b, 0x32, -0x42, 0x30, 0x79, 0x45, 0xf8, 0xa3, 0xa2, 0xde, 0xd6, 0xcf, 0xba, 0xcd, -0xdf, 0xe4, 0x88, 0x77, 0x56, 0xcf, 0x48, 0xdf, 0xb6, 0x65, 0xcb, 0x3b, -0xef, 0xbc, 0xf3, 0xd3, 0x9f, 0xfe, 0x54, 0x82, 0x64, 0x25, 0x4b, 0xbb, -0xfc, 0xc2, 0x01, 0x75, 0x54, 0x48, 0xc7, 0xad, 0xc1, 0x45, 0x45, 0x24, -0xde, 0xb5, 0x3c, 0x78, 0xd1, 0x7f, 0xd7, 0x74, 0xef, 0xdf, 0x53, 0x1b, -0xb4, 0x6f, 0x98, 0x97, 0xfd, 0xee, 0x3b, 0xef, 0x28, 0x54, 0x04, 0x1d, -0xa5, 0x06, 0x60, 0xf0, 0xc8, 0x88, 0x52, 0x30, 0x2e, 0x98, 0x06, 0xc6, -0x06, 0xac, 0x70, 0x44, 0x52, 0x83, 0x0d, 0x1c, 0x9a, 0x2c, 0xce, 0xa9, -0x53, 0xa7, 0x1a, 0xd6, 0xab, 0x8b, 0xde, 0xd1, 0xf3, 0xca, 0x92, 0x0a, -0x01, 0x46, 0xb0, 0x50, 0x61, 0xa2, 0x64, 0xfb, 0x12, 0x14, 0xdb, 0x43, -0x59, 0x1b, 0x54, 0x98, 0xa3, 0xc2, 0x05, 0x89, 0x79, 0x1b, 0x11, 0x0b, -0xaa, 0x57, 0xcb, 0xdc, 0xb9, 0x63, 0x07, 0x6f, 0x9d, 0x5d, 0x19, 0x22, -0x10, 0x71, 0xa5, 0x62, 0x7a, 0xce, 0xab, 0x0c, 0x07, 0x6e, 0x87, 0x37, -0x3d, 0x39, 0x39, 0xb9, 0xde, 0x1e, 0x55, 0x6f, 0xe6, 0x7c, 0x8f, 0x4b, -0x96, 0xc7, 0x38, 0x1c, 0x2b, 0x97, 0x2d, 0x15, 0xde, 0x55, 0x4e, 0xb1, -0x58, 0x3a, 0x30, 0x44, 0x94, 0x82, 0x29, 0xb1, 0x29, 0x70, 0x47, 0x76, -0x07, 0x56, 0x83, 0x6d, 0x02, 0x2b, 0x0d, 0x32, 0x15, 0xb2, 0xdc, 0xad, -0x87, 0x0e, 0x55, 0xcb, 0xcc, 0x8c, 0x4b, 0xca, 0xe8, 0xbd, 0x6c, 0x5f, -0x85, 0xb0, 0x8b, 0xf2, 0x21, 0xc2, 0x28, 0x2a, 0x2c, 0x5f, 0x1e, 0x82, -0x53, 0xd7, 0xd9, 0x6b, 0x63, 0xe3, 0x9c, 0xd5, 0xd3, 0xd2, 0xf6, 0xec, -0xde, 0xfd, 0xee, 0xbb, 0xef, 0xf2, 0xd6, 0x91, 0x19, 0xd8, 0x95, 0x0d, -0x3e, 0x0a, 0xbf, 0x43, 0x2a, 0x3c, 0x04, 0x3e, 0xa9, 0x3f, 0x49, 0x86, -0x83, 0x54, 0xec, 0x1b, 0x37, 0x6a, 0x54, 0xdd, 0xba, 0x75, 0x53, 0x8a, -0x5d, 0xfe, 0x3b, 0xf9, 0xc1, 0xa7, 0x96, 0x5c, 0xa3, 0x5e, 0x56, 0x4a, -0x12, 0xbb, 0x35, 0xb3, 0xe2, 0x9c, 0xa0, 0x58, 0x9f, 0xcc, 0x13, 0xd3, -0x81, 0xc1, 0x2d, 0x90, 0xd3, 0xc0, 0x06, 0xb7, 0x03, 0x1b, 0xdc, 0x17, -0x6c, 0xb0, 0x2c, 0xe8, 0x5a, 0xc8, 0x96, 0xd8, 0x31, 0x37, 0x6f, 0xda, -0xe4, 0x8c, 0x8d, 0x49, 0xc9, 0x6d, 0x44, 0xc0, 0x98, 0xbf, 0xc0, 0x08, -0x9c, 0x09, 0x04, 0x86, 0x16, 0x9b, 0x36, 0x28, 0x9e, 0x3c, 0x72, 0x78, -0x05, 0x90, 0xe8, 0x34, 0x65, 0x59, 0x6c, 0x6c, 0x5c, 0x5e, 0xf5, 0xcc, -0xfd, 0xfb, 0xf7, 0x03, 0x09, 0x04, 0x27, 0xe1, 0x12, 0x12, 0xf5, 0x54, -0xae, 0xd6, 0x58, 0x9d, 0x28, 0x15, 0x2a, 0xfe, 0xfc, 0x97, 0xbf, 0xf4, -0xe9, 0xd1, 0xbd, 0x45, 0x87, 0x1e, 0x3a, 0x9d, 0x15, 0xec, 0xf9, 0x32, -0x25, 0xa7, 0x41, 0x5e, 0x66, 0x1a, 0x15, 0x15, 0xca, 0xbb, 0x2b, 0x9f, -0x02, 0x86, 0xa0, 0x14, 0xa6, 0x21, 0x45, 0xd3, 0xe0, 0x1b, 0xe8, 0x3c, -0xdc, 0x5d, 0x04, 0x2a, 0x52, 0x9c, 0xd1, 0x34, 0x26, 0x8e, 0x1d, 0x13, -0x1b, 0x1b, 0x3f, 0x70, 0xe9, 0x0e, 0x7f, 0x51, 0x11, 0x18, 0x4d, 0xfb, -0xeb, 0xa2, 0x2d, 0x9d, 0xad, 0x4d, 0x5e, 0x11, 0x39, 0xa8, 0x00, 0x12, -0x6d, 0x87, 0x4c, 0x67, 0x59, 0x9a, 0x35, 0x6a, 0x74, 0xd7, 0xc9, 0x93, -0x02, 0x09, 0x36, 0x42, 0x09, 0x79, 0x52, 0x9e, 0xec, 0xf2, 0xb3, 0xc6, -0x9a, 0x51, 0x01, 0x09, 0x3e, 0xf7, 0xec, 0xb3, 0xf5, 0x72, 0x6b, 0xf4, -0xb9, 0xe4, 0x2a, 0x9d, 0xce, 0x7a, 0xcf, 0x5b, 0xc7, 0x3c, 0x17, 0xcc, -0x9d, 0x83, 0x0c, 0x03, 0x5c, 0x95, 0xf6, 0x5f, 0x4e, 0xec, 0x4b, 0x4f, -0x06, 0xe4, 0xf1, 0x51, 0xeb, 0x15, 0xdf, 0xe0, 0xd6, 0xa2, 0x6c, 0x20, -0xcb, 0xc1, 0x51, 0xcf, 0x9d, 0x3b, 0x97, 0xe4, 0x70, 0x34, 0xea, 0xd4, -0x3f, 0x7b, 0xc7, 0x45, 0x2d, 0xc8, 0x17, 0x78, 0x28, 0x9f, 0x5a, 0xe5, -0x25, 0x75, 0xda, 0x41, 0x05, 0x8c, 0x32, 0x12, 0x50, 0x51, 0xf7, 0x96, -0xdf, 0x77, 0x5f, 0xbc, 0xd3, 0x99, 0xdb, 0x90, 0x35, 0xe9, 0xde, 0xa5, -0xf3, 0x23, 0x8f, 0x3c, 0x82, 0x2e, 0x81, 0xe0, 0x24, 0x99, 0xd9, 0x22, -0x38, 0x19, 0xb8, 0x44, 0x39, 0xd1, 0x9f, 0x41, 0x82, 0x02, 0x15, 0x4b, -0x17, 0x2f, 0x66, 0x56, 0xe3, 0x37, 0xde, 0xad, 0x89, 0x4f, 0x5f, 0x26, -0xe7, 0x36, 0xac, 0x99, 0x99, 0xfe, 0xc2, 0x0b, 0x2f, 0xc0, 0xc6, 0x2b, -0x00, 0x15, 0x62, 0x13, 0x13, 0xa6, 0x21, 0xb6, 0x29, 0xc1, 0x06, 0xd3, -0xc3, 0x9d, 0x82, 0x40, 0x05, 0xd3, 0x10, 0x60, 0xa0, 0x80, 0x15, 0xf5, -0xe8, 0xea, 0xac, 0x5e, 0xb7, 0xcd, 0x2e, 0xdc, 0x17, 0x3e, 0x6d, 0xfc, -0x06, 0x48, 0xf8, 0x74, 0x6d, 0xf0, 0x4e, 0x8e, 0xa2, 0x42, 0xbd, 0xb6, -0x2e, 0x73, 0x37, 0xc6, 0x39, 0xd3, 0xf0, 0x1f, 0x4f, 0x9f, 0x3a, 0xf5, -0xf1, 0xc7, 0x1f, 0x7f, 0xfb, 0xed, 0xb7, 0x79, 0xbb, 0xec, 0x7c, 0xa2, -0x5e, 0x9b, 0xb9, 0x44, 0x79, 0x43, 0x42, 0xa8, 0x10, 0xca, 0xfb, 0xf0, -0x83, 0x0f, 0x5a, 0xe6, 0x37, 0x4c, 0xac, 0xd3, 0x5a, 0x39, 0x2b, 0x28, -0xbd, 0xd3, 0x67, 0xe1, 0x56, 0xde, 0xdd, 0x35, 0xab, 0xae, 0x86, 0x95, -0x55, 0x18, 0x2a, 0x94, 0x65, 0xcc, 0xc0, 0x37, 0x84, 0x69, 0x20, 0x50, -0x09, 0x30, 0x58, 0xb4, 0x49, 0xa3, 0x47, 0xc6, 0xa7, 0xd6, 0x18, 0xbd, -0xf5, 0x61, 0x5f, 0x50, 0x21, 0x90, 0xa8, 0x02, 0x81, 0xd8, 0x51, 0x54, -0xc8, 0x6b, 0xab, 0xbb, 0xe5, 0xf7, 0x09, 0xe9, 0xd9, 0x19, 0x69, 0xa9, -0x9b, 0x36, 0x6e, 0x7c, 0xf9, 0xe5, 0x97, 0x81, 0x04, 0xf2, 0xb1, 0x54, -0xb5, 0xa9, 0x60, 0x5d, 0xc2, 0x20, 0x41, 0xb1, 0x25, 0xff, 0xe8, 0xd9, -0x67, 0xd3, 0x09, 0x40, 0x1a, 0xb2, 0xb0, 0xcb, 0x91, 0xbf, 0x2b, 0x3d, -0x3b, 0xb5, 0x7e, 0x1b, 0xde, 0xdd, 0x99, 0xd3, 0xa7, 0x55, 0x9c, 0xa2, -0x68, 0xdb, 0x81, 0x7b, 0xb5, 0xed, 0x98, 0x01, 0x14, 0x3c, 0x14, 0xd3, -0x90, 0x8a, 0xe5, 0x12, 0x1b, 0x82, 0x82, 0x31, 0x63, 0xca, 0xe4, 0xb8, -0xa4, 0x6a, 0x5d, 0xaf, 0xbe, 0xdd, 0x77, 0x54, 0x54, 0x9e, 0xe0, 0xa4, -0xd8, 0x9a, 0x09, 0x15, 0x62, 0x65, 0x31, 0xfa, 0xb6, 0x91, 0xa0, 0x78, -0xd4, 0x30, 0xb6, 0xcc, 0xf6, 0x5b, 0xb6, 0x3b, 0x2e, 0x36, 0x7e, 0xd8, -0xe0, 0x41, 0x08, 0x24, 0x6f, 0xbd, 0xf5, 0x96, 0x40, 0x42, 0x62, 0xc2, -0x54, 0xa5, 0x82, 0x8a, 0xd1, 0x25, 0xcc, 0xa8, 0x80, 0xf4, 0x59, 0xf9, -0xc6, 0x33, 0xb6, 0x14, 0x1e, 0xb9, 0xd8, 0xef, 0xbd, 0xe7, 0x05, 0x8d, -0xe2, 0x8a, 0x05, 0x0b, 0xb0, 0xf9, 0x48, 0xed, 0x67, 0xb1, 0xcc, 0x56, -0x30, 0x2a, 0x74, 0x99, 0x4a, 0xe5, 0x45, 0x89, 0xbc, 0xbd, 0xf8, 0xf2, -0xf9, 0x8e, 0xf8, 0xe4, 0x2e, 0x2b, 0x0e, 0xfb, 0x82, 0x8a, 0xe0, 0x89, -0x40, 0xbe, 0x89, 0x6d, 0xde, 0xfd, 0x15, 0x16, 0xa8, 0x90, 0xe7, 0x0c, -0x6f, 0x54, 0xb4, 0x1b, 0x3e, 0x33, 0x35, 0x31, 0x71, 0x7b, 0x71, 0xf1, -0x6b, 0xaf, 0xbd, 0x26, 0xa4, 0x06, 0x24, 0x24, 0xac, 0xa3, 0x5c, 0xb3, -0x4f, 0x3d, 0x6f, 0xcc, 0xe2, 0xaf, 0x38, 0x7a, 0xf8, 0x30, 0x18, 0x68, -0x7a, 0xc5, 0xa1, 0xb6, 0xb7, 0xba, 0xe2, 0xb7, 0x29, 0x3f, 0x13, 0x9f, -0xd5, 0xb0, 0x59, 0xa3, 0xfa, 0x0f, 0x3f, 0xf4, 0x90, 0xd8, 0x8b, 0x91, -0xf1, 0x50, 0x76, 0x65, 0x9e, 0x15, 0xc9, 0x2b, 0x0c, 0x1c, 0x03, 0x1d, -0x43, 0xd8, 0x05, 0xd4, 0x32, 0x63, 0xca, 0xc4, 0xb8, 0x94, 0xac, 0x71, -0x3b, 0xce, 0x85, 0x39, 0x2a, 0xc2, 0xdb, 0x32, 0x5b, 0xab, 0x5d, 0xbf, -0xf4, 0x24, 0xe7, 0x3d, 0xa7, 0x4e, 0x61, 0x74, 0x12, 0x99, 0x44, 0xb8, -0x84, 0x04, 0x66, 0x57, 0x3c, 0x97, 0xd0, 0x7d, 0xdb, 0x3b, 0xb6, 0x6e, -0x01, 0x15, 0xcd, 0x97, 0x1c, 0x6f, 0x7e, 0xd0, 0xe5, 0xc2, 0x1b, 0xb6, -0xf9, 0x2c, 0xbf, 0xce, 0x9e, 0x31, 0x03, 0xf4, 0x62, 0x93, 0x15, 0x63, -0x80, 0xca, 0x1d, 0xaf, 0x78, 0x54, 0xa8, 0xc8, 0x14, 0x89, 0x98, 0x02, -0x9c, 0x90, 0x4a, 0x41, 0x9d, 0x9a, 0x69, 0xf5, 0xdb, 0x10, 0xac, 0x15, -0xce, 0xa8, 0x60, 0xd7, 0x0c, 0x6f, 0x5e, 0x51, 0xbb, 0x6d, 0xdf, 0xf4, -0xa4, 0xa4, 0x07, 0xee, 0xbf, 0x1f, 0x52, 0x53, 0xb9, 0x13, 0xbc, 0x60, -0x3d, 0x77, 0xa2, 0x02, 0xd4, 0x6b, 0x03, 0xeb, 0x10, 0x5e, 0xb1, 0x7e, -0xcd, 0x1a, 0x60, 0xd0, 0x62, 0xe5, 0xdd, 0x0d, 0xf6, 0xb9, 0x4a, 0xdd, -0x14, 0x2c, 0xba, 0x95, 0x5f, 0x97, 0x2f, 0x5d, 0x4a, 0x9c, 0x05, 0x00, -0xc6, 0x6a, 0x4c, 0x44, 0xb3, 0x94, 0x69, 0x0b, 0x24, 0x2b, 0xd5, 0xbe, -0x3a, 0x61, 0xe9, 0xe6, 0xd3, 0x3b, 0xbf, 0xbc, 0xf6, 0xea, 0xab, 0x38, -0xdd, 0x5b, 0x0e, 0xbc, 0x24, 0x6f, 0xa7, 0xab, 0xe4, 0x42, 0xe8, 0xfd, -0xd8, 0xd1, 0x2b, 0x24, 0x58, 0x32, 0xbc, 0x51, 0xd1, 0x69, 0xc2, 0x95, -0xc9, 0x09, 0x09, 0xf8, 0x65, 0x55, 0xee, 0x84, 0x04, 0xdb, 0xa9, 0xa8, -0xec, 0x8a, 0x87, 0x84, 0xda, 0x83, 0x57, 0xaf, 0x5c, 0xce, 0x6b, 0x6a, -0x73, 0xdd, 0x7d, 0xd9, 0xbb, 0x5c, 0xf5, 0x33, 0x47, 0x94, 0xb8, 0x9a, -0x35, 0x4e, 0x9f, 0x32, 0x19, 0xe5, 0x07, 0x77, 0x32, 0xce, 0x0a, 0x50, -0x51, 0xf1, 0xdd, 0x33, 0x74, 0xf3, 0xb1, 0x1e, 0x44, 0x88, 0x7a, 0xb3, -0x66, 0xf5, 0x75, 0xf1, 0xb1, 0x09, 0xa3, 0xae, 0x3f, 0x1a, 0x7a, 0x78, -0x30, 0x55, 0x5f, 0x96, 0xac, 0x23, 0x6b, 0xbd, 0x22, 0xec, 0x51, 0x31, -0x74, 0xdd, 0x3d, 0xa4, 0x09, 0x90, 0x90, 0x8d, 0xa1, 0x53, 0x0a, 0x9f, -0x09, 0xa3, 0x28, 0xbf, 0x0a, 0x99, 0x5e, 0xf7, 0x66, 0xf1, 0x0c, 0xa0, -0x2a, 0xac, 0x58, 0xbc, 0xc8, 0xe5, 0x42, 0x59, 0xff, 0x68, 0xe2, 0x36, -0x57, 0x28, 0x44, 0x73, 0x97, 0x5e, 0x51, 0x9f, 0x36, 0x4b, 0x8f, 0x9d, -0x3b, 0x57, 0x15, 0x78, 0x85, 0x21, 0x13, 0x03, 0x25, 0xa7, 0x69, 0x83, -0xfa, 0x29, 0x79, 0x8d, 0x99, 0x67, 0x18, 0xa0, 0x42, 0xba, 0xf6, 0xf8, -0x8d, 0x0a, 0x77, 0xfe, 0x97, 0xca, 0x8e, 0x69, 0xb1, 0xc7, 0xc1, 0x1b, -0x6e, 0xff, 0x53, 0x52, 0xcd, 0x26, 0x79, 0xd9, 0x35, 0xce, 0x3d, 0xf2, -0x88, 0x28, 0xaf, 0xe5, 0x5a, 0x21, 0xd3, 0x2b, 0x24, 0x14, 0xa3, 0x80, -0x5f, 0x2d, 0x5d, 0x74, 0x05, 0xa8, 0x18, 0x70, 0xcb, 0xe3, 0x8a, 0xc8, -0xfa, 0x2d, 0x76, 0xd5, 0x99, 0x25, 0x5d, 0x1b, 0x0b, 0xb2, 0xae, 0x57, -0x54, 0xbc, 0x04, 0x65, 0x08, 0xaa, 0x85, 0xc1, 0xee, 0xd8, 0xb6, 0x2d, -0x21, 0x3e, 0xbe, 0xf7, 0xec, 0xd5, 0xa1, 0x0a, 0x89, 0xb2, 0x35, 0xc9, -0xad, 0x51, 0x71, 0xfb, 0xed, 0xb7, 0xdb, 0x90, 0xa0, 0xcc, 0x36, 0x66, -0x95, 0xf5, 0xa7, 0x42, 0xd8, 0xab, 0x7a, 0x9e, 0x77, 0xaf, 0xcb, 0x5d, -0x4a, 0xed, 0x84, 0x31, 0x63, 0xd8, 0x18, 0x14, 0x2a, 0xca, 0x29, 0xc9, -0xce, 0x12, 0x15, 0xe2, 0x1a, 0x53, 0x87, 0x64, 0x6c, 0xa3, 0x2d, 0x5c, -0x39, 0x8f, 0x9a, 0xb6, 0xf1, 0x23, 0x76, 0x3c, 0xa3, 0xe8, 0x8c, 0x30, -0xf2, 0xac, 0xf6, 0x83, 0x99, 0x2d, 0x46, 0x33, 0xd5, 0x2a, 0xa0, 0xfc, -0xa2, 0x03, 0x3d, 0x60, 0x58, 0x31, 0x0a, 0x09, 0xa7, 0x65, 0xe9, 0x3a, -0xb4, 0x6c, 0xc9, 0x6c, 0x43, 0x98, 0x51, 0x94, 0x03, 0x2a, 0x74, 0xce, -0x50, 0x05, 0x02, 0x5a, 0xec, 0x31, 0x0a, 0xa1, 0xb6, 0xb6, 0x3b, 0x7e, -0x9d, 0x90, 0xdb, 0xb4, 0x55, 0xd3, 0x82, 0x77, 0xde, 0x7e, 0x1b, 0xf3, -0xbf, 0x04, 0x77, 0x94, 0x37, 0x2a, 0x0c, 0x48, 0x30, 0xc7, 0x53, 0xc0, -0x2b, 0xae, 0x5d, 0xbe, 0x0c, 0x00, 0x8c, 0xdd, 0x51, 0xca, 0x2b, 0x98, -0xed, 0xc0, 0x1b, 0xef, 0x74, 0xc4, 0x25, 0xcd, 0x98, 0x36, 0x15, 0xe3, -0xac, 0x54, 0x1b, 0xf1, 0x90, 0x75, 0x64, 0xbe, 0x8b, 0xfa, 0xc6, 0x0e, -0xd7, 0x72, 0x77, 0x8e, 0xce, 0x28, 0xc4, 0x26, 0xbb, 0xe8, 0x0a, 0x17, -0x5b, 0xeb, 0x79, 0xe9, 0xd5, 0x21, 0xcc, 0x28, 0xca, 0xa2, 0xc2, 0x5a, -0xaf, 0x80, 0x57, 0x48, 0xce, 0xae, 0x95, 0xb6, 0xed, 0x35, 0x6a, 0x45, -0x3f, 0xa1, 0xaa, 0xdb, 0x22, 0x9a, 0xef, 0xfc, 0x43, 0x5c, 0x46, 0xed, -0xc2, 0xb6, 0x6d, 0xa0, 0x33, 0x88, 0xac, 0xfc, 0x50, 0x61, 0x60, 0x08, -0x2a, 0xac, 0x08, 0x1d, 0x46, 0x2c, 0x39, 0x7a, 0xec, 0x1d, 0xea, 0x8d, -0x14, 0xca, 0x1f, 0xbb, 0xe9, 0xb4, 0x4e, 0x6a, 0xed, 0xf6, 0xfc, 0x31, -0xb9, 0x56, 0xd3, 0x36, 0x4d, 0x1a, 0x62, 0xf0, 0xd1, 0x2b, 0x53, 0xe9, -0x19, 0xaa, 0x3a, 0xdb, 0x91, 0xbb, 0x88, 0x5a, 0xac, 0x3e, 0xfb, 0x87, -0x0d, 0x7d, 0x58, 0xc9, 0xd4, 0x93, 0x5e, 0x92, 0xc7, 0x8e, 0x1c, 0x49, -0x8e, 0x8f, 0x4d, 0x2f, 0xe8, 0x1e, 0xf2, 0x05, 0xfd, 0x35, 0x1b, 0x94, -0x5b, 0x09, 0xca, 0x36, 0x2a, 0x68, 0x18, 0x69, 0x26, 0xfd, 0xd0, 0xd0, -0x2b, 0x5c, 0x41, 0x1f, 0x25, 0x5f, 0xa6, 0x64, 0xe4, 0xf4, 0xea, 0xda, -0x45, 0x9c, 0x15, 0x4a, 0xdb, 0x0e, 0xa2, 0xf5, 0xc9, 0x40, 0xa6, 0x02, -0x03, 0x1d, 0x09, 0x12, 0x88, 0x2a, 0x71, 0xda, 0xec, 0xbe, 0x92, 0x14, -0xba, 0x63, 0xab, 0x2b, 0xe4, 0x69, 0xc2, 0x2d, 0xf7, 0xeb, 0xa8, 0xc8, -0x29, 0xf9, 0x67, 0xe3, 0xee, 0xc3, 0x53, 0x1d, 0x8e, 0xc7, 0x1f, 0x7b, -0x0c, 0x21, 0x4a, 0xcf, 0x85, 0x52, 0x35, 0xfa, 0x15, 0xf5, 0x03, 0x33, -0xec, 0x54, 0xa0, 0x1d, 0x5b, 0x82, 0x2a, 0x77, 0x60, 0x86, 0x87, 0x1d, -0xbe, 0x61, 0x80, 0x84, 0xca, 0xea, 0x06, 0x9c, 0x8d, 0x48, 0xc4, 0x8b, -0x4b, 0x1a, 0xb1, 0xed, 0x62, 0x61, 0x9e, 0x10, 0x66, 0x17, 0xf6, 0x51, -0x81, 0x65, 0xc6, 0x14, 0xf1, 0x61, 0x96, 0x91, 0xaa, 0xba, 0xf2, 0xe0, -0xe1, 0x55, 0xa5, 0x6c, 0xfb, 0xb6, 0x61, 0xdb, 0xee, 0xed, 0x5a, 0xb6, -0x20, 0x11, 0x19, 0xde, 0xa8, 0x2c, 0xb3, 0x01, 0x0a, 0x51, 0xe6, 0x0d, -0x5b, 0x45, 0x9b, 0x0a, 0x06, 0x74, 0x18, 0x80, 0x04, 0x78, 0x14, 0x60, -0x60, 0xeb, 0x55, 0xb9, 0xa0, 0x57, 0x11, 0x3d, 0xe1, 0x88, 0x99, 0xb2, -0xe7, 0xe9, 0xb2, 0x93, 0x3f, 0xdf, 0x77, 0xd6, 0x2a, 0xde, 0xc8, 0xcc, -0xe9, 0xd3, 0x25, 0x40, 0x50, 0x0a, 0x19, 0x4a, 0x92, 0xa0, 0xa4, 0x1f, -0x29, 0xb6, 0x73, 0xf3, 0x86, 0x0d, 0xfd, 0x7b, 0xf7, 0x6e, 0x5f, 0xd0, -0xb8, 0x55, 0x7e, 0xc3, 0xc5, 0x0b, 0x17, 0x52, 0x29, 0x87, 0x13, 0xb8, -0xbb, 0x74, 0x97, 0x14, 0xeb, 0xb3, 0x0e, 0x12, 0x33, 0x33, 0x51, 0xdf, -0x08, 0xb7, 0x91, 0x47, 0x50, 0x91, 0xe4, 0x3f, 0xfd, 0xe4, 0x13, 0xda, -0xab, 0x32, 0x99, 0x81, 0x57, 0xef, 0x0f, 0x87, 0xc2, 0x9b, 0x6e, 0x50, -0x41, 0xef, 0x79, 0xd2, 0x21, 0x1d, 0xfc, 0x53, 0xda, 0xb6, 0x37, 0x54, -0x08, 0x97, 0x08, 0x61, 0x54, 0x30, 0xff, 0x6e, 0x53, 0x96, 0x54, 0x4f, -0x76, 0xd2, 0x03, 0x92, 0x9d, 0xd5, 0x32, 0x6e, 0x5c, 0x48, 0xdc, 0xec, -0x6b, 0xd3, 0x8d, 0xf7, 0x66, 0xa5, 0x59, 0xa7, 0x24, 0x88, 0x09, 0x1a, -0x42, 0xd8, 0xd8, 0xbf, 0x77, 0xef, 0x53, 0x4f, 0x3e, 0x09, 0x0c, 0x14, -0x12, 0x60, 0x0b, 0xb4, 0x50, 0xe1, 0xe7, 0x67, 0x90, 0xf9, 0x27, 0x9f, -0x7c, 0xfc, 0xd1, 0x47, 0xaf, 0xbf, 0xf6, 0xda, 0xd2, 0xab, 0x16, 0xe7, -0xa4, 0x3a, 0x53, 0xeb, 0xb5, 0x32, 0x53, 0x5b, 0xe3, 0x92, 0xbf, 0x74, -0x18, 0x30, 0x9e, 0x5a, 0x86, 0x03, 0x8b, 0x8a, 0xf6, 0xef, 0xdb, 0xc7, -0x85, 0xaa, 0x56, 0x1a, 0x63, 0x4a, 0xe7, 0x48, 0x81, 0x5c, 0xcf, 0x2e, -0x94, 0xc4, 0x8c, 0x49, 0x69, 0xde, 0x2f, 0xa9, 0x7e, 0x07, 0xde, 0xf8, -0xdd, 0x27, 0x4f, 0xaa, 0x0e, 0x7a, 0x72, 0x8e, 0x19, 0x21, 0x8a, 0x8f, -0x19, 0x18, 0x9a, 0x92, 0xee, 0x24, 0x80, 0x1c, 0x00, 0x7f, 0xf2, 0xf1, -0xc7, 0x3d, 0x0a, 0x0b, 0x19, 0xb6, 0xdf, 0xe5, 0x1b, 0x43, 0x5e, 0x76, -0x32, 0xf9, 0x2b, 0x74, 0x09, 0xaa, 0x0c, 0x2a, 0x44, 0x82, 0x32, 0xa1, -0x42, 0x0f, 0xfa, 0xd5, 0xc1, 0x10, 0xc2, 0xc0, 0x18, 0xbe, 0xf6, 0x24, -0x6f, 0xf7, 0xca, 0x85, 0x0b, 0x55, 0x15, 0x0f, 0xd5, 0x1e, 0x45, 0x36, -0x54, 0x7d, 0xcb, 0xb4, 0xfc, 0x6c, 0x20, 0x26, 0x5d, 0x49, 0x60, 0x28, -0x0a, 0xe7, 0xd0, 0x21, 0xbb, 0x6e, 0x6e, 0x4e, 0x86, 0xd3, 0x99, 0x96, -0x90, 0x90, 0x5b, 0x2d, 0xb3, 0x55, 0x93, 0xfc, 0xd6, 0x05, 0x4d, 0xf8, -0x69, 0x55, 0xd0, 0xa4, 0x79, 0xe3, 0x46, 0x8d, 0x6a, 0xd7, 0xe2, 0xa7, -0xa1, 0xfc, 0xd4, 0xaa, 0xc5, 0x99, 0x34, 0xbc, 0x73, 0xe6, 0x36, 0x9a, -0xb4, 0xd3, 0x5a, 0x2c, 0x01, 0x18, 0xed, 0x07, 0x4d, 0x62, 0xce, 0x69, -0x89, 0x09, 0x2d, 0x0b, 0x9a, 0xcc, 0xba, 0x64, 0xda, 0xfe, 0x3d, 0xbb, -0xdf, 0x78, 0xfd, 0x35, 0x5e, 0x19, 0x4c, 0x43, 0x0e, 0x2c, 0x07, 0x9d, -0xdb, 0xb6, 0x71, 0x66, 0xe4, 0xd0, 0x05, 0x66, 0xcc, 0x8e, 0x27, 0x63, -0x53, 0xaa, 0xb7, 0x2e, 0x68, 0x0c, 0xea, 0x38, 0x87, 0x03, 0x96, 0x28, -0x15, 0x07, 0x31, 0x1f, 0xbd, 0xfd, 0xd6, 0x5b, 0x6f, 0xbf, 0xf9, 0xe6, -0x3b, 0x6f, 0xbd, 0x25, 0x3f, 0xef, 0xbe, 0xfd, 0xb6, 0xfa, 0x71, 0xfd, -0xfa, 0xce, 0x3b, 0xd4, 0x9e, 0xba, 0xf3, 0xe4, 0x89, 0x3b, 0x4f, 0xdc, -0x41, 0x3b, 0xfa, 0x13, 0x77, 0x1c, 0xbf, 0x83, 0x22, 0x8a, 0x47, 0x0e, -0x77, 0x6e, 0xd7, 0xce, 0x05, 0x89, 0x79, 0xeb, 0x42, 0xdb, 0xee, 0xa4, -0x0b, 0xff, 0x56, 0xbc, 0x82, 0x65, 0xf4, 0x15, 0x15, 0x06, 0x75, 0x22, -0x64, 0x74, 0x09, 0x83, 0x40, 0xd5, 0x78, 0xe7, 0xe7, 0x38, 0xc8, 0xea, -0xe5, 0x64, 0x53, 0xd1, 0x15, 0x81, 0x44, 0xda, 0xb5, 0xa8, 0x7d, 0x57, -0xc9, 0x1b, 0x4a, 0x38, 0x31, 0x7f, 0x90, 0x4d, 0x57, 0x0e, 0xd9, 0xa7, -0x45, 0x49, 0x60, 0xcb, 0x99, 0x34, 0x66, 0x14, 0x24, 0x1e, 0xeb, 0x88, -0x49, 0x6b, 0xd4, 0xb1, 0xde, 0xa4, 0x1b, 0x1b, 0x4c, 0x5b, 0x5f, 0xbd, -0xcd, 0xc0, 0xf8, 0xd4, 0x9c, 0xd8, 0xc4, 0xd4, 0x58, 0x67, 0xba, 0x33, -0x35, 0x2b, 0xa7, 0x6e, 0x93, 0x82, 0x6e, 0xc3, 0x5a, 0xf7, 0x19, 0xdd, -0x71, 0xe0, 0x84, 0x6e, 0xc3, 0xa6, 0xf4, 0x1c, 0x79, 0x49, 0x9f, 0x09, -0x73, 0x46, 0x5e, 0xb3, 0x17, 0x3b, 0xac, 0x07, 0xc1, 0x8f, 0x39, 0x8f, -0xdc, 0xfc, 0x40, 0xb3, 0xa1, 0xb3, 0x9d, 0x35, 0xea, 0x27, 0xc4, 0x27, -0x26, 0x3b, 0x93, 0xd2, 0x12, 0xe3, 0x6b, 0xa4, 0x24, 0xb6, 0x6e, 0xd2, -0xa8, 0x7f, 0x8f, 0x6e, 0x97, 0x4e, 0x9a, 0xd8, 0xac, 0x7e, 0x5d, 0xee, -0xdb, 0x6f, 0xf6, 0xf5, 0x0c, 0xd2, 0xf2, 0xd0, 0xb7, 0x83, 0x56, 0xee, -0x8d, 0x8b, 0x89, 0x4d, 0x8f, 0x73, 0x54, 0x73, 0xc6, 0x95, 0xfd, 0x89, -0xcf, 0x70, 0x26, 0x7a, 0xfe, 0x49, 0xa3, 0xd4, 0xb3, 0x33, 0x49, 0xff, -0x49, 0x49, 0x74, 0xc6, 0xc7, 0x39, 0xc3, 0x0a, 0x12, 0x6e, 0x2c, 0xb3, -0x16, 0xa8, 0x80, 0x35, 0x9b, 0x78, 0x85, 0xca, 0x0e, 0x09, 0x61, 0xe6, -0x60, 0xa6, 0xb6, 0x5e, 0x57, 0xdc, 0xc2, 0x4e, 0x31, 0x67, 0xd6, 0x2c, -0x89, 0xa4, 0x00, 0x18, 0xd2, 0x53, 0x0b, 0x51, 0x81, 0x0d, 0x15, 0x84, -0x40, 0xe2, 0xee, 0x0e, 0x11, 0x87, 0x44, 0x22, 0x92, 0x7c, 0x7f, 0x76, -0x62, 0x0c, 0x44, 0xbb, 0x76, 0xec, 0xc8, 0x49, 0x4f, 0x21, 0x34, 0xa8, -0x7a, 0x8b, 0x9e, 0x63, 0x76, 0x3d, 0xdb, 0xfd, 0xe8, 0xdf, 0xbb, 0x1e, -0xfd, 0x07, 0x61, 0xe1, 0xed, 0x6f, 0xfd, 0xba, 0xe5, 0xc1, 0x7f, 0xe6, -0xef, 0xff, 0xa6, 0xce, 0x9e, 0x6f, 0xb3, 0x4a, 0x5c, 0xbd, 0x36, 0xfd, -0xd6, 0x50, 0x51, 0xbe, 0xdb, 0xef, 0xfb, 0xf3, 0x84, 0x9d, 0x4f, 0x0c, -0x59, 0xb6, 0xb3, 0xe3, 0xe8, 0x39, 0x35, 0x9b, 0x75, 0x4e, 0xad, 0x99, -0x9f, 0x9c, 0x55, 0xd7, 0x99, 0x9e, 0x4d, 0xc5, 0x83, 0xbe, 0x73, 0x6e, -0x50, 0x75, 0x38, 0x5b, 0x1c, 0xf8, 0x7a, 0xcc, 0x75, 0xfb, 0xfb, 0x8f, -0x9d, 0xd1, 0x77, 0xd4, 0xd4, 0x3e, 0x23, 0xa7, 0xf4, 0x1e, 0x3e, 0xb9, -0xfb, 0xd0, 0x09, 0x9d, 0x07, 0x8c, 0x29, 0x1c, 0x32, 0xa5, 0xd3, 0xd8, -0x05, 0x6d, 0x46, 0xcc, 0x69, 0x36, 0x78, 0x66, 0xc3, 0x7e, 0xd3, 0x6a, -0xf6, 0x98, 0x98, 0xd3, 0x75, 0x5c, 0xcd, 0x1e, 0x13, 0x1a, 0xf4, 0x9d, -0xc6, 0x37, 0x6d, 0x46, 0xcc, 0xed, 0x38, 0x66, 0x41, 0xcf, 0x99, 0xd7, -0xf5, 0x5f, 0x5c, 0x3c, 0x68, 0xe9, 0x8e, 0x61, 0xcb, 0x4b, 0x86, 0xaf, -0xd8, 0x35, 0x72, 0xe5, 0xee, 0x51, 0xab, 0xf6, 0xc0, 0xc7, 0xc2, 0x41, -0x97, 0xf0, 0x83, 0x57, 0x58, 0xa1, 0xc2, 0xe0, 0xb9, 0x0b, 0x55, 0xfe, -0x60, 0x20, 0xc4, 0xfc, 0x9d, 0x5f, 0x64, 0x36, 0xe9, 0x42, 0xa1, 0xc8, -0x0d, 0xeb, 0xd7, 0x11, 0x3f, 0x8b, 0xb9, 0x1a, 0xd3, 0x8d, 0x04, 0xa5, -0x02, 0x0f, 0x91, 0x37, 0x2c, 0x0f, 0xfe, 0xc4, 0x21, 0x62, 0x09, 0x48, -0x40, 0x35, 0xf8, 0xd1, 0x73, 0xcf, 0xed, 0xdf, 0xb7, 0xb7, 0x3f, 0x35, -0xff, 0x1c, 0x54, 0xfd, 0x6b, 0x34, 0xf4, 0x86, 0xdb, 0xc1, 0x80, 0xdf, -0x74, 0x6f, 0xff, 0xc2, 0xb4, 0xed, 0xdf, 0x37, 0xdc, 0xfb, 0xcf, 0xb6, -0x07, 0xff, 0xde, 0xf9, 0xe0, 0xe7, 0x53, 0xf6, 0x3f, 0xef, 0x46, 0xb0, -0x39, 0x4f, 0x42, 0x9f, 0xe9, 0xa7, 0xaa, 0x5b, 0xcf, 0xed, 0x2f, 0x42, -0x40, 0x67, 0xda, 0x94, 0xa0, 0x3c, 0xa2, 0x22, 0x4c, 0xf0, 0xa0, 0xd6, -0x71, 0xc2, 0x9e, 0x67, 0x9d, 0x35, 0x5c, 0x52, 0x47, 0xc7, 0x56, 0xcd, -0xbb, 0xb6, 0x6f, 0xdb, 0xb3, 0x53, 0x87, 0x51, 0x83, 0x07, 0x4d, 0x1e, -0x37, 0x66, 0xe2, 0x98, 0x51, 0xf3, 0x2e, 0x9b, 0xbd, 0x7c, 0xc9, 0x92, -0xa5, 0x57, 0x5d, 0x75, 0xc3, 0x75, 0xd7, 0x6d, 0xb9, 0xf9, 0xe6, 0x6b, -0xae, 0xbe, 0x7a, 0xd9, 0x92, 0x25, 0x2b, 0x96, 0x2e, 0x5d, 0x72, 0xe5, -0x95, 0xd3, 0x27, 0x4f, 0x9c, 0x34, 0x66, 0xf4, 0xa4, 0xb1, 0xa3, 0x39, -0xad, 0xa8, 0x7b, 0xb7, 0x6e, 0xed, 0x5a, 0xe7, 0x56, 0xcb, 0x60, 0x79, -0x63, 0x12, 0x52, 0x6a, 0xf6, 0xbd, 0x74, 0x64, 0xc9, 0x33, 0xcd, 0xf7, -0xfb, 0x91, 0xda, 0x1f, 0x25, 0xd3, 0xca, 0x58, 0x01, 0xfb, 0xa8, 0x40, -0x1b, 0x2b, 0x6b, 0x99, 0x0d, 0x2b, 0xc1, 0xc9, 0xb0, 0xb5, 0x34, 0xd9, -0xf5, 0xc5, 0x80, 0x79, 0x37, 0xb6, 0xef, 0x3d, 0x3c, 0xbf, 0x63, 0xdf, -0xf4, 0x7a, 0xad, 0x1c, 0x09, 0x69, 0x90, 0xb7, 0xc3, 0x41, 0x55, 0x7c, -0x0f, 0x87, 0x9c, 0xc0, 0x4f, 0x7c, 0x4a, 0xcd, 0xfc, 0x86, 0xed, 0xfb, -0x76, 0x19, 0x7f, 0xf9, 0x88, 0x35, 0xb7, 0x4d, 0xde, 0xfb, 0x5c, 0xb3, -0x7d, 0x9e, 0x14, 0x83, 0x80, 0x76, 0x35, 0x5f, 0x9c, 0xf7, 0xd1, 0x1b, -0xd9, 0x5d, 0x01, 0x3b, 0x96, 0x59, 0x44, 0x02, 0x78, 0x85, 0x1b, 0x54, -0x84, 0x1b, 0xa3, 0x30, 0x2f, 0x5c, 0x5a, 0xf1, 0x77, 0x0d, 0xf6, 0x7c, -0xdd, 0x66, 0xff, 0x97, 0x85, 0x07, 0xff, 0x32, 0xe5, 0xc0, 0x4b, 0x63, -0x77, 0x3e, 0x3d, 0x68, 0xeb, 0xe3, 0xed, 0x57, 0x9e, 0x68, 0x74, 0x59, -0x49, 0x87, 0xeb, 0x4e, 0x0f, 0xda, 0xf2, 0xd8, 0xb8, 0x5d, 0xcf, 0x4c, -0x39, 0xf0, 0x22, 0xe2, 0x4a, 0x87, 0x83, 0x5f, 0x22, 0xae, 0xd4, 0xdd, -0xfd, 0x4d, 0x4a, 0xb1, 0x2b, 0xe4, 0x3b, 0xfa, 0x13, 0xaa, 0x2b, 0x60, -0x42, 0x85, 0x38, 0x49, 0x8d, 0x36, 0x28, 0xf7, 0x12, 0x54, 0xf4, 0xdd, -0x47, 0x57, 0x20, 0xec, 0x56, 0xc0, 0x2b, 0x2a, 0x8e, 0x1f, 0x3f, 0x8e, -0x12, 0x69, 0xc5, 0x2b, 0xc2, 0x6e, 0x2d, 0xa2, 0xbb, 0x7b, 0x74, 0x05, -0xdc, 0x78, 0xf1, 0x8c, 0xbc, 0x22, 0x8a, 0x8a, 0x50, 0x15, 0x03, 0xa2, -0x24, 0xee, 0xf7, 0x0a, 0xd8, 0xe4, 0x15, 0xc4, 0x90, 0x9a, 0xf4, 0x8a, -0x28, 0xaf, 0x88, 0xae, 0x40, 0x98, 0xae, 0x80, 0x86, 0x0a, 0xd2, 0x80, -0x55, 0x21, 0x7a, 0xa3, 0x5e, 0x01, 0x2a, 0x60, 0x22, 0x65, 0xec, 0x2f, -0x9b, 0xfd, 0x77, 0x39, 0x45, 0x77, 0xdf, 0xe8, 0x0a, 0x54, 0xe9, 0x15, -0xf0, 0x8a, 0x0a, 0x91, 0xa0, 0x04, 0x15, 0xb1, 0xb1, 0x84, 0xa2, 0xfd, -0x70, 0x6c, 0x0a, 0xb3, 0xde, 0xb2, 0x61, 0xba, 0xed, 0xf9, 0x2d, 0x45, -0x44, 0xec, 0x85, 0x10, 0xf6, 0x0f, 0x07, 0x04, 0x6f, 0xcd, 0x2b, 0x74, -0x54, 0xe4, 0xe4, 0xe4, 0x94, 0xa2, 0x62, 0xe5, 0x27, 0x55, 0x1a, 0xee, -0x11, 0xfb, 0x52, 0xa3, 0x0f, 0x1e, 0xe0, 0x0a, 0x40, 0xd8, 0x3f, 0x1c, -0x35, 0x6a, 0xd4, 0x70, 0x8b, 0x0a, 0x89, 0xbb, 0x84, 0x57, 0x74, 0xeb, -0xd6, 0xad, 0x14, 0x15, 0x13, 0x8e, 0x44, 0x51, 0x11, 0x5d, 0x81, 0x30, -0x5c, 0x01, 0x08, 0xfb, 0x87, 0xa3, 0x73, 0xe7, 0xce, 0x82, 0x0a, 0x42, -0x7e, 0x88, 0x88, 0xa3, 0x73, 0xea, 0xc5, 0xfc, 0x0a, 0x78, 0x85, 0xa0, -0x82, 0x3f, 0x2c, 0x59, 0xb2, 0xa4, 0x14, 0x15, 0x05, 0x83, 0xc2, 0x70, -0x45, 0x02, 0xdc, 0x66, 0xa2, 0x97, 0x87, 0xc1, 0x0a, 0x14, 0x0c, 0x4a, -0x4b, 0x23, 0x94, 0xc1, 0x75, 0x2c, 0x58, 0xb0, 0x40, 0x5a, 0xe6, 0x5a, -0xa0, 0x82, 0x70, 0x51, 0x80, 0x42, 0x00, 0x29, 0x2d, 0x1d, 0xca, 0x28, -0xdc, 0xb3, 0x1f, 0x8d, 0x02, 0x23, 0xba, 0x02, 0x61, 0xb5, 0x02, 0x90, -0xb4, 0x76, 0xdc, 0x79, 0xe7, 0x9d, 0xc4, 0x86, 0x4a, 0xf4, 0x34, 0xe1, -0xa1, 0xa5, 0xbc, 0xe2, 0x8e, 0x3b, 0xee, 0x90, 0xbe, 0x04, 0xe4, 0x1b, -0x00, 0x9a, 0x1e, 0x3d, 0x7a, 0x94, 0x5e, 0x95, 0xdd, 0xd4, 0x71, 0x53, -0x68, 0x16, 0x12, 0x0d, 0x83, 0x2d, 0x2d, 0xfa, 0x08, 0x41, 0x5f, 0x01, -0x88, 0x39, 0xbb, 0xe9, 0x94, 0x29, 0x53, 0x84, 0xc2, 0x11, 0x9f, 0xa4, -0x6b, 0xae, 0xca, 0xfe, 0x2d, 0x45, 0xc5, 0x89, 0x13, 0x27, 0xa4, 0x03, -0x39, 0xee, 0x6d, 0x40, 0x83, 0x40, 0x55, 0x86, 0x5d, 0xe4, 0x17, 0x45, -0x81, 0x11, 0x56, 0x9b, 0x65, 0xd0, 0x49, 0x2d, 0x54, 0x06, 0x04, 0x12, -0xf9, 0x45, 0x57, 0x5e, 0x79, 0xa5, 0x22, 0xef, 0xdd, 0xbb, 0x77, 0x93, -0xc1, 0x4f, 0x75, 0x46, 0x55, 0x9d, 0x9e, 0x6c, 0xed, 0x8b, 0x7a, 0x05, -0xa8, 0x20, 0x8d, 0x86, 0x00, 0x41, 0x8c, 0xb3, 0x14, 0xbf, 0xe0, 0xa4, -0x69, 0xd3, 0xa6, 0x95, 0x01, 0x06, 0x1c, 0x23, 0x2a, 0x4a, 0x85, 0xca, -0xbb, 0x8f, 0xce, 0xd3, 0x72, 0x05, 0x20, 0xe0, 0xec, 0xa6, 0x3a, 0x24, -0xc6, 0x8d, 0x1b, 0xf7, 0xca, 0x2b, 0xaf, 0xd0, 0x2b, 0x59, 0xda, 0x83, -0x48, 0x67, 0x9f, 0x32, 0xa8, 0x20, 0xf5, 0x0c, 0x85, 0x1b, 0xd5, 0x82, -0x3f, 0x53, 0x64, 0x05, 0x00, 0x75, 0xed, 0xda, 0xb5, 0x0c, 0x30, 0xf8, -0x05, 0xe5, 0x1b, 0xe5, 0x1d, 0xab, 0x56, 0xd4, 0x8f, 0x11, 0xa5, 0xbc, -0xaa, 0xbf, 0x02, 0xf8, 0xa0, 0x21, 0x54, 0xc8, 0x15, 0xa2, 0x85, 0x74, -0x1d, 0x0e, 0x25, 0x38, 0xf1, 0xb9, 0x53, 0xa7, 0x4e, 0xcf, 0x3c, 0xf3, -0xcc, 0xeb, 0xaf, 0xbf, 0x2e, 0x1d, 0xd6, 0xa5, 0x51, 0x28, 0x10, 0x40, -0x50, 0xba, 0xc8, 0x2b, 0x4e, 0x9e, 0x3c, 0x29, 0x4d, 0x09, 0x10, 0xa2, -0xd0, 0x39, 0x50, 0x2d, 0x48, 0x41, 0xa6, 0x21, 0x50, 0x17, 0x57, 0xd9, -0x08, 0x37, 0x47, 0x8c, 0xe6, 0xec, 0x73, 0x7b, 0x52, 0xf4, 0x0f, 0xd1, -0x15, 0xa8, 0x12, 0x2b, 0xa0, 0x2c, 0x4e, 0x32, 0x9b, 0xf6, 0xed, 0xdb, -0x9f, 0x3d, 0x7b, 0x16, 0x0a, 0xa7, 0x86, 0x2f, 0xed, 0x41, 0xd0, 0x1a, -0xa4, 0xa4, 0x10, 0x10, 0x28, 0x45, 0x05, 0x6a, 0xb8, 0xea, 0x61, 0x23, -0xf1, 0xe4, 0x9c, 0x4a, 0xea, 0x26, 0xcd, 0xe3, 0xe0, 0x32, 0x55, 0xe2, -0xb1, 0xa2, 0x93, 0x88, 0xae, 0x40, 0x90, 0x56, 0x60, 0xc4, 0x88, 0x11, -0x18, 0x5a, 0x9f, 0x7d, 0xf6, 0x59, 0x69, 0x79, 0xa5, 0x7a, 0x85, 0x12, -0xde, 0x81, 0x1e, 0x81, 0x36, 0x71, 0x91, 0x57, 0x80, 0x0a, 0x55, 0x1f, -0x0e, 0xc4, 0xc0, 0x2e, 0xe0, 0x29, 0xb8, 0x36, 0x68, 0x1e, 0xf7, 0xe2, -0x8b, 0x2f, 0x6e, 0xdb, 0xb6, 0xad, 0x79, 0x7b, 0x57, 0x79, 0xac, 0xe8, -0x11, 0x5d, 0x81, 0x90, 0x5e, 0x81, 0xc6, 0xad, 0x3a, 0xae, 0x5b, 0xb7, -0xee, 0xd1, 0x47, 0x1f, 0x7d, 0xfa, 0xe9, 0xa7, 0xd1, 0x28, 0xd8, 0xf7, -0xd9, 0xfd, 0x51, 0xa4, 0x55, 0x17, 0x38, 0x24, 0xa6, 0x32, 0xa8, 0x90, -0x5a, 0xa2, 0x68, 0x17, 0xd2, 0x21, 0x53, 0xb4, 0x0b, 0xe4, 0xa8, 0x37, -0xdf, 0x7c, 0x93, 0xeb, 0x9f, 0x7e, 0xe6, 0xb9, 0x8d, 0xdb, 0xf7, 0xf6, -0x9f, 0x38, 0x3b, 0x35, 0xbf, 0x5b, 0x5c, 0x5a, 0x0d, 0x47, 0x54, 0x7c, -0x0a, 0x69, 0xea, 0x88, 0x9c, 0xc9, 0xd3, 0xaf, 0x24, 0x2d, 0x3b, 0xa5, -0x51, 0xe7, 0x6e, 0xa3, 0x2e, 0x5d, 0xbb, 0xb9, 0xf8, 0xfe, 0x87, 0x1e, -0x79, 0xe2, 0x89, 0x27, 0x9e, 0x7b, 0xee, 0x39, 0x48, 0x1a, 0x83, 0xac, -0x68, 0x14, 0x52, 0xe4, 0x45, 0xca, 0x31, 0x02, 0x01, 0x38, 0x84, 0x8b, -0x57, 0xa4, 0xa4, 0xa4, 0xdc, 0x75, 0xd7, 0x5d, 0x52, 0x32, 0x9e, 0xea, -0x46, 0x98, 0x68, 0x55, 0xc5, 0x34, 0x74, 0x73, 0x38, 0x06, 0x90, 0x42, -0x29, 0x79, 0xe9, 0xa5, 0x97, 0x9e, 0x7c, 0xfa, 0xb9, 0xfb, 0x1e, 0x7d, -0xf2, 0xde, 0x87, 0xce, 0xdd, 0xf3, 0xe0, 0x23, 0x77, 0xdd, 0x77, 0xf6, -0xce, 0x33, 0x0f, 0xde, 0x79, 0xef, 0x03, 0xfc, 0x9c, 0x3c, 0x7d, 0xbf, -0x4f, 0x3f, 0x27, 0xee, 0xb9, 0xcf, 0x8f, 0x9f, 0x3b, 0x4e, 0x9d, 0xf1, -0xfa, 0x73, 0xfc, 0xee, 0x7b, 0x0d, 0xe7, 0xf0, 0x8d, 0xd7, 0x9f, 0xdb, -0xef, 0x3a, 0xed, 0xf5, 0xe7, 0xb6, 0x3b, 0xef, 0x31, 0x9c, 0xc3, 0x37, -0x5e, 0x7f, 0x8e, 0x9d, 0x3c, 0x65, 0x38, 0x87, 0x6f, 0x82, 0xf5, 0xe3, -0xf5, 0xee, 0x96, 0x73, 0xf6, 0xfa, 0xa4, 0x9c, 0x60, 0x58, 0x31, 0xf3, -0x37, 0x96, 0x4b, 0x6a, 0x5e, 0x79, 0xaf, 0xef, 0x8b, 0x13, 0xec, 0x53, -0x82, 0x7d, 0x1a, 0x13, 0xb2, 0x74, 0xd1, 0xe7, 0x99, 0x07, 0xef, 0xbe, -0xff, 0xa1, 0x53, 0xf7, 0x3f, 0x7c, 0xf6, 0x91, 0x73, 0x4f, 0x3e, 0xf9, -0x24, 0x78, 0x40, 0xf6, 0x41, 0x70, 0x12, 0x48, 0x48, 0x27, 0x17, 0x78, -0x80, 0xc8, 0x4e, 0x52, 0xa1, 0xb4, 0x14, 0x15, 0x77, 0xdf, 0x7d, 0xb7, -0x74, 0x67, 0x13, 0x76, 0xa1, 0x3c, 0x7a, 0x30, 0x17, 0x38, 0x06, 0x9e, -0x3f, 0xac, 0x57, 0xe8, 0x25, 0x0c, 0x87, 0xa6, 0xf1, 0xfc, 0xf3, 0xcf, -0x33, 0x3a, 0x3c, 0xe8, 0xa9, 0xa7, 0xa8, 0x16, 0xe9, 0x3a, 0xc0, 0x9f, -0x4f, 0x07, 0xed, 0xdf, 0xfd, 0x38, 0x1e, 0xf3, 0xeb, 0x38, 0x67, 0xfb, -0x80, 0xb1, 0xfa, 0x74, 0x20, 0x9b, 0xfa, 0x71, 0x3c, 0x1c, 0x8c, 0xc3, -0xfe, 0x7d, 0x7d, 0x7a, 0x22, 0x75, 0xb2, 0xed, 0x35, 0x2b, 0x73, 0xa2, -0x5f, 0xef, 0xe7, 0x31, 0x3b, 0x94, 0xe0, 0x13, 0x75, 0x71, 0xb2, 0x90, -0x25, 0xf4, 0xc9, 0x81, 0xa1, 0x09, 0x72, 0x45, 0xb1, 0x66, 0x5b, 0x87, -0x80, 0x51, 0x0a, 0xde, 0x7f, 0xff, 0x7d, 0x20, 0x21, 0x4d, 0xa5, 0x45, -0x76, 0xd2, 0xdb, 0x85, 0xc2, 0x21, 0x2e, 0xf2, 0x0a, 0x41, 0x85, 0x54, -0x4a, 0x95, 0x6a, 0xbb, 0x62, 0xa5, 0x45, 0x31, 0xe7, 0x4a, 0x4c, 0x52, -0xb4, 0x66, 0x63, 0x20, 0x86, 0x03, 0x64, 0x6f, 0xbc, 0xf1, 0x06, 0xa3, -0xc3, 0x83, 0x40, 0x08, 0x77, 0xe2, 0x00, 0x7f, 0x3e, 0x1d, 0x4c, 0xd1, -0x8f, 0x03, 0x34, 0xfa, 0x71, 0xfc, 0xc8, 0xf6, 0xc1, 0xda, 0xf9, 0x74, -0xa0, 0xae, 0xf9, 0x71, 0xf0, 0x92, 0x02, 0x3f, 0xec, 0xdf, 0xd7, 0xa7, -0x27, 0x52, 0x27, 0xdb, 0x5e, 0xb3, 0x32, 0x27, 0xfa, 0xf1, 0x76, 0xb8, -0xc4, 0x0e, 0x25, 0xf8, 0x44, 0x5d, 0x9c, 0x2c, 0x64, 0x09, 0x7d, 0x72, -0xfc, 0xf8, 0xc7, 0x3f, 0x86, 0x5c, 0x51, 0x04, 0xd8, 0xd6, 0x21, 0x60, -0x64, 0x1f, 0xdc, 0x71, 0x70, 0x09, 0x81, 0x84, 0xd8, 0x9d, 0x44, 0x76, -0x82, 0xf8, 0x41, 0x01, 0xa8, 0x40, 0x7a, 0x72, 0x49, 0x50, 0xa0, 0x42, -0xba, 0x51, 0x29, 0x39, 0x4a, 0xfa, 0x77, 0x00, 0x0c, 0xae, 0xc4, 0x94, -0x8b, 0x3f, 0x1c, 0x09, 0x0c, 0x6c, 0xe0, 0x1b, 0x47, 0xd9, 0x80, 0x75, -0xe0, 0xd0, 0x40, 0xb2, 0x02, 0x24, 0x1e, 0x0e, 0xe6, 0xe1, 0xf7, 0x01, -0xa6, 0x83, 0x72, 0xb0, 0x1c, 0x36, 0x0f, 0xd0, 0xee, 0xd3, 0x81, 0x54, -0x19, 0x94, 0x83, 0x77, 0x66, 0xe7, 0xf0, 0xef, 0x5e, 0x3e, 0x3d, 0x91, -0x3a, 0xd9, 0xe6, 0x8a, 0x19, 0x4e, 0x0b, 0xca, 0xfb, 0x62, 0x10, 0xfb, -0x34, 0xe3, 0x99, 0xfc, 0xa0, 0x4f, 0x0e, 0x90, 0x00, 0xb9, 0x02, 0x06, -0x44, 0x1e, 0xf0, 0x00, 0x8b, 0xc0, 0x0e, 0x8b, 0xe0, 0x04, 0x61, 0x2b, -0x75, 0x42, 0xef, 0x07, 0x02, 0x16, 0x8c, 0xa8, 0x30, 0x00, 0x03, 0x8e, -0x01, 0x7f, 0x41, 0xf0, 0x12, 0x6c, 0x00, 0x2f, 0x46, 0x04, 0x67, 0x0c, -0x0d, 0x42, 0xb8, 0x07, 0x2a, 0xbc, 0xd7, 0x03, 0x20, 0xa9, 0x73, 0xf8, -0x1c, 0xc4, 0x83, 0xe7, 0x0c, 0xca, 0x01, 0x1b, 0xf4, 0xe3, 0x60, 0xa1, -0x83, 0x72, 0xb0, 0xcb, 0xd8, 0x39, 0xfc, 0xbb, 0x97, 0x1f, 0xcf, 0x65, -0x79, 0x49, 0x50, 0xd6, 0x59, 0x7a, 0x6b, 0xf8, 0x7d, 0xe8, 0x54, 0xe4, -0x95, 0xea, 0x38, 0x01, 0xfa, 0xe4, 0x40, 0x37, 0x86, 0x5c, 0xd9, 0xd3, -0x21, 0x5d, 0x34, 0x02, 0x72, 0x25, 0x90, 0x80, 0x88, 0xe1, 0x90, 0x86, -0x07, 0x4a, 0x9d, 0x50, 0xad, 0x1a, 0x8c, 0xa8, 0x10, 0x76, 0xa1, 0x03, -0x43, 0x74, 0x0c, 0x98, 0x06, 0xd8, 0x00, 0x58, 0xb8, 0x32, 0x18, 0x11, -0x78, 0x30, 0x34, 0x08, 0x91, 0x83, 0x3b, 0x05, 0x7e, 0xc0, 0x8b, 0x18, -0x84, 0xff, 0xe5, 0xd0, 0x3f, 0xab, 0x2f, 0x03, 0xf9, 0xc0, 0x8a, 0xc8, -0xa1, 0x06, 0x51, 0xdf, 0x04, 0xf8, 0x01, 0xf1, 0xb2, 0x6a, 0x1e, 0x01, -0x3e, 0x97, 0xe1, 0x72, 0xd6, 0xcd, 0xc3, 0x1a, 0x06, 0xf2, 0x6a, 0xcc, -0xd7, 0xca, 0xdb, 0x0f, 0x9c, 0xa8, 0x84, 0x3e, 0x61, 0x0b, 0x90, 0x2b, -0x86, 0x26, 0x48, 0x17, 0x02, 0x66, 0x8b, 0x07, 0x0f, 0xd8, 0x93, 0x20, -0x6c, 0x33, 0x24, 0x80, 0x80, 0x05, 0x2a, 0x0c, 0xc0, 0x90, 0xbe, 0x4f, -0xaa, 0x25, 0x8f, 0x74, 0x21, 0x01, 0x21, 0x8c, 0x0b, 0x48, 0xe4, 0xe0, -0x36, 0xc1, 0x3a, 0x40, 0xb0, 0x1c, 0x6a, 0x40, 0x9f, 0xbe, 0x51, 0x27, -0x07, 0xf2, 0x81, 0x85, 0x53, 0x97, 0xf3, 0x59, 0x0e, 0x3b, 0xdf, 0xa8, -0x93, 0xab, 0xc8, 0x07, 0x3b, 0x73, 0xf6, 0x70, 0x4e, 0x20, 0x6b, 0x68, -0x79, 0xad, 0xaf, 0xef, 0x34, 0x70, 0xa2, 0x52, 0x24, 0x2a, 0xe5, 0x83, -0xa5, 0xb1, 0x81, 0x2a, 0xb0, 0x0d, 0x61, 0x4b, 0xfd, 0x79, 0xe1, 0x12, -0xaa, 0x63, 0x89, 0x35, 0x2a, 0x74, 0x60, 0xa8, 0x86, 0x3d, 0x7a, 0xab, -0x1e, 0xe9, 0xd3, 0xa3, 0x0e, 0x77, 0x85, 0x8a, 0xcb, 0xe9, 0x7b, 0xa9, -0x7f, 0xac, 0x17, 0x48, 0x0e, 0xf0, 0x1b, 0x75, 0x79, 0xe0, 0x1f, 0xa4, -0x2a, 0x33, 0x2f, 0x40, 0x0e, 0x69, 0x1c, 0xa1, 0x0e, 0xfd, 0x57, 0x39, -0x33, 0xf0, 0x6f, 0x0c, 0x73, 0x66, 0x40, 0x28, 0xc0, 0xce, 0xe1, 0x6e, -0x86, 0x32, 0x82, 0xfa, 0xab, 0xde, 0x22, 0xc3, 0xe6, 0x3a, 0xab, 0x47, -0x93, 0x41, 0xd4, 0x64, 0x0c, 0xab, 0xe1, 0xa1, 0xc4, 0x75, 0xb0, 0x28, -0x47, 0xa7, 0x52, 0x29, 0x20, 0x2f, 0xc5, 0xe4, 0xd9, 0xe5, 0x05, 0x12, -0xd2, 0xab, 0xc4, 0xd0, 0xc4, 0xc7, 0x2d, 0x2a, 0xa4, 0xa9, 0x8f, 0x92, -0xa6, 0xdc, 0x75, 0x76, 0x93, 0x0e, 0x3a, 0x15, 0x7c, 0x48, 0xb3, 0x08, -0xd5, 0xe3, 0x47, 0xb5, 0x8f, 0xa8, 0xdc, 0x6f, 0x78, 0xf7, 0xe8, 0x06, -0x58, 0x03, 0x89, 0xa2, 0xd9, 0xb4, 0x69, 0xd3, 0x9a, 0x35, 0x6b, 0x1e, -0x78, 0xe0, 0x01, 0xd5, 0x13, 0x43, 0xcd, 0x59, 0x26, 0xa9, 0xff, 0xea, -0xf7, 0x67, 0xd5, 0xe2, 0x48, 0xad, 0x06, 0xc1, 0x6c, 0xab, 0x57, 0xaf, -0xbe, 0xee, 0xba, 0xeb, 0xae, 0xbf, 0xfe, 0xfa, 0x1b, 0x6e, 0xb8, 0x81, -0x39, 0xac, 0x5d, 0xbb, 0x16, 0x57, 0xee, 0x86, 0x0d, 0x1b, 0x6e, 0xbe, -0xf9, 0xe6, 0xcd, 0x9b, 0x37, 0x6f, 0xd9, 0xb2, 0x65, 0xeb, 0xd6, 0xad, -0xdb, 0xb7, 0x6f, 0xdf, 0xb1, 0x63, 0xc7, 0xce, 0x9d, 0x3b, 0xd1, 0x41, -0x65, 0x86, 0x22, 0x0e, 0x60, 0x57, 0xe5, 0xfc, 0xf5, 0xeb, 0xd7, 0x1f, -0x3a, 0x74, 0xe8, 0xbe, 0xfb, 0xee, 0xc3, 0xba, 0xc4, 0x09, 0x88, 0x31, -0x90, 0xaf, 0xf9, 0x5e, 0xe6, 0x6f, 0x20, 0x7a, 0x14, 0x4e, 0xcc, 0x06, -0xf7, 0xdf, 0x7f, 0xff, 0xae, 0x5d, 0xbb, 0x96, 0x2f, 0x5f, 0xbe, 0x7f, -0xff, 0x7e, 0xa6, 0xc1, 0x04, 0xf8, 0x95, 0x04, 0x1e, 0x2c, 0xd2, 0xd8, -0x85, 0x58, 0x25, 0xe4, 0x19, 0xa1, 0xcb, 0x0a, 0xa3, 0x1c, 0x44, 0x5c, -0x0c, 0x53, 0x38, 0xad, 0x59, 0x0a, 0xe6, 0xc3, 0x6b, 0x92, 0xbe, 0x81, -0x96, 0x7d, 0x34, 0xbd, 0xa0, 0xc2, 0x80, 0x0d, 0xbd, 0x3f, 0xa7, 0xb9, -0x73, 0x94, 0xbb, 0x6f, 0xf4, 0x3e, 0x40, 0x3a, 0x41, 0x48, 0xc8, 0x3a, -0x3a, 0x10, 0x12, 0x24, 0x9f, 0xcd, 0xb4, 0x2e, 0xdc, 0xcd, 0xb2, 0xab, -0x90, 0x87, 0x7e, 0x2b, 0x41, 0xfc, 0x93, 0x34, 0x6d, 0x51, 0x44, 0xc3, -0x8b, 0x64, 0x71, 0x31, 0xf3, 0x41, 0x31, 0x7b, 0xf6, 0xec, 0x81, 0xfe, -0x66, 0xce, 0x9c, 0x39, 0x60, 0xc0, 0x80, 0x96, 0x2d, 0x5b, 0x56, 0xab, -0x56, 0xcd, 0xd2, 0x59, 0x3c, 0x64, 0xc8, 0x10, 0xd5, 0xd2, 0xdb, 0xb2, -0x59, 0x8c, 0xde, 0x1a, 0xc6, 0x40, 0x67, 0xfa, 0x7d, 0xb9, 0x35, 0xd6, -0x0e, 0xee, 0x0e, 0xd9, 0xf1, 0x41, 0x35, 0xd6, 0x50, 0x18, 0xc3, 0x1e, -0xd8, 0xa6, 0x4d, 0x1b, 0x3f, 0x1c, 0xd6, 0x57, 0x5f, 0x7d, 0xb5, 0x6c, -0xcc, 0x13, 0x27, 0x4e, 0xf4, 0x70, 0x79, 0x7c, 0x7c, 0x7c, 0x66, 0x66, -0x66, 0x5e, 0x5e, 0x5e, 0xfd, 0xfa, 0xf5, 0x1b, 0x37, 0x6e, 0x9c, 0x9f, -0x9f, 0xdf, 0xa4, 0x49, 0x13, 0xfe, 0x6f, 0x44, 0xdb, 0xa6, 0xda, 0xb5, -0xab, 0x57, 0xaf, 0x9e, 0x98, 0x48, 0xd7, 0x03, 0xdf, 0x0e, 0x06, 0x6c, -0xd0, 0xa0, 0x01, 0x51, 0x7a, 0x45, 0x45, 0x45, 0xe3, 0xc7, 0x8f, 0xbf, -0xec, 0xb2, 0xcb, 0xc8, 0x75, 0x23, 0x1a, 0x75, 0xf8, 0xf0, 0xe1, 0x33, -0x66, 0xcc, 0x58, 0xb1, 0x62, 0x05, 0x30, 0x3e, 0x7c, 0xf8, 0x30, 0x18, -0x03, 0x4b, 0xa8, 0xe9, 0xc8, 0xa5, 0x86, 0xcd, 0x45, 0x7a, 0x9a, 0xa9, -0x96, 0x7f, 0xe2, 0x83, 0xc6, 0xd4, 0x0b, 0x02, 0xa1, 0xfe, 0xb9, 0x73, -0xe7, 0x0e, 0x1a, 0x34, 0xa8, 0x69, 0xd3, 0xa6, 0x96, 0x73, 0x23, 0x51, -0x02, 0xd6, 0xc1, 0xe5, 0xe6, 0x7e, 0x88, 0xb6, 0x50, 0xa1, 0xb7, 0x87, -0x33, 0x34, 0x83, 0xf3, 0xfa, 0xab, 0xd8, 0x79, 0xb1, 0x56, 0x9d, 0x3e, -0x7d, 0x9a, 0xad, 0x6b, 0xd2, 0xa4, 0x49, 0x85, 0x85, 0x85, 0xb5, 0x6a, -0xd5, 0x8a, 0x8b, 0x33, 0xd6, 0xfd, 0x66, 0xdd, 0x1b, 0x36, 0x6c, 0x38, -0x70, 0xe0, 0xc0, 0x95, 0x2b, 0x57, 0xb2, 0x10, 0x32, 0x63, 0x5d, 0xe6, -0xf3, 0x7a, 0xaf, 0xa0, 0x9f, 0x80, 0x51, 0x81, 0x7d, 0x85, 0x17, 0x46, -0x79, 0x87, 0x7a, 0xf5, 0xea, 0x99, 0xe7, 0x6c, 0x87, 0x0a, 0xa6, 0x4f, -0x9f, 0x0e, 0xcd, 0x89, 0xe1, 0x4f, 0x9f, 0xa1, 0x6c, 0x31, 0x6a, 0xcb, -0x40, 0x11, 0xc4, 0x80, 0x88, 0x63, 0x14, 0x63, 0x79, 0x49, 0x49, 0xc9, -0xb5, 0xd7, 0x5e, 0x0b, 0x95, 0x10, 0xc4, 0x46, 0xa6, 0x18, 0x84, 0x98, -0x94, 0x94, 0xa4, 0xdf, 0x2b, 0x23, 0x23, 0x83, 0x20, 0x7f, 0x08, 0x1a, -0x63, 0xbc, 0x6c, 0x34, 0x16, 0x31, 0xff, 0x76, 0x26, 0x77, 0xe1, 0x1c, -0xf8, 0xc6, 0xe2, 0xc5, 0x8b, 0x6d, 0x9f, 0x5e, 0x99, 0x27, 0xb2, 0x0e, -0x75, 0xeb, 0xd6, 0x05, 0x48, 0xd0, 0x09, 0x64, 0x4d, 0xd2, 0x9c, 0x02, -0x06, 0x8b, 0x89, 0x4f, 0xba, 0x4e, 0x9d, 0x3a, 0xf6, 0xe7, 0xb7, 0x6a, -0xd5, 0x2a, 0x71, 0x53, 0x18, 0x80, 0xe1, 0x33, 0x2a, 0xec, 0x34, 0xa5, -0x15, 0xd1, 0x0b, 0x3e, 0x00, 0xd0, 0x99, 0x3a, 0xf4, 0x64, 0x7f, 0xa2, -0xea, 0x4c, 0x9c, 0x8b, 0xec, 0xc4, 0x70, 0x5b, 0xc5, 0xe9, 0x6c, 0xde, -0x3a, 0x28, 0xa7, 0x31, 0x7f, 0xe4, 0x87, 0xec, 0xec, 0x6c, 0x3f, 0x66, -0x6e, 0xbe, 0x84, 0xa8, 0x4c, 0x38, 0x06, 0x2f, 0x40, 0xcd, 0x0d, 0x1b, -0x2b, 0x7b, 0xe1, 0xd0, 0xa1, 0x43, 0x3b, 0x74, 0xe8, 0xc0, 0x8b, 0x4c, -0x48, 0x48, 0xf0, 0xfb, 0x46, 0x7d, 0xfb, 0xf6, 0x45, 0x54, 0xf3, 0xfb, -0x72, 0x2e, 0x64, 0x37, 0x75, 0xb9, 0x72, 0x43, 0xf3, 0x18, 0x39, 0x72, -0xa4, 0xf8, 0x1c, 0xf0, 0x67, 0xfb, 0xfa, 0x04, 0xbc, 0x5f, 0xa8, 0x14, -0x9d, 0x9e, 0x57, 0xc3, 0xf6, 0xa4, 0xde, 0x4e, 0xf0, 0x51, 0xc1, 0x14, -0xf7, 0xee, 0xdd, 0xcb, 0xab, 0xf2, 0x75, 0x8a, 0xee, 0xce, 0x07, 0x57, -0x18, 0x9e, 0x03, 0x6c, 0xfb, 0xab, 0x1e, 0x58, 0xa4, 0x7f, 0x44, 0x4c, -0xa2, 0x0c, 0x88, 0x55, 0x60, 0x51, 0x2c, 0x7b, 0xa5, 0xc2, 0xdc, 0x10, -0x0c, 0x7c, 0x7a, 0x04, 0x67, 0x42, 0x6c, 0x7e, 0x9d, 0xf4, 0xde, 0x6d, -0x73, 0x27, 0x17, 0x35, 0x58, 0x3e, 0xb9, 0x45, 0xb5, 0xb4, 0x52, 0x89, -0x82, 0x55, 0x46, 0x4a, 0x44, 0xef, 0x14, 0x5e, 0x01, 0x11, 0xc7, 0xc4, -0xd0, 0x04, 0xa3, 0x5c, 0x8e, 0x76, 0x4d, 0xaa, 0xdf, 0x30, 0xa3, 0x8d, -0xe5, 0xcf, 0xd5, 0x53, 0x5b, 0x5e, 0x39, 0xae, 0x99, 0xfc, 0xcc, 0x1e, -0x96, 0xaf, 0x6e, 0xaf, 0xf3, 0x40, 0xa6, 0xcd, 0x69, 0xb3, 0x86, 0xe6, -0x0f, 0xed, 0x5a, 0xbb, 0x4b, 0x8b, 0x1a, 0x05, 0x75, 0xd3, 0xf3, 0xaa, -0x27, 0xa5, 0x24, 0x79, 0x6e, 0xe8, 0x71, 0x71, 0xa4, 0xd4, 0xa4, 0xf8, -0x3a, 0xd9, 0xc9, 0x1d, 0x0a, 0xb2, 0x06, 0x77, 0xae, 0x3d, 0x67, 0x44, -0x13, 0x2e, 0xe7, 0x0f, 0x19, 0xa9, 0x09, 0xd7, 0x5e, 0xd2, 0x6a, 0xc1, -0xe8, 0x02, 0x96, 0x65, 0x50, 0xe7, 0x5a, 0x9d, 0x9b, 0xd7, 0x68, 0x52, -0x37, 0xbd, 0x46, 0x86, 0x33, 0x36, 0x36, 0x68, 0x2b, 0x40, 0x49, 0x1a, -0x38, 0x2d, 0xdc, 0xc3, 0xc3, 0x82, 0xe6, 0x54, 0x73, 0x76, 0x6a, 0x96, -0x35, 0xbe, 0x4f, 0xfd, 0x25, 0x13, 0x9b, 0xeb, 0xa7, 0x11, 0x9f, 0x81, -0x0c, 0xcf, 0xab, 0xd1, 0xf7, 0xac, 0xe0, 0xa0, 0x42, 0x02, 0xa8, 0xe0, -0xe6, 0xb3, 0x66, 0xcd, 0xb2, 0xff, 0xbe, 0x59, 0xaf, 0x7a, 0xb9, 0x29, -0xf5, 0x73, 0x53, 0xf9, 0x3f, 0x3d, 0x85, 0x96, 0x43, 0x6e, 0x0f, 0xc4, -0x56, 0x64, 0x2a, 0xec, 0x09, 0xca, 0x27, 0x6f, 0x87, 0x21, 0xc8, 0xac, -0xb8, 0x8a, 0xe4, 0x12, 0x78, 0x25, 0xc2, 0x6b, 0x6e, 0x6e, 0xae, 0xf9, -0x1e, 0x6c, 0xd8, 0x67, 0xce, 0x9c, 0x41, 0x60, 0x13, 0x21, 0x47, 0x64, -0xd3, 0x32, 0xc5, 0x1c, 0xb4, 0x6b, 0x58, 0xdc, 0xf6, 0x4d, 0xaa, 0x0f, -0xeb, 0x56, 0x67, 0xee, 0x88, 0x26, 0x6b, 0x67, 0xb7, 0x3d, 0xb4, 0xb2, -0xdb, 0x43, 0x9b, 0x8b, 0xde, 0x3e, 0x3a, 0xe2, 0xff, 0x1e, 0x9c, 0xf8, -0xcd, 0x33, 0xd3, 0xf5, 0x9f, 0xec, 0x4c, 0xa7, 0xba, 0x0e, 0x25, 0x18, -0x5f, 0x12, 0xfa, 0x00, 0x83, 0xa3, 0x92, 0x22, 0x9d, 0xfb, 0x01, 0x88, -0xb4, 0xe4, 0x78, 0x59, 0xab, 0x64, 0xa7, 0x27, 0x1a, 0x5d, 0x3f, 0xa7, -0x9d, 0x61, 0x26, 0x96, 0xbf, 0x1e, 0xbf, 0xbe, 0xa7, 0x9a, 0x43, 0x56, -0x56, 0x96, 0xfa, 0x3c, 0xaa, 0x47, 0x5d, 0x77, 0x97, 0xff, 0xe9, 0xe1, -0xc9, 0x9f, 0x9d, 0x9d, 0xf4, 0x3f, 0xf7, 0x8c, 0xfb, 0xe9, 0x9d, 0x63, -0xf4, 0x9f, 0x4f, 0xef, 0x9f, 0xc8, 0xf7, 0xe6, 0xab, 0xd8, 0x20, 0x18, -0x16, 0x44, 0x79, 0x18, 0xf0, 0x67, 0x77, 0x8d, 0x7d, 0xfd, 0xd6, 0xe1, -0x4f, 0x6e, 0x1f, 0x78, 0xea, 0xa6, 0xde, 0x07, 0x57, 0x76, 0xbd, 0xe9, -0xb2, 0x76, 0xcf, 0xef, 0x19, 0xf2, 0xe0, 0xcd, 0xfd, 0x0e, 0xaf, 0xea, -0xbe, 0x69, 0x7e, 0xfb, 0x15, 0x93, 0x5b, 0xce, 0x1c, 0xda, 0x18, 0x7c, -0x82, 0xa5, 0x46, 0xb5, 0xd2, 0x40, 0x9d, 0xbb, 0x75, 0x83, 0x8e, 0x0d, -0x4f, 0xc1, 0xb5, 0xbb, 0x97, 0x74, 0x3e, 0xbb, 0xb9, 0xdf, 0xbb, 0xc7, -0x46, 0x7e, 0x71, 0x6e, 0x8a, 0x9a, 0x03, 0xb7, 0x53, 0x83, 0xa4, 0xa7, -0xa7, 0xa3, 0x84, 0xc0, 0xb7, 0xd1, 0x58, 0x20, 0x80, 0x20, 0xf3, 0x0a, -0xf8, 0xd7, 0xe8, 0xd1, 0xa3, 0x3d, 0xbc, 0x69, 0x9e, 0xa7, 0x6f, 0xfb, -0xbc, 0x65, 0x93, 0x5a, 0xf0, 0xb4, 0xcf, 0xed, 0x1e, 0xfc, 0xbf, 0xa7, -0xc7, 0x7f, 0xf5, 0xe4, 0x34, 0xc3, 0x62, 0x7d, 0xf9, 0xd8, 0xd4, 0x9f, -0xdc, 0x3e, 0xea, 0xae, 0xb5, 0xbd, 0x17, 0x8d, 0x6b, 0x56, 0x37, 0x27, -0xc5, 0x30, 0x1a, 0x0a, 0x13, 0x2c, 0x12, 0x12, 0x87, 0x64, 0xed, 0xf0, -0x0d, 0x20, 0x01, 0x2d, 0x8e, 0x1d, 0x3b, 0xd6, 0xa6, 0x32, 0x80, 0xae, -0x89, 0x16, 0x81, 0xb4, 0x86, 0x4d, 0x66, 0xe1, 0xc2, 0x85, 0xfa, 0xdd, -0x2f, 0x1f, 0xdd, 0xf4, 0x47, 0xbb, 0x07, 0xf3, 0xfe, 0xfe, 0xf6, 0xf8, -0x54, 0x3b, 0x04, 0xc7, 0x39, 0x9f, 0x3f, 0x7a, 0xb1, 0x7e, 0x84, 0x8c, -0x73, 0xea, 0xd4, 0x29, 0x74, 0x06, 0xdc, 0x49, 0x6c, 0x48, 0x47, 0x8f, -0x1e, 0xb5, 0x5c, 0x28, 0xb6, 0xcf, 0xa6, 0xf5, 0x32, 0xfa, 0xb4, 0xcb, -0x9b, 0xd8, 0xaf, 0x01, 0x2b, 0xb0, 0x6e, 0x4e, 0xbb, 0x03, 0x2b, 0xba, -0x3e, 0xb0, 0xa9, 0xdf, 0x8b, 0xfb, 0x86, 0x70, 0xeb, 0xbf, 0x3e, 0x56, -0xe6, 0xd6, 0xbf, 0xba, 0x77, 0xfc, 0x89, 0x1b, 0x7a, 0x0e, 0xe8, 0x54, -0xd3, 0x3c, 0xd4, 0xfd, 0x1b, 0xfb, 0xda, 0x99, 0xe4, 0x88, 0xee, 0xa5, -0xf2, 0x37, 0xd6, 0x02, 0x35, 0xce, 0x96, 0xcb, 0x3b, 0xda, 0xb9, 0xdc, -0xeb, 0x39, 0xac, 0x40, 0x42, 0xbc, 0x2b, 0x55, 0x93, 0xfd, 0xce, 0xeb, -0xc9, 0xea, 0x84, 0x37, 0x0e, 0x0f, 0xf7, 0x7c, 0x32, 0x44, 0xf2, 0xcb, -0x7b, 0xc6, 0xbd, 0x7a, 0x70, 0xd8, 0xc3, 0xb7, 0x14, 0xd5, 0xaa, 0x51, -0x2a, 0xf5, 0xb5, 0x6a, 0xd5, 0x4a, 0x3d, 0x02, 0xc4, 0xf6, 0xf5, 0x53, -0x97, 0xb8, 0x1b, 0x67, 0xcf, 0xd2, 0xd2, 0x34, 0x21, 0xec, 0x13, 0x0f, -0x3d, 0xf4, 0x10, 0x41, 0x2b, 0xb8, 0xf9, 0xb0, 0xb3, 0x05, 0x0d, 0x15, -0xe2, 0x05, 0x47, 0x29, 0xb4, 0x7c, 0xd3, 0x5d, 0x5b, 0x66, 0xf3, 0x76, -0x5f, 0xde, 0x3f, 0xd4, 0x8c, 0x01, 0xcf, 0x0f, 0xcf, 0xf9, 0xa7, 0xd7, -0xf7, 0x69, 0xdd, 0xa8, 0x9a, 0x3e, 0x2c, 0x4f, 0x0e, 0xe1, 0xc2, 0xec, -0x64, 0x53, 0x37, 0xb3, 0x0b, 0x99, 0x0c, 0xbb, 0x32, 0xfa, 0xba, 0xbe, -0x73, 0xd8, 0xdc, 0x98, 0x5b, 0xb4, 0x68, 0x41, 0xcc, 0x0c, 0xba, 0x90, -0x7e, 0xfe, 0xe8, 0x9e, 0x75, 0x3d, 0x2c, 0xb1, 0xbb, 0xa7, 0xe0, 0x91, -0xd5, 0x20, 0x98, 0xa7, 0x50, 0xa0, 0x09, 0xec, 0x81, 0x53, 0xc3, 0x28, -0xf4, 0xb5, 0xba, 0x74, 0x70, 0xe3, 0x1f, 0x1f, 0x1c, 0xc6, 0xee, 0xfb, -0xf7, 0x27, 0x8c, 0x7b, 0x84, 0x4d, 0x4a, 0x3a, 0xb3, 0xa1, 0xaf, 0x81, -0xcd, 0xfe, 0xf4, 0xae, 0x31, 0x5e, 0xaf, 0x85, 0xb3, 0xc5, 0xc7, 0x95, -0x0a, 0x30, 0xa9, 0xa9, 0xa9, 0x6a, 0xb6, 0xcc, 0xdc, 0xeb, 0xe5, 0x76, -0x4e, 0x80, 0x6a, 0x65, 0x4c, 0xa0, 0x6e, 0xe7, 0x7c, 0x39, 0x07, 0x8e, -0x61, 0xff, 0x64, 0xb6, 0x0c, 0xcb, 0x37, 0xdb, 0xab, 0x4d, 0xae, 0x87, -0x41, 0xa6, 0x0f, 0x6a, 0xa4, 0xae, 0x42, 0x27, 0x41, 0x4c, 0xc0, 0x94, -0x8c, 0x20, 0xcd, 0xab, 0x09, 0x1a, 0x2a, 0xa0, 0x42, 0xc2, 0x3f, 0x0d, -0x93, 0x43, 0xbc, 0x86, 0xfd, 0xfd, 0xe2, 0xd4, 0x38, 0xfb, 0x4f, 0x68, -0x79, 0x26, 0xe4, 0xb8, 0xfa, 0xd2, 0xd6, 0xfa, 0xe0, 0x37, 0xde, 0x78, -0x23, 0xc0, 0x80, 0xd9, 0xe9, 0xba, 0x91, 0x32, 0x1f, 0x63, 0xbc, 0x9b, -0x37, 0x6f, 0x9e, 0x67, 0x0c, 0x20, 0x7e, 0xf0, 0x9e, 0x58, 0xb8, 0x91, -0x3d, 0xea, 0x76, 0x6c, 0x5a, 0x2a, 0x39, 0xc8, 0x55, 0xed, 0xda, 0xb5, -0xd3, 0xa5, 0x2c, 0x1e, 0xe4, 0x8f, 0x0f, 0x4d, 0xf6, 0xe3, 0x29, 0x76, -0x5d, 0x55, 0xba, 0x21, 0x61, 0xc1, 0xa4, 0x66, 0x04, 0x81, 0x7d, 0x12, -0xa7, 0xa9, 0x4f, 0x0f, 0x48, 0xf8, 0x31, 0xb8, 0xe1, 0x12, 0x78, 0x6f, -0xdc, 0x0f, 0x32, 0x3a, 0x08, 0xf9, 0xe7, 0xd3, 0x6e, 0xb7, 0x49, 0x75, -0x21, 0x82, 0x9f, 0x0e, 0x5a, 0xf5, 0x19, 0x99, 0xd6, 0xd7, 0xfd, 0xcb, -0xdd, 0xfc, 0xd1, 0xac, 0x64, 0x58, 0x98, 0x92, 0xcd, 0x67, 0x84, 0x01, -0xde, 0x76, 0x5d, 0x0f, 0x9b, 0x27, 0xcb, 0x69, 0x97, 0x0c, 0x2c, 0x25, -0x71, 0xf5, 0x14, 0x68, 0x0e, 0x1e, 0x06, 0xe1, 0x9d, 0xaa, 0x33, 0x11, -0x0a, 0x10, 0xbd, 0x30, 0xfb, 0x62, 0xf2, 0x46, 0xe1, 0x0c, 0x0e, 0x2a, -0xd8, 0x9b, 0xd9, 0xb6, 0xaf, 0xb8, 0xe2, 0x0a, 0x75, 0x9b, 0x96, 0x0d, -0x33, 0x91, 0xe4, 0xfc, 0xd8, 0x5c, 0x3d, 0x3c, 0xc6, 0xb4, 0x01, 0x0d, -0xd5, 0xf8, 0x98, 0xb7, 0x09, 0x5c, 0x33, 0x48, 0x81, 0x4c, 0x03, 0x06, -0xb2, 0x74, 0xe9, 0x52, 0x77, 0x78, 0x68, 0x5c, 0x3b, 0x6d, 0xe1, 0xd8, -0xa6, 0x77, 0xde, 0xd8, 0x0b, 0x69, 0xd8, 0x40, 0x34, 0x2f, 0xed, 0x1b, -0x6a, 0xc6, 0x86, 0x8c, 0x03, 0xa9, 0xf9, 0x4d, 0xb5, 0xe3, 0x7a, 0x97, -0x9a, 0xdd, 0x30, 0x3c, 0xe0, 0x3c, 0x82, 0x4d, 0x13, 0x12, 0x87, 0xc9, -0x55, 0x4d, 0x92, 0xd7, 0x63, 0x87, 0x82, 0xed, 0x50, 0xc9, 0xe2, 0xf1, -0xcd, 0x64, 0xd8, 0x6e, 0x2d, 0xb3, 0xed, 0x9c, 0xdf, 0xbf, 0x63, 0xa9, -0xe8, 0xd5, 0xb1, 0x63, 0xc7, 0xd2, 0xbd, 0xd3, 0xbd, 0x52, 0x61, 0x67, -0x58, 0xfd, 0x1c, 0x94, 0x7e, 0x19, 0x96, 0x7d, 0xcd, 0xe6, 0xb5, 0x3b, -0xae, 0x2c, 0xfc, 0xe8, 0xc4, 0x68, 0x9b, 0x27, 0xcb, 0x69, 0xbf, 0x7f, -0x60, 0x22, 0xc6, 0x00, 0xc3, 0x7b, 0x47, 0x65, 0x72, 0x37, 0xc8, 0xef, -0xee, 0x9f, 0xa0, 0x9f, 0x8c, 0x49, 0x1a, 0xd7, 0x13, 0xbc, 0x02, 0xe1, -0x36, 0x38, 0xbc, 0x42, 0xe9, 0xb2, 0x35, 0x6b, 0x96, 0x2e, 0xf1, 0xbd, -0xeb, 0xfb, 0xf8, 0xf4, 0x54, 0x76, 0x4e, 0x46, 0x09, 0x11, 0x09, 0x55, -0x0e, 0xdc, 0xa5, 0xc4, 0xa8, 0x81, 0x6c, 0x65, 0xfb, 0xa7, 0x07, 0x87, -0xa5, 0xfe, 0x8a, 0xbe, 0xcb, 0x8e, 0xf5, 0xa6, 0x0d, 0x51, 0x15, 0xbe, -0x61, 0x46, 0xd4, 0x8d, 0xb3, 0xda, 0xda, 0x99, 0x9e, 0xf9, 0x1c, 0xd4, -0x0f, 0x5d, 0xaa, 0xc1, 0xbe, 0x8c, 0x1d, 0x1d, 0x09, 0x0a, 0x3c, 0xf7, -0xef, 0xdf, 0x5f, 0xdd, 0xc8, 0x3e, 0xb9, 0x78, 0x9d, 0xc6, 0x6b, 0x87, -0x86, 0xc9, 0xb0, 0xd8, 0x00, 0xbc, 0x9e, 0xfc, 0x9b, 0x33, 0x13, 0x74, -0x03, 0x98, 0x6e, 0x6a, 0x43, 0x3d, 0xf5, 0x7a, 0xb9, 0x9d, 0x13, 0x74, -0xe2, 0xb3, 0xa9, 0xe7, 0x30, 0xec, 0x84, 0xbe, 0xf5, 0xfd, 0xd8, 0x26, -0x90, 0xb4, 0x0d, 0xef, 0x0e, 0xed, 0xd4, 0xdd, 0x24, 0x99, 0x8c, 0x3a, -0x19, 0xba, 0xc5, 0x85, 0x4f, 0xf2, 0x16, 0xaf, 0x06, 0x01, 0x04, 0xdd, -0x38, 0x08, 0xbc, 0x42, 0x92, 0x93, 0x10, 0xcb, 0xd4, 0x6d, 0xe0, 0xbf, -0x28, 0x43, 0x76, 0x56, 0xcd, 0xd7, 0x73, 0x30, 0xa8, 0xa9, 0xbb, 0x4c, -0x9d, 0x3a, 0x95, 0x4d, 0x97, 0xf8, 0x47, 0x34, 0x63, 0x18, 0x1f, 0x2e, -0x36, 0x33, 0x41, 0x37, 0xab, 0x9f, 0x81, 0x5a, 0x6f, 0x7f, 0x32, 0x7f, -0x79, 0x64, 0x4a, 0xfd, 0xbc, 0x52, 0xd9, 0x9a, 0x01, 0x5b, 0x34, 0xc8, -0xb4, 0xaf, 0x5b, 0x1b, 0x1e, 0x47, 0x97, 0x77, 0x09, 0xd3, 0xdf, 0xb8, -0x71, 0x23, 0x1e, 0x4c, 0xa9, 0x96, 0xa2, 0x4f, 0x15, 0xcb, 0x95, 0xaf, -0xeb, 0xe0, 0xee, 0x7c, 0xd4, 0x12, 0x19, 0x79, 0xe7, 0x55, 0x85, 0x5e, -0xc7, 0xe4, 0x1c, 0x35, 0x0d, 0x2a, 0xd4, 0xeb, 0x53, 0x42, 0xad, 0xf7, -0x7a, 0xb9, 0x9d, 0x13, 0x4e, 0xae, 0xe9, 0xa5, 0x86, 0x65, 0x3b, 0xb7, -0x73, 0x09, 0xea, 0x10, 0xe2, 0x90, 0x9d, 0x33, 0xcd, 0xe7, 0x4c, 0xea, -0xd7, 0x40, 0xdd, 0x8e, 0xfd, 0xc8, 0x83, 0xa8, 0x82, 0x8d, 0x58, 0x9d, -0x89, 0x37, 0x19, 0x27, 0x20, 0x6e, 0x53, 0xbc, 0x49, 0x98, 0x07, 0x83, -0x63, 0x83, 0x42, 0xb2, 0xc7, 0x5c, 0x83, 0xe3, 0x56, 0xdd, 0x66, 0xc6, -0x90, 0xc6, 0xfe, 0x3d, 0x95, 0xd7, 0xab, 0x8e, 0x5e, 0xdb, 0x5d, 0xdd, -0x05, 0x9d, 0x9b, 0x44, 0x13, 0xf0, 0x00, 0xa9, 0xe9, 0x6c, 0x4a, 0x4e, -0x68, 0x58, 0x2b, 0x0d, 0x06, 0xea, 0x87, 0x08, 0x07, 0x8a, 0x74, 0xfa, -0x78, 0xaa, 0x64, 0xa0, 0xd7, 0x59, 0xb9, 0x3b, 0x81, 0x3d, 0x4f, 0x0d, -0x85, 0x17, 0x96, 0xf2, 0x28, 0x38, 0x28, 0x08, 0x28, 0x42, 0x29, 0x52, -0xdf, 0x23, 0x6a, 0x9a, 0x2f, 0x87, 0xd3, 0xee, 0x5d, 0xd6, 0xe5, 0xad, -0x23, 0x3e, 0xa3, 0x05, 0x65, 0x40, 0x46, 0x7e, 0x72, 0x87, 0xf7, 0x69, -0xf7, 0x68, 0x5d, 0xda, 0x9c, 0x04, 0xca, 0x28, 0x9d, 0x6a, 0x93, 0xea, -0x7e, 0x3f, 0xb2, 0xe1, 0x42, 0xdc, 0x1d, 0x32, 0x2c, 0xf6, 0x12, 0x9b, -0x63, 0xa2, 0x88, 0xf2, 0x0a, 0x6c, 0x9e, 0x6c, 0x38, 0x0d, 0xd6, 0xa4, -0xec, 0xe0, 0x18, 0xf1, 0x3c, 0x0c, 0x82, 0x21, 0x54, 0x3d, 0x2f, 0xfb, -0x29, 0x3c, 0x9c, 0xad, 0x0a, 0x6f, 0x98, 0x44, 0xe5, 0x04, 0x81, 0x57, -0x60, 0x64, 0x44, 0x9a, 0x27, 0xf4, 0x40, 0xdd, 0xe6, 0x91, 0x2d, 0xfd, -0xfd, 0x7b, 0x2a, 0xaf, 0x57, 0x7d, 0x70, 0x7c, 0x94, 0xba, 0x0b, 0x77, -0xc4, 0x07, 0x47, 0xe4, 0x99, 0x4e, 0xc4, 0x7c, 0x4e, 0x4a, 0x8c, 0xc3, -0x54, 0x6f, 0x9f, 0x3f, 0x18, 0x6e, 0x8a, 0xe9, 0x53, 0x99, 0xc3, 0xd1, -0x0a, 0xbc, 0x4e, 0xc9, 0xdd, 0x09, 0xbf, 0xbd, 0x6f, 0x82, 0x2e, 0xef, -0xe1, 0xc0, 0x41, 0xe4, 0x23, 0x19, 0x9a, 0x0d, 0x49, 0xef, 0x0a, 0x82, -0x61, 0xde, 0x30, 0x02, 0xc2, 0x43, 0xed, 0x1f, 0x4c, 0x8d, 0x37, 0xcf, -0xef, 0xe0, 0xd3, 0x04, 0xd0, 0x97, 0x64, 0x35, 0xb8, 0xbb, 0xe7, 0x0b, -0x7f, 0x7e, 0xf7, 0x58, 0x7d, 0xdd, 0xf4, 0xf6, 0x3d, 0xbe, 0xde, 0xd4, -0xdd, 0x8d, 0x78, 0x10, 0x65, 0x58, 0xbf, 0x6a, 0x82, 0x27, 0xc5, 0x57, -0x1f, 0x01, 0x2f, 0x10, 0xa2, 0xb2, 0x4f, 0x4f, 0xad, 0x9f, 0x8c, 0xd2, -0x28, 0xcf, 0x85, 0xf5, 0xdf, 0xdd, 0x20, 0xec, 0x1d, 0xba, 0xc7, 0x83, -0xd8, 0x02, 0x24, 0x1d, 0xc4, 0x27, 0x76, 0x58, 0x94, 0x0a, 0x04, 0x9f, -0x20, 0xa0, 0x02, 0xd7, 0x01, 0x31, 0x58, 0x6a, 0x89, 0x01, 0xeb, 0x3f, -0x4c, 0x2e, 0x08, 0xbf, 0x1f, 0xd2, 0x70, 0x21, 0x23, 0xeb, 0xa2, 0xb0, -0xd9, 0x10, 0x8c, 0x4d, 0xc9, 0x57, 0x45, 0xcd, 0x3c, 0xb7, 0x21, 0x5d, -0x5c, 0xce, 0x6c, 0x7c, 0xae, 0x80, 0xd0, 0xef, 0x99, 0x6f, 0x98, 0xdb, -0x5e, 0xad, 0x09, 0xce, 0x47, 0x18, 0x05, 0x06, 0x28, 0x49, 0xa8, 0xd7, -0xc9, 0xf1, 0xc3, 0x3b, 0x8c, 0x6a, 0x25, 0x36, 0x78, 0x75, 0x42, 0x9b, -0xc6, 0x76, 0xb7, 0x58, 0x99, 0xe7, 0xed, 0xab, 0x5d, 0x05, 0xe4, 0x79, -0x05, 0x5e, 0xa7, 0xbd, 0x79, 0x41, 0x07, 0x75, 0x17, 0xdd, 0xda, 0xc6, -0xf2, 0x62, 0x20, 0xf6, 0x7a, 0xb9, 0x9d, 0x13, 0xde, 0x39, 0x36, 0x52, -0xdd, 0x02, 0x17, 0xa7, 0x9d, 0x4b, 0xde, 0xbf, 0x7d, 0x14, 0xda, 0xb9, -0x9d, 0x33, 0x3d, 0x9c, 0x33, 0xf6, 0x82, 0x85, 0x03, 0x37, 0x8e, 0xbb, -0x73, 0x74, 0xff, 0x1d, 0x11, 0x2e, 0xa8, 0xda, 0xc4, 0xf0, 0x62, 0xb7, -0x24, 0x80, 0xd7, 0x60, 0xd5, 0xf4, 0xdf, 0xb7, 0x0d, 0xbc, 0x74, 0x99, -0x1e, 0x97, 0x7e, 0x80, 0x4f, 0xe5, 0xf9, 0x72, 0x9c, 0x5c, 0x06, 0xe6, -0x20, 0xbf, 0xf2, 0x3a, 0xd9, 0x77, 0x83, 0x62, 0x4f, 0xc4, 0x1b, 0xca, -0x80, 0x38, 0x53, 0xfd, 0x7e, 0x10, 0xe4, 0x7b, 0x42, 0x1e, 0xd4, 0x3c, -0xfb, 0xf5, 0xeb, 0xb7, 0x6f, 0xdf, 0x3e, 0x09, 0xc9, 0xbe, 0xe6, 0x9a, -0x6b, 0xd4, 0xf7, 0xc4, 0x44, 0x98, 0x6f, 0x81, 0xa7, 0x5c, 0x9d, 0x80, -0xa0, 0xec, 0xd3, 0x1c, 0xc4, 0xe4, 0xe5, 0x59, 0x78, 0x90, 0x01, 0xb9, -0xb5, 0xba, 0x8b, 0x1e, 0x71, 0xe8, 0xc1, 0xa5, 0xed, 0xd3, 0x4c, 0x38, -0xf9, 0x96, 0xcb, 0x2f, 0x02, 0x0f, 0xee, 0xad, 0x3b, 0x95, 0x3d, 0x8c, -0x73, 0xc3, 0xcc, 0x36, 0xd7, 0xdb, 0x36, 0x55, 0xb9, 0x1b, 0xe7, 0xd7, -0x67, 0xc6, 0x57, 0x4f, 0x4f, 0xf4, 0xb0, 0x39, 0xea, 0xfe, 0x3b, 0xcc, -0xe5, 0x94, 0x22, 0xc7, 0x2f, 0x8c, 0x13, 0x89, 0x78, 0x6d, 0x83, 0x07, -0xcc, 0x4f, 0x54, 0x60, 0xff, 0x21, 0xf2, 0xc4, 0xe9, 0x2c, 0xa5, 0xd4, -0xa7, 0x77, 0x0e, 0xf2, 0x75, 0xf9, 0x7c, 0x3a, 0xdf, 0xec, 0xed, 0xe6, -0xed, 0xb2, 0x0a, 0x8f, 0x6d, 0x1b, 0xe0, 0xd3, 0x38, 0x1e, 0x4e, 0x46, -0x84, 0x00, 0x63, 0x81, 0xf0, 0x1c, 0xd9, 0xb3, 0xd5, 0x41, 0xdc, 0x2b, -0xfa, 0x1c, 0xa1, 0xfc, 0x58, 0xc4, 0x89, 0x02, 0x54, 0xdf, 0xb3, 0x61, -0x9b, 0xa7, 0x21, 0x51, 0x43, 0x1c, 0x44, 0x76, 0x78, 0xb0, 0xa2, 0x98, -0x2f, 0x64, 0x8f, 0x17, 0x97, 0x1c, 0x1e, 0x71, 0xcf, 0x4b, 0xa1, 0x0b, -0xa2, 0x86, 0x2d, 0xc6, 0x8e, 0x42, 0x62, 0x73, 0x9d, 0xfb, 0x75, 0xb8, -0x28, 0xbb, 0x13, 0x17, 0x63, 0xf3, 0x12, 0x3c, 0x48, 0x7e, 0x1b, 0xc1, -0xf5, 0x5b, 0x60, 0xe7, 0xf0, 0x60, 0xc5, 0xd2, 0xfd, 0x77, 0x84, 0xff, -0x20, 0xd9, 0x52, 0xd0, 0x04, 0xeb, 0x13, 0xfb, 0xbb, 0x84, 0x33, 0x07, -0x24, 0x41, 0x89, 0x4d, 0xf6, 0xd6, 0x5b, 0x6f, 0x55, 0x2b, 0xcb, 0x06, -0xe9, 0x87, 0x82, 0x6b, 0x73, 0xc9, 0xe4, 0xb4, 0x9a, 0x59, 0x46, 0xb3, -0x34, 0x81, 0x31, 0x3e, 0x89, 0x3a, 0x68, 0x0e, 0x18, 0x5b, 0xf1, 0x4e, -0x10, 0x49, 0x61, 0x79, 0x6b, 0x14, 0x3e, 0xa2, 0x2d, 0x7c, 0x9a, 0x95, -0x7e, 0x32, 0xef, 0x03, 0xc9, 0x47, 0xad, 0x09, 0x7a, 0x36, 0xf9, 0x3d, -0xc4, 0x7a, 0x10, 0x7f, 0xa6, 0x5b, 0xea, 0x38, 0xc1, 0x6c, 0xea, 0x41, -0x1f, 0x90, 0x0b, 0x89, 0x1a, 0x7a, 0x62, 0xbb, 0x6f, 0x38, 0xbf, 0x62, -0x4c, 0x53, 0xb9, 0x96, 0x38, 0x22, 0xcf, 0x93, 0xe7, 0xf1, 0x0d, 0x60, -0x90, 0x5f, 0x6d, 0x7a, 0x39, 0xec, 0xac, 0x0c, 0x4e, 0x4f, 0xe5, 0x35, -0xdf, 0xb7, 0xac, 0x8b, 0x9d, 0x4b, 0x30, 0x2b, 0x63, 0x00, 0xf4, 0xc3, -0x26, 0x6b, 0x67, 0x70, 0xfd, 0x1c, 0xa2, 0x12, 0xd5, 0xe3, 0xcf, 0x9e, -0x3d, 0xfb, 0xc8, 0x91, 0x23, 0xec, 0x56, 0x30, 0x0a, 0x74, 0x01, 0x43, -0x84, 0xa8, 0x3f, 0xbc, 0x42, 0x2a, 0xa9, 0xe9, 0xc2, 0xfd, 0xd2, 0x89, -0x6e, 0x55, 0x1c, 0x5f, 0xa7, 0xee, 0xee, 0x7c, 0x43, 0xd8, 0x26, 0xc6, -0x0d, 0x38, 0xa6, 0xfd, 0xc1, 0x89, 0x6c, 0xe3, 0xdd, 0xcb, 0xa2, 0xf0, -0x0e, 0x2c, 0x2f, 0x44, 0x82, 0x22, 0xe8, 0xc8, 0xfe, 0x98, 0x86, 0x33, -0x71, 0x5f, 0xea, 0x34, 0x37, 0x7f, 0xfe, 0x7c, 0x78, 0x34, 0x81, 0x89, -0xe4, 0x03, 0xe9, 0xd9, 0x0b, 0xdd, 0x5b, 0xe5, 0x98, 0x6f, 0x71, 0xe4, -0x1a, 0x97, 0x05, 0x0c, 0x6f, 0x23, 0xb2, 0xaf, 0x4f, 0x13, 0xe0, 0x7c, -0x15, 0x7c, 0xea, 0x35, 0x58, 0xa3, 0x79, 0xfd, 0x52, 0xd3, 0x88, 0x3e, -0xd5, 0x20, 0x32, 0x8a, 0xbb, 0xd7, 0xf6, 0x56, 0x23, 0xdb, 0xd4, 0x9e, -0x57, 0x4e, 0x69, 0x89, 0x5b, 0xc9, 0xa7, 0xa7, 0xf6, 0xe3, 0x64, 0x42, -0x18, 0xf5, 0x47, 0x26, 0xdf, 0x10, 0xad, 0x18, 0xff, 0x9d, 0x21, 0x5a, -0x56, 0xd8, 0x85, 0xcf, 0xa8, 0x00, 0x55, 0x40, 0x02, 0x77, 0x81, 0x7e, -0x8f, 0x57, 0x0e, 0xd8, 0x0d, 0x9e, 0x61, 0x9b, 0x24, 0x74, 0x07, 0x19, -0x1a, 0x51, 0x18, 0xbe, 0x09, 0x7c, 0x09, 0x69, 0xf6, 0x1a, 0x55, 0x81, -0x3f, 0x41, 0xbf, 0x1d, 0x90, 0xe0, 0x21, 0xed, 0x2f, 0x0d, 0x7c, 0x0c, -0x6e, 0xae, 0x46, 0x70, 0xa7, 0xd8, 0x05, 0x68, 0x84, 0xd1, 0x2d, 0x9e, -0x88, 0xad, 0x64, 0x84, 0xb2, 0x1b, 0xa1, 0x67, 0x63, 0xf8, 0xd3, 0x63, -0xd7, 0xf0, 0xe0, 0x9a, 0x67, 0x4e, 0x94, 0x35, 0xc6, 0x13, 0x1e, 0xd3, -0xfe, 0x43, 0x71, 0x26, 0xdc, 0x4f, 0x71, 0x27, 0x3c, 0xf1, 0x86, 0x08, -0x42, 0xc3, 0x50, 0x2c, 0x02, 0x0e, 0x4d, 0x89, 0x75, 0x25, 0x18, 0x87, -0x28, 0x57, 0x7e, 0x7c, 0xbd, 0xa3, 0xd7, 0xe9, 0x11, 0xd9, 0x25, 0xeb, -0x8c, 0x40, 0xe8, 0xf5, 0x64, 0x4e, 0x80, 0x45, 0x10, 0x08, 0x6c, 0x9f, -0x7e, 0xec, 0x8c, 0x69, 0x79, 0x8e, 0xee, 0x44, 0xc2, 0xcc, 0x40, 0xc6, -0x2c, 0x96, 0x7d, 0x0c, 0x50, 0x92, 0x7c, 0x6b, 0x88, 0xa9, 0xf3, 0x07, -0x15, 0xd8, 0x64, 0x51, 0x22, 0x15, 0x91, 0xb1, 0xc3, 0xd9, 0x64, 0x7f, -0x98, 0x4d, 0xd1, 0xc0, 0xcc, 0x4c, 0x9c, 0xdd, 0xc2, 0xf3, 0xd3, 0xea, -0x66, 0x0d, 0x02, 0x25, 0xf0, 0xce, 0xfa, 0xb4, 0x3a, 0xba, 0x9a, 0xc5, -0xdd, 0xc9, 0x1f, 0xb0, 0xbc, 0x3c, 0x90, 0x2d, 0x93, 0x6b, 0xf5, 0xe7, -0xc2, 0xd5, 0x48, 0x70, 0x07, 0x8b, 0x8b, 0x39, 0x9c, 0x22, 0x7f, 0xea, -0x4f, 0xe8, 0x2d, 0x44, 0xfb, 0x98, 0xef, 0xfe, 0xb1, 0x8f, 0x91, 0x0e, -0x32, 0xc2, 0x65, 0xc3, 0x9b, 0xa8, 0x91, 0xdb, 0xe6, 0x07, 0x6a, 0xc3, -0xf1, 0x69, 0x49, 0x2d, 0x4f, 0xc6, 0xe6, 0xa1, 0xfc, 0x06, 0x88, 0xa3, -0x76, 0x06, 0x24, 0x18, 0x99, 0x9d, 0xd1, 0x26, 0xfd, 0xd8, 0x19, 0xd0, -0xdd, 0x39, 0xba, 0xff, 0x8e, 0x66, 0x2e, 0x07, 0x0f, 0x1e, 0x84, 0x8d, -0xe3, 0x44, 0x92, 0x34, 0xc9, 0x80, 0x50, 0x21, 0x1a, 0x05, 0xda, 0x09, -0xc9, 0xca, 0xea, 0x7d, 0x5c, 0x37, 0xdd, 0x6e, 0xa0, 0x8b, 0x81, 0x74, -0xd4, 0x08, 0xf3, 0x46, 0x7a, 0xb1, 0x5f, 0xdd, 0xb3, 0xee, 0xa2, 0x57, -0x9f, 0x45, 0xf7, 0x95, 0x80, 0xd8, 0x41, 0x73, 0xab, 0x95, 0xea, 0x24, -0xd0, 0xa5, 0xd9, 0x2a, 0xca, 0x52, 0x12, 0x46, 0x1a, 0xc8, 0xc6, 0xa9, -0xbb, 0x87, 0x48, 0x65, 0xa6, 0x9a, 0x01, 0x11, 0xe3, 0xb8, 0x29, 0x08, -0x7f, 0x22, 0x8f, 0x54, 0x3d, 0x29, 0xa7, 0x05, 0xf2, 0x6a, 0xf5, 0x6b, -0xb7, 0x5e, 0x51, 0x1a, 0xbf, 0xc4, 0xf8, 0x76, 0x62, 0x3d, 0x82, 0x75, -0x6b, 0x77, 0xe3, 0x3c, 0xbb, 0xcb, 0xd5, 0x4c, 0x48, 0x0e, 0x9b, 0x46, -0x0b, 0x2c, 0x04, 0x08, 0x0e, 0xe5, 0x3d, 0x31, 0xc6, 0xd7, 0x5f, 0xd0, -0x84, 0x09, 0x13, 0x30, 0x97, 0x63, 0x80, 0xc2, 0x2c, 0x6b, 0x19, 0x69, -0xea, 0x1b, 0xaf, 0x90, 0x3c, 0x63, 0xb2, 0x34, 0xf4, 0x7d, 0x91, 0x8d, -0xdc, 0xe6, 0x53, 0x19, 0x02, 0x60, 0xd5, 0x20, 0x24, 0x9d, 0x78, 0x1e, -0x01, 0xb3, 0x1d, 0x27, 0xa3, 0xc6, 0x3d, 0xe3, 0xbb, 0xa5, 0x4b, 0x4f, -0xaf, 0x61, 0x10, 0x77, 0x0e, 0x78, 0xcf, 0xe2, 0x87, 0xe7, 0xe9, 0x31, -0x2b, 0x7d, 0x41, 0xf0, 0xf7, 0x53, 0xeb, 0xe0, 0xde, 0x7b, 0xef, 0xa5, -0x7c, 0x2a, 0xbb, 0x91, 0x9e, 0xbd, 0xb0, 0x7f, 0xb9, 0x2d, 0x05, 0xd4, -0xeb, 0x7a, 0x1e, 0x5e, 0x55, 0x1a, 0xf4, 0x2a, 0xb7, 0xf6, 0xdb, 0x31, -0xec, 0xf5, 0x5e, 0xf6, 0x4f, 0x40, 0x08, 0x94, 0xc9, 0xe0, 0x92, 0xb3, -0x73, 0x15, 0xbc, 0x85, 0x1c, 0x09, 0x24, 0x3a, 0x3b, 0x27, 0x07, 0x72, -0x8e, 0xc1, 0x7f, 0x87, 0x95, 0x1c, 0x2b, 0x08, 0xf9, 0x46, 0x64, 0x5c, -0xe2, 0xd2, 0x36, 0xc7, 0x5f, 0xfb, 0x86, 0x0a, 0x89, 0x7d, 0xa2, 0xf2, -0x82, 0x22, 0x82, 0x56, 0xb6, 0x5d, 0xfa, 0x3c, 0x95, 0xd2, 0x77, 0x75, -0x1a, 0xb2, 0xe3, 0xe8, 0x18, 0x58, 0x58, 0x8b, 0x4b, 0x2c, 0x25, 0x72, -0xaf, 0x8b, 0xa5, 0xc7, 0x5f, 0x10, 0x5f, 0xe9, 0xce, 0xfb, 0xeb, 0x77, -0x86, 0x03, 0x13, 0x28, 0xd2, 0x42, 0x50, 0x49, 0x52, 0xa7, 0xba, 0x0c, -0x9a, 0x1c, 0x19, 0xb0, 0xd4, 0x4b, 0xc5, 0x59, 0xa1, 0x1e, 0x16, 0xd1, -0xdf, 0x27, 0x75, 0xc8, 0xdd, 0xa3, 0x61, 0xdb, 0xd1, 0x17, 0x50, 0x3e, -0x5b, 0x32, 0x40, 0xaf, 0x8b, 0x13, 0xc4, 0x13, 0x90, 0x82, 0xb0, 0x0a, -0xca, 0x64, 0x36, 0xce, 0xb3, 0x25, 0x3e, 0x3d, 0x5e, 0x3c, 0xc0, 0x8e, -0x8f, 0x25, 0xf0, 0x49, 0x92, 0xcc, 0xa4, 0x56, 0x8c, 0xc8, 0x34, 0x6c, -0xb2, 0xc4, 0xe0, 0xbc, 0xfa, 0xea, 0xab, 0x38, 0x2b, 0x50, 0x07, 0xcc, -0xb9, 0x3a, 0xbe, 0xa1, 0x42, 0x62, 0x9f, 0xf4, 0xec, 0x4d, 0x9b, 0xf9, -0x90, 0x3c, 0x18, 0x56, 0x20, 0x95, 0x06, 0xa0, 0xa6, 0x48, 0x76, 0xaf, -0x57, 0x07, 0x1c, 0x51, 0x7a, 0x18, 0xa0, 0xc8, 0xfe, 0xf1, 0x4f, 0xfa, -0x54, 0xf6, 0x38, 0xbc, 0xfd, 0x2f, 0xec, 0xb5, 0x36, 0x31, 0x21, 0x3e, -0xf9, 0x6d, 0x59, 0x46, 0x32, 0xd6, 0x69, 0x94, 0x6e, 0x69, 0x62, 0x7a, -0x92, 0x62, 0x2d, 0x7a, 0x98, 0x3d, 0xd9, 0xcc, 0x01, 0xbe, 0x60, 0xd6, -0x0a, 0x1d, 0xcc, 0x0c, 0x09, 0x76, 0x5c, 0xff, 0x16, 0x27, 0xc0, 0xf9, -0xe8, 0x97, 0xeb, 0x94, 0xf7, 0xc9, 0x49, 0x5b, 0xdb, 0x3f, 0x7a, 0x11, -0xc6, 0xb7, 0x20, 0xce, 0xc1, 0xdd, 0x50, 0x44, 0x97, 0xa9, 0x45, 0x6b, -0xd6, 0xac, 0x19, 0xc2, 0x2d, 0x29, 0xfb, 0x44, 0xd3, 0x11, 0x40, 0xae, -0xfb, 0xef, 0xbc, 0xd7, 0x0e, 0xb4, 0x4c, 0x8c, 0xc6, 0xfa, 0x44, 0x38, -0xb4, 0xfe, 0x56, 0xec, 0x4b, 0xf9, 0x86, 0xcc, 0x29, 0x5c, 0x1c, 0x1e, -0x9c, 0xf3, 0xfa, 0xe3, 0xb1, 0xa3, 0xa0, 0x18, 0x10, 0x01, 0xe6, 0xdf, -0xf2, 0x61, 0x09, 0x65, 0xc2, 0xd8, 0x6a, 0x3c, 0x44, 0xdd, 0xf9, 0x6a, -0x0f, 0xd5, 0x67, 0x22, 0x71, 0x22, 0x72, 0xc0, 0x28, 0x28, 0x0a, 0xc6, -0xa2, 0xe3, 0x1e, 0xc2, 0xbe, 0x41, 0xc5, 0x5f, 0x4a, 0x27, 0xa9, 0xbf, -0x06, 0x48, 0x01, 0xa8, 0xe9, 0x3a, 0x53, 0xd2, 0xdf, 0xc2, 0xd4, 0x01, -0x0d, 0xfd, 0x5b, 0x9c, 0x20, 0x5e, 0x25, 0x52, 0x2e, 0x87, 0x4d, 0xeb, -0x13, 0x9b, 0x1d, 0x26, 0x72, 0x4b, 0x5d, 0xee, 0xcf, 0x8f, 0x4c, 0x0e, -0xae, 0x58, 0x75, 0xe9, 0xe0, 0xd2, 0xe4, 0x24, 0x2a, 0x44, 0x11, 0x14, -0x88, 0x09, 0x04, 0x4a, 0xc6, 0x94, 0x2a, 0x65, 0x6f, 0x54, 0xe2, 0x9a, -0x3f, 0x96, 0x59, 0x82, 0xb7, 0x31, 0x38, 0xaa, 0xf7, 0x51, 0xd8, 0xcc, -0x96, 0xf5, 0x4d, 0x96, 0x9e, 0x0c, 0x29, 0x5c, 0xd1, 0x64, 0x66, 0xa1, -0x5d, 0xa1, 0x3d, 0xdb, 0x0f, 0xe3, 0xc3, 0x4b, 0x45, 0x32, 0xb7, 0xdf, -0xef, 0x0f, 0x3f, 0x31, 0x01, 0xb0, 0x1e, 0x58, 0x01, 0x66, 0x4a, 0xbf, -0xad, 0x4f, 0x7a, 0x68, 0x0d, 0xcb, 0x42, 0x08, 0x0c, 0x71, 0xe3, 0xc8, -0xac, 0x28, 0xd9, 0x30, 0x0a, 0x72, 0x82, 0xd5, 0x5a, 0x25, 0x26, 0xc4, -0xfe, 0xc1, 0x2a, 0xe5, 0xdf, 0xe6, 0x73, 0xa1, 0x1d, 0x65, 0x65, 0xb8, -0x2d, 0x43, 0x86, 0x9a, 0x61, 0x73, 0x9c, 0xf2, 0x3b, 0x8d, 0xe8, 0x7d, -0x79, 0x58, 0x9b, 0x82, 0x2e, 0xbb, 0x24, 0xbc, 0xc2, 0x72, 0x3e, 0x64, -0x41, 0x6c, 0x5b, 0xd8, 0x29, 0x88, 0x53, 0xd5, 0xfd, 0x77, 0x0b, 0x16, -0x2c, 0xc0, 0xa9, 0x8a, 0x6b, 0x95, 0xbc, 0x48, 0x5c, 0x78, 0x52, 0x70, -0xcc, 0x4f, 0x54, 0x48, 0x4a, 0x34, 0x5e, 0x40, 0x3d, 0xf6, 0xd8, 0xa7, -0xa9, 0xe3, 0xd3, 0xf1, 0x43, 0x4a, 0x41, 0xdc, 0xf7, 0x3b, 0xec, 0xde, -0xe6, 0xb2, 0x92, 0xc8, 0x66, 0x1f, 0xa2, 0x86, 0x31, 0xf1, 0x33, 0x28, -0xba, 0xa7, 0xac, 0x13, 0x90, 0x38, 0x70, 0xe0, 0x00, 0x75, 0x29, 0x31, -0x48, 0xa0, 0xc9, 0x5d, 0x7e, 0xf9, 0xe5, 0xea, 0xaf, 0x7e, 0x07, 0x1a, -0x51, 0xa2, 0xc2, 0x5c, 0xb5, 0x40, 0x8f, 0xb5, 0xe1, 0x16, 0x36, 0xfd, -0x65, 0x36, 0x17, 0xc4, 0x8f, 0xd3, 0xf0, 0x84, 0xc8, 0x93, 0xe2, 0x52, -0xb4, 0x69, 0x37, 0x27, 0xc5, 0xd2, 0x9d, 0x40, 0xcb, 0x3e, 0xe8, 0x39, -0xf7, 0xda, 0xa7, 0x19, 0x1a, 0xfc, 0x77, 0x04, 0x1c, 0x48, 0xa6, 0x11, -0x15, 0x0c, 0xcc, 0xb1, 0x1e, 0xbe, 0xf1, 0x0a, 0xb1, 0x3e, 0xd1, 0xf2, -0x43, 0x67, 0xdc, 0xc1, 0x8a, 0xb2, 0xf4, 0xf0, 0x90, 0x64, 0x5a, 0x79, -0x4d, 0xa6, 0xf3, 0x69, 0x8d, 0x0c, 0x27, 0xe3, 0x0f, 0x1e, 0xd3, 0xcb, -0xcf, 0xb8, 0x71, 0x12, 0x65, 0xf4, 0xa2, 0x46, 0x63, 0xc6, 0x8c, 0x41, -0xa3, 0xb8, 0xe7, 0x9e, 0x7b, 0xf0, 0x51, 0xa0, 0xc6, 0xb1, 0x15, 0x51, -0xf3, 0x4f, 0x2d, 0x97, 0x4d, 0x71, 0x51, 0x9f, 0x1e, 0x51, 0xdf, 0xec, -0xa6, 0xe6, 0xba, 0x49, 0x54, 0x5e, 0xec, 0xd9, 0xb3, 0xb4, 0x6e, 0x8d, -0x65, 0xac, 0x61, 0x20, 0x6b, 0xe2, 0xc7, 0xb5, 0xab, 0xa6, 0x5d, 0xcc, -0xe6, 0xb1, 0xa9, 0x3b, 0x11, 0x35, 0x88, 0xa0, 0xe5, 0x4e, 0x17, 0x92, -0xad, 0xdd, 0xd2, 0xb1, 0xe3, 0xc7, 0xdc, 0x74, 0xd1, 0x9d, 0xc8, 0x79, -0x54, 0x6d, 0x32, 0x8d, 0xa8, 0x09, 0x46, 0x71, 0x34, 0xcc, 0xb2, 0x96, -0xf5, 0x62, 0xec, 0x6a, 0xdb, 0x40, 0x02, 0x6d, 0x9d, 0xb2, 0xbe, 0xea, -0x35, 0x53, 0xed, 0xc7, 0x8f, 0x29, 0xfa, 0x7a, 0x49, 0xb0, 0x72, 0x26, -0x2d, 0xef, 0x0b, 0x23, 0xc2, 0xcf, 0x4d, 0xe5, 0x01, 0x5f, 0x67, 0xa5, -0x64, 0x42, 0xb5, 0x1a, 0x54, 0xa1, 0x23, 0x88, 0x80, 0x5c, 0x59, 0x62, -0x01, 0x49, 0xbb, 0x63, 0x1f, 0x02, 0x1e, 0xea, 0xaf, 0x94, 0x50, 0xf0, -0xc9, 0x19, 0xc2, 0x46, 0x40, 0xe8, 0xae, 0x5e, 0x86, 0xa3, 0x54, 0x6a, -0x2d, 0x2c, 0x24, 0x7e, 0x84, 0xfc, 0x75, 0xf5, 0x4d, 0xc5, 0xd8, 0xfb, -0x3d, 0x2c, 0x11, 0x22, 0x00, 0xfe, 0x69, 0x99, 0x0f, 0xf1, 0x91, 0x76, -0x16, 0x13, 0x91, 0x18, 0x7f, 0x8b, 0xe5, 0x99, 0x2a, 0x57, 0xc4, 0xa6, -0x24, 0xe6, 0xf5, 0x76, 0xba, 0xff, 0xae, 0x6d, 0xdb, 0xb6, 0xd4, 0x70, -0xc1, 0x62, 0x4e, 0x65, 0x09, 0xbc, 0xda, 0x68, 0x04, 0xe6, 0x1a, 0x79, -0x3e, 0x44, 0x7c, 0xa0, 0xaa, 0x33, 0x8a, 0x1e, 0xb9, 0x80, 0x5e, 0xef, -0x75, 0x42, 0x01, 0x9e, 0x40, 0xc1, 0xac, 0x40, 0x02, 0x93, 0xbc, 0xde, -0x5d, 0x14, 0xc4, 0xf7, 0x6e, 0xb3, 0xeb, 0x6f, 0xd1, 0x07, 0x84, 0xca, -0xc9, 0xc8, 0x55, 0xa4, 0x49, 0x95, 0x65, 0x58, 0x33, 0x41, 0x04, 0xb0, -0x53, 0x56, 0x9c, 0x7a, 0x0b, 0xc4, 0x9f, 0xa9, 0xbf, 0xda, 0x8c, 0x0c, -0xc7, 0x14, 0x86, 0x43, 0x43, 0xcc, 0x03, 0xe6, 0x83, 0x04, 0x6b, 0xaa, -0xf4, 0x52, 0xd4, 0x47, 0xb7, 0x6b, 0xf9, 0x3d, 0x7f, 0xaf, 0x8b, 0x63, -0xff, 0x04, 0xe5, 0x9c, 0x25, 0xda, 0x97, 0x32, 0x50, 0x76, 0x2e, 0x9c, -0xd2, 0xbf, 0xa1, 0x3b, 0xf3, 0x89, 0xb2, 0x17, 0x51, 0x19, 0xcd, 0xce, -0x50, 0x5e, 0xcf, 0x51, 0x31, 0xbc, 0xac, 0xd5, 0xb0, 0x61, 0xc3, 0xf0, -0xdf, 0x11, 0xfe, 0x44, 0xa6, 0x91, 0xa1, 0x8a, 0xa6, 0x6e, 0x5e, 0xb2, -0xcb, 0x2b, 0x30, 0xc8, 0x92, 0x24, 0xa0, 0x5e, 0x15, 0x36, 0x56, 0xbf, -0x8d, 0x42, 0x5e, 0x1f, 0x43, 0x9d, 0x50, 0xae, 0x41, 0x63, 0xbc, 0x4b, -0xfc, 0xdc, 0xd4, 0x02, 0xf4, 0xcf, 0xa6, 0x09, 0xf9, 0xaa, 0xd5, 0x20, -0x51, 0x81, 0x02, 0xf7, 0x88, 0x4f, 0x08, 0xac, 0xb0, 0x66, 0x34, 0x39, -0x8a, 0x7a, 0xe8, 0x05, 0x16, 0x90, 0x03, 0xdd, 0x3d, 0x35, 0xc6, 0x56, -0x82, 0x46, 0xa9, 0x4d, 0xc6, 0xcb, 0x33, 0x5b, 0xae, 0xe5, 0x16, 0xa4, -0x1f, 0x52, 0x06, 0x81, 0x22, 0x26, 0x18, 0xb8, 0x70, 0x16, 0xf1, 0x6a, -0xd5, 0xad, 0x3d, 0x07, 0x7a, 0x10, 0x66, 0x0f, 0x4b, 0xef, 0xd9, 0x3a, -0x07, 0x13, 0x1c, 0xc1, 0x63, 0x52, 0x7a, 0x10, 0x30, 0x23, 0xb8, 0xdb, -0x7f, 0x0b, 0x5e, 0xcf, 0xc4, 0x31, 0x2a, 0xf3, 0xb1, 0x99, 0x9a, 0x42, -0xd8, 0x1b, 0x46, 0x21, 0x77, 0xc3, 0x22, 0xd0, 0xaa, 0xa7, 0xf3, 0x29, -0x26, 0xda, 0x72, 0x40, 0x83, 0xff, 0x8e, 0x0d, 0x05, 0x8a, 0x47, 0xa9, -0xc0, 0x26, 0xab, 0xeb, 0xd9, 0x7e, 0x46, 0x7c, 0xc0, 0x28, 0xf4, 0xd2, -0x32, 0x36, 0xc5, 0x47, 0xaf, 0x0b, 0xea, 0xe1, 0x84, 0x47, 0xb7, 0xf6, -0xa7, 0xc2, 0x5a, 0x20, 0x23, 0x78, 0xb8, 0x16, 0x95, 0x00, 0x3c, 0xb0, -0xfa, 0x7e, 0x2b, 0x15, 0xd8, 0xdf, 0xd4, 0xcb, 0x23, 0xae, 0x86, 0x20, -0x02, 0x4c, 0x7e, 0x54, 0x91, 0x31, 0x57, 0x67, 0x23, 0xbf, 0xde, 0xec, -0x38, 0x47, 0x05, 0xa4, 0xd8, 0x2b, 0x3e, 0x2c, 0xf6, 0x57, 0x4b, 0xce, -0x20, 0x5f, 0x52, 0xf2, 0x11, 0x15, 0x02, 0x91, 0x89, 0x74, 0x4a, 0xc4, -0x57, 0xfc, 0x83, 0x94, 0xa5, 0xd0, 0xcb, 0x6e, 0xbb, 0x93, 0x43, 0xe4, -0xd9, 0xf5, 0x2a, 0x10, 0xfa, 0x5d, 0x82, 0xc8, 0xe7, 0xb1, 0xa2, 0xaa, -0x70, 0x66, 0x9b, 0xc9, 0xee, 0x64, 0xe1, 0xf3, 0x72, 0x2d, 0xdf, 0x0e, -0x49, 0x97, 0x3a, 0x07, 0x5e, 0xe3, 0x6f, 0x99, 0x15, 0x35, 0xb8, 0xee, -0x45, 0x21, 0xff, 0x8e, 0x48, 0x1c, 0x0c, 0x50, 0x04, 0x1c, 0x90, 0x56, -0xe1, 0xa1, 0x02, 0xa5, 0x2d, 0x5e, 0x81, 0xec, 0x45, 0xa5, 0x19, 0xe2, -0x40, 0xd5, 0xca, 0x06, 0x68, 0x7a, 0xf7, 0x4a, 0xeb, 0x18, 0xb3, 0xb1, -0xf4, 0x05, 0x25, 0x13, 0xc5, 0x7c, 0x2f, 0xaa, 0x4e, 0xa8, 0x98, 0x6a, -0xff, 0xe2, 0x64, 0xb1, 0xf6, 0x7a, 0x20, 0x65, 0xc3, 0x9f, 0x2c, 0xf7, -0x45, 0xf4, 0x25, 0xcf, 0x23, 0x50, 0xa8, 0x41, 0x9a, 0x16, 0xc0, 0x1f, -0x78, 0x97, 0x74, 0x60, 0x21, 0xa1, 0x05, 0x43, 0x3b, 0xbf, 0xaa, 0x0b, -0x51, 0x3c, 0x3c, 0x24, 0x6a, 0xe3, 0x36, 0xa5, 0x20, 0xb4, 0xe5, 0x5d, -0xfc, 0x28, 0x98, 0xe0, 0xee, 0x95, 0xa9, 0x82, 0x6b, 0x38, 0xb6, 0x6d, -0x72, 0x5d, 0xa2, 0x19, 0xdc, 0x59, 0x23, 0xf5, 0x48, 0x2a, 0x66, 0xee, -0x53, 0xe4, 0x84, 0xe5, 0x0c, 0x75, 0xff, 0x1d, 0x04, 0x2c, 0x59, 0xa9, -0x78, 0x2a, 0x28, 0xea, 0x61, 0xa9, 0x51, 0xf8, 0x60, 0x83, 0xe2, 0x7a, -0xbd, 0x0c, 0x3a, 0xa6, 0x77, 0xaf, 0xb1, 0xdf, 0x5e, 0xe9, 0xde, 0xf3, -0x09, 0x94, 0xd4, 0xe6, 0x8d, 0x96, 0x47, 0x22, 0x38, 0x90, 0xd0, 0xb3, -0x34, 0xfd, 0xf3, 0x54, 0x90, 0x13, 0x6b, 0x1f, 0x15, 0x96, 0xb9, 0xcb, -0x48, 0x35, 0x96, 0x23, 0x20, 0x2c, 0xa1, 0x11, 0xc2, 0x79, 0x16, 0x2d, -0x5a, 0x44, 0xc5, 0x68, 0xba, 0x67, 0x10, 0x7b, 0x8b, 0x5b, 0x90, 0x1d, -0x8e, 0xa0, 0x74, 0x9c, 0x83, 0x7a, 0x60, 0x01, 0xd2, 0xb9, 0x87, 0x65, -0xa4, 0x0e, 0x9f, 0xe5, 0x2d, 0x88, 0xb0, 0xf4, 0xc3, 0x44, 0xee, 0xee, -0x46, 0x2a, 0x8a, 0xc7, 0x5c, 0x9f, 0xc1, 0xf2, 0x12, 0x98, 0xa4, 0x87, -0x78, 0x08, 0xe5, 0x0a, 0x54, 0x33, 0xb7, 0x53, 0x20, 0xd4, 0xc3, 0x22, -0xe8, 0xfe, 0x3b, 0xa4, 0x50, 0xec, 0xe6, 0x50, 0x32, 0x8a, 0x1f, 0x9e, -0x8a, 0x80, 0x50, 0x21, 0x36, 0x59, 0x5d, 0xc3, 0xf3, 0x5b, 0xea, 0xb0, -0x09, 0x15, 0x62, 0x28, 0x30, 0x47, 0xc2, 0x2b, 0x6c, 0x9e, 0x6f, 0xff, -0x34, 0x1c, 0x76, 0x94, 0x9c, 0xd1, 0x69, 0xc5, 0x3f, 0x78, 0xeb, 0xe2, -0x93, 0x99, 0xf2, 0x32, 0x53, 0x13, 0x7a, 0xb7, 0xcb, 0xc5, 0x0d, 0x42, -0x04, 0x3b, 0x5e, 0x79, 0x73, 0x84, 0x15, 0xd3, 0xd0, 0xaf, 0xa2, 0x9d, -0x0d, 0x4e, 0x71, 0xc8, 0xfd, 0x92, 0x4b, 0x2e, 0x81, 0x39, 0x10, 0xbb, -0x46, 0xfb, 0x1b, 0x2c, 0x5a, 0x6c, 0x6c, 0xc8, 0x4b, 0x70, 0x73, 0x62, -0x6f, 0x29, 0x6b, 0x42, 0xf6, 0x12, 0x36, 0x2e, 0xfd, 0x42, 0xcf, 0xa6, -0x08, 0x4a, 0x79, 0xab, 0x93, 0xf5, 0x36, 0x48, 0x9e, 0xb1, 0x64, 0x7f, -0x31, 0x39, 0x13, 0x5f, 0x8a, 0xdc, 0x02, 0x0d, 0xcd, 0x66, 0x01, 0x55, -0x12, 0x21, 0x3d, 0x54, 0x9d, 0x42, 0xc3, 0x36, 0xac, 0xa7, 0xcd, 0x84, -0x3e, 0x77, 0xd3, 0xd6, 0xfd, 0x77, 0x54, 0x5b, 0x45, 0xd5, 0x66, 0x67, -0xc1, 0x68, 0x4e, 0xa9, 0x9b, 0x80, 0x50, 0x21, 0x36, 0x59, 0x1a, 0xcc, -0xa8, 0xe9, 0x52, 0x65, 0xc4, 0xa7, 0xb5, 0xf3, 0xe9, 0x64, 0x32, 0xec, -0xa4, 0x00, 0x4c, 0xb0, 0x4c, 0x10, 0xea, 0xee, 0x80, 0xcd, 0x90, 0xe6, -0x4a, 0xf1, 0x28, 0x9f, 0xe6, 0x26, 0x27, 0x93, 0xac, 0x63, 0x78, 0x73, -0x0d, 0x6a, 0xa6, 0xe2, 0xa4, 0x23, 0x25, 0x9f, 0x82, 0x4e, 0xfa, 0xde, -0x46, 0x62, 0x1a, 0x81, 0x5e, 0xe6, 0x5b, 0xa0, 0x5b, 0xab, 0x11, 0xb0, -0xa0, 0xa3, 0x36, 0x50, 0xc8, 0x87, 0x24, 0x6f, 0x0a, 0x46, 0xd1, 0xb7, -0x0a, 0xe5, 0x81, 0x9c, 0x18, 0x12, 0x00, 0x90, 0x97, 0x88, 0xa7, 0x92, -0xe0, 0x11, 0x52, 0x97, 0xb0, 0xf6, 0x62, 0xe9, 0x52, 0x17, 0x7a, 0xf6, -0x73, 0xc1, 0x12, 0x75, 0xc3, 0x2e, 0xd5, 0x46, 0xd4, 0x85, 0x36, 0x8d, -0xa7, 0x76, 0x56, 0x46, 0xf5, 0x82, 0x20, 0xec, 0xc5, 0xce, 0xf9, 0x9c, -0x43, 0x0d, 0x14, 0x77, 0x67, 0x32, 0x67, 0x73, 0x57, 0x0f, 0x9b, 0xe6, -0x3b, 0x77, 0x7c, 0x49, 0x7f, 0x53, 0x2c, 0xac, 0x24, 0x0c, 0xab, 0x5e, -0x22, 0xee, 0xfa, 0x3d, 0x78, 0xef, 0x16, 0x09, 0x24, 0x30, 0xad, 0xa8, -0xd1, 0x89, 0xb1, 0xb3, 0x69, 0x7d, 0xb3, 0xb9, 0x4c, 0xfa, 0x69, 0x8c, -0xac, 0x76, 0x8b, 0x20, 0xf2, 0x0a, 0x0c, 0x11, 0x44, 0x71, 0x9a, 0x2d, -0x3c, 0xf6, 0x0b, 0x03, 0xeb, 0x93, 0x44, 0xa7, 0xc4, 0xcb, 0x81, 0xe1, -0x65, 0xfb, 0xa2, 0x4e, 0x7c, 0xf6, 0x10, 0xc7, 0x41, 0xbe, 0xa1, 0x65, -0x12, 0xb6, 0x5e, 0xd9, 0x16, 0x16, 0x81, 0x1a, 0x0d, 0x18, 0xe0, 0x0c, -0x20, 0x81, 0x60, 0x5b, 0x42, 0xd0, 0x61, 0x0e, 0x80, 0x81, 0xa0, 0x4e, -0xf8, 0x03, 0x78, 0xe0, 0x2d, 0x52, 0x9d, 0x85, 0x0e, 0x1e, 0xfa, 0x3b, -0xf6, 0x5c, 0x7d, 0x8b, 0x2d, 0x59, 0x9d, 0xac, 0xf7, 0xec, 0x03, 0x2a, -0x96, 0xbd, 0x26, 0xfc, 0x78, 0x59, 0x04, 0x04, 0xa8, 0x20, 0x14, 0x0f, -0x46, 0x36, 0x7d, 0x64, 0xdc, 0xbe, 0x1e, 0xbc, 0x99, 0xaa, 0xa6, 0x93, -0xfe, 0x98, 0xc4, 0xcb, 0xf9, 0x31, 0x37, 0xb9, 0x84, 0x3e, 0x18, 0x6a, -0x28, 0x4c, 0x82, 0x2c, 0xaf, 0x65, 0x5d, 0x7e, 0x33, 0x36, 0x3c, 0xa1, -0x42, 0x72, 0x8c, 0x48, 0x56, 0xa2, 0x41, 0x9b, 0x1a, 0xbd, 0xfc, 0x02, -0xd1, 0x30, 0xd4, 0x48, 0xc4, 0xb8, 0x1c, 0x10, 0x31, 0xfa, 0xa2, 0xdf, -0x2b, 0xa2, 0x2e, 0x24, 0x54, 0xc9, 0xcc, 0x97, 0xe5, 0x16, 0x5e, 0x73, -0x00, 0x03, 0xb9, 0x3b, 0x93, 0x87, 0x17, 0x99, 0x23, 0x82, 0x09, 0xf9, -0xd6, 0xdf, 0x3a, 0x1d, 0x0d, 0x89, 0x13, 0x21, 0xb7, 0x11, 0x63, 0x2e, -0xef, 0x0c, 0x30, 0x48, 0x9d, 0x66, 0x4c, 0x87, 0x68, 0x84, 0xd2, 0x29, -0x9d, 0x8d, 0x09, 0x1b, 0x60, 0xaf, 0x5e, 0xa5, 0x65, 0x2a, 0xf1, 0x69, -0x78, 0x56, 0x6d, 0xf5, 0x24, 0x1b, 0x14, 0x15, 0x75, 0x47, 0xfb, 0x75, -0x37, 0xbc, 0x3e, 0xbb, 0x2a, 0x68, 0x02, 0x07, 0xb6, 0x19, 0x87, 0x4f, -0xbc, 0x96, 0x87, 0x5a, 0x38, 0xaa, 0xe2, 0xe0, 0x05, 0x91, 0xac, 0xb4, -0x91, 0x80, 0xdf, 0x21, 0x14, 0xe4, 0xc3, 0xa9, 0x07, 0xc7, 0x4e, 0x28, -0xf5, 0x33, 0x31, 0x40, 0x51, 0x9e, 0x86, 0x55, 0xf5, 0xd0, 0x18, 0xc8, -0x0b, 0x2a, 0x10, 0x9f, 0x70, 0x8c, 0xeb, 0xed, 0xe1, 0xec, 0x17, 0xd3, -0xf5, 0xba, 0xac, 0xfa, 0x09, 0xc8, 0xf7, 0xfa, 0x8b, 0x94, 0x87, 0x09, -0x50, 0xa6, 0x44, 0xd2, 0x25, 0x62, 0xc2, 0x43, 0xab, 0x2d, 0xec, 0x27, -0x3e, 0x4d, 0xd2, 0xa7, 0x93, 0x8f, 0x5d, 0xd7, 0x83, 0x42, 0xe8, 0xe6, -0x4b, 0x74, 0x4d, 0x1d, 0xb9, 0xf4, 0xa6, 0x9b, 0x6e, 0x92, 0x6c, 0x49, -0xa2, 0x38, 0xc1, 0x03, 0x01, 0x54, 0x48, 0xbd, 0xd8, 0x0d, 0x31, 0xfa, -0x09, 0x1e, 0xe4, 0x40, 0xa6, 0xd2, 0xb1, 0x84, 0xad, 0xc6, 0xc3, 0x64, -0x88, 0x95, 0xd0, 0x9f, 0x5a, 0xef, 0x79, 0xe7, 0x47, 0xe0, 0x89, 0xbb, -0x1b, 0x29, 0x6f, 0xa3, 0xfd, 0x64, 0xcc, 0x5b, 0xaf, 0x76, 0xbb, 0xe0, -0x7a, 0xc5, 0x41, 0x9e, 0x54, 0x2f, 0x6a, 0x78, 0x9f, 0xbd, 0x3e, 0x35, -0xe6, 0x79, 0xea, 0xfe, 0x3b, 0xa9, 0x9f, 0x89, 0xf8, 0x24, 0xf5, 0x33, -0xf5, 0x7e, 0x5f, 0xbe, 0xf1, 0x0a, 0xc9, 0x31, 0x62, 0xac, 0x52, 0x5e, -0x9c, 0x96, 0xe8, 0x77, 0x4d, 0x62, 0x0f, 0x6f, 0x91, 0xed, 0x93, 0x6a, -0xc7, 0xfa, 0x5b, 0x97, 0xcf, 0xb8, 0x14, 0xfc, 0x8b, 0x7b, 0xc3, 0x2f, -0x46, 0x91, 0x04, 0xbd, 0xb2, 0xe5, 0x45, 0xfe, 0x13, 0x17, 0xa7, 0x2f, -0xb7, 0xd7, 0x1c, 0x40, 0x9f, 0x60, 0x60, 0x38, 0x19, 0x65, 0x97, 0xce, -0x12, 0xe6, 0x11, 0xf4, 0x27, 0xc5, 0xf6, 0x4a, 0x71, 0x41, 0xec, 0x4b, -0x12, 0x63, 0xab, 0xf8, 0x83, 0x24, 0x88, 0x49, 0x91, 0x22, 0x3e, 0x20, -0x41, 0xe9, 0x6e, 0x10, 0xaf, 0x05, 0x3f, 0x89, 0x95, 0x50, 0x8b, 0xa9, -0xd7, 0x57, 0xc6, 0x0c, 0x10, 0x48, 0xca, 0xa1, 0xfe, 0x2c, 0xaa, 0xd2, -0x21, 0xf0, 0xb3, 0x59, 0xb3, 0x99, 0xa4, 0x0b, 0x0f, 0x60, 0x56, 0x8a, -0xbb, 0x30, 0x8a, 0xe6, 0xcd, 0x4b, 0xbb, 0xd7, 0xf9, 0x57, 0x1c, 0x1e, -0x2e, 0xad, 0xfb, 0x82, 0xa4, 0x7e, 0xa6, 0x54, 0x28, 0xb6, 0xac, 0x60, -0x60, 0xd7, 0xb7, 0xcd, 0x5b, 0x01, 0x52, 0x93, 0x27, 0x4f, 0x56, 0x4b, -0x0c, 0xa9, 0x05, 0x42, 0x28, 0x96, 0xd7, 0xb2, 0x7b, 0x79, 0x68, 0x8a, -0x47, 0x1d, 0x10, 0x9b, 0x0e, 0x4e, 0xb8, 0x0d, 0x42, 0x3c, 0x49, 0xb0, -0x06, 0x2b, 0x93, 0x9a, 0x3c, 0x6d, 0x8b, 0xc9, 0x1d, 0x25, 0x15, 0x4b, -0x7d, 0x63, 0x33, 0x39, 0xc6, 0x8f, 0x47, 0x46, 0x71, 0xb4, 0x2c, 0xf2, -0x80, 0xa3, 0x40, 0x07, 0x3f, 0xaf, 0x8a, 0x60, 0x35, 0x6c, 0x85, 0x04, -0xd8, 0xa2, 0x4c, 0x53, 0x85, 0x05, 0xfe, 0x20, 0x3d, 0x63, 0xc5, 0xc7, -0xc4, 0xc1, 0x2b, 0xa0, 0x36, 0x82, 0xba, 0x8a, 0x90, 0x2a, 0xaf, 0xc6, -0x4a, 0x5a, 0x4c, 0xa9, 0xf3, 0xf5, 0x42, 0xfc, 0x5e, 0xcb, 0xa8, 0xd9, -0x7f, 0x52, 0x65, 0xf1, 0x1c, 0x6e, 0xbb, 0x14, 0x1a, 0x2f, 0xda, 0x83, -0xd4, 0x57, 0xbc, 0xa8, 0x93, 0x9a, 0x33, 0x6e, 0x4a, 0x5d, 0x5c, 0x24, -0x9b, 0xd2, 0xfe, 0xc4, 0xd4, 0x99, 0x06, 0xff, 0x1d, 0x6a, 0x1b, 0x02, -0x2a, 0x9e, 0x0a, 0x34, 0x34, 0x73, 0x56, 0xaa, 0x21, 0x1d, 0xcf, 0x93, -0x04, 0x25, 0x99, 0x77, 0x69, 0x69, 0x17, 0xd3, 0x0e, 0x99, 0x74, 0x10, -0x0b, 0xf5, 0x31, 0x7b, 0x1a, 0x9c, 0xe9, 0xdd, 0x4f, 0x64, 0x51, 0xa8, -0x4a, 0x42, 0xc3, 0x21, 0x9d, 0x74, 0x70, 0x8f, 0xcc, 0x1f, 0x55, 0x80, -0x63, 0xc1, 0x10, 0x60, 0x87, 0x37, 0x83, 0x48, 0x32, 0x24, 0xba, 0x6b, -0xa6, 0xb5, 0x72, 0xd7, 0x99, 0x45, 0xc6, 0xc1, 0x09, 0xc0, 0xae, 0x8c, -0x9d, 0xc7, 0x50, 0xb3, 0xd9, 0xef, 0x00, 0x72, 0xaf, 0x2f, 0x89, 0x78, -0x10, 0xcb, 0x70, 0x15, 0xa6, 0xaa, 0x1e, 0x8d, 0x08, 0x3f, 0xac, 0x22, -0xc7, 0x8f, 0x1f, 0xa7, 0xad, 0x3d, 0x71, 0x53, 0xe0, 0xc1, 0x50, 0xc1, -0x8e, 0xdd, 0x0b, 0x54, 0xd0, 0xac, 0x43, 0x5f, 0x0d, 0xcb, 0xba, 0x83, -0xfa, 0x7c, 0xc0, 0x8c, 0x99, 0xeb, 0xca, 0x37, 0xec, 0xc7, 0x5e, 0x67, -0x6e, 0xe7, 0x04, 0x55, 0xad, 0x90, 0x31, 0xe9, 0xf4, 0x65, 0xe7, 0x12, -0xce, 0xf1, 0x6c, 0xba, 0x24, 0x5a, 0x42, 0x4d, 0x9b, 0x32, 0xd5, 0x04, -0x20, 0xab, 0x5f, 0xed, 0x17, 0x36, 0xd7, 0x67, 0xa2, 0xe7, 0xf1, 0xaa, -0xfa, 0x99, 0x92, 0x53, 0x61, 0xee, 0x20, 0x67, 0x50, 0x33, 0x3c, 0xa1, -0x82, 0x8b, 0x69, 0xb8, 0xa8, 0x26, 0x47, 0xd2, 0xb3, 0xd7, 0x6c, 0x52, -0x9b, 0x0b, 0x84, 0xe0, 0x4b, 0x49, 0x32, 0x73, 0x15, 0x1c, 0x66, 0x8f, -0xf7, 0xea, 0xaa, 0xab, 0xae, 0x62, 0x5f, 0xb7, 0x7c, 0xb5, 0x78, 0xa0, -0x08, 0xe6, 0xe1, 0x87, 0xb2, 0xb3, 0x76, 0x7a, 0xf3, 0x02, 0x69, 0x22, -0x26, 0xe8, 0x3c, 0x8b, 0x9d, 0x07, 0xa5, 0x16, 0xbf, 0x98, 0x1a, 0x96, -0x14, 0x28, 0x9b, 0xb3, 0xf5, 0xe3, 0x34, 0x74, 0x24, 0xca, 0x10, 0x1a, -0x72, 0xa9, 0xd9, 0x29, 0xd1, 0xbf, 0xd5, 0x04, 0x86, 0x0f, 0x1f, 0x4e, -0x0b, 0x66, 0x61, 0xeb, 0x68, 0x11, 0xf0, 0x04, 0xb3, 0x05, 0x9d, 0x6f, -0x08, 0xf0, 0x54, 0x97, 0x20, 0x13, 0x12, 0x6d, 0x4a, 0x90, 0x85, 0x87, -0x29, 0x61, 0x6d, 0x53, 0xe7, 0xeb, 0xf5, 0x95, 0xc9, 0xe3, 0xf3, 0xe3, -0x41, 0x2c, 0x2f, 0x51, 0xdd, 0xbd, 0xe0, 0x87, 0x36, 0x1d, 0x82, 0x94, -0xbc, 0xc0, 0xe6, 0xc1, 0x66, 0x61, 0x6e, 0x36, 0xcb, 0x2d, 0x0c, 0x25, -0x91, 0xe0, 0x8d, 0xe4, 0x06, 0xa9, 0xa7, 0x80, 0x4e, 0x6c, 0x7a, 0xcd, -0xf5, 0xd9, 0xaa, 0xca, 0x54, 0x8c, 0x43, 0xc1, 0x5f, 0xfc, 0x77, 0x58, -0x32, 0xdc, 0xe5, 0x54, 0xe8, 0x65, 0xfa, 0xbd, 0xc4, 0xcc, 0xf2, 0x9e, -0xae, 0xbc, 0xf2, 0x4a, 0x35, 0x39, 0xaf, 0xf5, 0x69, 0xbc, 0x2e, 0x3a, -0x66, 0x19, 0xda, 0x01, 0x12, 0x9c, 0x63, 0x19, 0x23, 0xdd, 0xa5, 0x4b, -0x17, 0xc8, 0x17, 0x37, 0x16, 0xa5, 0x62, 0x20, 0x5f, 0x5a, 0xa3, 0xbb, -0xdb, 0xf3, 0xec, 0x7c, 0x8f, 0xe4, 0x40, 0x2d, 0x51, 0xe6, 0x0f, 0x7f, -0xc0, 0x2f, 0x46, 0x0a, 0x21, 0x76, 0x9e, 0xd5, 0xab, 0x57, 0xab, 0x6b, -0xf1, 0xef, 0x78, 0x9d, 0xb0, 0x7f, 0x27, 0xa0, 0x0b, 0x29, 0xc4, 0x62, -0xf3, 0x81, 0xc1, 0xca, 0x4b, 0xa5, 0xdb, 0x98, 0x3e, 0x73, 0x62, 0x37, -0xb0, 0x8a, 0x48, 0x8a, 0x92, 0x34, 0x4d, 0x36, 0xa8, 0x7d, 0x92, 0xe9, -0x65, 0x48, 0x09, 0x66, 0x04, 0xb0, 0x81, 0xb1, 0xae, 0x64, 0x71, 0xa1, -0xa5, 0x28, 0x45, 0xbc, 0xa0, 0xe5, 0xfa, 0x90, 0x66, 0xe0, 0xdf, 0xe3, -0x18, 0xae, 0x82, 0xac, 0x55, 0xbd, 0x7b, 0xfb, 0x69, 0x67, 0xaa, 0xbc, -0x0b, 0xaf, 0x1e, 0xa1, 0x8b, 0xd4, 0x42, 0x9d, 0xf3, 0xb3, 0x44, 0x6a, -0xce, 0x6c, 0x64, 0xd0, 0x00, 0xbb, 0x98, 0x9e, 0x59, 0xe5, 0x87, 0x7a, -0x49, 0xa7, 0x70, 0x35, 0x26, 0xfd, 0x12, 0xa8, 0x58, 0x47, 0xde, 0x0b, -0x8c, 0x02, 0x00, 0x98, 0x77, 0x1f, 0x5b, 0xa8, 0x50, 0x99, 0x77, 0x7a, -0x29, 0x48, 0xee, 0xc1, 0x9d, 0x28, 0x61, 0x8b, 0x08, 0x48, 0x2e, 0x35, -0x39, 0x31, 0x5e, 0xf7, 0x09, 0x56, 0x90, 0xb4, 0x1e, 0x8a, 0xb2, 0x10, -0x09, 0xc7, 0x56, 0xe1, 0x2e, 0x26, 0x14, 0x0d, 0x98, 0xc6, 0xbe, 0xd0, -0x2e, 0x01, 0x3f, 0xd4, 0x8c, 0x81, 0x7c, 0x91, 0xb6, 0x8b, 0x8b, 0x8b, -0xe9, 0x84, 0xad, 0xd7, 0xcd, 0xf6, 0x0a, 0x06, 0x62, 0xe9, 0xf2, 0xf3, -0xf3, 0xe9, 0x43, 0x37, 0x67, 0xce, 0x1c, 0x46, 0x23, 0x8e, 0x15, 0x30, -0x48, 0x04, 0x11, 0x3c, 0x91, 0x00, 0x18, 0xdc, 0x02, 0x6a, 0x90, 0xa0, -0x7b, 0x09, 0xa1, 0x1e, 0x4c, 0x11, 0x78, 0x03, 0xf4, 0x6a, 0xf8, 0x72, -0x3b, 0x34, 0x6c, 0xb6, 0x49, 0xe4, 0x40, 0x75, 0x77, 0x72, 0xea, 0x89, -0xb1, 0xc5, 0x35, 0x41, 0xd1, 0x03, 0xd2, 0xbb, 0x2d, 0xeb, 0xaf, 0x88, -0x65, 0x1c, 0x7b, 0x94, 0xbb, 0x16, 0xb5, 0x8c, 0x46, 0xa4, 0x10, 0x19, -0x3f, 0xa8, 0xf5, 0xc2, 0xc6, 0x89, 0x8a, 0xb7, 0x5c, 0x25, 0xd4, 0x33, -0xaf, 0x2f, 0xcb, 0x26, 0x66, 0x70, 0x56, 0xca, 0x2d, 0x08, 0x0a, 0xb4, -0xe9, 0xfa, 0x60, 0x53, 0xd0, 0x7b, 0x34, 0xca, 0xe5, 0x28, 0x48, 0x78, -0xe8, 0xb0, 0x2f, 0xb1, 0x68, 0x8a, 0xf9, 0xf0, 0x7d, 0xeb, 0xd6, 0xad, -0xb1, 0xcb, 0xc1, 0xd8, 0xf5, 0x96, 0x3d, 0xee, 0xb2, 0xf6, 0x98, 0x33, -0x73, 0x30, 0x3f, 0x1a, 0x7a, 0x9d, 0xbe, 0x0e, 0x04, 0x0a, 0x60, 0xf8, -0xa6, 0x61, 0xa7, 0xf0, 0x64, 0xb3, 0xd1, 0xc9, 0x16, 0x2a, 0x24, 0xca, -0x83, 0x21, 0x74, 0x03, 0x94, 0x79, 0xb9, 0xa1, 0x72, 0x9c, 0x2c, 0x14, -0xff, 0x21, 0x5c, 0x99, 0x0d, 0x80, 0xee, 0x72, 0xfc, 0xf0, 0x99, 0x80, -0x08, 0x78, 0xab, 0xa1, 0x32, 0xac, 0xe5, 0xdb, 0xa2, 0x8b, 0x76, 0xf7, -0xee, 0xdd, 0x11, 0x99, 0xd8, 0xc5, 0xa1, 0x60, 0x32, 0x42, 0xb0, 0x51, -0xe2, 0x34, 0x64, 0x07, 0x85, 0x8e, 0xc1, 0x06, 0xab, 0x03, 0x36, 0xa0, -0x75, 0x5d, 0x4b, 0x56, 0x43, 0x25, 0x24, 0x24, 0x60, 0x63, 0x29, 0x28, -0x28, 0x40, 0x39, 0x9b, 0x32, 0x65, 0x0a, 0x61, 0x29, 0x0c, 0x85, 0x0a, -0x4b, 0xc4, 0x04, 0x11, 0xd7, 0x00, 0x8c, 0xcd, 0x18, 0xe7, 0x17, 0x56, -0x6a, 0x64, 0x77, 0x3c, 0x62, 0x18, 0x7c, 0x4a, 0xe9, 0xd2, 0xd5, 0x25, -0xac, 0x1b, 0x3f, 0x6c, 0xba, 0xec, 0x79, 0x90, 0x32, 0xc1, 0x57, 0xfc, -0x50, 0xd4, 0x08, 0x0c, 0x63, 0x54, 0x45, 0xa1, 0xe4, 0x07, 0xce, 0xc6, -0x43, 0xe1, 0xef, 0xe3, 0xb9, 0xf8, 0x01, 0x4b, 0x44, 0x65, 0xf3, 0x23, -0x82, 0x1c, 0x52, 0x25, 0x31, 0x9e, 0x7a, 0x98, 0xa7, 0x57, 0xe8, 0xca, -0x09, 0xec, 0x02, 0x44, 0x37, 0xf1, 0x98, 0xa4, 0x28, 0x61, 0x7a, 0x42, -0xc3, 0x36, 0xd7, 0x5f, 0x91, 0xb7, 0xc0, 0x5f, 0xd9, 0xe4, 0xf4, 0x90, -0x0d, 0xcb, 0x5b, 0x20, 0x52, 0xb2, 0x61, 0xe9, 0x41, 0xb2, 0xba, 0x9e, -0x4d, 0xe8, 0x9e, 0xbc, 0x1d, 0x7e, 0x70, 0xc3, 0xcb, 0xa3, 0xe9, 0x3f, -0x3c, 0x2f, 0x4f, 0xad, 0xff, 0xa0, 0x02, 0xc9, 0x82, 0xa8, 0x1f, 0xdc, -0xd2, 0x2c, 0x54, 0xb5, 0xb4, 0x8b, 0xe9, 0xe3, 0xdc, 0x51, 0x8d, 0x89, -0xc4, 0x28, 0xeb, 0x63, 0xfe, 0xc1, 0x80, 0xeb, 0xce, 0xfe, 0x21, 0x0f, -0x82, 0x65, 0x0c, 0x69, 0x56, 0x3d, 0x14, 0x2d, 0xd2, 0x79, 0x4d, 0x28, -0xc7, 0x7a, 0x1d, 0x2d, 0xd2, 0x59, 0xa9, 0x65, 0x4c, 0xae, 0x32, 0xea, -0x07, 0xaf, 0x00, 0x8c, 0x71, 0x77, 0x83, 0xc4, 0x81, 0xa0, 0xc5, 0x97, -0x3c, 0x69, 0xa7, 0x66, 0x59, 0x7a, 0x48, 0x8e, 0xd7, 0xfa, 0x99, 0x80, -0xc4, 0x37, 0x54, 0xf0, 0x4a, 0xf4, 0x68, 0x7e, 0x9b, 0xaf, 0xdc, 0xce, -0x69, 0x68, 0xc0, 0xe0, 0x01, 0x5e, 0x04, 0x1e, 0x80, 0x32, 0x3b, 0x3a, -0x41, 0x3e, 0xe0, 0x01, 0x87, 0x2e, 0x89, 0x3b, 0xc4, 0x38, 0x20, 0x05, -0x52, 0xb4, 0x87, 0x2f, 0xb7, 0x6f, 0xdf, 0x0e, 0x36, 0xae, 0xbf, 0xfe, -0x7a, 0x64, 0x21, 0x42, 0x59, 0xe0, 0x86, 0x1c, 0x7c, 0xe0, 0x5a, 0x04, -0x2d, 0x0e, 0x62, 0x25, 0x60, 0xb8, 0x20, 0x81, 0x3d, 0x06, 0x68, 0x71, -0x3e, 0x70, 0x22, 0xe2, 0x05, 0x91, 0x9d, 0xa2, 0x4c, 0x98, 0xa8, 0x71, -0xdc, 0xe0, 0x17, 0x63, 0x4b, 0xd6, 0xdb, 0xd0, 0xd8, 0x99, 0x64, 0x39, -0x9d, 0x13, 0x1b, 0x1b, 0x0b, 0x68, 0x89, 0x3e, 0x40, 0x67, 0xc0, 0x7c, -0x8e, 0xb7, 0x4e, 0xaf, 0x34, 0x21, 0x4a, 0x36, 0x90, 0x40, 0xaf, 0x43, -0xd5, 0x86, 0xa5, 0x8c, 0x1a, 0x35, 0xca, 0x8f, 0xf6, 0xe1, 0xe5, 0x34, -0xf9, 0xf2, 0x1e, 0x16, 0x7a, 0xc0, 0x81, 0x03, 0x7b, 0xd7, 0x3b, 0x6b, -0x06, 0x72, 0x53, 0xc2, 0xfb, 0x55, 0xfd, 0x4c, 0x4b, 0x49, 0xd5, 0x07, -0x54, 0xf0, 0x9e, 0xe0, 0x15, 0x74, 0xe7, 0x86, 0x3a, 0xd9, 0xd8, 0x2c, -0x9b, 0x94, 0xfa, 0x31, 0x57, 0xa4, 0x46, 0x4c, 0xd1, 0x74, 0xff, 0x5e, -0xb6, 0x6c, 0x19, 0xa4, 0x0c, 0x1d, 0xb3, 0x31, 0x20, 0x32, 0xd1, 0xa7, -0x9d, 0x12, 0x3d, 0xe0, 0x81, 0x8c, 0x67, 0xcc, 0xf3, 0x68, 0x45, 0xc8, -0xd3, 0x6c, 0xf0, 0xc4, 0x3e, 0xc0, 0xfb, 0x58, 0x23, 0x42, 0x47, 0x39, -0x13, 0x62, 0x82, 0xee, 0x01, 0x89, 0x1c, 0x7c, 0xbe, 0xe5, 0x96, 0x5b, -0x64, 0x6b, 0x81, 0x7a, 0x00, 0x03, 0x28, 0x82, 0xbf, 0x01, 0x27, 0xcc, -0x9d, 0x08, 0x27, 0xec, 0xc4, 0xef, 0xbf, 0xff, 0x3e, 0xbf, 0x72, 0xf2, -0xb4, 0x69, 0xd3, 0xf0, 0xf2, 0xea, 0x1d, 0xd7, 0xfd, 0x98, 0xbf, 0x4f, -0x97, 0x50, 0xac, 0x5f, 0x4f, 0x25, 0x55, 0xd7, 0xa2, 0xfc, 0x61, 0x7d, -0x62, 0x0b, 0xc0, 0x4d, 0xc1, 0xbe, 0x83, 0x41, 0x56, 0xb7, 0x3e, 0x01, -0x09, 0x62, 0x01, 0x89, 0x89, 0xd2, 0x3b, 0x86, 0x99, 0xef, 0xab, 0x3b, -0x5e, 0x7c, 0x9a, 0x55, 0xe5, 0x9e, 0x8c, 0x34, 0x48, 0x46, 0xa7, 0xee, -0x58, 0xd4, 0xe7, 0x43, 0x97, 0x0f, 0x5e, 0x34, 0x6f, 0x1c, 0x33, 0x0f, -0x02, 0x70, 0x50, 0xa6, 0x8a, 0xf8, 0xe0, 0xb9, 0x7e, 0xa6, 0x5d, 0x54, -0xa8, 0x58, 0x0f, 0x7c, 0xe3, 0xa4, 0xf3, 0x21, 0xcc, 0xe0, 0x5b, 0x25, -0xeb, 0x88, 0x12, 0x60, 0xe8, 0xc4, 0xc8, 0x33, 0x6c, 0x5d, 0x44, 0x7a, -0xda, 0x99, 0x34, 0x30, 0xc0, 0x83, 0x0b, 0x39, 0x52, 0x9a, 0x16, 0x77, -0x01, 0xfa, 0x34, 0x12, 0x0e, 0x1b, 0x3f, 0x22, 0x3e, 0xfc, 0x01, 0x91, -0x89, 0xfc, 0x66, 0xf0, 0x80, 0x90, 0x40, 0xe7, 0x38, 0x3c, 0x2c, 0xb8, -0xd2, 0x41, 0x23, 0x91, 0x0e, 0xc8, 0xd3, 0xd8, 0xd1, 0xd8, 0xe6, 0xd9, -0xec, 0xf1, 0xfb, 0x42, 0x43, 0xc8, 0x42, 0xec, 0xaf, 0xe0, 0x47, 0x56, -0x8d, 0x83, 0x89, 0x91, 0x14, 0x0a, 0xd1, 0xf3, 0x57, 0x60, 0x40, 0x97, -0x2d, 0x76, 0x5f, 0xb0, 0x84, 0x65, 0x1a, 0x15, 0x05, 0x4f, 0x0b, 0xe2, -0xbb, 0x9d, 0x49, 0x56, 0xca, 0x39, 0xa3, 0x47, 0x8f, 0x06, 0xb1, 0xac, -0x30, 0x4e, 0x25, 0x50, 0x21, 0x0e, 0x0a, 0xac, 0x52, 0x86, 0xbe, 0xa6, -0x1e, 0xe6, 0x86, 0xad, 0xa6, 0x4f, 0x9f, 0x3e, 0x94, 0xb5, 0x8d, 0x8b, -0xb3, 0xa8, 0x69, 0x5d, 0x29, 0x0f, 0xe5, 0xe1, 0xa6, 0x50, 0x02, 0xd1, -0x8d, 0x50, 0x11, 0x1b, 0x22, 0xff, 0xf3, 0xf8, 0x2d, 0x5a, 0xb4, 0x40, -0x06, 0x56, 0x97, 0x20, 0x25, 0xb2, 0x79, 0x41, 0x12, 0xbc, 0x3e, 0x0e, -0x64, 0x69, 0x82, 0x88, 0x03, 0x79, 0x0a, 0x76, 0x40, 0xe4, 0x6a, 0xb6, -0x4b, 0x88, 0x04, 0xc2, 0xf8, 0xe5, 0x2f, 0x7f, 0xe9, 0x2e, 0x2b, 0xd5, -0x96, 0x04, 0x25, 0x4c, 0x9c, 0x21, 0x20, 0x50, 0xde, 0x1c, 0x34, 0xc7, -0x1e, 0xcc, 0xae, 0xcc, 0x06, 0x86, 0x7d, 0x00, 0x49, 0x06, 0xe2, 0xe6, -0x40, 0x8c, 0x61, 0xde, 0x40, 0x85, 0x0d, 0x80, 0x07, 0x1e, 0x3c, 0x78, -0x30, 0xff, 0x63, 0x70, 0xc4, 0xd8, 0x0c, 0x45, 0x22, 0xe7, 0x20, 0xe4, -0x80, 0x54, 0x39, 0x99, 0xb5, 0x00, 0x0f, 0x12, 0x19, 0xca, 0x4e, 0x09, -0x7f, 0x80, 0xa6, 0x11, 0xac, 0x21, 0x62, 0x8c, 0x30, 0x30, 0x25, 0x90, -0xa0, 0x7c, 0xba, 0xe2, 0x56, 0xe7, 0x57, 0x26, 0x40, 0x29, 0x2b, 0xd0, -0x82, 0x08, 0x84, 0x62, 0x80, 0x7c, 0x05, 0x48, 0x78, 0x42, 0x76, 0x53, -0x58, 0x01, 0xd7, 0xc2, 0x5e, 0x94, 0x80, 0xc4, 0x38, 0x14, 0x9b, 0xd1, -0x0b, 0x93, 0x05, 0xb2, 0xa6, 0xf6, 0xaf, 0x85, 0xf5, 0xe9, 0x41, 0x31, -0xf6, 0x2f, 0x24, 0x0f, 0x9b, 0xe8, 0x03, 0x2a, 0x4d, 0xf0, 0xbc, 0x1c, -0xbc, 0x3f, 0x0f, 0xd7, 0xa2, 0xbd, 0x10, 0xc3, 0xaf, 0xea, 0x06, 0x70, -0x26, 0x92, 0x15, 0x46, 0x36, 0x56, 0x98, 0x75, 0x36, 0x68, 0xe4, 0xd8, -0x85, 0x2d, 0xcb, 0xbf, 0x5b, 0x8e, 0x8f, 0x06, 0xa8, 0x57, 0x12, 0x21, -0x64, 0x08, 0xa9, 0x83, 0x6d, 0x1b, 0x5e, 0x87, 0xef, 0x88, 0x1d, 0x0d, -0x7a, 0x45, 0x4b, 0x31, 0x5b, 0x3e, 0x50, 0x0b, 0xd9, 0xec, 0x48, 0x42, -0xe4, 0xbd, 0xa3, 0xfe, 0xf1, 0xea, 0x99, 0x06, 0xab, 0xc1, 0xc1, 0xdc, -0xa0, 0x7b, 0x0e, 0x88, 0x01, 0x55, 0x01, 0xea, 0x84, 0x00, 0x10, 0x77, -0x11, 0x10, 0x90, 0x91, 0x38, 0xa0, 0x04, 0x7e, 0x85, 0x24, 0x38, 0x01, -0x29, 0x7d, 0xc6, 0x8c, 0x19, 0x10, 0x06, 0xd2, 0x2f, 0x54, 0x41, 0x2e, -0x34, 0x12, 0x0a, 0x7b, 0x1c, 0xf5, 0x48, 0x91, 0xae, 0xf1, 0x35, 0x31, -0x0d, 0xb6, 0xe3, 0xde, 0xbd, 0x7b, 0x43, 0x63, 0x8c, 0x09, 0x75, 0x71, -0x3e, 0xe4, 0xb7, 0x70, 0xe1, 0x42, 0x79, 0x7c, 0x54, 0x4a, 0x7e, 0xa5, -0xb5, 0x39, 0x37, 0xe2, 0x76, 0xcc, 0x87, 0xff, 0xa1, 0x55, 0x28, 0x4d, -0x95, 0xc1, 0x46, 0x06, 0xb1, 0xd4, 0xdf, 0xec, 0xf2, 0x0a, 0x51, 0xd2, -0x11, 0xa2, 0x78, 0x61, 0x50, 0x24, 0x8c, 0x5e, 0xa6, 0x88, 0x70, 0x02, -0x94, 0x31, 0xfd, 0xa2, 0xc8, 0xb2, 0xd3, 0xf3, 0x0c, 0x48, 0x2f, 0xdc, -0x18, 0xc0, 0x20, 0xcc, 0xe8, 0x07, 0xdf, 0xf0, 0x3d, 0x7f, 0xe5, 0x1c, -0xce, 0x14, 0xf1, 0x06, 0x41, 0x08, 0x5e, 0x26, 0x12, 0x0e, 0x78, 0x10, -0x09, 0x87, 0x14, 0x10, 0xe4, 0x25, 0x09, 0x4d, 0x41, 0xb9, 0x14, 0x87, -0xae, 0x30, 0x2b, 0x71, 0x23, 0xb2, 0x95, 0xc2, 0x40, 0x60, 0x1d, 0x08, -0xd9, 0xf8, 0x80, 0x11, 0xc4, 0x09, 0x8e, 0x00, 0x24, 0x1c, 0xfc, 0x8a, -0xb6, 0xc0, 0xd3, 0xf2, 0x57, 0xbe, 0xd4, 0xc3, 0x04, 0x3c, 0x90, 0x17, -0xfa, 0x22, 0x5e, 0x3f, 0x14, 0x53, 0x02, 0xa1, 0xc9, 0xc5, 0x23, 0x61, -0x12, 0x57, 0x20, 0xd1, 0x1f, 0x44, 0x31, 0x10, 0x2a, 0x22, 0x3f, 0xa4, -0x2e, 0x60, 0x67, 0x23, 0x14, 0x9c, 0x64, 0x2e, 0xac, 0x2e, 0x04, 0xae, -0xa1, 0x50, 0x92, 0xf4, 0x6c, 0x39, 0xac, 0x9e, 0xa5, 0x68, 0x1f, 0x12, -0x72, 0x26, 0xb9, 0x44, 0xc0, 0x9e, 0x67, 0xc7, 0x91, 0xa7, 0xbb, 0x17, -0xd4, 0x38, 0x4c, 0x95, 0x40, 0x23, 0x0a, 0x3c, 0x4b, 0x0e, 0x96, 0xde, -0x5b, 0x1a, 0x42, 0x44, 0xcc, 0x90, 0xc5, 0x87, 0x22, 0xf5, 0x4b, 0x38, -0x13, 0x3b, 0x38, 0xee, 0x64, 0x66, 0x8e, 0x17, 0x0c, 0x83, 0x8f, 0xfa, -0x2b, 0x91, 0x04, 0xc4, 0x23, 0x63, 0x32, 0x46, 0x7f, 0x25, 0xa7, 0x12, -0x77, 0xbb, 0xa1, 0xd6, 0x1b, 0x34, 0xc7, 0x2e, 0x8e, 0x84, 0xa6, 0x87, -0xe8, 0xb9, 0x7b, 0x2e, 0xf6, 0x63, 0x11, 0x86, 0x99, 0x09, 0x3b, 0x3d, -0x2c, 0x5a, 0x91, 0x01, 0xe2, 0xae, 0x1c, 0x22, 0xe5, 0x22, 0x1a, 0x41, -0x03, 0xd0, 0x28, 0x26, 0x10, 0x14, 0x3c, 0xfe, 0x87, 0x96, 0xd8, 0x1c, -0xf9, 0x1e, 0x01, 0x18, 0x3a, 0x11, 0x53, 0x21, 0x72, 0x01, 0xdb, 0x1c, -0x07, 0x9b, 0x20, 0x7b, 0x1f, 0x3b, 0x32, 0x34, 0xc3, 0xe5, 0x0c, 0x22, -0x62, 0x33, 0xb7, 0x90, 0x31, 0x21, 0x30, 0x2a, 0x48, 0xf0, 0x27, 0x75, -0xf0, 0x2b, 0x5f, 0x0a, 0x41, 0x62, 0xc3, 0x14, 0x61, 0x0c, 0x49, 0x04, -0x79, 0x07, 0x52, 0x61, 0x85, 0xdd, 0xe5, 0x6a, 0xdb, 0xe5, 0x15, 0xa0, -0x42, 0x59, 0xa2, 0x90, 0x7d, 0x19, 0x14, 0xa6, 0xc1, 0xc6, 0xcc, 0x3e, -0x8d, 0x49, 0x87, 0x3b, 0xc1, 0xe3, 0xc0, 0x09, 0xf2, 0x0f, 0x54, 0xce, -0xbd, 0xf1, 0xd1, 0x32, 0x7b, 0x1e, 0x95, 0xff, 0x39, 0xf8, 0x86, 0xef, -0x11, 0x78, 0x30, 0x3e, 0x3e, 0xf8, 0xe0, 0x83, 0x3c, 0x1b, 0xaf, 0x9f, -0x2a, 0xd0, 0xec, 0xee, 0xd4, 0x24, 0x96, 0xdd, 0x1d, 0xbc, 0x41, 0x10, -0xe0, 0x01, 0x1d, 0x08, 0xce, 0x60, 0x99, 0x05, 0x22, 0xf0, 0x10, 0xbe, -0x01, 0x3c, 0x60, 0x1d, 0x9c, 0x8f, 0xd5, 0x19, 0x9c, 0x88, 0xac, 0x85, -0x50, 0xce, 0xf7, 0x8c, 0xa0, 0xfb, 0x7d, 0xf4, 0x57, 0x88, 0xeb, 0x00, -0xb2, 0x20, 0xd1, 0x9e, 0xe8, 0x20, 0x48, 0x3f, 0xc0, 0x22, 0x0c, 0x58, -0xd9, 0x01, 0x0c, 0x50, 0xd1, 0x93, 0xee, 0x75, 0x55, 0x18, 0xeb, 0x87, -0x6e, 0xc2, 0xc2, 0xce, 0x43, 0x96, 0x8f, 0xb2, 0xd5, 0xe0, 0x67, 0xc0, -0x4a, 0xa3, 0x77, 0xbe, 0x64, 0x2f, 0x64, 0x6d, 0xe1, 0x93, 0xd0, 0x96, -0x9a, 0x36, 0x79, 0x88, 0x18, 0x94, 0x08, 0x4a, 0x35, 0xcf, 0x56, 0x5a, -0x5a, 0xca, 0x81, 0x7e, 0xc2, 0x76, 0x03, 0x85, 0xb1, 0xe0, 0x3a, 0x32, -0xc9, 0xdf, 0x30, 0x9b, 0x59, 0x99, 0x39, 0x46, 0x4c, 0xcb, 0xf4, 0x46, -0x3d, 0x61, 0xcd, 0xdc, 0xc2, 0xdc, 0x2b, 0xce, 0xc9, 0x1c, 0x84, 0x1c, -0xd9, 0x28, 0xf1, 0x09, 0x20, 0x53, 0x08, 0x01, 0x70, 0x40, 0x12, 0x1c, -0x4c, 0x8f, 0x03, 0x4a, 0x80, 0x5a, 0xd8, 0x0a, 0xe1, 0x03, 0xec, 0x86, -0x90, 0x29, 0x32, 0x33, 0xf4, 0x80, 0x39, 0x84, 0x2d, 0x92, 0x3f, 0x41, -0x27, 0x10, 0x15, 0xdf, 0x20, 0x48, 0xb3, 0x4b, 0x72, 0x40, 0x75, 0xec, -0x74, 0x90, 0x1c, 0x57, 0x41, 0x4e, 0x0c, 0xc8, 0xf8, 0x02, 0x2a, 0x86, -0x15, 0x02, 0x03, 0x45, 0x8c, 0x0c, 0x11, 0xf2, 0x3f, 0x07, 0xbf, 0xf2, -0x25, 0x87, 0x92, 0xae, 0xd9, 0xcd, 0x71, 0x92, 0x22, 0x3b, 0x61, 0xd2, -0xb0, 0x8c, 0x1e, 0x10, 0x06, 0xe0, 0x03, 0x2a, 0xc4, 0x12, 0xc2, 0x36, -0xc6, 0x3b, 0x83, 0x10, 0x09, 0x20, 0x81, 0x8e, 0xd9, 0xda, 0x11, 0x54, -0xd8, 0xe3, 0x99, 0xae, 0x08, 0x33, 0x80, 0x1b, 0x9c, 0x50, 0x07, 0x09, -0xc9, 0x5e, 0x0e, 0x3e, 0xf3, 0x0d, 0xdf, 0xf3, 0x90, 0xb2, 0x04, 0xd8, -0x94, 0x78, 0x5a, 0xb6, 0x79, 0x54, 0x05, 0x84, 0x25, 0xb6, 0x76, 0x80, -0xab, 0xc2, 0x42, 0x61, 0x4a, 0x66, 0xbb, 0xa4, 0x32, 0x2a, 0x2b, 0xbe, -0x01, 0x36, 0x98, 0x0c, 0x0f, 0xa0, 0x0e, 0x89, 0x27, 0xe5, 0x57, 0x1e, -0x98, 0x74, 0x36, 0xf5, 0xfe, 0x10, 0x1e, 0x70, 0xe5, 0x52, 0x28, 0x09, -0x18, 0xf8, 0x54, 0x88, 0xc9, 0xa6, 0xcd, 0x9e, 0xd3, 0xcc, 0xb9, 0x94, -0x72, 0x77, 0x3b, 0x7d, 0x0b, 0xb0, 0x8d, 0xaa, 0xa9, 0xb2, 0xcb, 0xf2, -0xda, 0xe0, 0xc6, 0x3a, 0xf1, 0x79, 0xc8, 0xe2, 0xd7, 0x23, 0xff, 0x3a, -0x77, 0xee, 0x0c, 0xa1, 0xb0, 0x3d, 0xb1, 0x07, 0xeb, 0x97, 0xdb, 0x4c, -0x8b, 0x93, 0x87, 0x25, 0xee, 0x46, 0x37, 0x71, 0x5a, 0x5a, 0xc0, 0xd5, -0xe0, 0x48, 0x71, 0x64, 0x3b, 0x11, 0x4f, 0xc5, 0x46, 0xa3, 0xbe, 0x84, -0x4d, 0x31, 0x01, 0x68, 0x91, 0xbd, 0x0f, 0xca, 0x16, 0x02, 0x50, 0x07, -0xbb, 0xa1, 0x6c, 0x88, 0x50, 0x0b, 0x4f, 0x0a, 0xa1, 0xb3, 0x0b, 0x60, -0x53, 0x81, 0x52, 0x75, 0xa9, 0x18, 0x3a, 0x61, 0x11, 0x20, 0x12, 0x38, -0x3f, 0xf4, 0xc6, 0x66, 0x07, 0x79, 0x80, 0x0d, 0xe8, 0x0d, 0x4a, 0x63, -0x04, 0xf0, 0x83, 0xe9, 0x85, 0xf1, 0x01, 0x89, 0x10, 0x18, 0x52, 0x16, -0xc3, 0x72, 0x40, 0x84, 0x1c, 0x7c, 0x00, 0x72, 0x50, 0x1d, 0x07, 0x60, -0xe0, 0x33, 0x5f, 0xc2, 0x70, 0xb8, 0x97, 0x84, 0x8e, 0xbb, 0xdb, 0x79, -0x7d, 0x43, 0x85, 0x99, 0x2e, 0x21, 0x41, 0xd2, 0x2d, 0xd8, 0xad, 0x21, -0x6b, 0x66, 0x8f, 0xf4, 0xc2, 0xa4, 0x31, 0x16, 0x51, 0xee, 0x85, 0xed, -0x1f, 0x66, 0xc2, 0x24, 0xf8, 0x9f, 0xcf, 0x3c, 0x1e, 0xe0, 0x01, 0x06, -0x3c, 0x3c, 0x92, 0x0f, 0x8f, 0x07, 0xae, 0x44, 0x73, 0x90, 0x28, 0x14, -0x11, 0x93, 0x3c, 0xc4, 0xb8, 0xdb, 0xf9, 0x93, 0x0c, 0xc2, 0x80, 0x7a, -0x4b, 0x0d, 0x36, 0xda, 0xf2, 0xcb, 0x8b, 0x12, 0x4a, 0x22, 0x9d, 0xc0, -0xdc, 0xbd, 0x12, 0x2a, 0xb1, 0x99, 0xbb, 0x8b, 0x6f, 0x47, 0x91, 0x14, -0x7a, 0x27, 0x2f, 0x0f, 0x05, 0x43, 0x7d, 0x43, 0x81, 0x71, 0x0f, 0x48, -0xd6, 0x1b, 0xcf, 0x61, 0xd1, 0x67, 0x77, 0xe4, 0x72, 0x44, 0x6a, 0x75, -0x39, 0x19, 0xe1, 0xf6, 0xb1, 0xcd, 0x99, 0x3a, 0xf3, 0xc9, 0xcc, 0x34, -0x46, 0x2e, 0x13, 0xa2, 0x42, 0x35, 0x78, 0x50, 0xea, 0x4a, 0x33, 0xfc, -0xa1, 0xd1, 0x04, 0x81, 0xb7, 0xba, 0x8b, 0x06, 0x05, 0x92, 0xcd, 0x5b, -0x4c, 0x88, 0x6c, 0x7f, 0x42, 0x00, 0xea, 0x80, 0x12, 0x38, 0xc4, 0x32, -0x2e, 0xa2, 0x32, 0xbc, 0x5d, 0x36, 0x32, 0xe8, 0x01, 0x7a, 0x65, 0xab, -0x65, 0xaf, 0x14, 0x3a, 0x91, 0x8e, 0xa6, 0xc8, 0x39, 0x72, 0x40, 0x6c, -0xec, 0x9e, 0x90, 0x35, 0xa3, 0xb1, 0x11, 0x33, 0x38, 0xb8, 0xe2, 0x03, -0xbf, 0xf2, 0xc6, 0x45, 0x90, 0x86, 0xc6, 0x20, 0x42, 0x39, 0xf8, 0x15, -0x6a, 0xe4, 0x4f, 0xf2, 0x57, 0xfe, 0x04, 0xc3, 0x01, 0x5d, 0xdc, 0xce, -0x1c, 0x63, 0xa6, 0x13, 0x98, 0x0f, 0xbc, 0x42, 0xbf, 0x4c, 0xf8, 0x06, -0x13, 0xd5, 0x85, 0x19, 0x08, 0x1d, 0xc6, 0x84, 0x14, 0xc4, 0xc3, 0x08, -0xd7, 0x53, 0x07, 0xdf, 0x70, 0xf0, 0x57, 0xce, 0x61, 0x21, 0x54, 0xf6, -0x8c, 0x0a, 0x90, 0xb6, 0x43, 0xf4, 0x5e, 0xcf, 0x11, 0x36, 0xc2, 0xfa, -0x62, 0x90, 0xf6, 0x9b, 0x2c, 0x7c, 0xa2, 0x21, 0x39, 0x59, 0x27, 0x4d, -0x7d, 0x93, 0xb6, 0x59, 0x94, 0x44, 0x2f, 0x63, 0x4e, 0xdc, 0x17, 0x52, -0xb5, 0x3e, 0x88, 0x87, 0x24, 0x04, 0x6e, 0x4d, 0x07, 0x67, 0x75, 0x32, -0xec, 0x91, 0x1d, 0x9a, 0x5d, 0x56, 0x8f, 0x8e, 0xf1, 0xa9, 0xda, 0x22, -0xba, 0x87, 0x4e, 0xdf, 0x28, 0xd9, 0x6a, 0x70, 0x04, 0x3f, 0x77, 0x49, -0xed, 0x27, 0xd7, 0x94, 0xe6, 0x3f, 0x61, 0x63, 0x45, 0x76, 0x12, 0xdf, -0x0b, 0x94, 0x0d, 0x89, 0x2b, 0x1a, 0x40, 0xb8, 0xe0, 0x33, 0xff, 0x73, -0x40, 0xfd, 0xfa, 0xb6, 0x28, 0x84, 0x24, 0xd9, 0x54, 0x90, 0x07, 0xc2, -0xb0, 0xc8, 0x0e, 0xaa, 0x9e, 0x9f, 0xf2, 0xd8, 0xf0, 0x72, 0xf9, 0xab, -0x08, 0x54, 0x6c, 0xc4, 0xfc, 0xcf, 0xc1, 0x80, 0x50, 0x17, 0x63, 0x72, -0x40, 0x63, 0xea, 0xe0, 0x57, 0xa8, 0x51, 0x08, 0x52, 0xfe, 0x04, 0xcf, -0x81, 0xe2, 0x11, 0x46, 0x3c, 0x6f, 0xc1, 0x7e, 0xa2, 0x42, 0xe7, 0x1b, -0x42, 0x8b, 0xa2, 0x0d, 0x73, 0x3f, 0x1e, 0xcf, 0xdd, 0xc1, 0x5f, 0x05, -0xf4, 0xca, 0xf2, 0xe8, 0x95, 0xd0, 0x7d, 0x3a, 0x81, 0x99, 0x30, 0x38, -0xcb, 0x7a, 0xe9, 0xa5, 0x97, 0xaa, 0xd7, 0x89, 0x53, 0xd6, 0x0f, 0x42, -0xf7, 0xe9, 0x12, 0xcb, 0x8a, 0xf9, 0xf6, 0x73, 0x97, 0xf5, 0x94, 0x43, -0xb6, 0x79, 0x4c, 0x3d, 0x6a, 0xf2, 0x48, 0x26, 0x9e, 0x43, 0x30, 0xf5, -0x3c, 0x04, 0xf4, 0x19, 0x04, 0x68, 0xf6, 0x69, 0x75, 0x39, 0xa6, 0x24, -0x0f, 0xb5, 0x70, 0xcc, 0xcf, 0xa8, 0x67, 0x90, 0x13, 0x77, 0xa4, 0xbb, -0xc3, 0x31, 0x42, 0xb8, 0x5b, 0x13, 0x1d, 0xd5, 0x48, 0x71, 0x88, 0x4f, -0x18, 0xcd, 0xd9, 0xc8, 0x21, 0x5f, 0x69, 0x33, 0x67, 0x3e, 0x84, 0x12, -0x74, 0x19, 0x41, 0xb7, 0xa9, 0x28, 0x22, 0x31, 0xec, 0xe8, 0xba, 0xf0, -0xcc, 0x98, 0x58, 0x90, 0xf4, 0x91, 0x19, 0x53, 0x11, 0x98, 0x90, 0xa2, -0x3a, 0x38, 0x4d, 0x3e, 0xdb, 0x24, 0xbc, 0x40, 0x51, 0x21, 0x54, 0x2b, -0x8f, 0x04, 0xf7, 0xe0, 0x10, 0x84, 0x58, 0x1e, 0x72, 0x82, 0x32, 0x2b, -0xf9, 0x44, 0xf1, 0x76, 0x4e, 0x66, 0x70, 0x9e, 0x9c, 0x5d, 0x41, 0xdf, -0x2c, 0x2d, 0x2b, 0xcd, 0xf8, 0x44, 0xf4, 0x9e, 0x4f, 0x76, 0xd7, 0xcb, -0xdd, 0x32, 0xc7, 0xc8, 0x72, 0x28, 0x3d, 0x47, 0x0c, 0xdf, 0xa2, 0xce, -0x28, 0xdc, 0x95, 0x0f, 0x53, 0xe3, 0x50, 0xed, 0x41, 0x9d, 0x8f, 0x0e, -0x80, 0xf6, 0x89, 0x17, 0x48, 0x7d, 0x03, 0xde, 0xec, 0x3f, 0x29, 0x72, -0x60, 0xdd, 0x9c, 0x52, 0xab, 0x1a, 0x06, 0x59, 0xdd, 0xe8, 0xe4, 0xae, -0x83, 0x04, 0xf1, 0xce, 0xba, 0x19, 0x17, 0x23, 0x87, 0xc4, 0x38, 0x22, -0x45, 0xb3, 0xd3, 0x4b, 0xeb, 0x20, 0xf3, 0xa1, 0x28, 0xc1, 0xf0, 0x5a, -0x15, 0x6d, 0x28, 0x3a, 0x31, 0x9f, 0xe0, 0x8e, 0xc6, 0x64, 0x4c, 0xcb, -0x43, 0xc0, 0xe0, 0x6e, 0x4c, 0x33, 0x69, 0x05, 0x07, 0x15, 0x76, 0x48, -0xb6, 0x02, 0xce, 0x11, 0xf3, 0x14, 0xbb, 0x94, 0xbe, 0x59, 0x06, 0x25, -0xdb, 0xdb, 0x03, 0x6d, 0x61, 0xd0, 0x34, 0x9b, 0x65, 0x7c, 0xea, 0x64, -0x45, 0x5d, 0x1c, 0x35, 0x82, 0x1e, 0x34, 0x30, 0xa8, 0xb3, 0x77, 0x9a, -0x26, 0xef, 0x59, 0x5d, 0x8b, 0xf3, 0x0e, 0xcb, 0xa6, 0x6e, 0x66, 0xf0, -0xa9, 0x91, 0x85, 0xa1, 0x60, 0x14, 0x1e, 0x06, 0x35, 0x32, 0x55, 0x4b, -0xdc, 0xad, 0x80, 0xce, 0x5e, 0x30, 0x25, 0x23, 0xfe, 0x89, 0x87, 0xc1, -0x5d, 0x8f, 0xb9, 0x0a, 0x20, 0x83, 0xc0, 0x6f, 0x11, 0x6e, 0xa8, 0x60, -0x73, 0xd2, 0x9d, 0x5f, 0x3e, 0x35, 0x9a, 0xb1, 0xbf, 0xad, 0xaa, 0x33, -0x51, 0x34, 0xf5, 0x50, 0x36, 0x45, 0x46, 0x38, 0x37, 0xec, 0x8f, 0x66, -0x59, 0x22, 0x0d, 0x0b, 0xb2, 0x9d, 0x92, 0x7e, 0xc4, 0x9f, 0xea, 0x98, -0xc4, 0x3d, 0xaa, 0x7e, 0x25, 0xc2, 0xdc, 0x7e, 0xe3, 0x18, 0xc6, 0xd1, -0x63, 0xce, 0x89, 0xc2, 0xd0, 0x05, 0x39, 0x0f, 0x59, 0x03, 0xaa, 0xc3, -0x37, 0xf7, 0xc5, 0x85, 0x27, 0x85, 0x33, 0xd0, 0xb3, 0xd1, 0x95, 0xdd, -0xf9, 0xc8, 0x02, 0xa7, 0xda, 0xf2, 0x1e, 0x21, 0xac, 0x50, 0x21, 0x6e, -0x3e, 0xdc, 0x99, 0x8a, 0x32, 0xdc, 0xf5, 0xd2, 0xb6, 0x4f, 0xb2, 0x9e, -0xcf, 0xc4, 0xed, 0x65, 0x66, 0x14, 0x64, 0x84, 0xfa, 0x34, 0xbe, 0x9e, -0x41, 0xaa, 0x46, 0x73, 0xd7, 0xf8, 0xc7, 0x3c, 0x32, 0xc9, 0x89, 0xea, -0x2a, 0x3d, 0x93, 0xd3, 0xa7, 0xc6, 0x31, 0xe7, 0xb6, 0xf6, 0xd7, 0x1f, -0x04, 0x41, 0x4e, 0x4f, 0xba, 0xa4, 0x66, 0x8c, 0xe5, 0x13, 0x19, 0xfc, -0x7d, 0x84, 0xeb, 0xe3, 0x37, 0xc0, 0x48, 0x8a, 0x95, 0x09, 0x05, 0xd7, -0x9c, 0xe3, 0x56, 0xde, 0xd4, 0x1c, 0xac, 0xf1, 0xc3, 0x0d, 0x15, 0xd8, -0x28, 0xf4, 0xe6, 0x29, 0xbc, 0x6c, 0x9f, 0x08, 0xd4, 0xd7, 0x93, 0x2d, -0x09, 0xda, 0xd7, 0x84, 0x1e, 0x73, 0xe9, 0x41, 0x62, 0x2e, 0xec, 0x37, -0x31, 0xd1, 0x43, 0xf4, 0xf5, 0x5a, 0x4f, 0x3e, 0xd5, 0xef, 0xd0, 0x35, -0x7e, 0x22, 0xa9, 0x08, 0xa3, 0x50, 0x20, 0xc1, 0xf9, 0xed, 0x2e, 0x77, -0xf7, 0xaa, 0x09, 0xa5, 0x45, 0x06, 0x08, 0x7c, 0x24, 0x6a, 0x41, 0x35, -0x23, 0xc5, 0xe6, 0x21, 0xa1, 0x09, 0xc1, 0xa2, 0xd4, 0x8a, 0x1c, 0x27, -0xac, 0x50, 0xc1, 0xe6, 0x84, 0xa7, 0x5c, 0xbd, 0x4e, 0x36, 0x51, 0x0f, -0xe5, 0x86, 0x7c, 0x05, 0x80, 0xf9, 0x7c, 0xc3, 0x4e, 0x29, 0xf7, 0xa5, -0x62, 0x9a, 0xaf, 0xf9, 0x93, 0x7a, 0xa1, 0x5b, 0x19, 0xc4, 0xa7, 0xe2, -0xdb, 0x96, 0x65, 0xcc, 0x81, 0x8a, 0x7d, 0x7f, 0xa5, 0x9e, 0xe9, 0xcf, -0xdd, 0xd1, 0x28, 0xc8, 0x51, 0x51, 0xcb, 0x48, 0x90, 0x88, 0xe5, 0x5a, -0xe1, 0x17, 0xa7, 0x40, 0xa8, 0x3a, 0x8d, 0x78, 0x13, 0x62, 0x7f, 0xf0, -0xaf, 0xc1, 0x28, 0x24, 0xef, 0x5c, 0xb4, 0xdb, 0x8a, 0xa4, 0xe6, 0x60, -0xdd, 0x2b, 0xac, 0x50, 0x81, 0x52, 0x41, 0xac, 0x81, 0x7a, 0x4f, 0xf6, -0x53, 0x93, 0x31, 0xbf, 0xb0, 0x59, 0x92, 0x4b, 0x44, 0xd1, 0x37, 0xf6, -0x3f, 0xa2, 0xa1, 0x08, 0xaf, 0xa0, 0x44, 0x08, 0xb9, 0x6c, 0x1e, 0x94, -0x75, 0xa4, 0x6d, 0xb3, 0xf8, 0x84, 0xef, 0xc2, 0x57, 0xbc, 0x19, 0x92, -0x48, 0x3d, 0xbb, 0xed, 0xcc, 0x83, 0xab, 0x04, 0x51, 0x7d, 0x32, 0x74, -0xe8, 0xb3, 0x3f, 0x0d, 0xc2, 0x49, 0xd4, 0xb5, 0xf4, 0x13, 0xd3, 0xad, -0x58, 0x7c, 0x4f, 0xe9, 0x51, 0xcb, 0xa1, 0xf4, 0x56, 0x5a, 0x44, 0x4c, -0xe3, 0x95, 0xc7, 0x28, 0x4c, 0xe0, 0x06, 0x7a, 0xb6, 0x87, 0xbe, 0x41, -0xc1, 0x22, 0xdc, 0x72, 0x1d, 0x27, 0x7c, 0x50, 0xc1, 0xb6, 0xc4, 0xfe, -0x44, 0x10, 0xa5, 0x7a, 0xc1, 0xb7, 0x5c, 0xde, 0xc1, 0x26, 0x65, 0x60, -0xbd, 0x35, 0xd3, 0xb7, 0xfa, 0x86, 0x80, 0x11, 0x72, 0x09, 0x49, 0x22, -0x23, 0x82, 0x70, 0xee, 0x88, 0x26, 0xc0, 0x46, 0xf2, 0xd1, 0xcc, 0xe4, -0x48, 0x98, 0x9d, 0x1f, 0x99, 0x9f, 0x86, 0xdc, 0x34, 0xcf, 0x6e, 0x3b, -0xf3, 0x13, 0x59, 0x06, 0xc3, 0x9e, 0xd9, 0xd0, 0xd7, 0xe6, 0xb3, 0x13, -0x0f, 0xa2, 0xa7, 0x0a, 0x13, 0xaf, 0xa1, 0x47, 0x55, 0x12, 0x8c, 0xe8, -0x6e, 0x1c, 0x3d, 0xd1, 0x8f, 0x40, 0x5a, 0xa2, 0xf4, 0x88, 0xd0, 0xc6, -0xd9, 0x4c, 0x08, 0x4f, 0xe8, 0xea, 0xd9, 0x02, 0xb6, 0x30, 0x41, 0x85, -0xf8, 0xef, 0x60, 0xdc, 0x7a, 0x80, 0xfe, 0xdb, 0x47, 0x47, 0xd8, 0xa4, -0x0c, 0x38, 0x03, 0x8d, 0x49, 0xc9, 0x66, 0xd6, 0x83, 0x49, 0x3d, 0xe0, -0xc4, 0xdd, 0x9f, 0x28, 0x10, 0x68, 0xf3, 0x8e, 0xfa, 0x69, 0xaa, 0x09, -0x2f, 0xc3, 0x7a, 0x75, 0xdb, 0x99, 0xc7, 0x37, 0xa7, 0xbf, 0x93, 0xe4, -0x69, 0xbf, 0x8a, 0x8f, 0x9e, 0x24, 0x4d, 0x55, 0x66, 0x22, 0xae, 0xf5, -0xa7, 0x73, 0x87, 0x2e, 0x52, 0xf0, 0x75, 0x2d, 0x9f, 0x40, 0x6e, 0x52, -0x6e, 0x08, 0x7c, 0x22, 0xb6, 0x02, 0x7f, 0x51, 0xe8, 0x6a, 0x14, 0x61, -0x85, 0x0a, 0x3c, 0x15, 0xec, 0x4f, 0x7a, 0x61, 0x1e, 0x12, 0x0f, 0x7c, -0x95, 0xef, 0x85, 0xe0, 0xc8, 0x7c, 0x27, 0x74, 0x9c, 0xb4, 0xfa, 0x9d, -0x57, 0x15, 0x12, 0x14, 0x44, 0xa8, 0x36, 0x3d, 0x19, 0x70, 0x6f, 0x79, -0xad, 0xac, 0x43, 0x8a, 0xb0, 0x87, 0x0e, 0x1b, 0x1e, 0x26, 0xa3, 0x97, -0x8f, 0xf7, 0xea, 0xb6, 0x33, 0xa0, 0x02, 0xd6, 0x64, 0x86, 0xa8, 0xcd, -0xd6, 0x5b, 0x0c, 0x45, 0x10, 0x87, 0x5e, 0x93, 0x8e, 0xca, 0x0f, 0x7a, -0x66, 0x48, 0x8f, 0xd6, 0x6e, 0xcb, 0xd7, 0xea, 0xed, 0x51, 0x50, 0xf1, -0x25, 0x6f, 0x81, 0x38, 0x3c, 0xa2, 0x9b, 0x3c, 0x57, 0xbd, 0x2f, 0x57, -0xc9, 0x27, 0x58, 0x83, 0x87, 0x09, 0xaf, 0x40, 0xcf, 0x26, 0xb8, 0x40, -0x0f, 0xf4, 0xa0, 0x83, 0x8e, 0x1f, 0xdb, 0xb6, 0x87, 0x4b, 0xa0, 0x78, -0x6a, 0x45, 0xb2, 0x77, 0xba, 0x63, 0x14, 0xd4, 0xfd, 0xf6, 0x70, 0x39, -0xfd, 0x90, 0xdc, 0xfd, 0x55, 0x55, 0x85, 0xf2, 0xdc, 0x48, 0x8d, 0x06, -0x28, 0xe6, 0x11, 0x08, 0x7c, 0x34, 0xcf, 0xc7, 0x3e, 0xb4, 0x10, 0x32, -0xd5, 0xe5, 0x84, 0x78, 0xe8, 0xdd, 0xd3, 0xd9, 0x05, 0xc8, 0x30, 0x71, -0x37, 0x67, 0xdd, 0xf8, 0x46, 0x89, 0x2d, 0x72, 0x06, 0x09, 0xff, 0x26, -0x1a, 0x9a, 0xa8, 0x24, 0x82, 0xdc, 0x42, 0x54, 0xc9, 0x56, 0xa0, 0x0a, -0x13, 0x54, 0xa0, 0x67, 0xb3, 0x45, 0xe9, 0xc9, 0x00, 0xf6, 0x8b, 0xd8, -0xf9, 0x04, 0x1e, 0xbd, 0x86, 0x8a, 0x9e, 0x94, 0x4b, 0x71, 0x13, 0xcf, -0x25, 0x77, 0x0f, 0xae, 0x74, 0x8b, 0x19, 0xc9, 0xa7, 0xf3, 0xea, 0xb6, -0xb3, 0x6c, 0x19, 0x4c, 0x98, 0x93, 0x01, 0x15, 0x54, 0xe3, 0xb5, 0xd9, -0x14, 0x0a, 0x1b, 0x03, 0xd3, 0x56, 0x97, 0x13, 0xe2, 0xa1, 0x0f, 0x45, -0x1b, 0x1a, 0x77, 0x2b, 0x63, 0x08, 0x72, 0x21, 0xf7, 0x4d, 0xea, 0x7b, -0x63, 0x7d, 0x92, 0xbc, 0x85, 0x60, 0xed, 0xd9, 0x95, 0x35, 0x4e, 0x98, -0xa0, 0x82, 0x37, 0xa1, 0x77, 0xd5, 0xc0, 0x58, 0x69, 0x5f, 0xb0, 0xf6, -0x09, 0x15, 0x1f, 0x9f, 0x28, 0x35, 0xe4, 0xeb, 0xe9, 0xd1, 0x9e, 0xbb, -0x41, 0x53, 0x35, 0xd0, 0x83, 0xb1, 0x55, 0x48, 0xd3, 0xb3, 0xdb, 0x0e, -0xa1, 0x8e, 0x3e, 0xed, 0xe6, 0xa9, 0x52, 0x1b, 0xd7, 0x80, 0x8a, 0xcb, -0x47, 0xdb, 0x6d, 0x88, 0x8a, 0x16, 0xa4, 0x5f, 0xab, 0xab, 0x64, 0x00, -0xd5, 0x43, 0x49, 0x42, 0xbd, 0xe4, 0x3d, 0x01, 0x26, 0x88, 0x4f, 0xd2, -0x43, 0x19, 0xf1, 0x89, 0xa0, 0x54, 0x44, 0xd9, 0xca, 0xa2, 0xe6, 0x60, -0xdd, 0x37, 0x1c, 0x50, 0x01, 0xbf, 0x86, 0x6b, 0xeb, 0x4d, 0xc9, 0x48, -0x53, 0xf6, 0x89, 0xd6, 0xed, 0x9f, 0x4c, 0xbf, 0x12, 0xb3, 0xc4, 0x82, -0xd9, 0xde, 0xb3, 0x63, 0x84, 0x6d, 0xde, 0x83, 0x7c, 0x45, 0x15, 0x29, -0xaf, 0x6e, 0x3b, 0x22, 0x08, 0x2d, 0x43, 0xfd, 0xcc, 0x3e, 0x13, 0x92, -0x57, 0x6d, 0x3e, 0x0e, 0x95, 0xbb, 0xd4, 0xb3, 0xe8, 0x7c, 0x0f, 0xae, -0xe5, 0xa1, 0x3f, 0xa0, 0xde, 0x64, 0x9e, 0xcb, 0x71, 0x53, 0xe0, 0xbc, -0x23, 0x01, 0x88, 0xec, 0x05, 0x62, 0xb6, 0x25, 0xd5, 0x3e, 0x58, 0xd4, -0x59, 0x59, 0xe3, 0x84, 0x09, 0x2a, 0x10, 0x9f, 0xf4, 0x5a, 0xb4, 0xe5, -0xd7, 0x94, 0x4c, 0xcf, 0xde, 0x54, 0x24, 0xe5, 0xb5, 0xf3, 0x2a, 0x3d, -0x5a, 0xcf, 0x6e, 0x76, 0x5b, 0xc1, 0x92, 0x6a, 0xb9, 0x9e, 0xab, 0xcf, -0x93, 0x47, 0xce, 0xbd, 0xc6, 0xf6, 0xae, 0x67, 0x26, 0x77, 0xba, 0x2b, -0xe9, 0x28, 0xc5, 0x2a, 0x60, 0xd3, 0x34, 0x8c, 0x8f, 0xcf, 0x9d, 0x82, -0xe4, 0xb9, 0x30, 0x26, 0xf9, 0x8c, 0xfa, 0x85, 0x52, 0xaf, 0x09, 0x3d, -0x9b, 0x6c, 0x07, 0xde, 0x82, 0xa1, 0x92, 0x55, 0x65, 0x91, 0x75, 0x80, -0xf7, 0x0d, 0x79, 0x54, 0x48, 0x04, 0x3b, 0x7b, 0x95, 0xee, 0x5e, 0xb0, -0xef, 0xd6, 0xb5, 0xb9, 0xad, 0xca, 0x69, 0x84, 0x6d, 0x9b, 0x9b, 0xf3, -0x12, 0x1d, 0xe8, 0x39, 0x2c, 0xf7, 0xcd, 0xc3, 0xae, 0xc2, 0x02, 0xf8, -0x8f, 0xdd, 0xdd, 0x8b, 0x32, 0x98, 0x1e, 0x26, 0x8c, 0xf4, 0x8f, 0xc9, -0x98, 0x11, 0x2c, 0xdb, 0x4a, 0x91, 0x13, 0xa7, 0xd3, 0x28, 0x95, 0x0e, -0x6d, 0x3e, 0x11, 0x66, 0x6b, 0x4b, 0x54, 0x50, 0x01, 0xd6, 0xf3, 0x08, -0x7a, 0x19, 0x63, 0x22, 0xf6, 0x0d, 0x75, 0xd4, 0x43, 0xd7, 0x9f, 0xad, -0x03, 0x29, 0xe4, 0x51, 0x21, 0x29, 0x81, 0xf3, 0xe7, 0xcf, 0x57, 0xef, -0x18, 0xef, 0x92, 0x4d, 0xca, 0xf0, 0xf5, 0x34, 0x44, 0x76, 0x33, 0x25, -0x79, 0x6d, 0x32, 0x22, 0xe5, 0xf8, 0x3d, 0x94, 0x4d, 0xb8, 0x67, 0x5d, -0x1f, 0x0f, 0x33, 0xd9, 0x75, 0xd5, 0xc5, 0x56, 0xdc, 0x96, 0xf6, 0x56, -0x5c, 0x7e, 0xfa, 0x94, 0x50, 0x3f, 0x6c, 0x3e, 0x94, 0xea, 0xc3, 0xa2, -0x2e, 0x47, 0x70, 0xa2, 0xb5, 0x9f, 0xe7, 0xcb, 0x41, 0xaf, 0xee, 0xbb, -0x24, 0x93, 0x96, 0xd8, 0x75, 0xac, 0x4f, 0x1e, 0xea, 0xa8, 0x07, 0xb8, -0x6d, 0x57, 0xca, 0xe5, 0x21, 0x8f, 0x0a, 0xc9, 0xa9, 0xd0, 0xad, 0x4f, -0xd4, 0x39, 0xb7, 0x49, 0x19, 0x3e, 0x9d, 0x06, 0x19, 0xe9, 0xe9, 0x35, -0x42, 0x4c, 0xa8, 0xf5, 0x96, 0xb5, 0xe6, 0xd5, 0xc8, 0x52, 0x8e, 0x9f, -0xa0, 0x6e, 0x0f, 0xfe, 0x0a, 0x0f, 0x7f, 0x22, 0x14, 0x5c, 0x55, 0x00, -0xb1, 0x6c, 0x20, 0x86, 0xf0, 0xa6, 0xc8, 0xda, 0xa7, 0x02, 0xd2, 0x8c, -0xac, 0x37, 0x7f, 0x42, 0xbd, 0xb6, 0xd3, 0xea, 0x49, 0x77, 0xf9, 0x11, -0x54, 0x4b, 0xc9, 0x19, 0xa9, 0xc3, 0x47, 0x7a, 0xb4, 0xbb, 0xea, 0x94, -0x95, 0x42, 0xd6, 0x01, 0xde, 0x34, 0xb4, 0x51, 0x81, 0xf8, 0x84, 0x4d, -0x96, 0x2a, 0x29, 0x8a, 0x32, 0xf0, 0x49, 0x05, 0xab, 0xab, 0x95, 0x8e, -0x19, 0x2c, 0x5a, 0x7a, 0x19, 0x0b, 0x75, 0x3b, 0x0a, 0x80, 0x7b, 0x86, -0x16, 0x75, 0x71, 0x38, 0xb9, 0x7e, 0x9e, 0xdb, 0xac, 0x1d, 0xcf, 0x97, -0xeb, 0xb5, 0x05, 0x2c, 0x65, 0x1b, 0x44, 0x26, 0x35, 0x19, 0xcb, 0x0a, -0x37, 0x1e, 0xc6, 0xc7, 0x13, 0x07, 0x62, 0xf1, 0x51, 0xc2, 0x22, 0xec, -0x14, 0x7c, 0xc0, 0x0d, 0xa2, 0xf3, 0x25, 0x92, 0x51, 0xc5, 0x4d, 0x41, -0xb5, 0x0e, 0xea, 0x0f, 0x84, 0x87, 0x9e, 0x1d, 0xf2, 0xbe, 0x6d, 0xc9, -0xe2, 0x25, 0x10, 0x8d, 0xba, 0xb7, 0xea, 0x6d, 0xb9, 0x0b, 0xf0, 0x34, -0x13, 0x07, 0x89, 0x41, 0x52, 0x48, 0xdc, 0xce, 0x8f, 0x1e, 0x1c, 0xaa, -0x2b, 0x30, 0x5e, 0xb3, 0xa2, 0xb1, 0xfa, 0x73, 0x3e, 0x31, 0x54, 0x3e, -0xf1, 0x25, 0x39, 0x99, 0xa4, 0x50, 0x3d, 0xaa, 0xc2, 0xd2, 0xf8, 0x4b, -0x5d, 0x6e, 0x35, 0x1f, 0x0f, 0xaa, 0x8b, 0x1f, 0x77, 0x37, 0x5c, 0x42, -0x82, 0x38, 0x81, 0x24, 0xea, 0x5e, 0x54, 0x43, 0xa3, 0xb6, 0x1f, 0x8c, -0x82, 0xaa, 0x33, 0x94, 0xd8, 0xa0, 0xbc, 0x40, 0xe8, 0x66, 0x53, 0x98, -0x19, 0x4b, 0x08, 0xf3, 0x0a, 0x89, 0x7d, 0x62, 0x97, 0xa2, 0xa6, 0xb7, -0x7a, 0x5b, 0xd8, 0x64, 0x6c, 0x52, 0x80, 0x1e, 0x28, 0xea, 0xce, 0x1a, -0xe3, 0xf9, 0x7b, 0xc2, 0x04, 0x3d, 0xdf, 0x0b, 0x73, 0x10, 0x01, 0xb0, -0x0c, 0xe2, 0x9f, 0xaa, 0xa3, 0xd7, 0x05, 0x64, 0x10, 0xcb, 0x68, 0x5c, -0x55, 0x48, 0x81, 0x22, 0x4e, 0x36, 0x9d, 0x77, 0x36, 0xd7, 0x47, 0x3f, -0x0d, 0xb7, 0x9d, 0x3c, 0x88, 0x3a, 0x28, 0x92, 0x49, 0xe0, 0x13, 0x55, -0x0b, 0x60, 0x14, 0xb8, 0x29, 0x28, 0xd8, 0x11, 0xea, 0xb1, 0x4f, 0x61, -0xa2, 0x6d, 0x8b, 0x46, 0x41, 0xc1, 0x46, 0xf5, 0xaa, 0x90, 0x07, 0x6c, -0xc6, 0x3e, 0x19, 0xb4, 0x46, 0x35, 0x02, 0x91, 0x76, 0x84, 0x33, 0x51, -0xcf, 0x8f, 0x0e, 0x7d, 0xaa, 0x9f, 0x03, 0xa5, 0xfe, 0x48, 0x81, 0x30, -0xf4, 0xdf, 0x40, 0x28, 0xf7, 0xda, 0xf8, 0x19, 0xab, 0xbf, 0x8c, 0xec, -0xc1, 0x4f, 0xec, 0x8e, 0x46, 0x69, 0x5c, 0x62, 0xc0, 0xe4, 0x2b, 0x07, -0x86, 0x9a, 0x4f, 0x56, 0x91, 0x85, 0xd8, 0x64, 0xfd, 0x20, 0x77, 0x3b, -0x97, 0xd0, 0x88, 0x07, 0x7f, 0xb9, 0x3e, 0x99, 0xae, 0x5d, 0xbb, 0x62, -0x90, 0xa5, 0x00, 0x26, 0xd9, 0x14, 0x94, 0x7b, 0xc2, 0x4d, 0x21, 0x15, -0xa3, 0x43, 0x3d, 0xd0, 0x23, 0x1c, 0x22, 0x3e, 0x24, 0x1f, 0x55, 0x4f, -0x2f, 0xf6, 0x6a, 0x0e, 0x52, 0x44, 0xa0, 0x5a, 0xa6, 0xf3, 0xb2, 0x71, -0x66, 0x51, 0xfd, 0x8e, 0x6f, 0xa8, 0xf3, 0xe7, 0xa1, 0x7d, 0x3a, 0x1b, -0x3f, 0xd6, 0x4c, 0x1a, 0x3b, 0x49, 0x30, 0x9f, 0x9d, 0x06, 0x68, 0x84, -0x9d, 0x0b, 0x31, 0x79, 0xed, 0xe9, 0x68, 0xa0, 0x4e, 0xb0, 0x8d, 0xb8, -0x6f, 0x40, 0x85, 0x39, 0x09, 0x9b, 0xd3, 0x94, 0x45, 0x88, 0xa2, 0xb7, -0x76, 0x48, 0xdc, 0xd7, 0x73, 0xf0, 0x7f, 0x1b, 0x22, 0xd5, 0x49, 0xe9, -0xa6, 0x59, 0x99, 0xf8, 0xb3, 0x69, 0x17, 0x04, 0xa3, 0xc0, 0x85, 0x8a, -0x3f, 0x3b, 0x6c, 0x20, 0x11, 0xda, 0x91, 0xe4, 0x38, 0x8c, 0xa8, 0x94, -0xa8, 0x48, 0x07, 0xc3, 0xa2, 0xfd, 0xd2, 0x91, 0xd8, 0xfe, 0x91, 0xa0, -0x28, 0xef, 0x45, 0x5c, 0x93, 0x4f, 0x84, 0x82, 0xda, 0x4d, 0xc1, 0x0b, -0x8c, 0x51, 0xee, 0x2a, 0xc1, 0xa8, 0xd1, 0x00, 0x58, 0x56, 0xc6, 0xc5, -0x9e, 0x3d, 0x40, 0xce, 0xa7, 0xbb, 0xe0, 0x85, 0x34, 0x40, 0x02, 0x01, -0xc6, 0x3c, 0x42, 0x99, 0xa0, 0xac, 0xb8, 0x98, 0xe0, 0xf6, 0x3e, 0xa7, -0x0a, 0xad, 0x59, 0xc8, 0xa4, 0x0c, 0x33, 0x6d, 0x0a, 0x31, 0x3d, 0xe1, -0xb9, 0xc3, 0xf4, 0x44, 0x41, 0x3e, 0x89, 0x1b, 0xc7, 0x3e, 0x1e, 0xa0, -0xd9, 0xa7, 0x4a, 0x5d, 0x1e, 0xaa, 0x7a, 0x85, 0x58, 0x9f, 0x28, 0xc5, -0xae, 0xa8, 0x87, 0xaa, 0xda, 0xf6, 0x29, 0xcf, 0xa6, 0x03, 0xd8, 0x3c, -0x20, 0x7e, 0x5f, 0xee, 0x88, 0x27, 0xcb, 0xeb, 0xbd, 0xf4, 0x4c, 0x26, -0x0f, 0x01, 0x14, 0xe6, 0x71, 0x00, 0x9e, 0xde, 0x5b, 0x55, 0x1e, 0xd0, -0x32, 0x9c, 0x96, 0xda, 0x84, 0x3a, 0x78, 0x1e, 0xd9, 0x12, 0x9c, 0x24, -0x75, 0x58, 0x10, 0xfb, 0x85, 0x41, 0x91, 0xe0, 0x46, 0xd4, 0xc7, 0x97, -0xce, 0x6c, 0x04, 0x8d, 0xab, 0x1e, 0x34, 0x30, 0x8a, 0xf0, 0xf0, 0xdc, -0x85, 0xbc, 0x5e, 0x21, 0xd6, 0x27, 0x42, 0x0c, 0x74, 0x3d, 0xdb, 0xd7, -0x1a, 0x02, 0x5e, 0xc9, 0xda, 0x7c, 0x02, 0xdb, 0xa7, 0xd4, 0xb9, 0x79, -0xdf, 0x7d, 0x58, 0xb8, 0xba, 0x4a, 0xdf, 0x68, 0xd1, 0x56, 0xed, 0xdf, -0x4e, 0x8f, 0xee, 0x56, 0x44, 0x4f, 0x40, 0x9e, 0x79, 0x04, 0x43, 0x25, -0x4f, 0x62, 0xa5, 0x6c, 0xaa, 0x55, 0x1e, 0x26, 0xf3, 0xec, 0xae, 0x41, -0x96, 0x95, 0x78, 0xa8, 0x1e, 0x42, 0xff, 0x07, 0x20, 0x41, 0x72, 0x36, -0x8d, 0x36, 0x29, 0xba, 0x45, 0xbd, 0x57, 0x91, 0x9d, 0xaa, 0xd4, 0x36, -0x1f, 0x94, 0xc9, 0x84, 0x24, 0xaf, 0x10, 0x3d, 0x9b, 0x76, 0x61, 0x8a, -0x68, 0x70, 0x08, 0x04, 0xab, 0xf9, 0xb7, 0x07, 0x8a, 0x59, 0x39, 0xc5, -0x55, 0x16, 0xdf, 0x4e, 0xe8, 0x21, 0x3e, 0x13, 0xbd, 0xc8, 0x80, 0x1d, -0x6f, 0x80, 0xdc, 0x97, 0x24, 0x0a, 0xcb, 0x66, 0x93, 0x84, 0x42, 0x99, -0x27, 0xb6, 0x69, 0x7e, 0x7b, 0x83, 0xa0, 0x65, 0x3f, 0x29, 0xd7, 0x30, -0x1a, 0xab, 0x47, 0xa2, 0x95, 0x5e, 0xaf, 0x4d, 0x8d, 0x4c, 0xa1, 0x4e, -0x8a, 0xef, 0xa3, 0x4b, 0x20, 0x38, 0xd1, 0x53, 0x02, 0x07, 0x05, 0xfd, -0x15, 0x80, 0x04, 0x99, 0x8f, 0xee, 0x7a, 0x05, 0x05, 0x85, 0x34, 0x2b, -0x71, 0x90, 0x90, 0x44, 0x05, 0x1a, 0x05, 0x9e, 0x54, 0x3d, 0x1c, 0x10, -0xfa, 0xb0, 0xbf, 0x19, 0xfb, 0x77, 0x26, 0xad, 0x93, 0x25, 0x08, 0x8a, -0xb8, 0x26, 0xaf, 0x23, 0xe0, 0x5f, 0x57, 0x54, 0x05, 0x95, 0x7b, 0x3d, -0x5f, 0x9d, 0x80, 0x03, 0xdb, 0x40, 0xe8, 0xf2, 0xab, 0x65, 0xca, 0xd1, -0x9c, 0x1f, 0xb4, 0x79, 0xfd, 0x12, 0x6a, 0x19, 0xda, 0x07, 0x21, 0xf7, -0xc5, 0xcb, 0x41, 0x4c, 0x8a, 0x5e, 0x4b, 0x53, 0x1f, 0x8d, 0x84, 0x6c, -0x7a, 0x59, 0x21, 0x38, 0x51, 0x26, 0x02, 0x48, 0x50, 0xd8, 0x86, 0xd6, -0x2a, 0x84, 0xc7, 0x12, 0x31, 0x0e, 0x24, 0xc2, 0x4f, 0x76, 0x0a, 0x61, -0x2f, 0x1e, 0x50, 0xa6, 0x51, 0x83, 0x7a, 0x79, 0x18, 0x49, 0x7c, 0x55, -0x9a, 0xed, 0x93, 0xa9, 0x3a, 0x53, 0xa2, 0x65, 0xb1, 0xd2, 0xda, 0xb9, -0x56, 0xcf, 0xf4, 0x27, 0x60, 0xd6, 0xce, 0x25, 0x9c, 0x43, 0xbe, 0x9e, -0x65, 0x0f, 0x72, 0xca, 0x1d, 0x58, 0x8e, 0x40, 0xdd, 0x4e, 0x4b, 0x08, -0x11, 0x9a, 0x4e, 0xb1, 0x05, 0xc8, 0xdd, 0x52, 0x7d, 0x82, 0x2d, 0x20, -0x01, 0x52, 0x3f, 0x13, 0x50, 0xc1, 0x63, 0x2d, 0x47, 0xe0, 0x4b, 0x12, -0x27, 0x08, 0x73, 0x42, 0xb7, 0x96, 0x96, 0x85, 0x94, 0x3f, 0xa3, 0x65, -0x04, 0xd9, 0x76, 0x54, 0xc0, 0x47, 0xc3, 0x56, 0x9d, 0xa8, 0x2a, 0x71, -0x47, 0x2f, 0xbf, 0x5b, 0x87, 0x1e, 0xaf, 0x40, 0xa9, 0xc0, 0x3a, 0x8e, -0xc9, 0x5c, 0xbd, 0x4e, 0x0c, 0xa0, 0x36, 0xc9, 0xce, 0xef, 0xd3, 0x54, -0x1a, 0xc3, 0x4b, 0xfb, 0x2c, 0x9c, 0x06, 0x86, 0x61, 0x09, 0xa1, 0xd5, -0xad, 0x99, 0xf6, 0x0b, 0xf0, 0x00, 0x39, 0xf5, 0x50, 0xe9, 0xe9, 0x2e, -0xfb, 0xaf, 0x1c, 0x96, 0x11, 0x50, 0xdc, 0xb4, 0x76, 0x59, 0xcf, 0x9a, -0x99, 0xbe, 0x91, 0xe2, 0xf0, 0xb4, 0xa0, 0xa9, 0xab, 0xde, 0xe7, 0x05, -0x75, 0xd3, 0xf5, 0xf0, 0x27, 0x4b, 0x48, 0x50, 0xfc, 0x86, 0xac, 0x09, -0x32, 0xec, 0xa8, 0x05, 0x88, 0x98, 0x4a, 0xe5, 0x7d, 0x1a, 0x00, 0x60, -0xee, 0xa3, 0xa0, 0x32, 0xf5, 0x3b, 0xa4, 0xa6, 0x72, 0xb8, 0x72, 0x89, -0x90, 0xe4, 0x15, 0x12, 0x37, 0x0e, 0x1f, 0xd7, 0x5f, 0x27, 0x55, 0x9b, -0xfc, 0x26, 0x77, 0x9b, 0x17, 0x4a, 0x69, 0x3d, 0xea, 0x80, 0xd8, 0x39, -0xdf, 0x50, 0xc6, 0x18, 0x26, 0x63, 0xe7, 0x2a, 0x43, 0xde, 0x82, 0x5e, -0x05, 0x10, 0x89, 0xdf, 0x3c, 0x02, 0xb9, 0x72, 0xfa, 0x22, 0x50, 0xf2, -0xc7, 0xdc, 0xbe, 0xd1, 0x1d, 0x1f, 0x70, 0xf7, 0x3d, 0x7d, 0xc3, 0x68, -0xf6, 0x09, 0x7f, 0x90, 0xfe, 0x7a, 0xc4, 0xc3, 0x52, 0xe2, 0x89, 0xba, -0xb1, 0x34, 0xa3, 0x20, 0xac, 0x83, 0x9c, 0x6c, 0x32, 0x28, 0x50, 0xaf, -0xc3, 0xc9, 0x8d, 0x6d, 0xc9, 0x70, 0x42, 0x8c, 0x57, 0x48, 0x94, 0x07, -0x3b, 0x99, 0x7a, 0xaf, 0x34, 0x0a, 0xb2, 0x43, 0x73, 0x81, 0x9c, 0xa3, -0x6a, 0xb0, 0xd2, 0x42, 0xc5, 0xce, 0x38, 0xd8, 0x88, 0x75, 0xb2, 0xb3, -0xd3, 0x40, 0x03, 0x51, 0x47, 0xcf, 0x8c, 0xd3, 0x2b, 0x93, 0x13, 0xca, -0x61, 0x99, 0x2c, 0xaa, 0x9b, 0x65, 0x33, 0x32, 0x32, 0x48, 0x45, 0x9c, -0x3b, 0x77, 0x6e, 0xeb, 0xd6, 0xad, 0x7d, 0x45, 0x02, 0xe7, 0xd7, 0xa9, -0x53, 0xa7, 0x47, 0x8f, 0x1e, 0xb3, 0x67, 0xcf, 0xa6, 0x01, 0x29, 0xc5, -0xce, 0x10, 0x99, 0xe0, 0x0f, 0x88, 0x4c, 0xe0, 0x81, 0x3e, 0x5a, 0x34, -0x13, 0xc2, 0x55, 0xe7, 0xb5, 0x6b, 0x56, 0xf9, 0xc9, 0x33, 0x15, 0x3f, -0x72, 0x28, 0xa1, 0x02, 0x48, 0xa0, 0x67, 0xf3, 0x9e, 0xf4, 0x17, 0x8f, -0x25, 0xd1, 0x0e, 0xa5, 0xfa, 0x7d, 0x0e, 0xf4, 0x4a, 0x91, 0x4c, 0xee, -0x48, 0x03, 0x38, 0x3b, 0x83, 0xa0, 0xe1, 0xe8, 0x7d, 0xe5, 0xb8, 0x90, -0x9e, 0xab, 0xf0, 0x01, 0x9c, 0xc4, 0xf8, 0x3a, 0x08, 0x6b, 0xe5, 0x7f, -0x3a, 0xa4, 0x3c, 0xb6, 0x6d, 0x00, 0x29, 0xe0, 0x2a, 0x72, 0xc9, 0x50, -0xc5, 0x59, 0x6f, 0x38, 0xef, 0x4e, 0x00, 0xd3, 0xdd, 0xf3, 0xd4, 0x78, -0x65, 0x83, 0xc7, 0x4c, 0x44, 0xe7, 0x72, 0x28, 0xbb, 0xa8, 0xa8, 0x88, -0x62, 0xbb, 0x1e, 0xba, 0x6e, 0x93, 0xa2, 0x8d, 0x98, 0x44, 0x58, 0x00, -0x9d, 0x7f, 0x69, 0x46, 0x4c, 0x4b, 0x5f, 0x1a, 0xfb, 0xc2, 0x1f, 0xa8, -0x74, 0x26, 0x5d, 0xcf, 0xcf, 0x9c, 0x39, 0x43, 0x75, 0x02, 0x5c, 0xd7, -0x84, 0x88, 0x63, 0x01, 0x97, 0xfe, 0x2c, 0x9e, 0xfb, 0x15, 0x56, 0x3c, -0xed, 0x96, 0xdf, 0x1d, 0x43, 0x06, 0x15, 0x22, 0x3b, 0x31, 0x5d, 0xac, -0x84, 0x0a, 0x15, 0x14, 0x2c, 0xb2, 0xa4, 0x54, 0xb2, 0xa8, 0x51, 0x28, -0xd9, 0xda, 0x71, 0x12, 0xef, 0x59, 0xda, 0x79, 0xdd, 0x9c, 0x76, 0x84, -0x64, 0x23, 0x9d, 0xab, 0xd0, 0xa6, 0xf9, 0xa3, 0x0a, 0xe8, 0x23, 0x7c, -0xd3, 0x65, 0xed, 0x88, 0xa6, 0xc6, 0xe8, 0x89, 0x59, 0xc9, 0x5d, 0xe2, -0xb5, 0x4a, 0xf9, 0xd7, 0x7d, 0x64, 0x94, 0x51, 0x22, 0x0c, 0x91, 0x6b, -0x19, 0x76, 0xda, 0x80, 0xd2, 0x9e, 0xa8, 0xf8, 0x28, 0x28, 0xcb, 0x69, -0x7f, 0xb7, 0x06, 0x3f, 0x24, 0xe2, 0x51, 0xfd, 0x52, 0x6f, 0xab, 0x97, -0x9f, 0x9f, 0xaf, 0xf7, 0x08, 0x27, 0xa5, 0x81, 0x48, 0x24, 0x22, 0x7c, -0x49, 0x19, 0x3f, 0xbc, 0xaa, 0x3b, 0x91, 0xb3, 0x4c, 0x1b, 0x1b, 0x31, -0x71, 0xb8, 0xea, 0x46, 0xb4, 0xea, 0x42, 0x01, 0x50, 0x9d, 0x9d, 0x21, -0x6e, 0x7e, 0x05, 0x21, 0x70, 0x0f, 0x02, 0x8a, 0x29, 0x07, 0x28, 0xbd, -0xcf, 0x09, 0xe9, 0xa3, 0x4d, 0x30, 0x19, 0x5a, 0x78, 0x1e, 0xa4, 0xd7, -0xf5, 0x9a, 0x35, 0x6b, 0xd6, 0xad, 0x5b, 0x87, 0x17, 0x82, 0x6e, 0xbc, -0xf0, 0x07, 0xf0, 0x40, 0xf3, 0x2e, 0x3c, 0x74, 0xb4, 0x11, 0xa3, 0x60, -0x07, 0xfd, 0xbb, 0x08, 0xfb, 0xf3, 0xd0, 0x6b, 0xb4, 0xfc, 0xe8, 0xb2, -0x72, 0x47, 0x0e, 0x25, 0x54, 0x20, 0x3b, 0xd1, 0x01, 0x4d, 0xa7, 0x39, -0xfc, 0xc7, 0x58, 0x54, 0x3e, 0x3a, 0x31, 0x9a, 0x44, 0xcd, 0x0d, 0x73, -0xdb, 0x43, 0xf4, 0x14, 0xc2, 0xd0, 0x1b, 0xf5, 0xda, 0x27, 0x50, 0xce, -0x24, 0x2e, 0x90, 0xa0, 0x40, 0x62, 0x96, 0x48, 0x8a, 0x90, 0x5d, 0x1c, -0xb7, 0x83, 0x94, 0xa5, 0xe9, 0xd4, 0x2c, 0x8b, 0x30, 0x24, 0xec, 0xad, -0xc0, 0x09, 0x9b, 0x92, 0x4f, 0xc3, 0xfa, 0x7a, 0x32, 0x65, 0x5e, 0x6d, -0x76, 0x0a, 0x57, 0x23, 0xb3, 0xe5, 0x93, 0xea, 0x40, 0x60, 0x92, 0x1c, -0x08, 0x3f, 0xb8, 0x9f, 0xd1, 0x0a, 0x68, 0x32, 0x8d, 0x7a, 0x80, 0x44, -0x04, 0xe9, 0x83, 0x13, 0xfe, 0xe7, 0xa0, 0x47, 0xb5, 0xf4, 0x9f, 0x86, -0x2d, 0x10, 0xb8, 0x41, 0xd1, 0x1a, 0xfa, 0xb0, 0xd0, 0xee, 0x99, 0x08, -0x0e, 0xf8, 0x30, 0xa5, 0x3a, 0xc0, 0x03, 0x22, 0x13, 0xa5, 0xf6, 0x3d, -0x77, 0x79, 0xae, 0x5c, 0xc2, 0x2d, 0xd7, 0xbb, 0x87, 0x0c, 0x2a, 0xcc, -0x7d, 0x8c, 0x08, 0x7c, 0x42, 0xb6, 0x31, 0x27, 0x52, 0xfb, 0x4a, 0x85, -0x96, 0xe7, 0x93, 0x4b, 0x40, 0x20, 0xf7, 0x8c, 0x21, 0x8d, 0xe5, 0xaf, -0xec, 0xe5, 0x96, 0x36, 0xd3, 0xa0, 0xdc, 0x4b, 0x1f, 0x04, 0xa9, 0x86, -0x5d, 0x5c, 0xef, 0x33, 0xe4, 0xf5, 0x16, 0x28, 0x15, 0x6c, 0xf6, 0xec, -0xf1, 0x04, 0x75, 0xe3, 0x5f, 0xc3, 0x78, 0x0a, 0x71, 0x43, 0xe2, 0xb8, -0xdb, 0xe8, 0x6c, 0x2d, 0xad, 0xdd, 0xe1, 0x03, 0x60, 0x80, 0x7e, 0x37, -0x1c, 0x38, 0xa7, 0xf9, 0x52, 0x9a, 0x5e, 0xa3, 0x39, 0x10, 0xf7, 0xca, -0x55, 0x20, 0x81, 0xe6, 0x8e, 0xd2, 0xdb, 0x56, 0x9a, 0x9a, 0xe2, 0x27, -0x95, 0x00, 0xa7, 0x70, 0x0a, 0xfb, 0xb3, 0x89, 0xa5, 0x50, 0x42, 0x05, -0xd6, 0x0f, 0x64, 0x5c, 0xdd, 0x38, 0xe3, 0x95, 0x62, 0x2a, 0xeb, 0x04, -0x64, 0xfa, 0xfe, 0xfd, 0xfb, 0x53, 0x77, 0x0c, 0x92, 0x65, 0x0e, 0xd4, -0x6f, 0xc5, 0xe7, 0x48, 0x68, 0x5d, 0x9b, 0x36, 0x6d, 0xe8, 0xff, 0x4b, -0x83, 0x08, 0x0a, 0x57, 0x26, 0x26, 0x5e, 0x8c, 0x1d, 0x54, 0x93, 0xa4, -0x3e, 0x3e, 0x52, 0x0d, 0xf2, 0x0f, 0xb4, 0x4b, 0x68, 0xaa, 0x9d, 0xc9, -0x33, 0x3e, 0x5a, 0x32, 0xe7, 0x23, 0xf6, 0x40, 0xd9, 0xd2, 0xbe, 0x1a, -0x65, 0x80, 0x9e, 0xce, 0x02, 0x0f, 0xd4, 0x03, 0xfc, 0x0c, 0x34, 0xaa, -0xa3, 0xe0, 0x83, 0x1c, 0x00, 0x86, 0x2f, 0xa5, 0xe3, 0x35, 0x3d, 0xad, -0x31, 0x2e, 0x71, 0x09, 0xf6, 0x25, 0x0a, 0x9c, 0x11, 0xc1, 0xf1, 0xf5, -0xd7, 0x5f, 0x0b, 0x1e, 0x82, 0xd5, 0xee, 0xd9, 0x26, 0x21, 0x56, 0xa9, -0xd3, 0x42, 0x06, 0x15, 0xbc, 0x27, 0xcc, 0xe4, 0x70, 0x76, 0xbd, 0x99, -0xb4, 0x07, 0xba, 0xc1, 0x4c, 0x59, 0xa3, 0x46, 0x0d, 0xac, 0x2b, 0x88, -0xe9, 0x50, 0x58, 0x87, 0x0e, 0x1d, 0xba, 0x74, 0xe9, 0xd2, 0xbd, 0x7b, -0x77, 0x8c, 0x2d, 0x1c, 0xb8, 0x3b, 0x90, 0xc5, 0xf9, 0x1e, 0x09, 0x1e, -0x83, 0x8f, 0xe7, 0x5e, 0xeb, 0x96, 0x77, 0x81, 0x1c, 0xd1, 0x71, 0x09, -0x98, 0x63, 0x34, 0xb4, 0x5b, 0x9a, 0x5f, 0xf5, 0xeb, 0xd7, 0x8f, 0xcf, -0x0c, 0x4b, 0xc8, 0x10, 0x61, 0x8b, 0x0b, 0x17, 0x2e, 0x44, 0xf1, 0xc5, -0x31, 0x4c, 0x0b, 0x6d, 0x3e, 0xc8, 0xc1, 0x67, 0xf5, 0x0d, 0x6a, 0x2e, -0x45, 0x8b, 0x11, 0xfa, 0x99, 0x0c, 0xd9, 0x9e, 0xf0, 0x07, 0xb8, 0x04, -0xd2, 0x0e, 0x5b, 0xfb, 0x5d, 0x77, 0xdd, 0xc5, 0xff, 0x83, 0x06, 0x0d, -0xa2, 0xd3, 0x1c, 0x59, 0x6f, 0x6c, 0x04, 0x39, 0x39, 0x39, 0x3c, 0x0b, -0xd0, 0xa2, 0xac, 0x86, 0xb4, 0xe7, 0xe2, 0x71, 0xd0, 0x16, 0x68, 0xf9, -0x05, 0x8a, 0xd8, 0xfb, 0xe9, 0xc1, 0x2e, 0x0d, 0xaa, 0x11, 0x7b, 0x88, -0xc5, 0xc0, 0x64, 0x04, 0xa1, 0x4b, 0x77, 0x77, 0xfc, 0x6e, 0x78, 0xa3, -0x69, 0x3e, 0x2d, 0x07, 0xbf, 0xf2, 0x25, 0x7f, 0x62, 0x8b, 0x81, 0x39, -0x70, 0x26, 0x3d, 0x7c, 0x51, 0x1e, 0xc4, 0x31, 0x17, 0x66, 0xd1, 0xaf, -0xfe, 0x81, 0xcd, 0xc0, 0x1e, 0x91, 0x30, 0x5d, 0x14, 0xc2, 0x3f, 0x3e, -0xf9, 0x37, 0x62, 0x39, 0x5d, 0xc5, 0xd6, 0xc5, 0x6b, 0xe3, 0x5d, 0xb2, -0xc3, 0x19, 0xea, 0x66, 0x63, 0x51, 0x81, 0xb2, 0xd9, 0x89, 0x29, 0x78, -0x4a, 0x93, 0x1e, 0xf6, 0x4e, 0x88, 0x0f, 0x9b, 0x0c, 0x44, 0x86, 0x1f, -0x8a, 0x83, 0x0d, 0x98, 0x83, 0xb0, 0x05, 0x0e, 0x74, 0x50, 0x39, 0xe4, -0x57, 0xbe, 0xc7, 0xfc, 0xc2, 0x39, 0x38, 0xad, 0xd0, 0x44, 0x7b, 0xf7, -0xee, 0x0d, 0x4e, 0xf4, 0x2a, 0x7a, 0x3a, 0x24, 0x40, 0x02, 0x9b, 0x3d, -0x74, 0x4c, 0xa7, 0x50, 0x51, 0x58, 0xb9, 0x56, 0x46, 0x56, 0xc3, 0x62, -0x08, 0xe2, 0xc0, 0x9e, 0xb3, 0x7e, 0xfd, 0x7a, 0xd1, 0x62, 0x49, 0x45, -0x20, 0x82, 0x48, 0x0e, 0x3e, 0xcb, 0x37, 0x48, 0xf6, 0x50, 0x33, 0xe7, -0x20, 0xee, 0x93, 0xea, 0xc9, 0xf9, 0xa2, 0x2e, 0x1f, 0x3a, 0x74, 0x08, -0xc5, 0x80, 0xbd, 0x9c, 0xff, 0x11, 0xfa, 0x39, 0x19, 0x85, 0x98, 0xc1, -0xb9, 0x91, 0x1c, 0xea, 0x59, 0xf8, 0x52, 0x14, 0x65, 0x89, 0x4d, 0x62, -0xd7, 0x57, 0xfd, 0xa4, 0xd9, 0xef, 0xa5, 0xa9, 0x3b, 0xe4, 0x0e, 0x48, -0x10, 0x8a, 0x38, 0x80, 0x8a, 0x1c, 0xd2, 0xf2, 0x9c, 0x3f, 0x11, 0xb5, -0x81, 0xb0, 0x24, 0x78, 0x10, 0xfb, 0x92, 0xb4, 0x30, 0x2d, 0xa7, 0x37, -0x18, 0xba, 0xc3, 0x56, 0x75, 0x54, 0x60, 0x15, 0x41, 0x30, 0x40, 0x1a, -0x86, 0xb0, 0xa8, 0xb5, 0x3c, 0x7e, 0xfc, 0x78, 0x9d, 0x40, 0x21, 0x14, -0x28, 0x0c, 0xf2, 0x62, 0xc7, 0x85, 0xe6, 0x14, 0x15, 0xa2, 0x59, 0x42, -0x70, 0xb4, 0xf7, 0x2c, 0x29, 0x29, 0x41, 0xbc, 0x96, 0x83, 0xcf, 0x7c, -0xa3, 0xec, 0x36, 0x9c, 0x8c, 0x1a, 0x0a, 0x9d, 0x41, 0x85, 0x50, 0x1e, -0xc1, 0x0e, 0x84, 0x00, 0x21, 0xea, 0xb0, 0x2b, 0x03, 0x42, 0x3c, 0x24, -0xb4, 0x8a, 0x03, 0x09, 0xe0, 0x07, 0xa2, 0xe7, 0x16, 0xa2, 0xb3, 0x42, -0xb5, 0x32, 0x32, 0x03, 0x92, 0xb1, 0x29, 0x82, 0x3b, 0x07, 0x3d, 0xa7, -0xa1, 0x6f, 0x14, 0x59, 0x14, 0x5f, 0x24, 0x78, 0xf2, 0x9b, 0xe5, 0xe0, -0x33, 0x85, 0xd3, 0xe5, 0x1b, 0x14, 0x62, 0x08, 0x1a, 0xd2, 0x87, 0x2d, -0x70, 0x3e, 0x07, 0x27, 0xe3, 0xa0, 0xa4, 0x01, 0x29, 0xf2, 0x0f, 0x7b, -0x3f, 0xb4, 0xce, 0x08, 0x8c, 0xc6, 0xf8, 0xdc, 0x48, 0x0e, 0xf5, 0x2c, -0xdc, 0x91, 0x4b, 0x18, 0x84, 0x34, 0x51, 0x4e, 0x86, 0x09, 0xe8, 0x3d, -0xdb, 0x85, 0x04, 0x55, 0xa3, 0x5e, 0x77, 0x1f, 0x42, 0x97, 0x52, 0x2b, -0x72, 0xe6, 0x55, 0x17, 0x15, 0xaa, 0x97, 0x36, 0xa2, 0x33, 0x01, 0x6a, -0x50, 0x0f, 0xa1, 0x50, 0x60, 0x43, 0xf6, 0x5d, 0x68, 0x05, 0x2a, 0xc7, -0x0e, 0x03, 0x91, 0x41, 0x28, 0x90, 0x1d, 0x41, 0x0a, 0x68, 0x93, 0xd8, -0xdd, 0x39, 0xf3, 0xec, 0xd9, 0xb3, 0x04, 0x3f, 0x23, 0x52, 0x9f, 0x3b, -0x77, 0x0e, 0x09, 0x5b, 0x0e, 0x3e, 0xf3, 0x0d, 0xdf, 0x63, 0x7e, 0x81, -0xfe, 0x38, 0x19, 0xa2, 0x3c, 0x76, 0xec, 0x18, 0x23, 0x40, 0xdf, 0x04, -0xc3, 0x41, 0xf7, 0x20, 0x44, 0x9c, 0x00, 0x80, 0x8d, 0x7d, 0x9d, 0x7b, -0x41, 0xa0, 0x10, 0x31, 0x12, 0x0b, 0x27, 0xb3, 0x9d, 0x33, 0xb8, 0x8c, -0x8c, 0xec, 0x8e, 0xbc, 0x4e, 0x6a, 0x3f, 0x07, 0xfa, 0x2b, 0xb5, 0xf4, -0x44, 0x70, 0xc7, 0xa4, 0x83, 0xd5, 0x1f, 0x24, 0xcb, 0xc1, 0xaf, 0x72, -0xf0, 0x19, 0x1d, 0x17, 0x03, 0x28, 0xa7, 0x71, 0x32, 0x64, 0xcd, 0xc1, -0x37, 0x14, 0x56, 0x82, 0xbe, 0x09, 0xac, 0xe0, 0x31, 0x39, 0x8d, 0xbf, -0x32, 0x4f, 0x76, 0x01, 0x66, 0x08, 0xf5, 0xcb, 0xb3, 0xf0, 0x2b, 0x5a, -0x04, 0x8f, 0x40, 0x14, 0x06, 0x5e, 0x67, 0x82, 0xba, 0x11, 0x90, 0x10, -0x84, 0x42, 0xbd, 0x97, 0x4a, 0x45, 0x12, 0xba, 0x4f, 0xf7, 0xaa, 0xba, -0xa8, 0x90, 0x9c, 0x0a, 0xa4, 0x02, 0x44, 0x61, 0xd4, 0x4a, 0xa8, 0x01, -0x12, 0x81, 0x3a, 0xe5, 0x20, 0x30, 0x01, 0x59, 0x1c, 0xd2, 0x81, 0x46, -0xa1, 0x4b, 0xb6, 0x5b, 0x5a, 0x51, 0x41, 0x8e, 0x50, 0x0c, 0x89, 0xc5, -0xb4, 0x1a, 0x51, 0xf2, 0x34, 0x9a, 0x89, 0x1c, 0x22, 0x70, 0x43, 0x7c, -0x8c, 0x86, 0xfb, 0x16, 0x32, 0x65, 0x4c, 0xae, 0x85, 0xe6, 0x40, 0x08, -0x9b, 0x34, 0x3b, 0xb1, 0xe2, 0x24, 0x80, 0x01, 0x33, 0x0e, 0x78, 0x03, -0x6c, 0xdc, 0x17, 0x8a, 0x14, 0x23, 0x26, 0x83, 0x33, 0xb2, 0x88, 0xe9, -0xf0, 0x31, 0x0e, 0x84, 0x75, 0x91, 0xd7, 0xc9, 0x66, 0x46, 0x56, 0x41, -0x4a, 0x61, 0xce, 0x96, 0x07, 0x32, 0x0c, 0xde, 0x31, 0xa8, 0x99, 0x93, -0xb1, 0x38, 0x73, 0x20, 0x02, 0x21, 0xdb, 0x88, 0x09, 0x88, 0xbf, 0x32, -0x02, 0x03, 0x42, 0xf1, 0x04, 0x20, 0x31, 0x43, 0x18, 0x08, 0x9a, 0x31, -0x9f, 0x51, 0xa6, 0xf9, 0x92, 0x9b, 0x72, 0x23, 0x51, 0x24, 0x70, 0xb1, -0xa1, 0x22, 0x47, 0x85, 0x1f, 0x9f, 0x68, 0xdd, 0xfe, 0xc9, 0x55, 0x1a, -0x15, 0xe2, 0xc5, 0x83, 0x08, 0xa0, 0x06, 0xa8, 0x19, 0xa2, 0x47, 0xfe, -0x96, 0x03, 0x1a, 0x65, 0xdf, 0x85, 0xb2, 0xe9, 0x16, 0x29, 0x30, 0x10, -0xba, 0x51, 0x3a, 0x25, 0xd4, 0x03, 0xfd, 0x41, 0x76, 0x1c, 0xc8, 0xd6, -0xf2, 0x81, 0x6f, 0xf8, 0x1e, 0xad, 0x14, 0xe2, 0xe3, 0x64, 0xc6, 0x84, -0xec, 0x18, 0x81, 0x3d, 0x9e, 0x9d, 0x9b, 0xbd, 0x1f, 0x84, 0xb0, 0x37, -0x0b, 0x43, 0x00, 0x09, 0x6c, 0xea, 0xdc, 0x85, 0xfb, 0x42, 0xa3, 0x9c, -0x0c, 0xb4, 0x84, 0x2e, 0x19, 0x0a, 0x00, 0x40, 0xe2, 0x1c, 0x4c, 0x8f, -0x03, 0x18, 0x40, 0xdc, 0xc8, 0xf7, 0xec, 0xdf, 0x1c, 0x90, 0xac, 0xf9, -0x40, 0x9a, 0xe7, 0x71, 0x20, 0x68, 0x85, 0x19, 0x3e, 0xf3, 0x8d, 0x04, -0x1a, 0xf1, 0x81, 0xef, 0x19, 0x10, 0x6c, 0xc8, 0x0c, 0x05, 0x6f, 0x7c, -0x16, 0xc8, 0xe9, 0x10, 0x0a, 0xa7, 0xaa, 0x33, 0xf6, 0x89, 0xb5, 0xc2, -0xce, 0xac, 0xba, 0xa8, 0x10, 0x29, 0x59, 0x2c, 0x51, 0x90, 0x0b, 0x94, -0x0d, 0x7d, 0x40, 0xca, 0x72, 0xc8, 0x56, 0xcd, 0x37, 0xec, 0xb8, 0xd0, -0xba, 0x52, 0x28, 0x39, 0x13, 0x52, 0x43, 0xa1, 0x84, 0xc8, 0xb8, 0x90, -0x43, 0xc8, 0x94, 0x43, 0x7e, 0xe5, 0x7b, 0xfe, 0x0a, 0x05, 0xb3, 0x37, -0x73, 0x15, 0xd7, 0x32, 0x02, 0xc4, 0x07, 0xc5, 0xc3, 0x49, 0xd8, 0x95, -0x01, 0x18, 0x07, 0x18, 0x80, 0x27, 0xf0, 0xa5, 0xdc, 0x45, 0xf1, 0x01, -0xa1, 0x63, 0xc6, 0x51, 0x44, 0x8f, 0xda, 0xca, 0xa1, 0x2c, 0x9b, 0x9e, -0xdf, 0x9c, 0x38, 0xec, 0xe1, 0x81, 0xea, 0x50, 0xfe, 0x01, 0xa9, 0x14, -0xca, 0xb0, 0x6a, 0x86, 0x4c, 0x52, 0x9e, 0x05, 0xb0, 0xc9, 0x4d, 0x45, -0x45, 0x8e, 0x4c, 0x97, 0x42, 0x85, 0x41, 0x82, 0x1b, 0x55, 0x69, 0x54, -0x08, 0x30, 0xc4, 0x9d, 0x07, 0x65, 0xc8, 0x56, 0x2a, 0x7b, 0x33, 0x34, -0xcd, 0x21, 0x3b, 0xb4, 0x60, 0x40, 0x27, 0x56, 0x21, 0x53, 0xa1, 0x54, -0xfd, 0x90, 0x2f, 0xf9, 0x2b, 0x03, 0xea, 0x08, 0x61, 0x1c, 0x31, 0xdd, -0x28, 0x96, 0x22, 0xdc, 0x40, 0x6e, 0xa4, 0x6e, 0x21, 0x60, 0x30, 0x0c, -0x0b, 0x8d, 0x0a, 0x99, 0xda, 0x94, 0x67, 0xcc, 0x7a, 0xb0, 0x52, 0x94, -0x05, 0x30, 0x6a, 0x86, 0x02, 0x3c, 0xfd, 0x59, 0x7c, 0xba, 0x51, 0x45, -0x92, 0x51, 0x98, 0xdd, 0xab, 0xaa, 0xa3, 0xc2, 0xb0, 0xdc, 0x06, 0x92, -0x0a, 0xe2, 0xcb, 0xf0, 0x60, 0xbd, 0x09, 0xe2, 0x5d, 0xa2, 0x43, 0x85, -0xc4, 0x0a, 0x84, 0x18, 0x2a, 0x42, 0x62, 0x4d, 0xa3, 0x93, 0x0c, 0xf5, -0x15, 0x88, 0xa2, 0x22, 0xd4, 0xdf, 0x60, 0x74, 0xfe, 0xc1, 0x5f, 0x81, -0x28, 0x2a, 0x82, 0xbf, 0xa6, 0xd1, 0x11, 0x43, 0x7d, 0x05, 0xa2, 0xa8, -0x08, 0xf5, 0x37, 0x18, 0x9d, 0x7f, 0xf0, 0x57, 0x20, 0x8a, 0x8a, 0xe0, -0xaf, 0x69, 0x74, 0xc4, 0x50, 0x5f, 0x81, 0x8b, 0xa8, 0xc8, 0xcc, 0xcc, -0x24, 0xae, 0x81, 0x6e, 0x29, 0x78, 0x79, 0xa3, 0x47, 0x74, 0x05, 0x22, -0x79, 0x05, 0x40, 0x01, 0x58, 0x00, 0x11, 0x0e, 0xd2, 0x03, 0x88, 0x5e, -0x4e, 0x4e, 0x4e, 0x26, 0x78, 0x36, 0x7a, 0x44, 0x57, 0x20, 0x92, 0x57, -0x00, 0x14, 0x80, 0x05, 0x10, 0xf1, 0xff, 0x0a, 0xfb, 0x09, 0x6c, 0x5e, -0xaf, 0x2e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, -0x42, 0x60, 0x82, +0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, +0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x01, 0x76, +0x08, 0x02, 0x00, 0x00, 0x00, 0xec, 0xb7, 0xca, 0x94, 0x00, 0x00, 0x00, +0x01, 0x73, 0x52, 0x47, 0x42, 0x00, 0xae, 0xce, 0x1c, 0xe9, 0x00, 0x00, +0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1, 0x8f, 0x0b, 0xfc, +0x61, 0x05, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48, 0x52, 0x4d, 0x00, 0x00, +0x7a, 0x26, 0x00, 0x00, 0x80, 0x84, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, +0x80, 0xe8, 0x00, 0x00, 0x75, 0x30, 0x00, 0x00, 0xea, 0x60, 0x00, 0x00, +0x3a, 0x98, 0x00, 0x00, 0x17, 0x70, 0x9c, 0xba, 0x51, 0x3c, 0x00, 0x00, +0x85, 0xcd, 0x49, 0x44, 0x41, 0x54, 0x78, 0x5e, 0xed, 0x9d, 0x07, 0x98, +0x14, 0x55, 0xb6, 0xc7, 0x7b, 0x62, 0x4f, 0x1e, 0x18, 0x26, 0x90, 0xd3, +0x30, 0xe4, 0xcc, 0x90, 0xe3, 0x90, 0x73, 0x8e, 0x22, 0x41, 0x92, 0x82, +0x48, 0x14, 0x15, 0x45, 0x24, 0x89, 0xc0, 0xc0, 0x90, 0x83, 0x04, 0x45, +0x50, 0x11, 0x31, 0x60, 0xc0, 0xac, 0x6b, 0x5c, 0x73, 0x5a, 0xd3, 0xa6, +0xf7, 0x36, 0xb9, 0xcf, 0x4d, 0xba, 0xee, 0xae, 0xae, 0xab, 0xee, 0x2e, +0xef, 0xd7, 0x1c, 0xbc, 0x73, 0xa7, 0xaa, 0xba, 0xbb, 0x3a, 0x4c, 0xe8, +0x50, 0xdf, 0xc0, 0xd7, 0xd3, 0x53, 0x75, 0xeb, 0xd6, 0xad, 0xf3, 0xbf, +0x27, 0x9f, 0x13, 0x13, 0x17, 0x17, 0x97, 0x9e, 0x9e, 0xfe, 0xed, 0xb7, +0xdf, 0xc6, 0xc4, 0xc4, 0x38, 0xac, 0x8e, 0xf3, 0xe7, 0xcf, 0x5b, 0x7e, +0x1f, 0xfd, 0x32, 0xba, 0x02, 0xa1, 0xbb, 0x02, 0x96, 0xd4, 0x0e, 0xa9, +0x3b, 0x9d, 0xce, 0x7f, 0xfc, 0xe3, 0x1f, 0x8e, 0xcc, 0xcc, 0xcc, 0x7d, +0xfb, 0xf6, 0xdd, 0x7b, 0xef, 0xbd, 0xa7, 0x4c, 0xc7, 0xdd, 0x17, 0x8e, +0xbb, 0x2e, 0x1c, 0x77, 0xde, 0x79, 0xe7, 0xc9, 0x0b, 0xc7, 0x89, 0x0b, +0xc7, 0x1d, 0x6e, 0x8e, 0xe3, 0xc7, 0x8f, 0xab, 0xbf, 0xf0, 0xd9, 0xeb, +0x71, 0x7b, 0x39, 0x1f, 0xb7, 0xd9, 0x3e, 0x8e, 0x95, 0xc3, 0x71, 0xf4, +0xe8, 0x51, 0x46, 0xe5, 0x7f, 0x9f, 0x8e, 0x23, 0x47, 0x8e, 0xf8, 0x74, +0xbe, 0xdc, 0x25, 0xe8, 0x87, 0xed, 0x95, 0xbb, 0x8d, 0x77, 0xc8, 0xc9, +0xe5, 0xf1, 0x26, 0xa1, 0x1f, 0x86, 0xf5, 0x4a, 0x45, 0x3a, 0xd5, 0x99, +0x09, 0x53, 0x28, 0x56, 0xa8, 0x17, 0x32, 0x16, 0x7a, 0x16, 0xda, 0x36, +0x90, 0x3c, 0x28, 0x00, 0x0b, 0x20, 0xc2, 0x91, 0x92, 0x92, 0xc2, 0x9f, +0x41, 0x89, 0x7e, 0xfc, 0xf7, 0xc2, 0xf1, 0x9f, 0x0b, 0xc7, 0xbf, 0xff, +0xfd, 0xef, 0xef, 0xbf, 0xff, 0x1e, 0x66, 0xf2, 0xcd, 0x37, 0xdf, 0xfc, +0xf3, 0x9f, 0xff, 0xfc, 0xfa, 0xeb, 0xaf, 0xbf, 0xfa, 0xea, 0x2b, 0xf0, +0xc4, 0xf1, 0x77, 0xd3, 0xf1, 0xb7, 0xbf, 0xfd, 0x4d, 0x7d, 0xc7, 0x67, +0xcb, 0xe3, 0x4b, 0x1b, 0xc7, 0x5f, 0x6d, 0x1c, 0x5f, 0xd8, 0x38, 0x3e, +0xb7, 0x71, 0xfc, 0xc5, 0x74, 0xfc, 0xf9, 0xcf, 0x7f, 0xd6, 0xbf, 0xe3, +0x57, 0x3b, 0xc7, 0x9f, 0x4c, 0xc7, 0x1f, 0xff, 0xf8, 0x47, 0xf5, 0x1d, +0x9f, 0x2d, 0x8f, 0x3f, 0xfc, 0xe1, 0x0f, 0x86, 0xef, 0xcd, 0xdf, 0x58, +0x5e, 0x68, 0xbe, 0x9d, 0xf9, 0x1b, 0x3b, 0xd3, 0x36, 0x3f, 0xbe, 0x7c, +0xa3, 0x56, 0x4e, 0xff, 0xac, 0x2f, 0xa7, 0xbe, 0xfc, 0x7c, 0xef, 0xee, +0x6d, 0xa8, 0x37, 0xc9, 0x09, 0xee, 0xde, 0xaa, 0xa2, 0x08, 0x4e, 0xb0, +0xa4, 0x0e, 0x77, 0xb4, 0xa4, 0xbe, 0x37, 0x93, 0x22, 0xdf, 0x40, 0xa2, +0xd0, 0x2a, 0x07, 0x44, 0x0b, 0xe9, 0xfe, 0xeb, 0x5f, 0xff, 0x82, 0x8c, +0xbf, 0xfb, 0xee, 0x3b, 0xe8, 0x19, 0xaa, 0x86, 0xb6, 0x85, 0xce, 0x75, +0xca, 0x07, 0x0b, 0x20, 0xc2, 0x02, 0x15, 0x82, 0x07, 0x01, 0x03, 0x43, +0x08, 0x1e, 0x18, 0x97, 0x7b, 0x30, 0x09, 0x79, 0x30, 0x59, 0x1d, 0x77, +0xf4, 0xe4, 0xee, 0x65, 0x78, 0x78, 0x91, 0xee, 0x88, 0x86, 0xef, 0x85, +0x4a, 0xf8, 0xdf, 0xf2, 0xf8, 0xcc, 0xdb, 0xf1, 0x7f, 0xee, 0x8f, 0xdf, +0xff, 0xfe, 0xf7, 0xfc, 0x91, 0xff, 0x0d, 0xc7, 0xa7, 0x9f, 0x7e, 0xca, +0x37, 0xfc, 0xef, 0xe1, 0xf8, 0x9d, 0xc7, 0xe3, 0xb7, 0xa6, 0xe3, 0x37, +0xbf, 0xf9, 0x0d, 0xdf, 0xf1, 0x7f, 0xe0, 0x87, 0x79, 0x70, 0xf9, 0xc6, +0xf3, 0x94, 0x3c, 0x3f, 0x8e, 0xfc, 0xd5, 0xbc, 0x14, 0xb2, 0x3e, 0x96, +0x4b, 0xe8, 0x6d, 0xe1, 0x3f, 0xe3, 0x7d, 0x71, 0x8e, 0xbb, 0x17, 0xa7, +0xde, 0xac, 0x4f, 0x98, 0x77, 0x47, 0x5a, 0x90, 0xa2, 0xfa, 0x93, 0x22, +0x4b, 0xc1, 0xaa, 0x20, 0x4d, 0x40, 0x02, 0x19, 0x43, 0xcc, 0xc0, 0xc3, +0x80, 0x0d, 0x05, 0x0c, 0x6b, 0x54, 0xe8, 0x90, 0x30, 0xe3, 0x81, 0xfb, +0x41, 0xd9, 0x3c, 0x86, 0xac, 0x88, 0x2c, 0x96, 0x79, 0x29, 0xe5, 0x1b, +0xb5, 0xca, 0xe6, 0xf7, 0x61, 0xf9, 0xfe, 0xdc, 0xbd, 0x6c, 0xa1, 0x27, +0x77, 0x24, 0xf5, 0x6b, 0x37, 0xc7, 0xaf, 0x7e, 0xf5, 0x2b, 0xf9, 0x0b, +0x1f, 0xcc, 0xc7, 0xff, 0x9a, 0x8e, 0xff, 0x71, 0x73, 0xfc, 0xf2, 0x97, +0xbf, 0x94, 0xbf, 0xf0, 0xc1, 0x7c, 0xfc, 0xc2, 0xcd, 0xf1, 0x73, 0xd3, +0xf1, 0xb3, 0x9f, 0xfd, 0x4c, 0xbe, 0xe3, 0x83, 0xf9, 0xf8, 0xe9, 0x0f, +0x87, 0xe5, 0x5f, 0x0d, 0x5f, 0x9a, 0x07, 0xb7, 0x9c, 0x85, 0xcc, 0x96, +0x3f, 0x59, 0xce, 0x5c, 0x3d, 0x97, 0xe1, 0xb9, 0x65, 0x61, 0xf8, 0xd2, +0xbc, 0x44, 0x96, 0x2b, 0xa9, 0xd6, 0xd9, 0xf0, 0x1e, 0x04, 0xfc, 0x7c, +0xe9, 0x6e, 0x17, 0xb0, 0x7c, 0xdd, 0x42, 0x18, 0x3a, 0xc2, 0x85, 0x78, +0xf8, 0xd2, 0x1d, 0xaa, 0x2d, 0xc9, 0x4f, 0xc1, 0x58, 0xb6, 0x54, 0x00, +0x03, 0x42, 0x04, 0x1e, 0x0a, 0x1b, 0xc2, 0x37, 0x14, 0xd3, 0x10, 0x60, +0x58, 0xa0, 0x42, 0x41, 0x82, 0xb3, 0x85, 0x3f, 0x80, 0x30, 0xc6, 0x02, +0x0c, 0xcf, 0x3c, 0xf3, 0xcc, 0x8a, 0x15, 0x2b, 0x7a, 0xf4, 0xe8, 0x91, +0x9b, 0x9b, 0x1b, 0x1b, 0x1b, 0x1b, 0xba, 0x6a, 0x56, 0x74, 0xe6, 0x91, +0xb3, 0x02, 0x10, 0x6a, 0x76, 0x76, 0x36, 0x44, 0xbb, 0x7c, 0xf9, 0xf2, +0xc7, 0x1f, 0x7f, 0x1c, 0xa8, 0x80, 0x10, 0x88, 0x19, 0x06, 0x82, 0xd4, +0x83, 0x64, 0x05, 0x91, 0x0b, 0xd3, 0x10, 0x69, 0xca, 0x02, 0x15, 0x06, +0x48, 0x00, 0x29, 0x80, 0xc5, 0x10, 0xf7, 0xdd, 0x77, 0x5f, 0x9f, 0x3e, +0x7d, 0x22, 0x67, 0x29, 0xa3, 0x4f, 0x1a, 0xae, 0x2b, 0xd0, 0xbb, 0x77, +0x6f, 0xd4, 0x6b, 0x78, 0x0e, 0x62, 0x0e, 0x84, 0x0d, 0x79, 0x2b, 0x60, +0x28, 0x8e, 0x51, 0x86, 0x57, 0x18, 0x20, 0x01, 0x8b, 0x80, 0xe3, 0xc0, +0x7d, 0xe6, 0xce, 0x9d, 0xcb, 0x1a, 0x0d, 0x1c, 0x38, 0x30, 0x5c, 0x57, +0x2a, 0xfa, 0x5c, 0x91, 0xb6, 0x02, 0xb3, 0x67, 0xcf, 0x46, 0x3e, 0x44, +0x24, 0x83, 0x6f, 0xc0, 0x34, 0xd8, 0xfd, 0x85, 0x63, 0x08, 0x30, 0x30, +0x4f, 0x95, 0x6a, 0xdb, 0xa0, 0x42, 0xd4, 0x6b, 0xce, 0xe0, 0x3c, 0x20, +0x81, 0xbc, 0xd8, 0xaf, 0x5f, 0xbf, 0xac, 0xac, 0xac, 0x48, 0x5b, 0xb5, +0xe8, 0xf3, 0x86, 0xfd, 0x0a, 0xc0, 0x34, 0x3e, 0xf8, 0xe0, 0x03, 0x14, +0x1e, 0xf6, 0x7d, 0x14, 0x04, 0x38, 0x86, 0xe8, 0xdf, 0x40, 0x00, 0xd3, +0x6d, 0x72, 0x72, 0xb2, 0xcb, 0x06, 0x05, 0x3e, 0x40, 0x89, 0x98, 0x5f, +0xd1, 0x25, 0xe0, 0x2c, 0x9c, 0x5d, 0x54, 0x54, 0x34, 0x69, 0xd2, 0xa4, +0x32, 0x0b, 0x54, 0x30, 0xc8, 0x31, 0xe1, 0x88, 0x63, 0xe5, 0x27, 0x8e, +0x4d, 0xdf, 0x38, 0x36, 0xff, 0xdb, 0xb1, 0xe5, 0xbf, 0xe5, 0xf9, 0xf3, +0x1f, 0xc7, 0x16, 0x6e, 0x21, 0x3f, 0x7c, 0xe6, 0xc7, 0xb7, 0xdb, 0xc5, +0x6c, 0xf9, 0x6f, 0xcc, 0x96, 0xff, 0xc4, 0x6e, 0xf9, 0x0f, 0xff, 0xcb, +0x4f, 0xec, 0x56, 0x7e, 0xfe, 0x1d, 0x1b, 0xc0, 0x98, 0xbe, 0xce, 0xc1, +0xe3, 0xf9, 0xf2, 0x50, 0xea, 0xd1, 0x64, 0x92, 0x17, 0x9f, 0x51, 0x26, +0x1f, 0xd4, 0xdb, 0xf9, 0xb6, 0x7a, 0x61, 0x72, 0x6b, 0x08, 0x15, 0x72, +0x85, 0x68, 0x21, 0xdd, 0xb2, 0x47, 0xcf, 0x9e, 0x3d, 0x31, 0x5a, 0xa0, +0xd6, 0xa3, 0x88, 0x43, 0xf0, 0xd8, 0x6d, 0x21, 0x7e, 0x20, 0x60, 0x44, +0x85, 0x68, 0xd8, 0xc8, 0x4e, 0x88, 0x5c, 0xf3, 0xe6, 0xcd, 0x73, 0xf9, +0x32, 0x7e, 0x38, 0x12, 0x72, 0xf2, 0x1d, 0xb3, 0x1f, 0xad, 0xd8, 0x95, +0x12, 0x72, 0x09, 0x04, 0x15, 0x2e, 0x3a, 0x2b, 0x3b, 0x67, 0x9d, 0x0a, +0xab, 0x02, 0x95, 0x18, 0xd0, 0x5e, 0x8a, 0x0a, 0xa6, 0xad, 0x10, 0x52, +0xb1, 0xcb, 0x5e, 0x15, 0x96, 0xa5, 0x7c, 0xe6, 0x30, 0xfb, 0xd1, 0x78, +0xc8, 0x58, 0x3b, 0x2e, 0xbd, 0xf4, 0x52, 0x0c, 0x71, 0xa8, 0xe0, 0x10, +0xbc, 0x92, 0xa3, 0x2e, 0xa2, 0x02, 0x7e, 0xc1, 0x27, 0x78, 0x87, 0x30, +0x0a, 0x18, 0x0a, 0xea, 0xb5, 0x7e, 0x71, 0x52, 0x93, 0x5e, 0x8e, 0x9b, +0xbe, 0xa8, 0x8c, 0x77, 0x63, 0xd8, 0x4d, 0xcb, 0x67, 0xb1, 0x7c, 0x64, +0x41, 0xc1, 0x5e, 0x87, 0x32, 0xb8, 0x8d, 0x22, 0x21, 0xd8, 0xcb, 0x5b, +0x96, 0x66, 0x6e, 0xfa, 0xc2, 0x99, 0xdf, 0x4b, 0xa7, 0x6d, 0x9c, 0xe2, +0xb0, 0x0b, 0x14, 0x0c, 0xd8, 0x05, 0xc4, 0x0f, 0x04, 0xf0, 0x7f, 0xbb, +0x24, 0x28, 0x41, 0x85, 0xd2, 0x28, 0xc0, 0x4d, 0xdf, 0xbe, 0x7d, 0x1b, +0x34, 0x68, 0x20, 0x17, 0xbb, 0xb8, 0x44, 0xe5, 0x40, 0x82, 0xe7, 0x11, +0x8a, 0xf1, 0x47, 0x7c, 0x2a, 0xdf, 0xc5, 0xad, 0x64, 0x20, 0x85, 0xe5, +0xee, 0x50, 0x51, 0x0f, 0x75, 0xd3, 0x17, 0x3a, 0xc7, 0xe8, 0xde, 0xbd, +0x3b, 0x6e, 0x19, 0xd8, 0x85, 0x52, 0xbb, 0x89, 0x0d, 0xb9, 0x88, 0x0a, +0xf0, 0x21, 0x8c, 0x02, 0x23, 0xee, 0xd3, 0x4f, 0x3f, 0x5d, 0x46, 0x00, +0xab, 0x68, 0xc1, 0xc9, 0x72, 0x75, 0xa2, 0x12, 0x76, 0x45, 0x11, 0x4d, +0x24, 0x00, 0x1e, 0x92, 0xd6, 0x8e, 0xb3, 0x67, 0xcf, 0x62, 0x8f, 0x42, +0xbb, 0x80, 0xf8, 0x81, 0x00, 0x61, 0x54, 0x17, 0x51, 0x01, 0x3e, 0xc4, +0xf4, 0x84, 0xf8, 0xb4, 0x72, 0xe5, 0xca, 0xd2, 0x4b, 0xd0, 0x51, 0x42, +0x69, 0x99, 0xa2, 0xe0, 0x89, 0x82, 0xc7, 0xde, 0x0a, 0x68, 0xca, 0xf7, +0xa2, 0x45, 0x8b, 0x70, 0xc0, 0x2b, 0x2b, 0x2d, 0x32, 0x55, 0x29, 0x2a, +0xd0, 0xc1, 0xc1, 0x0a, 0xe2, 0x13, 0xba, 0x79, 0x29, 0x2a, 0x50, 0xde, +0x43, 0x09, 0x15, 0xf6, 0x56, 0x24, 0xfa, 0x44, 0xd1, 0x15, 0x80, 0xb0, +0x7f, 0x38, 0x3a, 0x77, 0xee, 0x8c, 0xfb, 0x42, 0x74, 0x6e, 0x4c, 0x4d, +0xa5, 0xa8, 0x80, 0x6b, 0x88, 0x9e, 0x4d, 0x8c, 0x53, 0x4e, 0x4e, 0x4e, +0x29, 0x2a, 0xb0, 0x6a, 0x45, 0x57, 0x30, 0xba, 0x02, 0xe1, 0xb7, 0x02, +0x10, 0xf6, 0x0f, 0x07, 0x21, 0x21, 0x98, 0x68, 0x11, 0xa2, 0x20, 0x7e, +0x74, 0x6e, 0x42, 0xe2, 0x2f, 0xf2, 0x0a, 0xf0, 0x81, 0x23, 0x03, 0x85, +0x03, 0x3e, 0x52, 0x26, 0xc6, 0x09, 0x73, 0x6f, 0xf8, 0xad, 0x48, 0xf4, +0x89, 0xa2, 0x2b, 0x00, 0x61, 0xff, 0x70, 0x40, 0xf0, 0x44, 0x66, 0x8a, +0x25, 0x0a, 0xc6, 0x50, 0x06, 0x15, 0xe2, 0xcf, 0x26, 0x3e, 0xa4, 0x8c, +0xaa, 0x1d, 0x5d, 0xbe, 0xe8, 0x0a, 0x84, 0xe5, 0x0a, 0xe0, 0x83, 0xd6, +0x8e, 0x4f, 0x3e, 0xf9, 0x04, 0xd5, 0x02, 0xe2, 0x87, 0x31, 0x44, 0x51, +0x11, 0xd5, 0x43, 0x22, 0x78, 0x05, 0x34, 0x54, 0x7c, 0xfc, 0xf1, 0xc7, +0xd6, 0xa8, 0x10, 0x97, 0x36, 0x3a, 0x47, 0x94, 0x57, 0x44, 0x85, 0xc6, +0x88, 0x58, 0x01, 0x8d, 0xd0, 0x3f, 0xfa, 0xe8, 0x23, 0xa2, 0xfe, 0x20, +0x7e, 0xc4, 0x25, 0x12, 0x7d, 0x4b, 0xf5, 0x8a, 0x28, 0x2a, 0x22, 0x82, +0x14, 0xc2, 0x52, 0x1c, 0xf2, 0xef, 0xa1, 0xec, 0xa3, 0x82, 0xb4, 0xa6, +0x28, 0xaf, 0x88, 0xc2, 0x23, 0x22, 0x56, 0x20, 0x8a, 0x8a, 0x88, 0x78, +0xcd, 0xfe, 0x6d, 0x99, 0x11, 0x7b, 0x55, 0x14, 0x15, 0x21, 0x87, 0x8a, +0xa4, 0x6d, 0xdf, 0xe5, 0xed, 0xf8, 0x47, 0xfe, 0xce, 0xcf, 0x5b, 0xee, +0xfc, 0xac, 0x5d, 0xc9, 0x6f, 0x46, 0x6e, 0x3c, 0x5d, 0x74, 0xed, 0xb1, +0x76, 0x57, 0xec, 0x6e, 0x3c, 0x73, 0x6b, 0xdb, 0xcb, 0x77, 0xf7, 0xbf, +0xe6, 0xe8, 0x98, 0xe2, 0x73, 0xfc, 0x35, 0xe4, 0x9e, 0xab, 0x0a, 0x4d, +0x58, 0x43, 0xc5, 0x87, 0x1f, 0x7e, 0x28, 0xd1, 0x50, 0xd6, 0x7a, 0x45, +0x54, 0x82, 0xaa, 0x94, 0xd7, 0x96, 0xbd, 0xfd, 0xeb, 0x56, 0x25, 0x9f, +0x8e, 0xdc, 0x74, 0xa6, 0xdf, 0xc2, 0xcd, 0x1d, 0x47, 0xce, 0x6a, 0xd4, +0xa6, 0x73, 0x66, 0xcd, 0xc6, 0xce, 0xcc, 0x3c, 0x67, 0x7a, 0x96, 0x33, +0xbd, 0x86, 0x33, 0xad, 0x46, 0x62, 0x52, 0x7a, 0x62, 0x52, 0x9a, 0xfe, +0xe3, 0x4c, 0xad, 0x96, 0xde, 0xb0, 0x43, 0xcf, 0x79, 0x1b, 0xda, 0xee, +0xfe, 0x2c, 0x67, 0xc7, 0x3f, 0x2b, 0x65, 0xda, 0xa1, 0x7d, 0x53, 0xaf, +0xbc, 0x82, 0x42, 0x54, 0x84, 0x7b, 0x10, 0x20, 0x15, 0x45, 0x45, 0x05, +0xbf, 0x69, 0xf6, 0xfb, 0xa1, 0xab, 0x8f, 0xd6, 0xef, 0x50, 0xe4, 0x88, +0x4b, 0x8a, 0x8b, 0x89, 0x4b, 0x75, 0x26, 0x55, 0x4f, 0x4d, 0xcd, 0xcd, +0xcc, 0xa8, 0x59, 0x3d, 0xb3, 0x65, 0x7e, 0xe3, 0x3e, 0xdd, 0xba, 0xf6, +0xec, 0x5c, 0xd8, 0xbf, 0x57, 0xcf, 0x99, 0xd3, 0xa6, 0x5e, 0x36, 0xe3, +0xd2, 0x39, 0xda, 0xcf, 0x88, 0x41, 0x83, 0xb2, 0x33, 0xd2, 0x12, 0x1c, +0x8e, 0xd8, 0xe4, 0x8c, 0x66, 0x43, 0x66, 0x8d, 0xdd, 0xf9, 0x74, 0x93, +0xdd, 0x5f, 0x56, 0xf0, 0xe4, 0x43, 0xfb, 0x76, 0x5e, 0x51, 0x81, 0x6f, +0x1b, 0x1b, 0x54, 0x14, 0x15, 0x15, 0xf6, 0x9a, 0xb3, 0x77, 0x7c, 0xdd, +0x66, 0xd7, 0xff, 0xf5, 0x59, 0xbc, 0x23, 0x31, 0xaf, 0x80, 0xb7, 0x93, +0x93, 0x99, 0xd1, 0xbd, 0xb0, 0x70, 0xce, 0xcc, 0x99, 0xc5, 0x5b, 0xb6, +0x3c, 0xfa, 0xc8, 0x23, 0xd4, 0xaa, 0x81, 0xa1, 0x4b, 0x45, 0x19, 0x55, +0xf5, 0x47, 0x2f, 0xfd, 0x22, 0xb5, 0x61, 0x5e, 0x7d, 0xf5, 0xd5, 0xe5, +0x4b, 0x97, 0xb6, 0x6d, 0xde, 0x3c, 0x35, 0x01, 0x74, 0xc4, 0xa5, 0x34, +0xea, 0x58, 0xb4, 0x62, 0x5f, 0xc1, 0x9e, 0xbf, 0x55, 0xd8, 0x53, 0x84, +0xf6, 0x8d, 0xa2, 0xa8, 0xa8, 0x3a, 0xef, 0xaf, 0xf1, 0xce, 0xcf, 0x47, +0x6f, 0x7f, 0xa2, 0xdd, 0xa5, 0x37, 0x26, 0x64, 0xd6, 0xe2, 0xbd, 0x34, +0xa8, 0x95, 0x37, 0x7d, 0xca, 0x94, 0xfb, 0xcf, 0x9c, 0x81, 0xd0, 0xa5, +0x18, 0x99, 0xd4, 0x2f, 0x92, 0x72, 0x72, 0x52, 0xf6, 0xcb, 0xb2, 0x74, +0x9f, 0x14, 0x05, 0xe3, 0x1c, 0xb2, 0xc9, 0x6e, 0x3d, 0x78, 0x70, 0xcc, +0x88, 0x61, 0xb5, 0xb3, 0x5c, 0xb9, 0x93, 0x69, 0xf9, 0x9d, 0x07, 0xaf, +0x39, 0xd9, 0x34, 0x8a, 0x0d, 0xaf, 0x56, 0x04, 0x9b, 0x7a, 0x45, 0x94, +0x57, 0x94, 0x37, 0x78, 0x90, 0x97, 0x7a, 0x2f, 0xda, 0xe6, 0xac, 0x56, +0x93, 0x37, 0xd2, 0xb8, 0x4e, 0xad, 0x15, 0x4b, 0x97, 0x3c, 0xf9, 0xc4, +0x13, 0x52, 0xa4, 0x48, 0xca, 0x78, 0xa9, 0x42, 0x77, 0x52, 0x28, 0x52, +0xaa, 0x44, 0x4a, 0xf1, 0x52, 0xf3, 0xc1, 0x9f, 0xa4, 0x94, 0x23, 0x57, +0x71, 0xf9, 0x13, 0x8f, 0x3f, 0x3e, 0x77, 0xd6, 0xac, 0xcc, 0x24, 0x17, +0xdf, 0xc8, 0xe9, 0x36, 0x7e, 0xc8, 0xe6, 0x87, 0x0a, 0xf6, 0x44, 0x65, +0x2a, 0xf7, 0xce, 0x7b, 0xaf, 0xa8, 0x50, 0x7a, 0x05, 0xa5, 0x72, 0xa2, +0xfe, 0x8a, 0xf2, 0xc0, 0x46, 0xe3, 0x92, 0xbf, 0x0c, 0xb8, 0xf1, 0xee, +0x8c, 0x26, 0x1d, 0x59, 0xde, 0x3a, 0x35, 0xaa, 0x6d, 0xde, 0xb8, 0x01, +0xf9, 0x07, 0x3c, 0x40, 0xcd, 0x90, 0x35, 0xc4, 0x2d, 0x05, 0xed, 0x88, +0xe7, 0x97, 0x7a, 0x8f, 0xfa, 0x41, 0x42, 0x98, 0xe5, 0xc1, 0x39, 0xaa, +0xf2, 0xaf, 0x14, 0x3b, 0x65, 0xb4, 0x87, 0x1f, 0x7e, 0x78, 0x58, 0xff, +0x7e, 0xdc, 0x25, 0x21, 0x35, 0xab, 0xd7, 0xac, 0xd5, 0x51, 0x81, 0xca, +0xed, 0xdb, 0xb4, 0x8f, 0x8a, 0xa8, 0xb6, 0x5d, 0x1e, 0x90, 0x80, 0x45, +0xf4, 0xba, 0x62, 0xb3, 0x33, 0x3d, 0x9b, 0x17, 0x31, 0x79, 0xdc, 0xd8, +0x97, 0x5e, 0x7a, 0x89, 0x75, 0x86, 0x3f, 0xc0, 0x1c, 0x04, 0x0f, 0x02, +0x06, 0x21, 0x7d, 0x29, 0x65, 0x67, 0x38, 0xc8, 0xaa, 0x37, 0x1c, 0x72, +0x02, 0x27, 0xeb, 0x85, 0x80, 0xe1, 0x1e, 0x52, 0x9f, 0xe5, 0x8e, 0xdb, +0x6e, 0x6b, 0xde, 0xb0, 0x3e, 0x8d, 0x17, 0x9c, 0x19, 0xb9, 0x7d, 0xae, +0xd8, 0x5c, 0x10, 0x55, 0xc4, 0xcd, 0x02, 0x55, 0x14, 0x15, 0xe5, 0x41, +0xeb, 0x76, 0xc6, 0x84, 0x45, 0x0c, 0xda, 0xf4, 0x40, 0x6a, 0xc3, 0xb6, +0xbc, 0x82, 0x7a, 0x79, 0x39, 0xbb, 0x76, 0xee, 0x44, 0x8d, 0x56, 0x85, +0xeb, 0x04, 0x0f, 0x86, 0x4a, 0xc0, 0x52, 0x07, 0x5e, 0x6a, 0x65, 0x7b, +0x3d, 0xcc, 0x45, 0xe3, 0x55, 0x11, 0x54, 0x6e, 0xb4, 0xee, 0xc6, 0x35, +0x75, 0xb3, 0x6b, 0x50, 0xfc, 0xb4, 0x70, 0xc4, 0xcc, 0xa8, 0xa6, 0x61, +0x7c, 0x5f, 0x26, 0x54, 0xb0, 0x55, 0xa1, 0xad, 0x95, 0xc6, 0x41, 0x45, +0x25, 0x28, 0x3b, 0x24, 0xee, 0xeb, 0x39, 0x28, 0xd6, 0xfd, 0x96, 0xee, +0x89, 0x4b, 0xcb, 0x8e, 0x77, 0x38, 0xc6, 0x8e, 0x18, 0xf1, 0xc6, 0xeb, +0xaf, 0x23, 0xa0, 0x4a, 0x26, 0x24, 0x9b, 0xba, 0xd4, 0x72, 0x34, 0x14, +0x00, 0x56, 0x30, 0x30, 0x34, 0x4e, 0x70, 0xf7, 0xab, 0x3a, 0x5f, 0x6a, +0xc8, 0xc3, 0x37, 0xc0, 0x18, 0x48, 0x63, 0x70, 0xa9, 0x86, 0xfa, 0xfe, +0xfb, 0xef, 0x8f, 0x1b, 0x35, 0x0a, 0x55, 0x23, 0x21, 0x3d, 0x7b, 0xd0, +0x9a, 0x3b, 0xa2, 0x02, 0x55, 0xe9, 0x4b, 0xb4, 0x42, 0x45, 0x19, 0x2f, +0x5e, 0x14, 0x15, 0xbe, 0x52, 0xbc, 0xd7, 0xf3, 0x91, 0x9a, 0xba, 0xcf, +0xb8, 0x96, 0x95, 0xaf, 0x9d, 0x5d, 0x63, 0xc7, 0xf6, 0xed, 0x58, 0x52, +0x95, 0xc8, 0xe4, 0x0e, 0x0f, 0x36, 0x91, 0x60, 0x79, 0x9a, 0xea, 0x37, +0x22, 0x62, 0x95, 0x60, 0x43, 0x12, 0xf1, 0x29, 0xe7, 0xbd, 0x71, 0xdd, +0xba, 0x2c, 0x57, 0x75, 0xaf, 0x84, 0x3e, 0x0b, 0x36, 0x35, 0xdd, 0xfb, +0x77, 0xaf, 0x93, 0x8f, 0x88, 0x13, 0xa2, 0xa8, 0xa8, 0xe0, 0xd7, 0x9c, +0xbf, 0xeb, 0x8b, 0x4e, 0xc3, 0x2e, 0x61, 0xd9, 0xbb, 0x15, 0x76, 0x7a, +0xe8, 0xc1, 0x07, 0x61, 0xcd, 0x98, 0x50, 0x21, 0x50, 0x58, 0x84, 0x59, +0x64, 0x32, 0x74, 0x15, 0xf1, 0x1b, 0x1b, 0x0a, 0x18, 0x7a, 0x17, 0x1e, +0x10, 0x88, 0xea, 0xc2, 0x16, 0x78, 0xee, 0xd1, 0x47, 0xdb, 0xb7, 0x68, +0xce, 0x94, 0xaa, 0xb5, 0xe8, 0x35, 0xd4, 0x65, 0x9e, 0x8a, 0x78, 0xb7, +0x86, 0x4d, 0x54, 0xf0, 0xe6, 0xa2, 0x36, 0xa8, 0x00, 0xf1, 0xe3, 0xb2, +0x35, 0xad, 0xbb, 0x27, 0xbd, 0x8e, 0x8b, 0xfe, 0xa6, 0x4e, 0x9a, 0xf8, +0xfa, 0x6b, 0xaf, 0x49, 0x9a, 0xbc, 0x54, 0x55, 0x51, 0x75, 0xe1, 0xdd, +0x35, 0xda, 0xf1, 0x1b, 0x12, 0xea, 0x42, 0x77, 0xd8, 0x40, 0xa0, 0xfa, +0xc9, 0xfb, 0xef, 0xe3, 0x20, 0x67, 0x62, 0xc9, 0xd5, 0xeb, 0x0c, 0xba, +0x21, 0xe2, 0xa5, 0xa9, 0x28, 0x2a, 0x02, 0xa4, 0x75, 0x9b, 0x97, 0xa3, +0x48, 0xf4, 0x5d, 0xb6, 0x37, 0x21, 0xb5, 0x3a, 0x8a, 0xc4, 0xaa, 0x15, +0xcb, 0x55, 0xb5, 0x46, 0x81, 0x84, 0xaa, 0xef, 0x6b, 0xd9, 0x78, 0x2a, +0x70, 0x3c, 0x18, 0x1a, 0xb8, 0xe9, 0xdd, 0xaa, 0xa4, 0x15, 0x09, 0xd3, +0x80, 0x6b, 0xed, 0x2a, 0x29, 0xa9, 0x9e, 0xec, 0x8c, 0x8d, 0x4d, 0xe8, +0x35, 0xe3, 0xda, 0x88, 0x56, 0xc1, 0xed, 0xa0, 0x82, 0xbd, 0x24, 0xca, +0x2b, 0x6c, 0x52, 0xbf, 0xe5, 0x69, 0x28, 0x12, 0x5d, 0xa7, 0x5f, 0xcd, +0x52, 0xe7, 0x56, 0xcf, 0xdc, 0xb3, 0x67, 0x37, 0x11, 0x19, 0xd8, 0x9a, +0x10, 0x5d, 0x44, 0x6a, 0x92, 0xca, 0xbe, 0x86, 0xb6, 0x3a, 0xc1, 0x45, +0x82, 0xbb, 0xce, 0x86, 0x4a, 0xa0, 0x12, 0xf3, 0x14, 0xba, 0xfe, 0xb3, +0xcf, 0x3c, 0xdd, 0xb1, 0x55, 0x4b, 0xa6, 0xda, 0xa1, 0xff, 0xe8, 0xc8, +0x55, 0x33, 0x6c, 0xda, 0xa0, 0xa2, 0xa8, 0xf0, 0x1b, 0x15, 0xf9, 0x3b, +0xbf, 0xe8, 0x38, 0xdc, 0xa5, 0x48, 0xb4, 0x6b, 0xd5, 0xea, 0xec, 0x83, +0x0f, 0x4a, 0x6f, 0x04, 0x03, 0x24, 0x2a, 0x80, 0x45, 0x98, 0x61, 0x26, +0x02, 0x95, 0x00, 0x43, 0x57, 0xc1, 0xa9, 0xf5, 0x82, 0x34, 0x15, 0x17, +0xe3, 0x48, 0xa8, 0x5e, 0x7b, 0xf0, 0xda, 0x53, 0x91, 0xe8, 0x05, 0xb7, +0x8f, 0x0a, 0x5e, 0x67, 0xd4, 0xb7, 0xed, 0x2b, 0x36, 0xd0, 0xad, 0xdb, +0xf5, 0x1d, 0xc1, 0xba, 0x8d, 0x1d, 0x39, 0x52, 0x14, 0x09, 0x29, 0xfe, +0x2e, 0x65, 0xae, 0xe1, 0x12, 0x15, 0xc9, 0x22, 0xdc, 0x59, 0xa8, 0xa4, +0x13, 0x83, 0x94, 0x9d, 0x57, 0x2a, 0x78, 0xc9, 0x8e, 0x1d, 0x19, 0x49, +0xce, 0xf8, 0x94, 0xea, 0x83, 0xd7, 0xdd, 0x13, 0x71, 0xd2, 0x94, 0x1b, +0x54, 0xd0, 0xa6, 0xf9, 0x62, 0xde, 0xb6, 0x58, 0x66, 0xe1, 0x15, 0x51, +0x54, 0xf8, 0x04, 0x89, 0x0b, 0x4e, 0xba, 0x07, 0x93, 0x73, 0x1b, 0xe3, +0x29, 0x5b, 0xbc, 0x70, 0xa1, 0x2a, 0x41, 0xa7, 0xb7, 0x96, 0x52, 0x3d, +0xd7, 0x82, 0x65, 0x6b, 0xf2, 0x4f, 0xee, 0xd2, 0x7b, 0x59, 0xc1, 0x34, +0x94, 0x34, 0x75, 0xf4, 0xf0, 0xe1, 0xcc, 0xc4, 0x78, 0xc2, 0x43, 0x06, +0xaf, 0x3b, 0xdd, 0x74, 0x6f, 0x24, 0x19, 0xa6, 0xbc, 0xa2, 0x82, 0x1a, +0x38, 0xa2, 0x57, 0x44, 0x51, 0x61, 0x1f, 0x15, 0x2e, 0x48, 0x6c, 0x78, +0x20, 0x25, 0x2f, 0x1f, 0x48, 0xac, 0x5e, 0xb5, 0x8a, 0xb0, 0x6f, 0x42, +0x2d, 0x44, 0x6a, 0x32, 0xeb, 0xd6, 0xfe, 0x91, 0x72, 0x70, 0xaf, 0x32, +0x77, 0xc7, 0x95, 0xd6, 0x87, 0xb7, 0x1f, 0x3d, 0x9a, 0x99, 0x10, 0x9b, +0x98, 0x9e, 0x3d, 0x64, 0xdd, 0xe9, 0x08, 0xb2, 0xd8, 0x6a, 0xa8, 0xa0, +0xef, 0x11, 0x3b, 0x9a, 0xf8, 0xb6, 0x4b, 0x79, 0x45, 0x14, 0x15, 0xf6, +0xc1, 0x20, 0x67, 0x36, 0x72, 0x41, 0xe2, 0xbe, 0xe4, 0xbc, 0x7c, 0xcc, +0x4d, 0xab, 0xaf, 0xb9, 0x86, 0x2c, 0x08, 0xd1, 0xad, 0x61, 0xb9, 0xe2, +0x91, 0xa8, 0x60, 0xdd, 0xda, 0x26, 0x7e, 0x0c, 0xc0, 0x50, 0x9e, 0xbe, +0x13, 0xb7, 0xdf, 0x9e, 0x91, 0x18, 0x87, 0xff, 0x7b, 0xc8, 0x4d, 0xf7, +0x44, 0x0a, 0x30, 0xa2, 0xbc, 0xc2, 0x57, 0xa2, 0xf7, 0x7c, 0x3e, 0x90, +0x18, 0xb8, 0xfe, 0x8c, 0x33, 0xa7, 0x51, 0x62, 0x6c, 0xcc, 0xea, 0x6b, +0xaf, 0xc5, 0xdc, 0xa4, 0xb8, 0x84, 0x32, 0x37, 0x55, 0x8a, 0x6e, 0x6d, +0x07, 0x1b, 0xba, 0x43, 0x43, 0xfa, 0xa9, 0x4b, 0x78, 0xc8, 0x89, 0xe3, +0xb7, 0x57, 0x4b, 0x4e, 0x8a, 0x4b, 0xcd, 0xba, 0xc0, 0x31, 0x22, 0x20, +0x04, 0x3d, 0x8a, 0x8a, 0x20, 0xa2, 0x02, 0xc1, 0x49, 0x20, 0xe1, 0x04, +0x12, 0xd7, 0x5c, 0x23, 0x90, 0x90, 0xd0, 0x26, 0x03, 0x24, 0xec, 0xd0, +0x68, 0x65, 0x9d, 0x23, 0x4c, 0x43, 0x3a, 0x21, 0x0a, 0x30, 0x70, 0xbd, +0xdf, 0x7e, 0xec, 0x58, 0x46, 0x6a, 0x4a, 0x42, 0xf5, 0xba, 0xc3, 0xb6, +0x3d, 0x1e, 0xc4, 0x15, 0xab, 0xa2, 0x43, 0xd9, 0x44, 0x05, 0xc6, 0x44, +0xde, 0x71, 0xd4, 0x06, 0xe5, 0xf9, 0x2d, 0x0e, 0x5a, 0x7f, 0x26, 0x39, +0xa7, 0x21, 0xf1, 0x76, 0xc2, 0x25, 0x54, 0xdf, 0x83, 0x10, 0x82, 0x84, +0x40, 0xd1, 0xd0, 0x4b, 0x5a, 0x38, 0xc6, 0xce, 0xed, 0xdb, 0x9d, 0x09, +0xf1, 0x29, 0xb5, 0x9a, 0x35, 0xdb, 0x17, 0xee, 0xe1, 0x52, 0x36, 0xf5, +0x8a, 0x28, 0x2a, 0xbc, 0xee, 0x6a, 0xf8, 0x25, 0x92, 0x72, 0x1a, 0xa2, +0x4b, 0x5c, 0x7f, 0xed, 0xb5, 0xd2, 0x97, 0x36, 0xe4, 0xb8, 0x84, 0xd9, +0x05, 0x2e, 0x1c, 0x43, 0x74, 0x0c, 0x1e, 0xe7, 0xc6, 0xd5, 0xab, 0x49, +0xcc, 0x28, 0xec, 0x3f, 0x36, 0xcc, 0x1d, 0x7c, 0x51, 0x54, 0x78, 0x25, +0x77, 0x3b, 0x27, 0x10, 0xd0, 0xd1, 0xbe, 0xff, 0x58, 0x2c, 0x4e, 0x37, +0xac, 0xbe, 0x8e, 0x4a, 0x03, 0x66, 0xd7, 0xb5, 0xe8, 0x12, 0x95, 0x25, +0x14, 0xf9, 0x77, 0x5f, 0x5d, 0x94, 0x02, 0x18, 0xc8, 0x81, 0xd8, 0x0c, +0x16, 0x2e, 0x58, 0xe0, 0x0a, 0x6d, 0x1c, 0x3d, 0x2b, 0x9c, 0x81, 0x11, +0x45, 0x85, 0x1d, 0xa2, 0xf7, 0x7c, 0x0e, 0xea, 0x44, 0x97, 0x49, 0x57, +0xb1, 0x92, 0xf3, 0x67, 0xcf, 0x96, 0x8a, 0x5a, 0x12, 0xf3, 0xa7, 0x2c, +0x4e, 0xa1, 0x08, 0x09, 0x5d, 0x94, 0x52, 0xdd, 0xd6, 0x79, 0xa8, 0xdf, +0xfc, 0xfa, 0xd7, 0x93, 0xc6, 0x8f, 0xe7, 0x61, 0x7b, 0xcd, 0x58, 0x15, +0xb6, 0x26, 0x29, 0x3b, 0xa8, 0x40, 0xd9, 0x0a, 0x03, 0x09, 0xaa, 0xc6, +0xf6, 0xaf, 0x5a, 0x95, 0xfc, 0x8e, 0x0a, 0x4b, 0x9d, 0xa7, 0x2e, 0xaf, +0x53, 0x38, 0xb8, 0x76, 0xe1, 0x90, 0x4e, 0x13, 0xae, 0x1c, 0x7a, 0xc3, +0xed, 0xd0, 0x74, 0x80, 0xc0, 0xe8, 0xb3, 0x64, 0x8f, 0x8b, 0x4a, 0xba, +0x75, 0x7d, 0xf7, 0x9d, 0x77, 0xc5, 0x7b, 0x2d, 0x31, 0x7f, 0x12, 0xe0, +0x54, 0x65, 0x2d, 0x4e, 0x76, 0x18, 0x88, 0x21, 0x2a, 0x44, 0x14, 0x0c, +0x8a, 0xd7, 0xf7, 0xbb, 0xd0, 0x0b, 0xae, 0xef, 0x15, 0xb7, 0x84, 0x67, +0xa5, 0xa9, 0x48, 0x40, 0x85, 0xcb, 0x81, 0xb0, 0x72, 0x6f, 0x9d, 0xd6, +0xbc, 0xc8, 0xb8, 0xf8, 0x18, 0x47, 0xb5, 0x94, 0xe4, 0x5a, 0xd9, 0x35, +0xf8, 0xa9, 0x9e, 0x96, 0x8a, 0xcc, 0x13, 0x9f, 0x5a, 0xbd, 0xcf, 0xb2, +0x3d, 0x7e, 0x63, 0x03, 0xd9, 0x29, 0x3e, 0x23, 0xb7, 0x56, 0x4e, 0xce, +0x7d, 0x67, 0xce, 0x10, 0x6c, 0x2f, 0x01, 0x1d, 0xe2, 0xaa, 0x13, 0xbf, +0x84, 0x10, 0x96, 0x1d, 0x12, 0xac, 0x9a, 0xe7, 0x18, 0x34, 0x6f, 0x49, +0x57, 0x7a, 0xed, 0xd5, 0x57, 0xdb, 0x36, 0x6f, 0x06, 0xf1, 0x0c, 0x5c, +0x73, 0x47, 0x80, 0x7b, 0x4a, 0x55, 0xbc, 0x3c, 0xec, 0x51, 0x01, 0xb9, +0x77, 0x9f, 0x75, 0x43, 0x8c, 0x23, 0xa6, 0x6e, 0x4e, 0xd6, 0xb0, 0x41, +0x83, 0xae, 0x5d, 0xb5, 0xea, 0xf0, 0xa1, 0x43, 0x8f, 0x3f, 0xf6, 0xd8, +0x63, 0xe7, 0xce, 0x9d, 0x38, 0x7e, 0x9c, 0x58, 0x8c, 0x3a, 0x79, 0x79, +0x14, 0xe7, 0x2b, 0xba, 0xfa, 0x90, 0x1f, 0xaf, 0x87, 0xc1, 0xdb, 0xf5, +0x1b, 0x95, 0x10, 0x1f, 0xbf, 0x71, 0xfd, 0x7a, 0xd5, 0x3d, 0x8d, 0x0d, +0x55, 0x20, 0x11, 0xd2, 0x5c, 0xc2, 0xa0, 0x79, 0x4b, 0x1c, 0xa1, 0xc4, +0x4a, 0x49, 0xef, 0xab, 0x47, 0x1e, 0x7e, 0x38, 0x2f, 0x3b, 0xdb, 0x99, +0xd7, 0x24, 0x0c, 0x3d, 0x18, 0x26, 0x54, 0xb0, 0xdf, 0x19, 0x7d, 0xdb, +0xa1, 0x2c, 0x41, 0x9d, 0xef, 0xb3, 0xb8, 0xc4, 0x11, 0x97, 0xd0, 0xb1, +0x6d, 0x9b, 0x87, 0xce, 0x9e, 0xc5, 0x75, 0x8f, 0xc1, 0x94, 0x27, 0x44, +0xce, 0xe1, 0xc0, 0x8d, 0x8f, 0xb1, 0xe8, 0xae, 0x93, 0x27, 0x6b, 0x54, +0xaf, 0x16, 0xeb, 0x4c, 0x27, 0x92, 0xcf, 0x27, 0x60, 0xc0, 0x82, 0xba, +0x4d, 0x5d, 0xce, 0x02, 0x4e, 0x99, 0x38, 0x11, 0x75, 0x42, 0x8c, 0x4e, +0x92, 0x62, 0x0a, 0xf5, 0x84, 0x01, 0x97, 0xb0, 0xcc, 0xca, 0x10, 0x93, +0x94, 0x94, 0xd2, 0xb9, 0x74, 0xea, 0x54, 0x1e, 0x7f, 0xcc, 0x2d, 0x0f, +0xf8, 0xb4, 0x6e, 0x21, 0x70, 0xb2, 0x4d, 0x54, 0xf0, 0xca, 0x21, 0xa0, +0x90, 0xf3, 0x57, 0x60, 0x2d, 0x4d, 0xc9, 0x69, 0x50, 0xb3, 0x5a, 0x3a, +0x65, 0xc2, 0x28, 0x41, 0x29, 0xe9, 0xa0, 0xec, 0x73, 0xe0, 0x5c, 0x2a, +0x88, 0xa1, 0x2f, 0xf1, 0x25, 0x1e, 0x37, 0x2c, 0xaa, 0x5d, 0xa7, 0x2e, +0x41, 0x1c, 0xb2, 0xff, 0xce, 0xa8, 0x04, 0x1e, 0x9f, 0x9c, 0xd1, 0x3c, +0xbf, 0xd1, 0x9b, 0x6f, 0xbe, 0x29, 0x7b, 0x09, 0x56, 0x1a, 0x05, 0x89, +0xd0, 0xd5, 0xb0, 0x3d, 0x94, 0x47, 0x10, 0xef, 0x1e, 0x9c, 0x50, 0x5c, +0x7b, 0x6c, 0x28, 0xd5, 0xd3, 0xd3, 0x0a, 0x8a, 0xa6, 0xe4, 0xee, 0x0c, +0xaf, 0xd6, 0xa1, 0xf6, 0x51, 0x11, 0x82, 0x5e, 0xbc, 0xf3, 0xc3, 0xae, +0xde, 0xcb, 0x03, 0xae, 0xb9, 0xee, 0x3a, 0xf6, 0x72, 0x3d, 0x43, 0x9a, +0x97, 0x8a, 0x18, 0x20, 0x79, 0x36, 0xe0, 0xe4, 0x17, 0xbf, 0xfc, 0x65, +0xbb, 0x16, 0x2d, 0x62, 0xe3, 0x93, 0x46, 0x17, 0x3f, 0x6a, 0x13, 0x15, +0xe0, 0x27, 0xbd, 0x5e, 0x6b, 0xb0, 0x44, 0x1d, 0x5e, 0xf6, 0x0b, 0xd0, +0x25, 0xea, 0x84, 0xae, 0x61, 0x57, 0x4d, 0x3d, 0x21, 0x90, 0x59, 0x29, +0x39, 0x4a, 0x0c, 0xb5, 0xb0, 0x8b, 0xae, 0x1d, 0xda, 0xc7, 0x26, 0xa6, +0x76, 0xd8, 0x1f, 0xa8, 0xc5, 0xc2, 0xe6, 0xb2, 0x57, 0xd0, 0x69, 0x61, +0x8d, 0x8a, 0xff, 0xf6, 0x9a, 0x7c, 0x45, 0x7a, 0x8c, 0xe3, 0x47, 0xcf, +0x3d, 0xa7, 0x9a, 0xc3, 0x82, 0x07, 0x31, 0x98, 0x4a, 0x69, 0x3d, 0xd1, +0x1d, 0x71, 0x2f, 0x6c, 0xda, 0xb0, 0x3e, 0x29, 0xd1, 0xd9, 0xeb, 0xf2, +0x4d, 0x76, 0xd6, 0xdd, 0xa5, 0xab, 0xcc, 0x5c, 0xcd, 0xd2, 0x5d, 0x31, +0x7f, 0x3e, 0xb9, 0xa6, 0xe2, 0x9d, 0x30, 0xa8, 0x13, 0x81, 0x10, 0x5f, +0x95, 0xbd, 0x56, 0x69, 0xde, 0x12, 0x70, 0xce, 0x9e, 0xb2, 0x7e, 0xed, +0x8d, 0x49, 0xce, 0xa4, 0x81, 0xab, 0x0e, 0xdb, 0x59, 0xb7, 0x90, 0x39, +0xc7, 0x0a, 0x15, 0x6c, 0x01, 0x65, 0x62, 0x66, 0xa1, 0x9b, 0x10, 0x95, +0xa0, 0x5a, 0xf7, 0x18, 0xdc, 0xa5, 0x6d, 0xab, 0x77, 0xdf, 0x79, 0xc7, +0xe0, 0x43, 0x50, 0x75, 0xf5, 0x24, 0x97, 0x00, 0x76, 0xf1, 0xf4, 0x53, +0x4f, 0xa5, 0x27, 0x27, 0x35, 0xec, 0x39, 0x36, 0xa3, 0xf8, 0x5f, 0x5e, +0x5f, 0x5e, 0xd1, 0x35, 0xc7, 0x28, 0x15, 0xd3, 0xae, 0x75, 0x4b, 0x4c, +0x31, 0x12, 0x63, 0x8c, 0x9c, 0xad, 0xab, 0x13, 0x55, 0x96, 0xac, 0x03, +0x9f, 0x98, 0x00, 0x43, 0xd4, 0x6e, 0x96, 0x6e, 0xdf, 0xee, 0xdd, 0x89, +0x09, 0x89, 0x79, 0x7d, 0xa6, 0x37, 0xdb, 0xf7, 0x0f, 0xaf, 0xeb, 0x16, +0x32, 0x27, 0xd8, 0xe7, 0x15, 0x95, 0xa8, 0x57, 0xb0, 0x37, 0x0f, 0xbf, +0xe1, 0xb6, 0x3e, 0xf3, 0xd7, 0xb7, 0x1c, 0x38, 0x35, 0xaf, 0xe3, 0x90, +0xf4, 0x96, 0xfd, 0x72, 0xdb, 0x0f, 0x6c, 0x33, 0x62, 0xee, 0x80, 0x15, +0x7b, 0x47, 0x6f, 0x39, 0xeb, 0xc1, 0xa8, 0xda, 0xa0, 0x75, 0xd7, 0xbe, +0x5d, 0x3a, 0x11, 0x22, 0x2f, 0x5d, 0xc4, 0xe1, 0x0c, 0xaa, 0x6e, 0x80, +0xca, 0xcc, 0x64, 0x8f, 0x67, 0xa7, 0x87, 0x99, 0xe4, 0x66, 0xa6, 0xa7, +0xd6, 0x6c, 0xe2, 0x55, 0xe7, 0xe6, 0x76, 0x49, 0x75, 0x9a, 0x3b, 0x63, +0x1d, 0xb7, 0x1d, 0x3b, 0x26, 0xa6, 0x58, 0xb3, 0x77, 0x22, 0x70, 0xe2, +0xab, 0xb2, 0x23, 0xe8, 0x0e, 0x6f, 0xf6, 0x94, 0xdb, 0x6f, 0xbb, 0xad, +0xa0, 0x41, 0x03, 0x97, 0xef, 0x62, 0xfe, 0x3a, 0xc7, 0x96, 0xf3, 0x21, +0x43, 0xf7, 0x9e, 0xcb, 0x92, 0x57, 0x71, 0x54, 0x34, 0xdc, 0xfe, 0xa7, +0xa2, 0x1b, 0x4e, 0x12, 0x91, 0xc6, 0x3c, 0xe3, 0x1c, 0x8e, 0xba, 0x59, +0x19, 0x0d, 0x72, 0xaa, 0xd7, 0xcf, 0xae, 0xde, 0x28, 0xb7, 0x46, 0xb5, +0x24, 0xe7, 0x85, 0xc9, 0x27, 0x64, 0x36, 0xed, 0xda, 0x7f, 0xed, 0xa9, +0xc6, 0x25, 0x16, 0x8a, 0x72, 0x56, 0x41, 0x97, 0xb6, 0x4d, 0x1a, 0x52, +0x24, 0x4f, 0xdc, 0x08, 0x22, 0xe4, 0x88, 0x81, 0x48, 0x0e, 0xb1, 0xa8, +0x20, 0x09, 0x20, 0x05, 0x15, 0xf5, 0xec, 0xee, 0xcc, 0xc8, 0x69, 0xb7, +0xeb, 0x53, 0xcf, 0xaf, 0xb6, 0xfb, 0xec, 0x35, 0xdc, 0x75, 0xee, 0x65, +0x97, 0xa1, 0xbe, 0x0b, 0xd8, 0x0c, 0xde, 0x89, 0x2a, 0x4b, 0xd0, 0xc1, +0x9a, 0x98, 0xc1, 0x4a, 0x4b, 0xed, 0xf4, 0xcc, 0x78, 0x47, 0x66, 0xb3, +0x1e, 0xe1, 0xc3, 0x2e, 0xaa, 0x38, 0x2a, 0xfa, 0x5c, 0x7d, 0x30, 0x3e, +0x2d, 0x2b, 0x39, 0x3e, 0x6e, 0xc1, 0x9c, 0xcb, 0xee, 0xb8, 0xe3, 0x8e, +0x47, 0x1f, 0x7d, 0x14, 0x57, 0x03, 0xaf, 0x81, 0x9f, 0xfb, 0xef, 0xbf, +0x7f, 0xdb, 0x2d, 0xb7, 0x4c, 0x1c, 0x3d, 0x92, 0x78, 0xb5, 0xe4, 0xea, +0xb5, 0x8b, 0xae, 0x3b, 0x66, 0x6e, 0x06, 0x97, 0xd7, 0x69, 0x48, 0xad, +0x8c, 0xe4, 0xb7, 0xde, 0x7a, 0x4b, 0x95, 0x5d, 0x52, 0xda, 0xb0, 0x94, +0x61, 0x15, 0x49, 0x00, 0xc0, 0x40, 0xdf, 0x37, 0x5c, 0x77, 0x6d, 0x7c, +0x6c, 0xfc, 0x10, 0x14, 0x74, 0xf7, 0x1b, 0x49, 0xa3, 0x1d, 0x7f, 0x8e, +0xab, 0x56, 0xa7, 0x49, 0xa3, 0x86, 0x2f, 0x3c, 0xff, 0x3c, 0x8c, 0x02, +0x26, 0xa3, 0xf3, 0x9f, 0xf0, 0xb3, 0x3b, 0x79, 0x4e, 0xf5, 0x16, 0xed, +0x02, 0xe9, 0x7a, 0x68, 0xbf, 0xde, 0xce, 0xac, 0x7a, 0x93, 0x0f, 0xbc, +0x1c, 0x7e, 0xbc, 0xe2, 0x27, 0x3f, 0xf9, 0x09, 0xaa, 0xa3, 0xb5, 0xbf, +0xa2, 0x52, 0xf4, 0x0a, 0x48, 0x30, 0xb9, 0x5e, 0x2b, 0x6c, 0x7f, 0xc5, +0x5b, 0xb7, 0xfe, 0xec, 0x67, 0x3f, 0xc3, 0x8e, 0x24, 0x4d, 0x7d, 0xc4, +0xd5, 0xc0, 0x67, 0x76, 0x6b, 0xa2, 0x0f, 0x6e, 0xb9, 0x79, 0x53, 0x7a, +0x7c, 0x4c, 0xbc, 0x33, 0xad, 0xef, 0xd2, 0xbd, 0x65, 0x2b, 0x6c, 0x9f, +0x6f, 0x3f, 0x6e, 0x21, 0xb0, 0x7f, 0xe5, 0xe5, 0x97, 0xcd, 0xe1, 0xab, +0x82, 0x0a, 0xb1, 0x33, 0x8a, 0xf5, 0xfd, 0xa9, 0x27, 0x9f, 0xe4, 0xe4, +0xa6, 0xfd, 0x26, 0x64, 0xbb, 0xef, 0x25, 0x37, 0x62, 0xf3, 0x59, 0xce, +0x19, 0x3d, 0x62, 0x84, 0x54, 0x4a, 0x8e, 0x04, 0xbb, 0x93, 0x3b, 0x60, +0x28, 0xa7, 0x1e, 0xda, 0xc5, 0xfa, 0x35, 0xd7, 0xb3, 0x2c, 0x83, 0xaf, +0x3f, 0x5e, 0x6d, 0xc7, 0xb7, 0xe1, 0x00, 0x0c, 0x3b, 0xbc, 0x02, 0x92, +0xaa, 0x14, 0x54, 0x8c, 0x58, 0x7f, 0x8f, 0x90, 0x20, 0xa4, 0x4f, 0xcf, +0x2b, 0x31, 0xad, 0x4a, 0x83, 0x1f, 0x69, 0xe7, 0xc3, 0xac, 0x00, 0x09, +0x7f, 0x22, 0x8b, 0xb2, 0x76, 0x76, 0x96, 0x23, 0x3e, 0x79, 0xc0, 0xb5, +0xc7, 0xb4, 0x58, 0xce, 0xf3, 0xfd, 0xaf, 0x2a, 0x66, 0x84, 0x53, 0x77, +0xdd, 0x29, 0x4a, 0x05, 0xc2, 0x92, 0x88, 0x4f, 0x02, 0x09, 0x95, 0x5b, +0xc3, 0x9f, 0x18, 0xf0, 0xe3, 0x8f, 0x3e, 0x6a, 0x54, 0x33, 0x27, 0xb5, +0x6e, 0x2b, 0x1a, 0x70, 0x59, 0xbe, 0xda, 0xf4, 0x6d, 0xdf, 0x74, 0x9d, +0xb1, 0x3a, 0x39, 0x21, 0x61, 0xc3, 0x4d, 0x37, 0xa1, 0x87, 0x30, 0x19, +0x29, 0xd5, 0xa1, 0x7c, 0x76, 0xc1, 0x12, 0x51, 0xaa, 0xfe, 0x38, 0xba, +0x76, 0x81, 0x5c, 0xfa, 0xe4, 0xe3, 0x8f, 0xb3, 0xce, 0x2d, 0xc6, 0x2e, +0x69, 0xba, 0x37, 0x2c, 0x74, 0x6e, 0x3b, 0x36, 0xa8, 0xca, 0x42, 0x45, +0xcf, 0x59, 0xd7, 0xa7, 0x27, 0x25, 0x6d, 0xdf, 0xb6, 0x8d, 0x0a, 0x45, +0x52, 0x46, 0x89, 0x99, 0xb0, 0x3d, 0x4b, 0x23, 0x1f, 0x3e, 0x48, 0x23, +0x1f, 0xf6, 0x6c, 0xfe, 0x7a, 0xfa, 0xd4, 0xa9, 0x9c, 0x6a, 0x99, 0x8e, +0xc4, 0xf4, 0xa1, 0x1b, 0xce, 0x34, 0x3f, 0xf0, 0xb5, 0x90, 0xf5, 0xd8, +0x0d, 0xa7, 0x78, 0xc0, 0x4d, 0x37, 0xad, 0xd5, 0x2b, 0x6b, 0x28, 0xaf, +0xb3, 0xc8, 0xc7, 0xc8, 0x54, 0xbc, 0x57, 0x86, 0x02, 0x5d, 0xd3, 0x27, +0x8e, 0xc7, 0xc9, 0x3d, 0x7a, 0xf3, 0x7d, 0x96, 0xa8, 0x80, 0x77, 0xd5, +0x6c, 0xd5, 0xa3, 0x66, 0x76, 0x8d, 0x67, 0x9e, 0x7e, 0x5a, 0x58, 0xaa, +0x28, 0x2a, 0x02, 0xb3, 0xaa, 0x4f, 0xca, 0xc1, 0x9d, 0xa1, 0xee, 0xbb, +0xa0, 0x20, 0x67, 0xdd, 0xcc, 0x94, 0xcc, 0x96, 0x45, 0x1d, 0xf7, 0xff, +0x29, 0x5c, 0x79, 0x85, 0xd1, 0x32, 0x2b, 0xca, 0x28, 0xe2, 0x4a, 0x05, +0xfb, 0xb6, 0x5b, 0x14, 0x8d, 0xcf, 0xad, 0x56, 0x8d, 0x12, 0xc5, 0x22, +0xae, 0xa8, 0x1a, 0x19, 0xe2, 0x6a, 0x90, 0xa2, 0xf3, 0x20, 0x04, 0x3e, +0x20, 0x7c, 0xe3, 0xe4, 0x1d, 0x77, 0x54, 0xcb, 0x48, 0x8f, 0x4b, 0xcb, +0x19, 0xb5, 0xfd, 0xa9, 0x96, 0x87, 0x5c, 0xde, 0xd6, 0x19, 0xb7, 0xbf, +0x93, 0x54, 0xa3, 0x7e, 0xbf, 0x6e, 0x5d, 0xd8, 0xd7, 0xcd, 0xb1, 0x18, +0x3a, 0x2a, 0x18, 0x04, 0xc1, 0xac, 0xa4, 0x78, 0x1b, 0xcf, 0x38, 0x60, +0x69, 0x89, 0xa5, 0x39, 0xa5, 0xf5, 0xf6, 0x5f, 0xc5, 0x25, 0xa6, 0x76, +0x6e, 0xdf, 0x0e, 0x94, 0x72, 0x32, 0xcb, 0x22, 0x6e, 0xbb, 0x08, 0x51, +0x27, 0xcc, 0xa0, 0x92, 0xca, 0x9c, 0xbc, 0x0e, 0x56, 0x63, 0xf4, 0xe0, +0x01, 0x31, 0xe9, 0x35, 0x27, 0xed, 0x7f, 0x31, 0xcc, 0x50, 0xa1, 0xf4, +0x8a, 0xaa, 0x82, 0x8a, 0xec, 0x26, 0x9d, 0x6a, 0xe7, 0x64, 0xd3, 0xfe, +0x47, 0x59, 0x7b, 0x54, 0x21, 0x7b, 0xe9, 0xfd, 0xa3, 0x3c, 0x71, 0xb0, +0x0e, 0x68, 0x94, 0xcd, 0x9b, 0xc8, 0xbf, 0x14, 0xbc, 0x4a, 0xd9, 0x0d, +0xc6, 0xec, 0x7b, 0x09, 0xca, 0x6e, 0x75, 0xeb, 0xb7, 0xd9, 0xed, 0x07, +0xa7, 0xc6, 0x38, 0x7e, 0xf9, 0x8b, 0x5f, 0x18, 0xb2, 0x1d, 0x54, 0x8c, +0x34, 0xf2, 0x0f, 0xc4, 0x2d, 0x7d, 0x80, 0x88, 0x7b, 0x05, 0x15, 0x9d, +0xa7, 0x5f, 0x63, 0x89, 0x8a, 0x61, 0xd7, 0xdf, 0x96, 0x98, 0x98, 0x74, +0xf9, 0xbc, 0xb9, 0x34, 0x32, 0x05, 0xa5, 0x00, 0x49, 0x44, 0xb2, 0x88, +0x45, 0x85, 0x6c, 0x2b, 0x12, 0x00, 0xb2, 0xe1, 0xa6, 0xb5, 0x2c, 0xdd, +0xf0, 0x75, 0xa7, 0xa2, 0xa8, 0x70, 0xdf, 0x6f, 0xcf, 0x6b, 0x9b, 0x4a, +0x1b, 0x27, 0x64, 0x17, 0x14, 0xd6, 0xce, 0xce, 0x7e, 0xf9, 0xa5, 0x97, +0x70, 0x95, 0x88, 0x5b, 0x40, 0x12, 0xa0, 0x95, 0x5d, 0x55, 0xb2, 0x61, +0x54, 0xb3, 0x12, 0x91, 0xac, 0xf0, 0x2b, 0x61, 0xc3, 0x4d, 0xaf, 0x55, +0x30, 0xee, 0xd0, 0x6b, 0x10, 0x77, 0xc3, 0x49, 0xab, 0xe3, 0x1c, 0x31, +0xc7, 0x8f, 0x1d, 0x95, 0x5a, 0x7d, 0x7a, 0x28, 0xab, 0x2e, 0x03, 0x70, +0x21, 0x12, 0x1a, 0xa2, 0x11, 0x41, 0x1c, 0xf5, 0xfb, 0x4d, 0x4d, 0x2d, +0xfe, 0xce, 0xfc, 0x76, 0x7b, 0x5d, 0x76, 0x43, 0x72, 0x42, 0xe2, 0xf6, +0xe2, 0x62, 0xa2, 0x0c, 0x81, 0x10, 0xa8, 0x10, 0xa5, 0x22, 0x92, 0x51, +0xc1, 0xb3, 0xb3, 0xaa, 0x2e, 0xc7, 0xc5, 0x31, 0x3c, 0x9b, 0x8e, 0x5e, +0x4b, 0xf7, 0xa6, 0x16, 0x7f, 0x1f, 0xf2, 0xc0, 0xd0, 0x84, 0xa2, 0x2a, +0xc7, 0x2b, 0x5a, 0x0d, 0x9c, 0x96, 0x9d, 0x99, 0x79, 0xe6, 0xde, 0x7b, +0x15, 0x2a, 0xf4, 0xd8, 0x3b, 0x61, 0xdf, 0x52, 0x0a, 0x52, 0xf1, 0x0d, +0x5e, 0x0f, 0x1a, 0xf0, 0xb6, 0x2d, 0x5b, 0x78, 0xae, 0xb4, 0x3a, 0xcd, +0x78, 0x3d, 0x6d, 0x6f, 0x7e, 0xc1, 0x99, 0x52, 0x7d, 0xcc, 0xb0, 0x21, +0xe6, 0xba, 0xdf, 0x4a, 0x65, 0x14, 0x37, 0x2d, 0xc0, 0xc3, 0x57, 0x5d, +0x37, 0x2b, 0x3d, 0xa3, 0x79, 0x9f, 0xfa, 0xbb, 0xbf, 0x32, 0xbf, 0xda, +0xd6, 0x03, 0xa7, 0xa4, 0x26, 0xc4, 0x3d, 0xfc, 0xd0, 0x43, 0x48, 0x74, +0x12, 0xf8, 0xa4, 0x47, 0x8c, 0x07, 0x57, 0x6a, 0x0f, 0x89, 0xd1, 0x64, +0x01, 0xc5, 0xe7, 0x43, 0xdd, 0x30, 0xd6, 0xbc, 0xe5, 0x9c, 0xad, 0xf5, +0x77, 0x5d, 0x54, 0xea, 0x42, 0x18, 0x1b, 0x55, 0x19, 0x15, 0xbd, 0x66, +0x5d, 0x9f, 0x91, 0x9c, 0xbc, 0x7b, 0x67, 0x89, 0xa0, 0x02, 0xc2, 0x35, +0x53, 0xb6, 0x01, 0x1b, 0x12, 0xe0, 0x04, 0x36, 0x36, 0xaf, 0x5f, 0xc7, +0xa3, 0x25, 0xd7, 0x2a, 0xe8, 0xb0, 0xed, 0xf5, 0x6a, 0x2d, 0xfb, 0xd4, +0xce, 0xaa, 0xfe, 0xa7, 0x3f, 0xfe, 0xd1, 0xc0, 0x28, 0x14, 0x2a, 0x44, +0x06, 0x40, 0x6f, 0xf9, 0xe0, 0x27, 0x3f, 0xe9, 0xd4, 0xa2, 0x69, 0x52, +0x9d, 0xd6, 0xad, 0xf7, 0xff, 0xd5, 0xf4, 0x52, 0xcf, 0xe7, 0x36, 0xef, +0x9c, 0x16, 0x1f, 0xfb, 0xd6, 0x9b, 0x6f, 0x22, 0xd1, 0xa1, 0xa8, 0xc0, +0x5e, 0xa2, 0xa8, 0x10, 0x9f, 0x0f, 0xa8, 0x38, 0x7d, 0x8f, 0xcb, 0x60, +0x98, 0xd7, 0xe7, 0xd2, 0x56, 0x7b, 0x7d, 0x88, 0x3b, 0xae, 0xa2, 0xc8, +0xa9, 0xca, 0xa8, 0x18, 0xb9, 0xc1, 0xb5, 0xd0, 0x93, 0x2f, 0x64, 0x2f, +0xc8, 0xde, 0xac, 0x24, 0x28, 0x95, 0xd0, 0x23, 0x94, 0xad, 0xb0, 0xa1, +0x58, 0x07, 0x1b, 0x58, 0xc9, 0xb6, 0x6d, 0x88, 0x52, 0x49, 0xb5, 0x5b, +0xe4, 0x76, 0x9b, 0x90, 0x91, 0x96, 0x7e, 0xcf, 0xdd, 0x77, 0xab, 0xab, +0xd4, 0x4e, 0x2c, 0x17, 0x8a, 0x0c, 0x80, 0x44, 0x84, 0x57, 0xa4, 0x5f, +0xd7, 0xc2, 0x84, 0x9c, 0xfc, 0xc2, 0x03, 0x7f, 0x36, 0xa3, 0xa2, 0x56, +0xa7, 0xc1, 0x69, 0x09, 0xf1, 0x4f, 0x3f, 0xf9, 0xa4, 0x8e, 0x52, 0xee, +0x18, 0xd2, 0xa9, 0x76, 0x81, 0x30, 0x25, 0x15, 0x13, 0xc5, 0x7b, 0xf9, +0xf9, 0xcf, 0x7e, 0xd6, 0xbb, 0x4b, 0xa1, 0xc3, 0x99, 0xd9, 0x61, 0x8f, +0xb5, 0x5d, 0xbb, 0x8a, 0x02, 0xc0, 0x52, 0x92, 0xaf, 0xca, 0xa8, 0x20, +0xe2, 0x28, 0xbe, 0x46, 0xfd, 0x82, 0xc6, 0x8d, 0x70, 0xc3, 0xa1, 0xdd, +0x4a, 0x4e, 0x8f, 0xb2, 0x84, 0x8a, 0xba, 0xac, 0x1f, 0x0a, 0x1e, 0x22, +0x59, 0x71, 0x1c, 0xdc, 0xb7, 0x2f, 0x39, 0x31, 0x21, 0x21, 0xa7, 0x31, +0xf0, 0x58, 0x30, 0x67, 0x8e, 0x39, 0x59, 0x54, 0x99, 0xa1, 0x24, 0x93, +0x06, 0xe3, 0xec, 0xc8, 0x41, 0xfd, 0x1d, 0x58, 0xb1, 0x76, 0xff, 0xc8, +0xfc, 0x16, 0x3b, 0x8c, 0x5f, 0x94, 0x92, 0x90, 0x70, 0xc7, 0xed, 0xb7, +0xe3, 0xac, 0x90, 0x6c, 0x0a, 0xe1, 0x15, 0x11, 0x8e, 0x0a, 0xd9, 0x53, +0xe0, 0xb4, 0x57, 0xcc, 0x9d, 0x03, 0x39, 0x4d, 0xd8, 0xfd, 0x4c, 0x28, +0x01, 0x20, 0xe4, 0x50, 0xc1, 0xe2, 0x76, 0x9b, 0xe9, 0x72, 0x9a, 0x2e, +0xba, 0xe2, 0x0a, 0xc9, 0xff, 0x14, 0x85, 0x5b, 0x79, 0xe2, 0x74, 0x2a, +0x57, 0xf0, 0x50, 0x1e, 0x3a, 0xe1, 0x03, 0xc7, 0x8f, 0x1d, 0x4b, 0x49, +0x4e, 0x66, 0x90, 0xee, 0xdd, 0xba, 0x99, 0xc9, 0x57, 0xed, 0x76, 0xd0, +0x37, 0x0a, 0x09, 0x72, 0xda, 0xbc, 0x79, 0x73, 0x39, 0x39, 0xa7, 0xeb, +0xb8, 0x2e, 0x07, 0x8c, 0xa6, 0xf7, 0x01, 0x8b, 0x8b, 0x93, 0x13, 0x9c, +0x84, 0x99, 0xe0, 0x4f, 0x14, 0x88, 0x8a, 0xea, 0x1f, 0xc9, 0xa8, 0x50, +0x0e, 0x9f, 0x4f, 0x3e, 0xfe, 0xb8, 0x67, 0xa7, 0x8e, 0xb1, 0xd5, 0xea, +0xb5, 0xdb, 0xf3, 0xc7, 0x08, 0x42, 0x05, 0xfb, 0x68, 0x05, 0xfb, 0x2b, +0x58, 0x5c, 0x42, 0x9b, 0x92, 0x6a, 0x35, 0x75, 0xc6, 0x39, 0x76, 0xef, +0xdc, 0x29, 0x2e, 0x02, 0xdd, 0x9d, 0x6c, 0x69, 0xfc, 0x31, 0xf3, 0x90, +0x07, 0xce, 0x9c, 0x69, 0xdb, 0xa2, 0xc5, 0x94, 0x09, 0x13, 0xcc, 0xd2, +0x82, 0x21, 0x02, 0x94, 0xed, 0xff, 0x9d, 0x77, 0xde, 0x19, 0x3b, 0x7c, +0x18, 0x4f, 0xda, 0x60, 0xda, 0x86, 0x91, 0x25, 0xcf, 0xea, 0x11, 0x6f, +0x63, 0x36, 0x9e, 0x72, 0x26, 0x26, 0xaf, 0x58, 0xba, 0x44, 0xcc, 0xb2, +0x6c, 0x90, 0x11, 0xe8, 0xd5, 0xd6, 0xd7, 0x50, 0xf6, 0x1d, 0xd9, 0x50, +0x8e, 0x1e, 0x39, 0xe2, 0x72, 0x6f, 0x8f, 0x59, 0x98, 0x53, 0x12, 0xfa, +0x79, 0x79, 0x55, 0x59, 0x82, 0x92, 0x2d, 0x67, 0xc0, 0xf5, 0x27, 0x62, +0x93, 0x32, 0x32, 0x52, 0x92, 0xb0, 0xfd, 0x89, 0x7b, 0x5b, 0xbc, 0x16, +0xaa, 0x82, 0x86, 0x1d, 0xc9, 0x98, 0xee, 0xbd, 0xc4, 0x4e, 0x79, 0x0d, +0xe9, 0x91, 0x9e, 0x26, 0x08, 0x6c, 0x05, 0x8d, 0x1a, 0x39, 0x62, 0x9c, +0x54, 0xa8, 0x4f, 0xab, 0xd3, 0xbc, 0xf7, 0x9c, 0x35, 0x82, 0x8d, 0xe6, +0xfb, 0xbf, 0x8a, 0x4f, 0x4c, 0xeb, 0xd7, 0xb3, 0x87, 0xa8, 0xfe, 0x32, +0x87, 0x08, 0x37, 0xcb, 0xb2, 0x02, 0xac, 0xc3, 0x2f, 0x7f, 0xfe, 0xf3, +0xb6, 0x2d, 0x9a, 0x51, 0x14, 0x62, 0x5c, 0xf1, 0x23, 0x21, 0xcf, 0x28, +0xa0, 0x3a, 0xaf, 0xa8, 0xa0, 0x1f, 0x3d, 0x22, 0x63, 0xa5, 0xf8, 0xb6, +0x65, 0x7d, 0xc9, 0x05, 0xed, 0x7f, 0xcd, 0x61, 0x80, 0x91, 0x95, 0x96, +0x72, 0xef, 0xe9, 0xd3, 0xc8, 0x51, 0x12, 0xbe, 0x11, 0xac, 0x5c, 0x50, +0x61, 0x17, 0x22, 0x09, 0xa8, 0x66, 0x3f, 0x84, 0x99, 0x14, 0xf5, 0xea, +0x31, 0x6e, 0xd8, 0x90, 0x7a, 0xd9, 0x59, 0x78, 0x30, 0x52, 0x72, 0x1b, +0x4d, 0x3b, 0x84, 0x5b, 0xf0, 0xbf, 0x19, 0x4d, 0xbb, 0xd7, 0xcd, 0xcd, +0x79, 0xe7, 0xad, 0xb7, 0x0c, 0x1a, 0x8e, 0x1d, 0x64, 0x86, 0xd3, 0x39, +0x06, 0x1f, 0xe8, 0xfa, 0x1b, 0x5d, 0xd1, 0xf5, 0x03, 0x96, 0xec, 0x08, +0x93, 0x60, 0x72, 0xfb, 0xa8, 0xa8, 0x14, 0x09, 0x4a, 0x80, 0x41, 0x26, +0x50, 0xff, 0xab, 0x0f, 0xc7, 0x3b, 0x53, 0xa9, 0x4b, 0xf0, 0xe8, 0xc3, +0x0f, 0xab, 0xca, 0x7c, 0xc1, 0x12, 0x60, 0x74, 0x39, 0x4a, 0x0c, 0xbb, +0x12, 0x48, 0xc2, 0x8d, 0xd0, 0x67, 0x56, 0x2e, 0x5d, 0xca, 0x2a, 0x55, +0x6b, 0xd5, 0x8f, 0x99, 0xd4, 0x9f, 0xb6, 0x3e, 0x29, 0x36, 0x76, 0xdb, +0xe6, 0xcd, 0x51, 0xff, 0x1d, 0x8b, 0x26, 0x5e, 0xd4, 0x47, 0x1e, 0x7e, +0x28, 0x3d, 0xd6, 0x91, 0x56, 0xb7, 0x45, 0x8b, 0x83, 0xff, 0x0c, 0x07, +0x46, 0x61, 0x9f, 0x57, 0x20, 0xd3, 0x57, 0x22, 0x2a, 0x58, 0xeb, 0x26, +0xbb, 0xfe, 0xda, 0x7f, 0xc5, 0x81, 0xf8, 0x78, 0x67, 0xc3, 0x5a, 0x79, +0x78, 0xa0, 0x95, 0x3d, 0x4a, 0x64, 0x98, 0x00, 0xb7, 0x61, 0xd9, 0xf9, +0x24, 0x84, 0x16, 0xa4, 0xe9, 0xce, 0xf2, 0x0b, 0x41, 0x56, 0x7f, 0x99, +0x77, 0xd9, 0x6c, 0x80, 0xd1, 0x74, 0xe1, 0xa1, 0xf6, 0xc5, 0xaf, 0xf1, +0x61, 0x70, 0xff, 0xa2, 0xaf, 0xbf, 0xfa, 0x2a, 0x2a, 0x3e, 0xb1, 0x02, +0xef, 0xbc, 0xfd, 0x76, 0xa3, 0x5a, 0x79, 0x89, 0xc9, 0x19, 0xae, 0x18, +0x7b, 0x1b, 0xf1, 0x0a, 0xa1, 0x71, 0x8e, 0x89, 0x57, 0xb0, 0x39, 0x96, +0x89, 0x83, 0x12, 0x09, 0xaa, 0xd2, 0x51, 0xe1, 0x02, 0xc6, 0xee, 0x2f, +0x8b, 0x96, 0xee, 0x66, 0xc2, 0xcd, 0x1a, 0x36, 0x78, 0xf1, 0x85, 0x17, +0xa4, 0x29, 0x44, 0xb0, 0x02, 0x2e, 0x14, 0x30, 0x54, 0xb3, 0x5d, 0x09, +0xb2, 0x92, 0x6a, 0x20, 0xcf, 0xff, 0xe8, 0x47, 0x8d, 0x6a, 0xe6, 0xa6, +0xb7, 0x19, 0xd8, 0xf9, 0xf0, 0xff, 0xd4, 0xec, 0x7f, 0x99, 0xab, 0xaf, +0xd7, 0x35, 0xd7, 0x70, 0x42, 0x24, 0x5b, 0x9f, 0xd8, 0x44, 0xb0, 0xc5, +0xf5, 0xea, 0xda, 0xc5, 0xe1, 0x88, 0x29, 0x58, 0x78, 0xb0, 0xe5, 0xa1, +0xb0, 0xc8, 0xac, 0x10, 0x60, 0x87, 0x10, 0x2a, 0x98, 0x2e, 0x65, 0xea, +0xfa, 0x2d, 0xde, 0xce, 0x9c, 0xdb, 0xb7, 0x6c, 0xf1, 0xce, 0xdb, 0xef, +0x04, 0xdd, 0x36, 0xaa, 0x63, 0x43, 0x02, 0x49, 0xc4, 0x59, 0x4e, 0xdc, +0x78, 0xcf, 0xce, 0x85, 0xb1, 0xb9, 0x4d, 0x3a, 0x1f, 0xfe, 0x75, 0xe1, +0xde, 0x8f, 0xe3, 0x6b, 0x36, 0x6f, 0x96, 0xdf, 0xf0, 0xa3, 0x0f, 0x3f, +0x8c, 0x70, 0x54, 0x48, 0x95, 0xb4, 0x9a, 0xfd, 0x66, 0xb5, 0xdb, 0xf2, +0x72, 0x93, 0xf9, 0x7b, 0x87, 0xdd, 0x74, 0x4f, 0xb3, 0xfd, 0x16, 0x91, +0x32, 0xa1, 0xc1, 0x1f, 0x74, 0x46, 0xa7, 0xa1, 0x82, 0xf4, 0x66, 0x82, +0x41, 0xab, 0x2e, 0xaf, 0x90, 0xc5, 0x25, 0xa9, 0xa8, 0xdf, 0xc2, 0xcd, +0x4c, 0xbb, 0x47, 0x61, 0x21, 0x11, 0xdd, 0x2a, 0xe6, 0x22, 0x40, 0x21, +0xca, 0xb2, 0x4e, 0x9e, 0x08, 0x54, 0x02, 0x8f, 0x59, 0xd3, 0xa7, 0x73, +0xd3, 0xdc, 0x6e, 0xe3, 0x5b, 0x5d, 0xff, 0x50, 0x4a, 0xe3, 0xce, 0xb9, +0x19, 0xa9, 0xaf, 0xbc, 0xf4, 0x52, 0x10, 0x6f, 0x1a, 0x5a, 0x43, 0xc9, +0xf6, 0x41, 0xa7, 0x0e, 0xd6, 0xc4, 0x59, 0xbd, 0x4e, 0x52, 0x56, 0x9d, +0xb8, 0x38, 0x67, 0x7c, 0x42, 0x4a, 0x52, 0xf5, 0x5a, 0x5d, 0xc7, 0xce, +0x29, 0x9b, 0x11, 0x59, 0xbe, 0x21, 0xa4, 0xe5, 0x02, 0xb9, 0xd0, 0xe2, +0x15, 0xb2, 0x04, 0x18, 0x3a, 0xfa, 0x2e, 0xd8, 0xc0, 0xcc, 0x47, 0x0c, +0x1a, 0x88, 0x49, 0x2a, 0x58, 0x42, 0x94, 0x01, 0x18, 0xca, 0x36, 0x25, +0x32, 0x15, 0x62, 0xe4, 0xcc, 0x69, 0x53, 0x29, 0xa0, 0x90, 0x10, 0x9f, +0x84, 0x55, 0xea, 0xea, 0x65, 0xcb, 0x22, 0x96, 0x51, 0xb0, 0x50, 0x82, +0x0a, 0x38, 0xe9, 0xe3, 0xe7, 0xce, 0x0d, 0xee, 0xd7, 0x67, 0xdc, 0xb0, +0x61, 0x1b, 0xd6, 0xae, 0x59, 0xb5, 0x6c, 0x69, 0x9f, 0x2e, 0x85, 0x29, +0xf1, 0x71, 0xce, 0xcc, 0xdc, 0xf1, 0x7b, 0x9f, 0x2d, 0x17, 0x7a, 0xad, +0x18, 0xd5, 0xc5, 0x0a, 0x15, 0x50, 0x5a, 0x69, 0x3d, 0xa8, 0xaa, 0xa3, +0x57, 0xe8, 0xab, 0xdc, 0xf5, 0xd0, 0xe7, 0xd5, 0x5a, 0xf6, 0x4d, 0x74, +0x38, 0x08, 0xbf, 0x29, 0x0f, 0x54, 0xa8, 0x17, 0x2f, 0xd8, 0x50, 0x07, +0x89, 0x4d, 0x57, 0x2e, 0x58, 0xf0, 0xf8, 0xa3, 0x8f, 0x02, 0x95, 0xd0, +0xda, 0xdd, 0x83, 0x3e, 0x5b, 0xdd, 0xa2, 0xad, 0xea, 0xcd, 0x11, 0x60, +0x7f, 0xf3, 0x86, 0x0d, 0xa9, 0x71, 0x8e, 0xd4, 0x5a, 0x05, 0x4d, 0x76, +0x9b, 0x23, 0x2c, 0x43, 0x84, 0x6f, 0xd8, 0xe7, 0x15, 0x84, 0xe8, 0x55, +0xbc, 0x6f, 0xdb, 0x72, 0xbf, 0x41, 0x88, 0xea, 0x7f, 0x55, 0x89, 0x2b, +0x88, 0xa3, 0x73, 0x21, 0xbe, 0xb9, 0x0a, 0x08, 0xbb, 0x50, 0xfe, 0xf2, +0xa0, 0xd3, 0x56, 0x48, 0x0f, 0xa8, 0x5b, 0xb4, 0x05, 0x18, 0xe2, 0xda, +0x5a, 0xb5, 0x72, 0xa5, 0xeb, 0xed, 0x4c, 0xb9, 0x2a, 0x54, 0x81, 0x61, +0x5f, 0xaf, 0xa8, 0x3a, 0xa8, 0xe8, 0xbf, 0xf2, 0x80, 0x2b, 0xb8, 0xa0, +0xa0, 0xc9, 0x1b, 0xaf, 0xbd, 0xa6, 0xa2, 0x68, 0x23, 0x59, 0x9e, 0xa9, +0x44, 0x68, 0x19, 0x80, 0x41, 0x64, 0x00, 0x4e, 0x1e, 0xb2, 0xb2, 0x7a, +0x74, 0xee, 0xe4, 0x48, 0x48, 0x19, 0xb5, 0xe9, 0x74, 0x48, 0x96, 0x4e, +0x0b, 0x39, 0x54, 0xe0, 0xd1, 0x73, 0xd6, 0x6c, 0x9a, 0x57, 0xbd, 0xda, +0xc3, 0x67, 0xcf, 0xaa, 0xcc, 0xe9, 0x48, 0x0e, 0xd1, 0xab, 0x44, 0x48, +0xc8, 0xad, 0x0d, 0xb1, 0x64, 0x02, 0x8c, 0x47, 0x1f, 0x7a, 0x08, 0xfb, +0x75, 0xcb, 0x51, 0x0b, 0x42, 0x32, 0x2c, 0x2a, 0xe4, 0x50, 0xd1, 0x73, +0xc1, 0xcd, 0xcc, 0x79, 0xe1, 0xe5, 0x97, 0xab, 0xcc, 0xe9, 0x48, 0xae, +0x27, 0x50, 0xe9, 0x90, 0x50, 0x0a, 0x98, 0x5e, 0xa1, 0x54, 0xba, 0x84, +0x51, 0xe1, 0x97, 0x18, 0xfe, 0xf6, 0xfb, 0xcc, 0x99, 0x2a, 0x55, 0x5e, +0xbb, 0xb0, 0x83, 0x0a, 0xa0, 0x8f, 0xbf, 0xa6, 0x2a, 0x48, 0x50, 0x34, +0x52, 0xa1, 0xb9, 0x4e, 0x83, 0xda, 0xb5, 0xe8, 0x47, 0x81, 0x62, 0xc7, +0xea, 0x47, 0x78, 0xe4, 0x45, 0x55, 0x40, 0x85, 0x62, 0x17, 0x7a, 0x33, +0x24, 0x62, 0x02, 0xae, 0x5e, 0xe6, 0x8a, 0x94, 0x19, 0xb7, 0x25, 0x04, +0x7b, 0xbe, 0x58, 0xa1, 0xc2, 0x68, 0x83, 0xaa, 0x3a, 0xa8, 0x18, 0xbd, +0xc3, 0x55, 0x8d, 0x6b, 0xec, 0xc8, 0x91, 0x84, 0x9f, 0x48, 0xba, 0x85, +0x42, 0x45, 0x15, 0xa1, 0x8f, 0x88, 0x9d, 0x86, 0x41, 0xc1, 0x20, 0xf2, +0x40, 0x72, 0x56, 0xfb, 0x5c, 0x7e, 0x73, 0xe8, 0x99, 0x68, 0xbd, 0xa2, +0x02, 0x1b, 0x6d, 0xd5, 0x41, 0xc5, 0xc0, 0xa5, 0x25, 0x94, 0xee, 0xbb, +0x71, 0xcd, 0x1a, 0x32, 0xa7, 0xa5, 0xea, 0x47, 0x84, 0x67, 0xc3, 0x55, +0x29, 0x10, 0x2a, 0x60, 0x48, 0x1e, 0x3c, 0x61, 0x32, 0x35, 0xd3, 0x93, +0x1b, 0xf4, 0x9b, 0x16, 0x7a, 0x65, 0x36, 0x43, 0x0b, 0x15, 0xdd, 0x26, +0xcc, 0xaf, 0x91, 0x91, 0x41, 0xd5, 0x8f, 0x68, 0x8e, 0x68, 0x95, 0xc2, +0x83, 0x9a, 0x0c, 0xc0, 0x50, 0x95, 0xde, 0xdf, 0x7b, 0xf7, 0x5d, 0x0a, +0xc2, 0x27, 0x37, 0xee, 0xd2, 0x6c, 0xdf, 0xdf, 0x43, 0x8c, 0x5d, 0xd8, +0x47, 0x05, 0xe6, 0xb6, 0x4a, 0xf7, 0x57, 0xb4, 0xee, 0x3e, 0xb0, 0x76, +0x4e, 0x0e, 0xe9, 0x72, 0xc4, 0xa5, 0x48, 0x3d, 0xf0, 0x0a, 0x70, 0x56, +0x54, 0x4d, 0xfa, 0xab, 0x9a, 0xb3, 0x12, 0x76, 0x21, 0x95, 0xde, 0xe1, +0xe7, 0x83, 0xfa, 0xf4, 0x74, 0x64, 0xd4, 0xe9, 0x74, 0x20, 0xd4, 0xfa, +0x83, 0x85, 0x16, 0x2a, 0x1a, 0x36, 0x6d, 0xdd, 0xb8, 0x6e, 0x6d, 0xc2, +0x9f, 0x08, 0xd7, 0x8b, 0x66, 0x4e, 0x57, 0x59, 0x60, 0xa8, 0x4a, 0xef, +0x33, 0xa6, 0x4c, 0x82, 0xc0, 0x26, 0xec, 0x7d, 0x2e, 0xa4, 0x78, 0xc5, +0x7f, 0xf4, 0xdd, 0x5f, 0x45, 0x07, 0x96, 0xd1, 0xb6, 0x95, 0x5e, 0x51, +0x15, 0x78, 0x45, 0x5e, 0xdd, 0x46, 0xed, 0x5a, 0x36, 0x27, 0x86, 0x11, +0x9b, 0x18, 0x56, 0x0e, 0x84, 0xd7, 0x60, 0x25, 0x1e, 0x55, 0x4d, 0x0a, +0x0b, 0xc5, 0x59, 0xa9, 0x6c, 0x24, 0x38, 0xf9, 0xbc, 0xd9, 0x33, 0xa1, +0xb0, 0x9e, 0x37, 0x3d, 0x18, 0x52, 0xa8, 0x28, 0x13, 0x49, 0x2e, 0xa8, +0x90, 0x12, 0xf4, 0xa5, 0x71, 0x50, 0x55, 0x0a, 0x15, 0xa9, 0x19, 0xd9, +0xfd, 0x7b, 0xf7, 0xa2, 0xcb, 0x06, 0xf9, 0x1e, 0x51, 0x54, 0x54, 0x4d, +0xcc, 0xe8, 0xa8, 0x98, 0x3b, 0xcb, 0x85, 0x8a, 0xe6, 0x57, 0x87, 0x5a, +0xf1, 0x59, 0x93, 0x04, 0x65, 0x8d, 0x0a, 0x24, 0x96, 0xaa, 0xc0, 0x2b, +0x12, 0x93, 0x32, 0x06, 0xf5, 0xeb, 0xcb, 0x4c, 0x14, 0x2a, 0xa2, 0x7a, +0x45, 0x55, 0xc3, 0x86, 0xa0, 0x02, 0x33, 0x14, 0xc6, 0xd9, 0x79, 0xb3, +0x67, 0xb9, 0x78, 0xc5, 0xba, 0x10, 0xe6, 0x15, 0xef, 0xbd, 0xf7, 0x1e, +0x12, 0x7b, 0x95, 0x46, 0x45, 0x4a, 0x66, 0x76, 0x87, 0x56, 0x2d, 0xa3, +0xa8, 0xa8, 0x6a, 0x48, 0x30, 0x04, 0xe1, 0x2b, 0x54, 0xcc, 0x99, 0xe1, +0x4a, 0x4a, 0x99, 0xb8, 0x3b, 0x84, 0xa2, 0xca, 0xff, 0x63, 0xc8, 0xc5, +0xf3, 0x82, 0x0a, 0xe4, 0x96, 0x4a, 0xb7, 0x41, 0xe5, 0xd5, 0x6b, 0xd2, +0xb8, 0x6e, 0x1d, 0x5d, 0x82, 0x8a, 0xf2, 0x8a, 0x2a, 0x85, 0x10, 0xdd, +0x65, 0x41, 0xdd, 0xd1, 0x41, 0xbd, 0x7b, 0x38, 0xaa, 0xd5, 0x2b, 0x3c, +0x18, 0x42, 0x36, 0x28, 0x4f, 0xa8, 0x38, 0x72, 0xe4, 0x48, 0x32, 0x15, +0xf7, 0xf8, 0x87, 0x5e, 0x81, 0xbf, 0xac, 0x8a, 0x48, 0x50, 0xf9, 0x1d, +0x7a, 0xd7, 0xc9, 0xcd, 0xa1, 0x46, 0xb2, 0xd2, 0xb6, 0xa3, 0xa8, 0xa8, +0x82, 0xa8, 0x10, 0xcb, 0xec, 0x4b, 0x2f, 0xbe, 0x58, 0x3b, 0x23, 0xa5, +0x41, 0xd1, 0x25, 0xcd, 0x43, 0xae, 0x15, 0xb7, 0xb6, 0xfd, 0xeb, 0xbc, +0xa2, 0x8a, 0xa2, 0xa2, 0x5d, 0xff, 0x71, 0x35, 0xb3, 0xaa, 0xbf, 0xf8, +0xe2, 0x8b, 0xd1, 0x9a, 0x96, 0x55, 0x0a, 0x0c, 0x6a, 0x32, 0x7a, 0x35, +0xeb, 0x53, 0x77, 0xdd, 0x05, 0x75, 0x15, 0x2d, 0xdb, 0x55, 0x6d, 0x87, +0x45, 0x33, 0x90, 0x2a, 0x6c, 0x95, 0x2a, 0x63, 0x99, 0x55, 0xa8, 0xa0, +0x42, 0x9f, 0x05, 0x2a, 0xaa, 0x82, 0x04, 0xd5, 0x6d, 0xdc, 0xfc, 0xec, +0x8c, 0x8c, 0xfb, 0xef, 0xbb, 0x4f, 0x79, 0xf1, 0xa2, 0x11, 0x1f, 0x55, +0x07, 0x1e, 0xe2, 0xd8, 0x16, 0x46, 0x81, 0xaa, 0xbd, 0x7c, 0xf1, 0x22, +0x50, 0x31, 0xbe, 0xf8, 0xe1, 0x2a, 0x0c, 0x00, 0x73, 0xf4, 0xae, 0x8f, +0x12, 0x54, 0x55, 0x40, 0x45, 0xbf, 0xf9, 0x6b, 0xe9, 0x68, 0xb1, 0x77, +0xd7, 0x2e, 0x6c, 0x02, 0x12, 0x07, 0x15, 0x8d, 0x99, 0xad, 0x0a, 0xa8, +0x50, 0xb5, 0x51, 0xa4, 0x6e, 0x1a, 0x7e, 0xa4, 0x0f, 0x3f, 0xf8, 0xa0, +0x61, 0x6e, 0x8d, 0xe4, 0xba, 0xad, 0x3b, 0x1c, 0xf8, 0x22, 0xd4, 0x50, +0x61, 0xcd, 0x2b, 0xf0, 0x57, 0x54, 0x51, 0x5e, 0x31, 0x72, 0xe3, 0xbd, +0xd4, 0xdc, 0x9f, 0x33, 0x7b, 0x36, 0x31, 0xb3, 0x86, 0x8e, 0x16, 0xd1, +0x5c, 0xbc, 0xca, 0x82, 0x87, 0x0e, 0x09, 0x29, 0x30, 0xc7, 0x6e, 0x75, +0xeb, 0xc1, 0x83, 0x30, 0x8a, 0x76, 0xd3, 0xae, 0xc9, 0xdd, 0xf9, 0xaf, +0x28, 0x2a, 0xca, 0x37, 0xa1, 0xa4, 0x55, 0xc9, 0xa7, 0xf4, 0x0e, 0xee, +0xda, 0xa9, 0x23, 0xc6, 0x59, 0xbd, 0xa3, 0x45, 0x24, 0x97, 0xf1, 0xab, +0x2c, 0x30, 0xe8, 0x11, 0x81, 0x52, 0x76, 0x51, 0x5a, 0x81, 0x21, 0x3b, +0x7d, 0xfa, 0xbb, 0xdf, 0x75, 0x6d, 0xdf, 0x26, 0x21, 0x23, 0x6f, 0xc2, +0xae, 0xa7, 0x43, 0x0d, 0x12, 0xc6, 0x2a, 0x69, 0x5e, 0xb4, 0xed, 0xaa, +0x20, 0x41, 0xd5, 0xd8, 0xfe, 0x55, 0xa3, 0x5e, 0x63, 0xd2, 0x9c, 0x09, +0x08, 0x51, 0xaa, 0xa3, 0x85, 0xb4, 0xf7, 0xd5, 0xbb, 0x7b, 0x55, 0x3a, +0xa1, 0x44, 0xc8, 0x04, 0x84, 0x4b, 0xa8, 0x6a, 0x8b, 0xc2, 0x25, 0x88, +0xda, 0x2c, 0xde, 0xb6, 0x15, 0x96, 0xde, 0x73, 0xda, 0x52, 0xea, 0x4e, +0x84, 0x14, 0x2a, 0x7e, 0xd8, 0xd3, 0x6d, 0xda, 0xa0, 0x20, 0xc1, 0xaa, +0x80, 0x0a, 0x96, 0x78, 0xc4, 0x2d, 0x67, 0x1d, 0xb1, 0xce, 0xfc, 0x7a, +0xf5, 0x48, 0xc7, 0x13, 0x76, 0x21, 0xa5, 0x35, 0x05, 0x18, 0xd2, 0x10, +0x5e, 0x95, 0xe4, 0xb0, 0xfc, 0x10, 0x21, 0x24, 0x5b, 0xae, 0x8f, 0xa9, +0xa4, 0x26, 0x1d, 0x12, 0x52, 0xe3, 0x03, 0x5b, 0x48, 0x8d, 0xd4, 0x24, +0x67, 0x46, 0x4e, 0x08, 0x42, 0xe2, 0x82, 0xaa, 0x5d, 0xb6, 0xa2, 0xa6, +0x27, 0x1b, 0x54, 0xd5, 0x41, 0x05, 0x6d, 0xc1, 0x7a, 0x5f, 0x59, 0x0c, +0x98, 0x5b, 0x36, 0x6d, 0x4a, 0x19, 0x66, 0xe9, 0x68, 0x01, 0x30, 0xe0, +0x18, 0x08, 0xb5, 0x60, 0x03, 0x1b, 0x88, 0xc0, 0xc3, 0x7c, 0xe8, 0x95, +0x9d, 0xe4, 0xbd, 0x96, 0x2b, 0xe9, 0x84, 0xdf, 0xe0, 0x0a, 0x0c, 0x7a, +0x93, 0x4e, 0xa9, 0xe2, 0x2e, 0x5c, 0xe2, 0xd5, 0x57, 0x5e, 0x69, 0x52, +0xbf, 0x1e, 0x95, 0x67, 0x07, 0x5e, 0x77, 0x2c, 0x04, 0xb9, 0x04, 0xa8, +0x70, 0x6b, 0x83, 0xb2, 0xb0, 0xcc, 0x82, 0x0a, 0x22, 0x07, 0x2b, 0xdd, +0xb7, 0x2d, 0x0b, 0x4d, 0x03, 0xa4, 0x3e, 0x57, 0xb8, 0x7a, 0x07, 0xb7, +0x69, 0xd9, 0xe2, 0x85, 0xe7, 0x9f, 0x17, 0x60, 0xf0, 0x56, 0x30, 0x7d, +0xf0, 0x7a, 0x78, 0x49, 0x02, 0x0f, 0x39, 0xa4, 0x24, 0xa6, 0x1c, 0xd2, +0x2c, 0x4f, 0x61, 0xc6, 0xdc, 0x3c, 0x32, 0xfc, 0xe8, 0x38, 0x58, 0x4f, +0xa4, 0xb8, 0xae, 0x8e, 0x07, 0x29, 0xc2, 0x2b, 0xad, 0x70, 0x48, 0xd8, +0x7c, 0xe0, 0x81, 0x07, 0x9a, 0x36, 0x68, 0xe0, 0xca, 0x4a, 0x5d, 0xb0, +0x91, 0x52, 0xd9, 0x21, 0x8b, 0x0a, 0xdb, 0xfe, 0x8a, 0x2a, 0x85, 0x0a, +0x17, 0x30, 0x76, 0x7d, 0xe1, 0x4a, 0x08, 0x76, 0xc4, 0x14, 0xb6, 0x6f, +0x47, 0x26, 0x24, 0xc1, 0x82, 0x18, 0xce, 0xd8, 0xab, 0x08, 0xa4, 0xe5, +0x0d, 0xc1, 0x3a, 0xe0, 0xe6, 0xbc, 0x2d, 0xc1, 0x89, 0x1c, 0x48, 0x59, +0x1c, 0xbc, 0x45, 0x05, 0x1b, 0x83, 0xc4, 0x15, 0x2c, 0x02, 0x0a, 0xbf, +0x71, 0x74, 0x79, 0x49, 0xef, 0x6e, 0xce, 0x22, 0x0b, 0x8b, 0xc0, 0xa9, +0xba, 0x79, 0xe3, 0xc6, 0xac, 0x8c, 0x74, 0x6a, 0x40, 0xf5, 0x9e, 0xbf, +0x31, 0xc4, 0xeb, 0xcc, 0x86, 0x2c, 0x2a, 0x5c, 0x85, 0xfb, 0x77, 0xfd, +0xb5, 0xd7, 0xfc, 0xf5, 0x8e, 0x98, 0xd8, 0x4e, 0x6d, 0xdb, 0x3c, 0xf9, +0xe4, 0x93, 0x78, 0x30, 0xc0, 0x06, 0x85, 0x3f, 0x80, 0x07, 0xfb, 0x16, +0xaf, 0x0a, 0x06, 0x02, 0x48, 0xe4, 0xa0, 0x1a, 0x88, 0xa0, 0x45, 0x01, +0x06, 0x84, 0x98, 0xbb, 0x77, 0x87, 0x1f, 0x41, 0x07, 0xfe, 0x44, 0xba, +0xe1, 0x55, 0x9a, 0x7b, 0xb0, 0xc5, 0x08, 0x1e, 0x58, 0x61, 0xbc, 0x46, +0x3f, 0x7e, 0xe5, 0x95, 0xc9, 0xe3, 0xc7, 0xc5, 0x50, 0x86, 0x39, 0xa7, +0xfe, 0xc0, 0xd5, 0xb7, 0x85, 0x26, 0x97, 0x40, 0x06, 0xf9, 0x41, 0xa9, +0x28, 0xab, 0x57, 0xbc, 0xfb, 0xee, 0xbb, 0xf4, 0x9b, 0x26, 0xa6, 0xab, +0xaa, 0x4b, 0x50, 0x8a, 0x35, 0xc3, 0x31, 0x7a, 0xcd, 0x5b, 0x07, 0xcb, +0xae, 0x5f, 0x33, 0x6f, 0xf2, 0x84, 0x09, 0xeb, 0xd6, 0xae, 0xdd, 0xb4, +0x7e, 0xfd, 0xf1, 0xdb, 0x6e, 0xc3, 0x6e, 0x0b, 0x73, 0x63, 0x03, 0x03, +0x27, 0x1c, 0x28, 0xe5, 0xa0, 0x45, 0x00, 0xc3, 0x5b, 0x04, 0x33, 0x4a, +0xe2, 0x32, 0xab, 0xe9, 0x81, 0x93, 0x51, 0x98, 0x8d, 0x60, 0x2e, 0x9b, +0xc9, 0x16, 0xc3, 0xa6, 0xc3, 0x62, 0xb2, 0xb6, 0x74, 0x94, 0x2d, 0xb8, +0x20, 0x35, 0x15, 0x8e, 0x98, 0x51, 0xb0, 0xe7, 0x6f, 0x21, 0x28, 0x35, +0x19, 0x7c, 0x09, 0x17, 0x54, 0x0b, 0x93, 0x0d, 0xca, 0x02, 0x15, 0x3c, +0x7f, 0x55, 0x93, 0xa0, 0xd4, 0xea, 0xd3, 0x35, 0xaf, 0xd7, 0xc2, 0x2d, +0x09, 0x35, 0xea, 0xb2, 0x57, 0x25, 0xc5, 0xc7, 0x53, 0x01, 0x04, 0xe7, +0x77, 0xbb, 0x16, 0x2d, 0xb0, 0x84, 0x10, 0x16, 0x0f, 0xca, 0xf9, 0x1f, +0x8d, 0x08, 0x03, 0x1a, 0x50, 0xa1, 0xa4, 0x15, 0xee, 0x3f, 0x0e, 0x18, +0x0b, 0x98, 0x01, 0xfd, 0xb0, 0x11, 0x61, 0x1a, 0x51, 0x69, 0xca, 0x12, +0xcc, 0xe6, 0x7a, 0x36, 0x82, 0x87, 0x0f, 0x3e, 0xf8, 0x60, 0xe3, 0xba, +0x9b, 0x0a, 0xdb, 0xb4, 0xa6, 0x48, 0x7b, 0x8c, 0x33, 0xb3, 0xf7, 0x15, +0xb7, 0x84, 0x6a, 0x49, 0xd9, 0xd2, 0x22, 0xe7, 0x8a, 0x57, 0x84, 0x3e, +0x2a, 0x04, 0x1e, 0x60, 0x63, 0xd4, 0xd6, 0x87, 0x7a, 0x2d, 0x2a, 0x6e, +0x31, 0xed, 0x86, 0x1a, 0x9d, 0x46, 0xc6, 0xc5, 0x25, 0x24, 0x38, 0x1c, +0x79, 0x19, 0xe9, 0xed, 0x9b, 0x17, 0xb4, 0x29, 0x68, 0x7c, 0xe1, 0x27, +0xbf, 0x6d, 0x41, 0x7e, 0x87, 0xe6, 0x4d, 0xf3, 0x6b, 0xe7, 0xa5, 0xc5, +0xc6, 0xd0, 0x7f, 0x9b, 0x9f, 0x94, 0x18, 0x47, 0x97, 0x4e, 0x9d, 0x30, +0x64, 0x49, 0x53, 0x56, 0xb3, 0x6d, 0x37, 0xcc, 0x76, 0x7d, 0x5f, 0x1f, +0x47, 0x20, 0x21, 0x35, 0x3b, 0xe8, 0x2b, 0x7b, 0xd3, 0x8d, 0x37, 0xae, +0x5c, 0xb2, 0x78, 0xea, 0xb8, 0xb1, 0x9d, 0xdb, 0xb4, 0xac, 0x91, 0xe2, +0x4c, 0x88, 0x89, 0x8d, 0x4f, 0x48, 0x2e, 0x1c, 0x31, 0x33, 0x64, 0x45, +0x26, 0xcb, 0x20, 0xa8, 0xb0, 0xe0, 0x15, 0x3a, 0xcb, 0xce, 0x28, 0xfe, +0x06, 0x78, 0xb4, 0x2d, 0xf9, 0xed, 0x88, 0xeb, 0x8f, 0xf5, 0x9d, 0xb6, +0xa4, 0x73, 0xd1, 0x88, 0xd6, 0x5d, 0xfb, 0x16, 0xb4, 0xef, 0x5e, 0xb7, +0x69, 0x87, 0xcc, 0xba, 0x4d, 0x53, 0x72, 0x1b, 0xa6, 0xe4, 0x34, 0x4c, +0xad, 0x5d, 0x90, 0xd1, 0xb0, 0x7d, 0x66, 0xa3, 0x0e, 0xd5, 0x9a, 0x14, +0xd2, 0x35, 0x18, 0x56, 0xb9, 0x61, 0xdd, 0x3a, 0x69, 0xca, 0x2a, 0xd2, +0x94, 0x32, 0xec, 0x46, 0xb8, 0x85, 0x4a, 0x79, 0xe8, 0x24, 0xda, 0xef, +0xc8, 0xad, 0xb7, 0xc6, 0xc7, 0xc6, 0x3a, 0x62, 0x12, 0x9d, 0xe9, 0x39, +0xc9, 0xd9, 0x0d, 0x9a, 0x74, 0x1d, 0x3a, 0x64, 0xc9, 0x56, 0x5a, 0x4f, +0x85, 0xbe, 0xc8, 0xe4, 0x45, 0x82, 0x72, 0xab, 0x57, 0x54, 0x65, 0x09, +0xca, 0xfd, 0x5b, 0x39, 0xaf, 0xff, 0xc9, 0xb9, 0xed, 0xfb, 0xac, 0x1d, +0xdf, 0xd4, 0xdd, 0xf9, 0x0f, 0x36, 0xb6, 0x56, 0x7b, 0x3f, 0xa7, 0xf8, +0x69, 0xe1, 0xfe, 0x3f, 0xb5, 0xbc, 0xee, 0x3e, 0x50, 0x41, 0x59, 0x79, +0x1e, 0x50, 0xd7, 0x34, 0x44, 0x0b, 0x8f, 0x64, 0x99, 0xca, 0x10, 0xda, +0xc4, 0x96, 0x71, 0xd3, 0x1a, 0x57, 0xef, 0xe0, 0x86, 0x53, 0xd7, 0x8e, +0xd8, 0xf1, 0x54, 0x87, 0x03, 0x9f, 0xe7, 0xee, 0x0c, 0xfd, 0x56, 0xf3, +0xc6, 0x06, 0x31, 0xe2, 0xac, 0x30, 0xfa, 0x2b, 0x3c, 0xa1, 0x02, 0x41, +0x1c, 0x01, 0xbd, 0x8a, 0xf8, 0x2b, 0x82, 0xb5, 0x3f, 0x0d, 0xdd, 0xf2, +0x28, 0x4f, 0x34, 0x79, 0xec, 0x58, 0x9e, 0x0e, 0x8d, 0x1c, 0x45, 0x1c, +0x35, 0x43, 0x1c, 0x82, 0x22, 0x50, 0x49, 0x01, 0x91, 0x48, 0x63, 0x1a, +0x86, 0x00, 0x58, 0x58, 0x28, 0x4d, 0x42, 0x86, 0x0c, 0xec, 0xcf, 0x5a, +0x75, 0x3d, 0x44, 0x56, 0x5d, 0x99, 0xed, 0x26, 0x58, 0xef, 0xa2, 0x52, +0xc7, 0xd1, 0x34, 0x0a, 0x93, 0x6f, 0xdb, 0x0b, 0x2a, 0xaa, 0x8e, 0x17, +0x2f, 0x58, 0x2b, 0x88, 0x82, 0x98, 0xde, 0xbc, 0x27, 0xda, 0x45, 0x49, +0x71, 0x31, 0x8a, 0x38, 0x16, 0x05, 0x4b, 0x6c, 0x44, 0x5a, 0xe8, 0xa1, +0x52, 0x27, 0x44, 0x76, 0xc2, 0x08, 0xbb, 0x71, 0x9d, 0xcb, 0xd0, 0xd7, +0x6b, 0xfa, 0x8a, 0x60, 0xad, 0x7c, 0x15, 0x1b, 0x47, 0xe3, 0x12, 0x51, +0x54, 0xf0, 0x6e, 0x8a, 0xae, 0x3d, 0x16, 0xe7, 0x4c, 0x4d, 0x8e, 0x73, +0x4c, 0x9d, 0x30, 0xe1, 0xb1, 0x73, 0xe7, 0x04, 0x1b, 0xd8, 0xa6, 0xb0, +0xb4, 0x88, 0xb3, 0x5c, 0x69, 0xe1, 0xc2, 0x31, 0x7c, 0x55, 0x58, 0x43, +0xee, 0x7c, 0xc5, 0x28, 0xc4, 0x35, 0x01, 0xf3, 0xdc, 0xb4, 0x6e, 0x1d, +0x96, 0x89, 0xa4, 0xda, 0xcd, 0x9a, 0x87, 0x47, 0x7f, 0x54, 0xeb, 0xce, +0x7a, 0x3f, 0xc8, 0x4e, 0xbe, 0xa2, 0x22, 0xfc, 0x24, 0x28, 0x50, 0x41, +0xe9, 0xff, 0xa2, 0xeb, 0x8f, 0x27, 0xd7, 0x6c, 0x42, 0x8c, 0x67, 0x4a, +0x5c, 0x4c, 0xf3, 0x86, 0xf5, 0xa7, 0x8e, 0x1f, 0xb7, 0x7b, 0xe7, 0x4e, +0xcc, 0xb8, 0x22, 0x50, 0xb1, 0x53, 0x2a, 0x9f, 0x46, 0x24, 0x00, 0x43, +0xb7, 0x3b, 0xe1, 0x8e, 0x28, 0xea, 0xd5, 0x8b, 0x95, 0x49, 0xce, 0xaa, +0x33, 0x75, 0xf7, 0x53, 0x55, 0x6c, 0x83, 0x0f, 0x7a, 0xce, 0x82, 0x2f, +0x5e, 0x3c, 0xf2, 0x8f, 0x50, 0x46, 0xc3, 0x52, 0xaf, 0x28, 0x75, 0x7a, +0x94, 0xfc, 0x65, 0xd0, 0xf2, 0x9d, 0x4d, 0xfb, 0x4e, 0xc0, 0x4e, 0xe5, +0xc0, 0xe7, 0x11, 0xe3, 0x58, 0xb7, 0x66, 0x0d, 0x0e, 0x0d, 0x1e, 0x5c, +0x80, 0x21, 0x1c, 0x43, 0xe9, 0x18, 0x21, 0xc7, 0x01, 0xec, 0x4f, 0x58, +0x2f, 0xd2, 0x31, 0x77, 0x16, 0xd5, 0x9c, 0x62, 0xfa, 0xce, 0xbc, 0xba, +0xe5, 0xa1, 0xf0, 0xd3, 0xad, 0x75, 0x50, 0x95, 0x65, 0x14, 0x76, 0x7c, +0xdb, 0x91, 0x80, 0x0a, 0x81, 0x47, 0xf6, 0x8e, 0x7f, 0xb6, 0xd9, 0xf5, +0xd9, 0x80, 0xd5, 0xb7, 0x27, 0xd7, 0x6a, 0x82, 0x18, 0x7d, 0xed, 0xca, +0x95, 0x52, 0x1b, 0x4b, 0x01, 0x43, 0x57, 0xbe, 0xed, 0xd3, 0x59, 0x68, +0x9d, 0xa9, 0x50, 0x71, 0xf2, 0xf8, 0xf1, 0x94, 0xa4, 0xa4, 0xea, 0x1d, +0x86, 0xf5, 0xb8, 0x2d, 0x2c, 0x1a, 0xcb, 0xfb, 0xd4, 0x92, 0x58, 0x33, +0x2b, 0x59, 0x6b, 0xdb, 0x91, 0x83, 0x8a, 0x1f, 0x58, 0xc7, 0x79, 0x82, +0xdb, 0xda, 0xf5, 0x1a, 0x42, 0x5b, 0xb7, 0x55, 0x2b, 0x56, 0x50, 0xf2, +0x07, 0x60, 0x88, 0x43, 0x43, 0x72, 0xc4, 0xc3, 0x9b, 0x63, 0x28, 0x54, +0x0c, 0x1d, 0x3c, 0x18, 0xda, 0xa8, 0xde, 0x76, 0xe0, 0xc8, 0x2d, 0x0f, +0x5f, 0xe0, 0x15, 0xe1, 0x67, 0x7a, 0x12, 0x76, 0x61, 0x62, 0x14, 0x51, +0x5e, 0xe1, 0x4e, 0x56, 0xc6, 0x3c, 0xd5, 0xb6, 0xe7, 0x10, 0x57, 0xb7, +0xf9, 0xe5, 0xcb, 0x25, 0xe9, 0x4f, 0xca, 0xda, 0x86, 0x3d, 0x30, 0x94, +0x5e, 0x71, 0xfb, 0xb1, 0x63, 0x5d, 0x3b, 0x76, 0x44, 0xcf, 0x8e, 0x4b, +0x48, 0x49, 0xab, 0xdf, 0xba, 0xcf, 0xf4, 0x15, 0x61, 0xaa, 0x6d, 0xfb, +0x8b, 0x0a, 0x6c, 0x32, 0xe1, 0xad, 0x57, 0x58, 0x62, 0x83, 0xd0, 0xc3, +0x36, 0x3d, 0x06, 0xa3, 0x63, 0xac, 0x5a, 0xbe, 0x1c, 0x1d, 0x03, 0xe5, +0x3b, 0x12, 0x38, 0x86, 0x6e, 0x83, 0xc2, 0x16, 0xbf, 0x73, 0xc7, 0x8e, +0xb1, 0xc3, 0x86, 0xe4, 0xd7, 0xcc, 0x73, 0x85, 0xc4, 0x56, 0xaf, 0xdd, +0x7b, 0xfe, 0x86, 0xb0, 0x08, 0x01, 0xf4, 0xa8, 0x54, 0xb8, 0xe1, 0x15, +0x44, 0x97, 0x96, 0xd6, 0xf8, 0xe0, 0x53, 0x64, 0xa2, 0x42, 0xb2, 0x38, +0x92, 0x6b, 0x35, 0x85, 0x63, 0xac, 0x5e, 0xb5, 0x0a, 0x51, 0x4a, 0xac, +0x52, 0x66, 0x8e, 0x11, 0x66, 0x16, 0x5b, 0x83, 0xbf, 0x02, 0xb7, 0x26, +0xc6, 0xa8, 0x92, 0xed, 0xdb, 0x1b, 0xd4, 0xac, 0x89, 0x4c, 0x95, 0xda, +0xa8, 0xc3, 0x80, 0xd5, 0xc7, 0x09, 0xe3, 0x0f, 0x17, 0x93, 0x94, 0x66, +0x7a, 0x52, 0xba, 0x87, 0x1d, 0xbd, 0x02, 0x54, 0x10, 0x49, 0x4b, 0xfc, +0x69, 0x98, 0xf9, 0xb6, 0xed, 0xbc, 0xd7, 0x81, 0x1b, 0xee, 0x4f, 0xae, +0x59, 0x80, 0x75, 0x72, 0xed, 0x0d, 0xd7, 0xeb, 0x1c, 0x23, 0x8c, 0x73, +0x33, 0xf4, 0x1c, 0x23, 0x2c, 0x6f, 0xe2, 0xc8, 0x83, 0x4f, 0xd2, 0xc9, +0x61, 0xd6, 0xf4, 0xe9, 0x59, 0x69, 0xa9, 0xb1, 0x09, 0xc9, 0x7d, 0x08, +0x92, 0x0d, 0x1f, 0x60, 0x98, 0x8c, 0xbc, 0x51, 0x54, 0x78, 0xc6, 0x06, +0x69, 0xe2, 0x83, 0x37, 0x3d, 0x98, 0x94, 0x97, 0x0f, 0x30, 0x08, 0x1a, +0xfd, 0xf4, 0xd3, 0x32, 0xa2, 0x54, 0xb8, 0xd6, 0x16, 0x31, 0x07, 0x7d, +0x00, 0x0c, 0xf8, 0x24, 0xfb, 0xe3, 0x89, 0x13, 0x27, 0x9a, 0x35, 0xc9, +0x87, 0x6c, 0x7a, 0x5c, 0xb2, 0x22, 0x5c, 0x80, 0x61, 0x62, 0x17, 0x51, +0x54, 0x78, 0xe5, 0x18, 0xc4, 0xe1, 0xba, 0x80, 0x91, 0xd3, 0x00, 0x51, +0x8a, 0x20, 0x39, 0x83, 0x8e, 0x11, 0xae, 0xc0, 0xc0, 0xa0, 0xac, 0x7b, +0xf4, 0x84, 0x63, 0x00, 0x0c, 0x0c, 0x0f, 0x2f, 0xbf, 0xf8, 0x62, 0x8f, +0x6e, 0xdd, 0x5c, 0x99, 0x46, 0xc3, 0x2f, 0x6d, 0xb2, 0x2b, 0xb4, 0x4a, +0x03, 0x5a, 0xfa, 0xfe, 0x3c, 0xa1, 0x82, 0x26, 0x8c, 0x3f, 0xfd, 0xe9, +0x4f, 0x8d, 0x59, 0x47, 0xa2, 0x57, 0x44, 0xac, 0x04, 0xa5, 0xf2, 0x37, +0x06, 0x6d, 0x7c, 0x20, 0x29, 0xbb, 0x41, 0x92, 0xc3, 0xb1, 0xce, 0xc5, +0x31, 0x5c, 0xe6, 0xda, 0x48, 0xf0, 0x7c, 0x9b, 0x13, 0xf1, 0x04, 0x18, +0x1f, 0x7f, 0xf2, 0xc9, 0xb4, 0x89, 0x13, 0x5d, 0x05, 0x25, 0xba, 0xf5, +0x0f, 0x17, 0x8e, 0xa1, 0x01, 0xc6, 0x0e, 0xaf, 0x40, 0xfb, 0x8e, 0x70, +0x54, 0xb8, 0x12, 0x9b, 0xf0, 0x7f, 0xaf, 0x3f, 0x93, 0x58, 0xad, 0x4e, +0x72, 0x7c, 0xdc, 0x05, 0x51, 0xca, 0x08, 0x8c, 0x70, 0xf5, 0x63, 0xe8, +0x1c, 0x83, 0xe0, 0x17, 0xd1, 0x31, 0x00, 0xc6, 0x6f, 0x7e, 0xfb, 0x5b, +0x8c, 0x10, 0x49, 0x09, 0x09, 0xad, 0x3b, 0xf7, 0x09, 0x37, 0x60, 0x58, +0xa1, 0x02, 0x14, 0x1c, 0x3e, 0x7c, 0xf8, 0x62, 0xff, 0x8a, 0x28, 0xaf, +0xd0, 0x03, 0x43, 0x06, 0xae, 0x3b, 0xe3, 0xcc, 0xaa, 0x9b, 0x18, 0xe3, +0xb8, 0xf6, 0x82, 0x55, 0xca, 0xec, 0xf9, 0x0e, 0x33, 0x7b, 0x94, 0x38, +0xe6, 0x75, 0x8e, 0x21, 0xa5, 0x6e, 0xe0, 0x18, 0xd2, 0xd5, 0x64, 0xcd, +0xf5, 0xd7, 0x27, 0x3a, 0x1c, 0xed, 0xfb, 0x8e, 0x0c, 0xa3, 0x0c, 0xd5, +0x32, 0xdd, 0x22, 0xdd, 0xfa, 0xb6, 0x45, 0x82, 0x42, 0xba, 0x8a, 0x40, +0x1b, 0x94, 0x41, 0xeb, 0x70, 0x29, 0xdf, 0x1b, 0xee, 0x4b, 0xa9, 0xd5, +0x94, 0xa5, 0x58, 0xba, 0xf8, 0xca, 0xdf, 0xfc, 0xc6, 0x55, 0x1a, 0x9d, +0xbd, 0xd3, 0x50, 0xd5, 0x33, 0xb4, 0xa2, 0x3c, 0xbc, 0xce, 0xd6, 0x50, +0xf9, 0x46, 0xd5, 0x80, 0xe2, 0xd9, 0x31, 0xda, 0x2e, 0x5c, 0x30, 0xdf, +0xa5, 0x63, 0x8c, 0x9c, 0x11, 0x9a, 0xc0, 0x70, 0x79, 0xf1, 0x62, 0x2e, +0xfc, 0x94, 0x96, 0xf9, 0xd0, 0x08, 0xdd, 0x8b, 0x5e, 0x11, 0x45, 0x85, +0x42, 0x08, 0xaf, 0xbf, 0x7d, 0xbf, 0x51, 0x2c, 0xdd, 0x92, 0x45, 0x0b, +0xa5, 0x93, 0x06, 0x46, 0xfd, 0xf0, 0xee, 0x19, 0x60, 0x09, 0x0c, 0xb6, +0x03, 0x80, 0xf1, 0xeb, 0x5f, 0xfd, 0x6a, 0xca, 0xc4, 0x09, 0xac, 0x46, +0xb7, 0x49, 0x57, 0x86, 0x94, 0x28, 0x25, 0x4a, 0xb6, 0xeb, 0xff, 0x98, +0x0b, 0x3f, 0xa5, 0x3b, 0x60, 0x14, 0x15, 0x5e, 0x6d, 0x50, 0x96, 0x27, +0x10, 0x2b, 0xd5, 0xa1, 0xff, 0x58, 0x56, 0x6f, 0xe3, 0xfa, 0x75, 0x52, +0x2b, 0x44, 0x4a, 0x7a, 0x8a, 0x76, 0xe1, 0x75, 0xf7, 0x0d, 0xd1, 0x13, +0x74, 0x07, 0x1f, 0x0f, 0x2b, 0x55, 0x03, 0x01, 0xc6, 0x4f, 0x3f, 0xf9, +0x64, 0xc8, 0xc0, 0x01, 0x2e, 0x73, 0xed, 0xa5, 0x2b, 0x71, 0x7d, 0xfa, +0xb7, 0xa4, 0x95, 0x7a, 0x55, 0x59, 0x33, 0x94, 0x09, 0x15, 0xbf, 0xfe, +0xf5, 0xaf, 0xa3, 0x7a, 0x85, 0xad, 0xd8, 0x7d, 0x72, 0xf9, 0x93, 0xb2, +0xea, 0x66, 0x24, 0x26, 0xdc, 0x71, 0xfc, 0x38, 0x94, 0x21, 0x01, 0xe7, +0x92, 0xb8, 0x17, 0xa2, 0x44, 0x6f, 0x67, 0xda, 0x06, 0xcf, 0x37, 0xc0, +0x10, 0x8e, 0xf1, 0xee, 0xdb, 0x6f, 0x77, 0x29, 0x2c, 0x74, 0x01, 0x63, +0xc6, 0xb5, 0x94, 0x3c, 0xad, 0x54, 0x12, 0xb7, 0xf5, 0xfa, 0xf4, 0x19, +0x96, 0x61, 0x14, 0xee, 0x23, 0x3e, 0x4a, 0xb5, 0x6d, 0x3e, 0x45, 0x6d, +0x50, 0xee, 0xde, 0xf1, 0xc0, 0xb5, 0x77, 0x39, 0xe2, 0x93, 0xf2, 0xeb, +0xd7, 0x47, 0xfa, 0x14, 0xed, 0x42, 0x82, 0x6a, 0xc3, 0x52, 0xe7, 0x56, +0x98, 0xb1, 0x04, 0x06, 0x86, 0x87, 0x17, 0x5f, 0x78, 0xa1, 0x79, 0xbe, +0xcb, 0xc1, 0xd7, 0x77, 0xf9, 0x1e, 0x9c, 0x3c, 0xa1, 0x02, 0x8c, 0x0b, +0xe2, 0x93, 0x5b, 0x5e, 0xa1, 0xb4, 0xed, 0x28, 0xaf, 0xb0, 0xbb, 0xd9, +0xb4, 0xdb, 0xfd, 0x7f, 0x35, 0x07, 0xce, 0x75, 0x26, 0x26, 0x50, 0x42, +0x8f, 0x2a, 0x21, 0x6c, 0x9c, 0x11, 0xd2, 0xd3, 0xd5, 0x9c, 0xdb, 0xcd, +0xe3, 0x23, 0x49, 0x3e, 0xf8, 0xc0, 0x03, 0xb5, 0x73, 0xb2, 0x63, 0x62, +0x13, 0x07, 0xde, 0x74, 0x2a, 0x74, 0x50, 0xa1, 0xb4, 0x6d, 0x8b, 0xfe, +0x15, 0x51, 0x54, 0xd8, 0x05, 0x43, 0xa9, 0xda, 0xbd, 0xeb, 0xf3, 0x46, +0xb3, 0x8a, 0x13, 0x1c, 0x31, 0x4b, 0x17, 0x2f, 0xa6, 0x50, 0x27, 0x3a, +0x77, 0xe4, 0x74, 0xaf, 0x34, 0x78, 0xbe, 0x79, 0x76, 0x80, 0x81, 0x49, +0x6a, 0xdf, 0x9e, 0x3d, 0xa9, 0xf1, 0x71, 0x69, 0x75, 0x5b, 0x84, 0x94, +0xe6, 0x5d, 0xf6, 0xd5, 0x47, 0xf5, 0x8a, 0x40, 0xb6, 0xb4, 0xcc, 0xe2, +0x6f, 0x1a, 0x4c, 0x5d, 0x97, 0x18, 0x1b, 0x77, 0xcd, 0xca, 0x95, 0xd2, +0xbd, 0x32, 0x72, 0x50, 0x61, 0xf0, 0x63, 0x48, 0x0b, 0x0b, 0x71, 0x62, +0x2c, 0x5b, 0xbc, 0x18, 0xba, 0xea, 0x32, 0x66, 0x4e, 0xa8, 0x02, 0xc3, +0xbe, 0x0d, 0x2a, 0x32, 0x63, 0x66, 0xbd, 0x62, 0xa6, 0xee, 0xd8, 0xab, +0x93, 0xe3, 0xe3, 0x29, 0xfc, 0x2c, 0xdd, 0x2b, 0x45, 0xe1, 0x0e, 0x6f, +0xbd, 0x42, 0x57, 0xca, 0x79, 0x52, 0x69, 0x77, 0x24, 0x26, 0x29, 0x89, +0x07, 0xa1, 0x16, 0xc4, 0xc8, 0x61, 0xc3, 0x5c, 0x9a, 0xf7, 0xcc, 0xeb, +0x42, 0xd2, 0x24, 0x15, 0x45, 0x85, 0x57, 0xba, 0xf7, 0x70, 0x42, 0x7a, +0xf1, 0xbf, 0x6a, 0x8f, 0x5c, 0x96, 0x92, 0x90, 0xb0, 0x69, 0xc3, 0x06, +0x41, 0x45, 0x44, 0xf1, 0x0a, 0x3d, 0x82, 0x50, 0x15, 0x8f, 0x42, 0x8e, +0x42, 0x31, 0x7d, 0xe3, 0xf5, 0xd7, 0x5b, 0x37, 0x6f, 0x46, 0x26, 0xdf, +0x80, 0x6b, 0x8e, 0x04, 0xb2, 0xc2, 0x95, 0x73, 0xad, 0x9d, 0x38, 0xa8, +0x68, 0x74, 0xa0, 0xbb, 0x77, 0xd3, 0x68, 0xc7, 0x9f, 0x6b, 0x0d, 0xbe, +0x3c, 0xd5, 0xe9, 0xdc, 0xbe, 0x6d, 0x9b, 0x8e, 0x8a, 0x48, 0xa8, 0x91, +0x63, 0x69, 0x92, 0x92, 0x1e, 0xaa, 0xb8, 0x35, 0x01, 0xc6, 0x99, 0xd3, +0xa7, 0xab, 0xa7, 0x26, 0x27, 0x52, 0x94, 0x76, 0x77, 0xa8, 0xa5, 0x28, +0x45, 0xe3, 0xa0, 0x02, 0xd9, 0x8d, 0x5a, 0x6f, 0xff, 0x55, 0x62, 0x7a, +0x4e, 0x4e, 0x66, 0xc6, 0xe9, 0x7b, 0xee, 0x89, 0x4c, 0x5e, 0x61, 0x0e, +0x94, 0x52, 0x9d, 0x54, 0xd1, 0xbc, 0x37, 0xdc, 0x74, 0x13, 0x04, 0xd6, +0xf5, 0x92, 0x50, 0x2b, 0x3a, 0x18, 0xe5, 0x15, 0x81, 0xa0, 0xa2, 0x68, +0xc1, 0xfa, 0xc4, 0xb8, 0xb8, 0x15, 0x4b, 0x96, 0x20, 0x49, 0x47, 0xa6, +0x5e, 0x61, 0xe0, 0x18, 0xd2, 0x75, 0x1b, 0xcd, 0x1b, 0x8e, 0x81, 0x51, +0xee, 0xa3, 0x0f, 0x3f, 0x2c, 0x6c, 0xdf, 0xd6, 0xe1, 0xcc, 0x0c, 0xb1, +0xea, 0xe5, 0x51, 0xbd, 0x22, 0x00, 0x54, 0x9c, 0xef, 0x30, 0x68, 0x52, +0x72, 0x5c, 0xcc, 0x53, 0x4f, 0x3e, 0x49, 0x29, 0x4e, 0x50, 0x11, 0x69, +0x36, 0x28, 0x83, 0x2f, 0x5c, 0xd7, 0xbc, 0x01, 0x86, 0x68, 0xde, 0x04, +0xd5, 0x92, 0xc6, 0x38, 0xe0, 0xf2, 0x75, 0x01, 0xac, 0xb3, 0xcf, 0x16, +0xf3, 0x40, 0xef, 0x15, 0xe5, 0x15, 0x7e, 0xaf, 0x60, 0xfa, 0xb6, 0x6f, +0x6a, 0x36, 0xed, 0x98, 0x1e, 0x1f, 0x8b, 0xa3, 0x07, 0x54, 0x40, 0x01, +0x11, 0x8e, 0x0a, 0xa5, 0x7c, 0x4b, 0x8d, 0x5a, 0x42, 0x60, 0xd0, 0xbc, +0x09, 0x2a, 0x6d, 0xd1, 0xa4, 0x49, 0xad, 0x06, 0x4d, 0x73, 0x4b, 0x42, +0xa7, 0x00, 0xa1, 0x4d, 0x54, 0x44, 0x60, 0xe5, 0x1b, 0xaf, 0x68, 0x69, +0xb4, 0xe3, 0x4f, 0x29, 0xb9, 0x8d, 0xea, 0xe7, 0x66, 0x93, 0xe6, 0x4f, +0xf4, 0x18, 0xa6, 0xfa, 0x88, 0xf2, 0xe2, 0x79, 0xe8, 0x18, 0x86, 0xad, +0x16, 0x60, 0x88, 0x07, 0x83, 0xcd, 0x62, 0xcc, 0xf0, 0xe1, 0x31, 0x8e, +0xb8, 0xf6, 0xfb, 0xa8, 0xf2, 0x5f, 0xe1, 0xbb, 0xbe, 0x7f, 0x77, 0x8c, +0xa2, 0xc2, 0xef, 0x57, 0xd5, 0xaa, 0xf8, 0x7f, 0x93, 0xaa, 0xd7, 0xee, +0xd8, 0xba, 0xe5, 0x87, 0x1f, 0x7e, 0x48, 0xfe, 0x89, 0xf8, 0xb6, 0x25, +0x8d, 0x3b, 0x72, 0xfc, 0x15, 0x66, 0x6c, 0xe8, 0x95, 0x6a, 0xf1, 0x60, +0x60, 0x8f, 0xa2, 0x36, 0xa9, 0x33, 0x21, 0x71, 0xec, 0xa6, 0x7b, 0xfc, +0x5e, 0xea, 0x8a, 0xbe, 0xd0, 0x8d, 0x0d, 0xaa, 0x4c, 0x3d, 0xa8, 0xb0, +0xaf, 0xbe, 0xec, 0xdf, 0xa2, 0x8f, 0xbc, 0xe5, 0xc1, 0xc4, 0xb4, 0xec, +0xc1, 0x45, 0x7d, 0x3f, 0xf9, 0xe4, 0x13, 0x78, 0x29, 0xaf, 0x1f, 0x99, +0x21, 0x42, 0xe2, 0xa0, 0x3c, 0x44, 0xd7, 0xea, 0x91, 0x20, 0xa2, 0x5d, +0x1c, 0x3b, 0x72, 0x24, 0x3d, 0x29, 0x79, 0xe0, 0xa2, 0xcd, 0xfe, 0xad, +0x73, 0x25, 0x5c, 0x65, 0x87, 0x57, 0x44, 0x51, 0x61, 0x7e, 0x31, 0x28, +0x15, 0x7d, 0x57, 0x1d, 0x8e, 0x4f, 0x4a, 0xbf, 0x64, 0xd2, 0x04, 0x7a, +0x18, 0x10, 0xe6, 0x10, 0x45, 0x85, 0x6e, 0x8f, 0x92, 0x1e, 0x93, 0x62, +0xa5, 0xfd, 0xf1, 0xcb, 0x2f, 0xd7, 0x48, 0x4f, 0xef, 0x30, 0x7c, 0x66, +0x25, 0xd0, 0x77, 0xf9, 0x49, 0x50, 0x51, 0x54, 0x98, 0x5f, 0x27, 0xfe, +0xbb, 0x16, 0x97, 0xac, 0x75, 0xc4, 0xc4, 0x2d, 0x5b, 0xbc, 0x88, 0xb6, +0xc5, 0x94, 0xc3, 0x89, 0xa8, 0x98, 0x59, 0xcf, 0x99, 0x18, 0xc2, 0x2e, +0xc4, 0xdb, 0x8d, 0x54, 0x89, 0x75, 0xae, 0x56, 0xf5, 0x6a, 0x79, 0x05, +0x1d, 0xa2, 0xa8, 0x08, 0x11, 0xbd, 0xca, 0xbf, 0xbd, 0x64, 0xcb, 0x7f, +0x51, 0x2a, 0x6a, 0xb4, 0x1b, 0x84, 0xcd, 0x91, 0x8a, 0xf6, 0x38, 0x2b, +0xf0, 0x58, 0x49, 0x3a, 0x5e, 0x24, 0xe4, 0x57, 0x78, 0x4d, 0x4e, 0x52, +0xa8, 0x10, 0x4b, 0xd4, 0x67, 0xff, 0xf7, 0x7f, 0x35, 0xab, 0x67, 0xa6, +0xd5, 0x69, 0x11, 0x3e, 0xa8, 0x38, 0x7a, 0xf4, 0x68, 0x94, 0x57, 0x98, +0x5f, 0xe7, 0xa8, 0x2d, 0x0f, 0xc5, 0xa5, 0x65, 0xf7, 0xe9, 0xda, 0xf9, +0x8d, 0x37, 0xde, 0xa0, 0xad, 0x3d, 0x01, 0x0e, 0x04, 0x41, 0x21, 0x30, +0x80, 0x8a, 0x88, 0x0a, 0xf7, 0xf0, 0x60, 0x89, 0x12, 0xfb, 0x2c, 0xbc, +0xe2, 0xbd, 0x77, 0xdf, 0xcd, 0xc9, 0x48, 0xaf, 0x5d, 0x38, 0x34, 0x0c, +0x51, 0x11, 0x7e, 0xdd, 0x22, 0x03, 0x79, 0x49, 0x43, 0xd7, 0xdc, 0x8e, +0x4a, 0xb6, 0x68, 0xfe, 0xdc, 0x8f, 0x3f, 0xfe, 0x18, 0xb3, 0xac, 0xb8, +0xf0, 0x40, 0x45, 0xa4, 0xb5, 0x96, 0x74, 0x67, 0x83, 0x12, 0xe3, 0xac, +0x48, 0x50, 0xcf, 0x3d, 0xfb, 0x4c, 0x56, 0x5a, 0x5a, 0x87, 0x31, 0x0b, +0x02, 0x59, 0xf0, 0x0a, 0xbd, 0xd6, 0xab, 0xb6, 0xad, 0x78, 0x45, 0x14, +0x15, 0xfa, 0x8b, 0x19, 0xb4, 0xea, 0x00, 0x4b, 0x77, 0xcd, 0x8a, 0xe5, +0x04, 0xd8, 0x4b, 0x4b, 0x24, 0x29, 0xf3, 0x11, 0x45, 0x85, 0x6e, 0x99, +0x65, 0x9b, 0x80, 0x85, 0xde, 0x79, 0xf2, 0x64, 0x46, 0x72, 0xf2, 0x80, +0xf9, 0x37, 0x55, 0x28, 0x65, 0xfb, 0x2b, 0x1b, 0xbb, 0x26, 0x69, 0x1f, +0x15, 0x61, 0xd9, 0x2d, 0xd2, 0xdf, 0xf7, 0x74, 0xbe, 0xff, 0xf2, 0x3d, +0x2c, 0xdd, 0xf5, 0xd7, 0x5e, 0xc3, 0xb2, 0x50, 0xfc, 0x46, 0x5c, 0x78, +0x51, 0x54, 0x98, 0x53, 0xba, 0x59, 0x99, 0xc1, 0x45, 0x45, 0xb1, 0x8e, +0xb8, 0x09, 0xc5, 0x0f, 0xf9, 0xbb, 0xda, 0x15, 0xae, 0xa3, 0xda, 0x44, +0x05, 0x2f, 0x3e, 0xca, 0x2b, 0xb4, 0x97, 0x7a, 0xbe, 0xef, 0xe2, 0xed, +0x2c, 0xdd, 0x86, 0x9b, 0xd6, 0xb2, 0x2c, 0x98, 0x65, 0x71, 0xe1, 0x45, +0x48, 0x8d, 0x0f, 0x3b, 0x9e, 0x0a, 0xd1, 0x28, 0xa4, 0xfc, 0x07, 0x71, +0x50, 0xf4, 0x52, 0xeb, 0x71, 0xc9, 0xf2, 0x66, 0xfb, 0xfe, 0x11, 0x45, +0x45, 0x85, 0xe3, 0x3b, 0x10, 0x8e, 0xe9, 0xf3, 0xb5, 0xe7, 0x7b, 0x5c, +0xbe, 0x19, 0x54, 0xdc, 0xb2, 0x69, 0xa3, 0x98, 0x65, 0xa3, 0xa8, 0x30, +0x94, 0x8a, 0x92, 0x70, 0x8f, 0xfd, 0x7b, 0xf6, 0x64, 0xa6, 0xa5, 0x24, +0x66, 0xd5, 0x0b, 0xb1, 0xee, 0x61, 0x51, 0x5e, 0xe1, 0xd7, 0x06, 0x76, +0xbe, 0x70, 0xf6, 0x3a, 0x96, 0xae, 0xa4, 0x78, 0x9b, 0x98, 0x65, 0x71, +0xe1, 0xb1, 0x35, 0x86, 0x7d, 0x95, 0x34, 0x77, 0x8c, 0xc2, 0x2c, 0x38, +0xb1, 0x20, 0x1b, 0xd6, 0xae, 0x4d, 0x4e, 0x8c, 0x8f, 0x4b, 0xca, 0x18, +0xba, 0xe1, 0x3e, 0xbf, 0x16, 0xb9, 0xf2, 0x36, 0x56, 0x0d, 0x15, 0xef, +0xbd, 0xf7, 0x1e, 0x42, 0xb2, 0xb1, 0x52, 0xbf, 0x68, 0xdb, 0x51, 0x09, +0xaa, 0xec, 0x7b, 0x3d, 0xdf, 0xf6, 0x92, 0xd5, 0x2c, 0xdd, 0xde, 0xdd, +0xbb, 0x88, 0x96, 0x35, 0xa3, 0x22, 0xa2, 0xe2, 0xa0, 0xcc, 0x90, 0x80, +0x73, 0x5e, 0xb5, 0x70, 0x61, 0x02, 0xed, 0xeb, 0xeb, 0x34, 0x1f, 0x7e, +0xcb, 0xc3, 0x4d, 0xf7, 0xfe, 0x3d, 0x0c, 0x51, 0x81, 0xc2, 0x14, 0x45, +0x85, 0x01, 0x15, 0x4d, 0xc7, 0x2f, 0x07, 0x15, 0xb7, 0x1e, 0x3c, 0x08, +0x2a, 0x3e, 0xfb, 0xec, 0x33, 0x71, 0x6c, 0x47, 0x20, 0xaf, 0x30, 0x43, +0x02, 0xef, 0xcd, 0xd4, 0x09, 0xe3, 0xd1, 0x25, 0x0a, 0x07, 0x8c, 0x09, +0x31, 0xc1, 0xc9, 0xaa, 0x2f, 0x9e, 0x5b, 0x5e, 0x11, 0x45, 0x85, 0x69, +0xab, 0x3b, 0x5f, 0x7f, 0xd8, 0x15, 0xa0, 0xe2, 0xb6, 0xa3, 0x47, 0x21, +0x02, 0x1d, 0x15, 0x61, 0x5f, 0x51, 0x53, 0x0f, 0x76, 0x32, 0x40, 0x82, +0xad, 0xe1, 0xc4, 0xf1, 0xe3, 0x8d, 0x6b, 0xe5, 0xb9, 0xaa, 0x7b, 0x8c, +0x5f, 0x10, 0xaa, 0x90, 0xb0, 0x69, 0x99, 0x8d, 0xa2, 0xc2, 0x8c, 0x8a, +0x5a, 0x03, 0xe7, 0xf0, 0xee, 0x4f, 0x9e, 0x38, 0x11, 0x99, 0xa8, 0x30, +0x37, 0xce, 0x7b, 0xed, 0xc7, 0xaf, 0x4e, 0x1e, 0x3b, 0x86, 0x06, 0xc4, +0x24, 0xb2, 0xf7, 0xbf, 0x72, 0x6b, 0xb3, 0xfd, 0x5f, 0x85, 0x98, 0xd4, +0xe4, 0xa6, 0x26, 0xb9, 0xf0, 0x0a, 0x71, 0x49, 0x95, 0x46, 0x92, 0xa3, +0x57, 0x44, 0x51, 0x61, 0xc1, 0x2b, 0x46, 0x2c, 0x12, 0x09, 0x2a, 0x02, +0x51, 0x61, 0x80, 0xc4, 0x87, 0x1f, 0x7c, 0xb0, 0xfe, 0xc6, 0x1b, 0xeb, +0xe5, 0xe5, 0xb2, 0x20, 0x39, 0x5d, 0xc7, 0x8d, 0x2c, 0x7e, 0x22, 0x94, +0x8c, 0xb0, 0x96, 0xe6, 0x47, 0x93, 0xb6, 0x6d, 0x8d, 0x0a, 0x4c, 0xf2, +0x98, 0x20, 0x75, 0x9f, 0x5f, 0x08, 0xef, 0x04, 0x3e, 0xdb, 0x61, 0xcd, +0xc6, 0x90, 0xf3, 0xcd, 0xa7, 0x5e, 0xcf, 0x6a, 0x6c, 0xdd, 0x7c, 0xb3, +0x01, 0x15, 0xe1, 0x5d, 0xa9, 0xdf, 0x5c, 0xd1, 0xe3, 0xb6, 0x63, 0xc7, +0x2e, 0xd4, 0x7d, 0x72, 0x38, 0x73, 0xf2, 0x87, 0x5c, 0x77, 0xb4, 0xf9, +0x81, 0xaf, 0xc3, 0x81, 0x30, 0xa2, 0xa8, 0xf0, 0xeb, 0x2d, 0x9e, 0x6f, +0x3f, 0x77, 0x0b, 0x4b, 0xb7, 0xfa, 0x9a, 0x55, 0x96, 0xa8, 0x08, 0x63, +0x1b, 0x94, 0x30, 0x0a, 0x09, 0x73, 0x22, 0xa0, 0xa3, 0xb0, 0x6d, 0x5b, +0xd6, 0x61, 0xe0, 0xb2, 0x3d, 0x2d, 0x0f, 0x86, 0x4e, 0x5a, 0xb6, 0xd7, +0x6d, 0xd1, 0x0a, 0x15, 0x84, 0xba, 0x19, 0x25, 0xa8, 0x28, 0xaf, 0x30, +0x80, 0xa7, 0xc3, 0x94, 0x15, 0x2c, 0x1d, 0x45, 0x97, 0x61, 0xa1, 0x11, +0x65, 0x83, 0x32, 0x24, 0xa0, 0xb6, 0x6a, 0xde, 0x2c, 0x2e, 0x35, 0xa7, +0xdb, 0xe1, 0xbf, 0xf9, 0xb5, 0xb9, 0x54, 0x9e, 0x47, 0xc2, 0x33, 0x30, +0xa2, 0xbc, 0xc2, 0xbf, 0xd7, 0xd9, 0xb2, 0x68, 0x7c, 0xa3, 0xbc, 0x1a, +0xb7, 0x1e, 0x3a, 0x64, 0xf0, 0xe2, 0x85, 0xbd, 0x0d, 0x4a, 0x18, 0x85, +0xe4, 0xd9, 0xa1, 0x70, 0xb6, 0x68, 0x92, 0x9f, 0x98, 0xd5, 0xb0, 0xf0, +0xd6, 0x28, 0x2a, 0x04, 0x49, 0x5e, 0xd9, 0x50, 0x58, 0x9f, 0xd0, 0x69, +0xf4, 0x9c, 0x6a, 0x09, 0x8e, 0x87, 0xce, 0x9e, 0x8d, 0x58, 0x54, 0x10, +0xd3, 0x41, 0x08, 0x7d, 0xd3, 0x86, 0x0d, 0x92, 0x6a, 0x35, 0x6f, 0x73, +0x30, 0xd4, 0xfc, 0x74, 0x51, 0x5e, 0x51, 0x1e, 0x00, 0xee, 0x31, 0x6d, +0x19, 0x89, 0x78, 0xf7, 0x9e, 0x3e, 0x1d, 0x69, 0x71, 0x50, 0xe4, 0x54, +0xa9, 0x0a, 0xe4, 0x94, 0x71, 0xc8, 0xaf, 0x57, 0x37, 0xa5, 0x7e, 0xbb, +0xfc, 0xbd, 0x61, 0xa1, 0x64, 0xbb, 0xf7, 0xe2, 0xb9, 0xb5, 0x41, 0xb1, +0x29, 0x46, 0x6d, 0x50, 0x3f, 0x00, 0xec, 0x7c, 0xd1, 0xbc, 0xb5, 0xe2, +0xaf, 0x88, 0xb4, 0x98, 0x59, 0x41, 0x05, 0x31, 0xf3, 0xc4, 0x08, 0xbf, +0xfd, 0xd6, 0x5b, 0x0d, 0x6b, 0xd5, 0xaa, 0xd1, 0xba, 0x4f, 0xde, 0xce, +0x7f, 0x95, 0xc7, 0xd6, 0x53, 0x69, 0x63, 0x6a, 0x84, 0x4e, 0xb1, 0x2f, +0x5e, 0xb1, 0xa0, 0x02, 0x2f, 0xc5, 0xc5, 0x2e, 0xf4, 0xe2, 0xaf, 0x40, +0xdb, 0x8e, 0xa2, 0x42, 0x8f, 0x24, 0x1f, 0x78, 0xe5, 0x56, 0xf1, 0x57, +0xa8, 0xfc, 0x0a, 0x3d, 0x92, 0x3c, 0x5c, 0x6d, 0x50, 0x4a, 0xd5, 0x96, +0xda, 0xe3, 0xaf, 0xbc, 0xfc, 0x72, 0xbd, 0xbc, 0xbc, 0xfc, 0x5e, 0x63, +0x93, 0xb6, 0x7d, 0x5f, 0x69, 0x14, 0x5c, 0x1e, 0x82, 0xba, 0x1d, 0x54, +0x10, 0xec, 0x15, 0x45, 0x85, 0xe1, 0xad, 0x0f, 0xbf, 0x90, 0xa1, 0x3a, +0xff, 0xb2, 0xd9, 0x9f, 0x7c, 0xfc, 0x71, 0xe4, 0xe4, 0xe2, 0xa9, 0x32, +0x05, 0x52, 0xd2, 0xe6, 0xb9, 0x67, 0x9f, 0xad, 0x93, 0x93, 0xdd, 0x3e, +0x84, 0x4a, 0xda, 0xd8, 0x84, 0x50, 0x14, 0x15, 0xfe, 0x6d, 0x72, 0x8d, +0x4b, 0xfe, 0x92, 0x5e, 0xaf, 0x25, 0x61, 0xa1, 0xfb, 0x76, 0xef, 0x96, +0x30, 0x63, 0xc9, 0xdb, 0x0e, 0xef, 0x1a, 0x1f, 0xca, 0x53, 0x81, 0xaa, +0x4d, 0x46, 0xd1, 0xfd, 0xf7, 0xdd, 0x47, 0x97, 0x82, 0x9e, 0xd3, 0x43, +0xad, 0x10, 0xbf, 0x57, 0x6c, 0xb8, 0xb1, 0xcc, 0x96, 0x91, 0xa0, 0xa2, +0xbc, 0xc2, 0x12, 0x39, 0xfd, 0x6f, 0x38, 0x91, 0x98, 0x5a, 0xad, 0x41, +0xcd, 0xdc, 0x5f, 0xfe, 0xe2, 0x17, 0x52, 0xe3, 0x23, 0xec, 0x2b, 0xdf, +0x28, 0x54, 0x48, 0xb3, 0xaf, 0x5d, 0x3b, 0x77, 0xa6, 0x25, 0x26, 0x0c, +0x59, 0xb1, 0xcb, 0xbf, 0x9d, 0xa5, 0xea, 0x5e, 0x65, 0xe2, 0x15, 0xc4, +0x8c, 0x1b, 0xf5, 0x8a, 0x28, 0x2a, 0x2c, 0xdf, 0x5f, 0xdb, 0x92, 0xdf, +0x65, 0x34, 0xee, 0x98, 0x1c, 0xe3, 0xf8, 0xe0, 0x83, 0x0f, 0x22, 0xa4, +0x1e, 0x94, 0x72, 0x56, 0x80, 0x0a, 0x22, 0x64, 0x97, 0x5e, 0x79, 0x25, +0xf4, 0x33, 0x6e, 0x6b, 0xe8, 0x24, 0x64, 0x7b, 0xe5, 0x12, 0x72, 0x82, +0x4d, 0x54, 0x90, 0x84, 0x69, 0xd2, 0xb6, 0xcb, 0x36, 0xee, 0xb6, 0x79, +0xbf, 0x30, 0x3a, 0x2d, 0x7f, 0xe7, 0xe7, 0xd5, 0xdb, 0xf4, 0x4f, 0x72, +0xf5, 0xaf, 0x78, 0x42, 0xd5, 0x0e, 0x8c, 0x04, 0x09, 0x0a, 0x17, 0x9e, +0xa0, 0x62, 0xec, 0xc8, 0x91, 0xd0, 0x4f, 0xc7, 0xbd, 0x7f, 0xa8, 0xba, +0xbb, 0xbe, 0x7f, 0xf4, 0x66, 0x1f, 0x15, 0xa4, 0xd7, 0x94, 0xb5, 0xcc, +0x46, 0x3a, 0x2a, 0x32, 0x8a, 0xbf, 0x69, 0x3c, 0x70, 0x46, 0x52, 0x7c, +0xfc, 0xf1, 0xdb, 0x6f, 0x83, 0xc3, 0x46, 0x42, 0x9d, 0x59, 0xc5, 0x2b, +0x5c, 0x15, 0x01, 0x3f, 0xfb, 0xac, 0x47, 0xd7, 0x2e, 0x8e, 0xe4, 0xac, +0xd6, 0xfb, 0xbe, 0x88, 0xa2, 0xe2, 0x07, 0x68, 0x6c, 0x89, 0x74, 0x54, +0x40, 0x0a, 0x3d, 0x17, 0x6c, 0x74, 0x26, 0x38, 0x89, 0xa3, 0xc6, 0x0c, +0x15, 0x09, 0x95, 0xfa, 0x41, 0x85, 0xf4, 0xf8, 0xc2, 0x2c, 0x4b, 0x97, +0xd4, 0xe6, 0x8d, 0x1a, 0x64, 0xb7, 0xec, 0xdb, 0x60, 0x77, 0x28, 0xa7, +0x52, 0x78, 0x8b, 0x24, 0x17, 0x7f, 0x85, 0xb5, 0x5e, 0x61, 0x25, 0x41, +0x55, 0xd5, 0xd0, 0x2e, 0xff, 0x98, 0xa6, 0x5f, 0x57, 0x51, 0x57, 0x33, +0xde, 0x99, 0x3a, 0x74, 0xe0, 0x00, 0xe9, 0xea, 0x12, 0xf6, 0xbd, 0x8e, +0x04, 0x15, 0x24, 0xe2, 0xf2, 0xa4, 0x0f, 0xdc, 0x7f, 0x7f, 0x4e, 0x5a, +0x72, 0xfb, 0x89, 0x4b, 0x53, 0x8b, 0xbf, 0x8b, 0xf2, 0x0a, 0xc5, 0x2b, +0xa2, 0xa8, 0xf8, 0x6f, 0xab, 0x92, 0x4f, 0x13, 0x33, 0x6a, 0x36, 0xaa, +0x53, 0x9b, 0x78, 0xf2, 0x48, 0xe8, 0x00, 0xa6, 0xa3, 0x02, 0x03, 0x14, +0xa4, 0x30, 0x68, 0xd5, 0xc1, 0x70, 0x83, 0x84, 0x4f, 0xda, 0xb6, 0x49, +0xaf, 0x88, 0xa2, 0xe2, 0xbf, 0xd9, 0xdb, 0xbf, 0xaa, 0xd6, 0xba, 0x28, +0xa7, 0x5a, 0xe6, 0xb9, 0x47, 0x1f, 0x8d, 0x84, 0x1e, 0xaa, 0x82, 0x0a, +0xc2, 0x3d, 0x30, 0x43, 0xaf, 0x5c, 0xba, 0x14, 0x54, 0x4c, 0xd8, 0xf1, +0x78, 0x24, 0xa2, 0xe2, 0xd8, 0xb1, 0x63, 0x48, 0xcc, 0x48, 0x50, 0x7e, +0xa1, 0xe2, 0x3f, 0x31, 0x5b, 0x5c, 0x3f, 0x8e, 0x8b, 0x3f, 0x61, 0x08, +0xa4, 0x1a, 0x5d, 0xc6, 0x66, 0xa5, 0xa7, 0x51, 0x4a, 0x35, 0x12, 0x7a, +0xa8, 0xaa, 0xae, 0x14, 0xff, 0xfb, 0x3f, 0xff, 0x53, 0xd4, 0xb3, 0xbb, +0x23, 0x25, 0xbb, 0xfd, 0xbe, 0x3f, 0x47, 0x51, 0xa1, 0x59, 0xa1, 0xbc, +0x0b, 0xe2, 0x80, 0xe1, 0xdf, 0xb1, 0x17, 0x7e, 0xf8, 0x70, 0x01, 0x18, +0xe1, 0x86, 0x8a, 0x1a, 0xdb, 0xbf, 0x4e, 0xae, 0xd3, 0xb2, 0x56, 0x4e, +0xf6, 0x5b, 0x6f, 0xbe, 0xa9, 0xa3, 0x22, 0x2c, 0x8b, 0xf5, 0xeb, 0xe1, +0x1e, 0x84, 0xd0, 0x27, 0x3b, 0x1c, 0xcd, 0x87, 0xce, 0xce, 0xdd, 0x19, +0x46, 0x29, 0x78, 0x56, 0x31, 0xb3, 0xd6, 0xda, 0x36, 0xbc, 0x02, 0x9b, +0x23, 0x5e, 0x2a, 0xdf, 0x79, 0xc5, 0x7f, 0xe2, 0xb6, 0x7c, 0x9f, 0xb8, +0xf5, 0xfb, 0xf8, 0xad, 0x02, 0x89, 0x30, 0x44, 0x45, 0xab, 0x1d, 0xbf, +0x4d, 0x70, 0xa6, 0xf5, 0xe9, 0xd6, 0x45, 0xba, 0xd0, 0x87, 0xb7, 0xb6, +0xad, 0xcc, 0xb2, 0xb8, 0xf0, 0x6f, 0xbc, 0xee, 0x5a, 0x36, 0xc8, 0xb1, +0x9b, 0x43, 0xad, 0x28, 0xa0, 0xcd, 0x7d, 0xd9, 0xca, 0x5f, 0x81, 0x35, +0xa5, 0x34, 0xe2, 0xc3, 0x2f, 0x54, 0xb8, 0xb8, 0x04, 0x90, 0x70, 0x6e, +0xfb, 0x2e, 0x69, 0xdb, 0x77, 0xf1, 0x5b, 0x09, 0xa8, 0x0c, 0x43, 0x48, +0xc0, 0xfa, 0x06, 0x2d, 0xdf, 0x9d, 0x98, 0xe0, 0x5c, 0xb5, 0x7c, 0xb9, +0xa0, 0x02, 0x69, 0x5b, 0xca, 0x92, 0x87, 0x5f, 0xcc, 0xac, 0x2a, 0xfd, +0x84, 0x01, 0x8a, 0x87, 0xed, 0xd6, 0xae, 0x4d, 0x7c, 0xf5, 0x7a, 0x1d, +0x0e, 0x7c, 0x1e, 0x7e, 0xfc, 0xdf, 0x9d, 0x6f, 0x3b, 0x40, 0x54, 0xb8, +0x20, 0x01, 0x7f, 0x00, 0x12, 0x29, 0xdb, 0xbf, 0x4d, 0x2e, 0xfe, 0x36, +0x7e, 0x2b, 0x96, 0xbb, 0x30, 0x44, 0x05, 0x0d, 0x23, 0x0b, 0xc7, 0x2d, +0x48, 0x8a, 0x8b, 0xa3, 0x09, 0x58, 0xd8, 0x77, 0xa1, 0xd7, 0x2b, 0x18, +0x3c, 0xfb, 0xec, 0x33, 0x6c, 0xa6, 0xad, 0xc7, 0x2c, 0xcc, 0x0d, 0xb3, +0xb4, 0x0a, 0x8f, 0x12, 0x54, 0x20, 0xa8, 0x70, 0x49, 0x4a, 0x17, 0xb8, +0xc4, 0xb7, 0x69, 0xdb, 0xbf, 0x4d, 0xdf, 0xf1, 0xaf, 0xe4, 0xed, 0xdf, +0xc6, 0x6e, 0x11, 0x5e, 0x11, 0x6e, 0xc0, 0xa0, 0x61, 0x64, 0xbd, 0x8e, +0xfd, 0x93, 0x62, 0x1d, 0xcf, 0x3f, 0xff, 0x7c, 0x78, 0x5b, 0x66, 0x55, +0x5a, 0x05, 0xfe, 0x3b, 0xbc, 0xda, 0xd7, 0xad, 0x5a, 0xe9, 0x12, 0x9f, +0x6e, 0xbe, 0xd7, 0xb1, 0xe5, 0x7c, 0xa4, 0xf3, 0x0a, 0x5e, 0xbc, 0x8d, +0x5c, 0xbc, 0x0b, 0x8c, 0x62, 0xcb, 0x77, 0xa9, 0xc5, 0xdf, 0x66, 0x94, +0xfc, 0x8b, 0xff, 0x13, 0xb7, 0x7e, 0x17, 0x13, 0xa6, 0xaa, 0x76, 0xeb, +0xe2, 0xff, 0x4d, 0xc9, 0xa9, 0x9f, 0x1a, 0xe7, 0xf8, 0xc9, 0x4f, 0x7e, +0x12, 0xc6, 0x5d, 0xe8, 0x95, 0xec, 0x24, 0x15, 0x0c, 0x7e, 0xfb, 0x9b, +0xdf, 0x34, 0xaf, 0x5f, 0x27, 0xa5, 0x56, 0xd3, 0x8e, 0x07, 0xff, 0x1a, +0x9e, 0x90, 0x28, 0xeb, 0xaf, 0xe0, 0xe5, 0x92, 0x84, 0x2c, 0x8d, 0x7b, +0x2c, 0xf4, 0x0a, 0x3b, 0xa8, 0xc0, 0x08, 0x0b, 0x67, 0x40, 0x70, 0xca, +0xd8, 0xe1, 0xfa, 0x49, 0xdd, 0xfe, 0x5d, 0x7c, 0x98, 0x32, 0x8a, 0x86, +0xdb, 0xff, 0xd8, 0x65, 0xca, 0x32, 0xb6, 0x89, 0x99, 0xd3, 0x2f, 0xa1, +0x09, 0x58, 0x18, 0xc7, 0x41, 0x89, 0xec, 0x24, 0x6e, 0x0a, 0x82, 0x02, +0xef, 0xbd, 0xe7, 0x1e, 0x9e, 0xba, 0xed, 0xa4, 0x65, 0x79, 0xbb, 0xc2, +0x2b, 0x2b, 0xd5, 0x4d, 0x45, 0x4d, 0x85, 0x8a, 0x32, 0x91, 0xe4, 0x4a, +0xdb, 0xb6, 0x81, 0x0a, 0x20, 0xf1, 0x6f, 0x98, 0x43, 0xaa, 0x0b, 0x15, +0x2e, 0x46, 0x91, 0xb0, 0xf5, 0xfb, 0x70, 0x65, 0x14, 0x23, 0x6e, 0x7e, +0x20, 0x21, 0x3d, 0xa7, 0x45, 0xe3, 0x86, 0x3f, 0x7a, 0xee, 0x39, 0x29, +0x68, 0x40, 0xbe, 0x01, 0x44, 0x13, 0x66, 0x31, 0xb3, 0xba, 0xec, 0x84, +0xe9, 0x89, 0x67, 0xec, 0xde, 0xa9, 0x43, 0x62, 0x72, 0xb5, 0xf1, 0xdb, +0x1f, 0x09, 0x5b, 0x46, 0x11, 0x54, 0x5e, 0x01, 0x24, 0x5c, 0x1a, 0x45, +0x4a, 0xf1, 0xbf, 0x50, 0x27, 0x10, 0x9f, 0xd0, 0xb6, 0xe3, 0x2e, 0xca, +0x4e, 0xe1, 0xa6, 0x51, 0x20, 0x4f, 0x0f, 0x58, 0xe6, 0x8a, 0x77, 0xa0, +0x76, 0xe0, 0x87, 0x1f, 0x7e, 0x28, 0xc5, 0xfa, 0x2b, 0x3e, 0xeb, 0x88, +0xfd, 0xfb, 0xcb, 0xbf, 0xfe, 0xf5, 0x8b, 0xcf, 0x3f, 0xe7, 0xe7, 0xaf, +0x5f, 0x7c, 0x81, 0x84, 0x23, 0x85, 0xfd, 0x82, 0x68, 0x01, 0x53, 0x3e, +0x0a, 0xe9, 0x9c, 0x7d, 0xf2, 0x8e, 0xe3, 0xc9, 0xf1, 0xf1, 0x79, 0xbd, +0xa6, 0x84, 0x7c, 0x25, 0x59, 0xdb, 0x95, 0x6f, 0x94, 0xbf, 0xc2, 0x3f, +0x09, 0x0a, 0x1f, 0x36, 0x76, 0x27, 0x94, 0xec, 0x7f, 0xa5, 0x63, 0x7a, +0x42, 0x76, 0x72, 0x31, 0x8a, 0x30, 0x54, 0xb2, 0x2f, 0xec, 0x91, 0xe7, +0x7b, 0xcf, 0x5f, 0x0f, 0x2a, 0x76, 0xed, 0xd8, 0x6e, 0xe8, 0x2c, 0x5c, +0x91, 0xfd, 0xb6, 0xef, 0xb9, 0xfb, 0xee, 0x41, 0x7d, 0xfa, 0x14, 0x75, +0x2d, 0xec, 0xd7, 0xb5, 0x70, 0xd4, 0xb0, 0x61, 0xcf, 0x3d, 0xf3, 0x8c, +0x54, 0xb9, 0x15, 0x1f, 0x62, 0x50, 0xb0, 0xa1, 0x7c, 0x14, 0x92, 0xa8, +0xdd, 0xa3, 0x4b, 0xe7, 0xf8, 0xa4, 0xf4, 0xe1, 0x37, 0x87, 0x5d, 0x9a, +0x91, 0x01, 0x24, 0x9a, 0x02, 0x1d, 0xa0, 0x5e, 0x01, 0xa3, 0xf8, 0x37, +0x76, 0xd8, 0xf4, 0xed, 0xff, 0x42, 0x82, 0x4a, 0xdc, 0xf6, 0xfd, 0x05, +0x97, 0x76, 0xf8, 0x71, 0x09, 0x71, 0xcf, 0x9f, 0xef, 0x7c, 0xa9, 0xcb, +0x8d, 0x45, 0x8d, 0x0f, 0xbd, 0xb3, 0x70, 0x45, 0xf6, 0xdb, 0x86, 0x5e, +0xa7, 0x4c, 0x98, 0xc0, 0x1c, 0x9c, 0xb5, 0x5a, 0xc4, 0xe5, 0xe4, 0xf3, +0xe1, 0xd0, 0x81, 0x03, 0x60, 0x12, 0x06, 0x22, 0xd8, 0x08, 0x0a, 0x30, +0xf4, 0xea, 0x4f, 0x87, 0x0f, 0x1e, 0x4c, 0x49, 0x72, 0x66, 0x77, 0x9d, +0x10, 0xe6, 0x8c, 0xc2, 0xbe, 0x04, 0x85, 0x84, 0xe0, 0x59, 0xaf, 0x40, +0x7c, 0x4a, 0xd8, 0xf2, 0x5d, 0x4a, 0xf1, 0xb7, 0xa8, 0xda, 0xc8, 0x4e, +0xfc, 0x1a, 0xbe, 0x90, 0x70, 0xa1, 0xa2, 0xd5, 0xf8, 0x25, 0x10, 0xe2, +0x1d, 0xc7, 0x8f, 0x5b, 0xd6, 0x83, 0x0a, 0xca, 0x3e, 0xed, 0xb9, 0x5b, +0x29, 0x55, 0x14, 0x92, 0x63, 0x1d, 0x99, 0x6d, 0x06, 0xb0, 0xce, 0x4d, +0xae, 0x38, 0xc4, 0x64, 0x76, 0x97, 0x94, 0x20, 0xe7, 0x20, 0x47, 0x89, +0x6e, 0x13, 0x94, 0xa8, 0x13, 0x55, 0xfd, 0x09, 0x8d, 0xa2, 0xa8, 0x67, +0x4f, 0x47, 0x5c, 0xf2, 0xf0, 0xe2, 0x27, 0xc3, 0x59, 0xa3, 0x30, 0x65, +0xa8, 0x0a, 0xaf, 0xa0, 0xc6, 0x8d, 0x85, 0x04, 0x05, 0x2a, 0x48, 0x21, +0x70, 0x6f, 0x99, 0x75, 0x31, 0x8a, 0x44, 0x50, 0xb1, 0xfd, 0x5b, 0x97, +0x33, 0x7b, 0xcb, 0xbf, 0x2f, 0xc8, 0x4e, 0xe1, 0x16, 0xf5, 0xa4, 0x9e, +0xc8, 0xb9, 0xf5, 0xfb, 0x06, 0x43, 0xe7, 0xb3, 0x1a, 0x27, 0x4e, 0x9c, +0xc0, 0xd1, 0x8b, 0xaa, 0xad, 0xba, 0x45, 0x96, 0x77, 0x17, 0x7a, 0xe1, +0x00, 0xef, 0xbf, 0xf7, 0x5e, 0xfd, 0x9a, 0xb9, 0xf1, 0x79, 0xcd, 0x26, +0x1c, 0x7e, 0x93, 0x59, 0x15, 0x5c, 0x75, 0x9c, 0xc9, 0x94, 0x14, 0x17, +0xa3, 0x10, 0x63, 0x29, 0x02, 0x1b, 0x41, 0x01, 0x86, 0xf2, 0xdc, 0x31, +0x2c, 0x8c, 0x82, 0x82, 0x26, 0x35, 0xba, 0x8e, 0x0f, 0x7f, 0x46, 0x61, +0xc5, 0x2b, 0x8c, 0xa8, 0xb8, 0xed, 0xb6, 0xdb, 0xc8, 0xd0, 0xf5, 0x88, +0x8a, 0x8b, 0x3e, 0x8a, 0xe4, 0x6d, 0x78, 0xb2, 0xbf, 0x0b, 0x77, 0xd9, +0xc9, 0x05, 0xf5, 0x1a, 0xdb, 0xff, 0x29, 0xbd, 0x8e, 0x08, 0x95, 0x55, +0x95, 0xfa, 0x21, 0x9d, 0xf2, 0xee, 0x8b, 0x27, 0x90, 0x60, 0xff, 0x3e, +0x73, 0xef, 0xbd, 0xdc, 0x3d, 0x7f, 0xd6, 0xb6, 0x1e, 0x77, 0xb8, 0xca, +0x93, 0x35, 0xba, 0x6c, 0x57, 0x3c, 0x35, 0x78, 0xf6, 0xec, 0x41, 0x21, +0x16, 0x60, 0xc0, 0x31, 0x02, 0xc7, 0xa7, 0x52, 0x2a, 0x7e, 0xfd, 0xab, +0x5f, 0xf5, 0xe9, 0xde, 0xcd, 0x11, 0x97, 0x32, 0xa2, 0xe4, 0xd9, 0x30, +0xde, 0xec, 0x4a, 0x1f, 0xcd, 0xa4, 0x57, 0xb8, 0x45, 0x85, 0x7b, 0x09, +0xca, 0x85, 0x0a, 0xc4, 0x27, 0xf0, 0x90, 0xb8, 0x8d, 0xf0, 0xa7, 0x70, +0x8e, 0x1b, 0x97, 0x85, 0xab, 0xb7, 0xe3, 0xcb, 0xda, 0x83, 0xe6, 0xb1, +0x74, 0x77, 0xdf, 0x75, 0x97, 0x14, 0x83, 0x42, 0xc0, 0x80, 0x1c, 0xa1, +0xc5, 0xf2, 0xeb, 0xea, 0xa2, 0x20, 0xc1, 0x2d, 0x76, 0x6d, 0x2f, 0xe6, +0xee, 0xbd, 0x6f, 0xbc, 0xaf, 0xf6, 0x5e, 0x17, 0x4f, 0x6e, 0x38, 0xfd, +0x16, 0xe7, 0x05, 0xbd, 0x02, 0x3b, 0x98, 0x02, 0x46, 0xe0, 0xec, 0x82, +0x3b, 0x4a, 0xe6, 0xdd, 0x81, 0x7d, 0xfb, 0xb8, 0x5d, 0x5e, 0xd1, 0xec, +0xd0, 0xee, 0xeb, 0x65, 0x5f, 0x78, 0xb1, 0x8f, 0x0a, 0xf7, 0x12, 0x94, +0xcb, 0x20, 0x8b, 0xb7, 0x0e, 0xa3, 0xd3, 0x05, 0x48, 0x84, 0xad, 0xe0, +0xa4, 0x1e, 0xad, 0x69, 0xc9, 0x9f, 0x84, 0x57, 0x9c, 0x3e, 0x75, 0x4a, +0x32, 0x7a, 0x21, 0x47, 0x54, 0x6d, 0x41, 0x45, 0x79, 0x28, 0x15, 0x0a, +0x12, 0x90, 0xe9, 0xd7, 0x5f, 0x7d, 0xb5, 0x68, 0xee, 0x6c, 0x47, 0x4c, +0xf2, 0xf4, 0xc3, 0x3f, 0xbe, 0x88, 0xd2, 0xa9, 0xeb, 0x53, 0x1c, 0x8e, +0x23, 0x87, 0x0f, 0x03, 0x4e, 0x32, 0xaa, 0x71, 0x9b, 0xc0, 0x2e, 0x02, +0x47, 0x85, 0x28, 0x15, 0xbf, 0xf8, 0xf9, 0xcf, 0xdb, 0x36, 0x6d, 0x12, +0x9b, 0x91, 0x37, 0x7a, 0xcf, 0x0b, 0x91, 0xf0, 0x72, 0x0d, 0xd1, 0x81, +0xd6, 0x7a, 0x85, 0x37, 0x09, 0xea, 0x62, 0x78, 0x2c, 0xa8, 0x40, 0xb5, +0x08, 0x6f, 0x75, 0x42, 0xd1, 0x44, 0xab, 0x92, 0xdf, 0xe7, 0xf4, 0x98, +0x9c, 0xe8, 0x70, 0x3c, 0xf2, 0xf0, 0xc3, 0xf0, 0x56, 0xb2, 0xb2, 0xb0, +0x5a, 0x2a, 0x42, 0x0c, 0x3a, 0x2a, 0x74, 0x48, 0x00, 0x3c, 0x8a, 0xb2, +0x35, 0xaf, 0x5f, 0x3b, 0x25, 0xbf, 0x4b, 0xeb, 0xc3, 0x17, 0x13, 0xa6, +0x73, 0xfb, 0xcf, 0xcb, 0x4a, 0x4d, 0xc2, 0xeb, 0x8c, 0x7a, 0x23, 0xec, +0x42, 0x20, 0x1a, 0x88, 0x10, 0xa5, 0x3c, 0x15, 0xbb, 0x2f, 0x64, 0xa2, +0x0e, 0x58, 0xb4, 0x25, 0x4c, 0xba, 0x7b, 0xd9, 0xd9, 0xb5, 0x03, 0xe3, +0x15, 0x2e, 0x48, 0xc4, 0xb8, 0x18, 0x05, 0x82, 0x93, 0x64, 0x17, 0x45, +0x04, 0xaf, 0x68, 0xb7, 0xe3, 0x57, 0xce, 0xbc, 0xfc, 0x5a, 0xd5, 0x32, +0x70, 0x11, 0x48, 0xa3, 0x23, 0x08, 0x11, 0x49, 0x23, 0x10, 0x2a, 0xf4, +0x6c, 0x71, 0x62, 0xdb, 0x96, 0x5e, 0x2a, 0xbf, 0xff, 0xf4, 0xd3, 0x4b, +0x26, 0x4f, 0xe6, 0xad, 0x0d, 0x5a, 0xb2, 0x5d, 0x50, 0x7a, 0xc9, 0x91, +0xd7, 0x1d, 0x09, 0xe9, 0x6d, 0xdb, 0xb6, 0xf9, 0xf9, 0xcf, 0x7e, 0x16, +0x5c, 0x54, 0x70, 0x47, 0x06, 0x1c, 0xd0, 0xa3, 0x6b, 0x42, 0x56, 0xfd, +0x96, 0x87, 0xc2, 0x31, 0xbb, 0xc8, 0x1d, 0x42, 0x02, 0x47, 0x05, 0x81, +0x4f, 0x3f, 0xe0, 0x21, 0x22, 0x20, 0x41, 0xa8, 0x6c, 0xc7, 0xe1, 0x97, +0xb2, 0x6e, 0xf3, 0xe7, 0xcc, 0xc1, 0xab, 0x2d, 0x4a, 0x05, 0x42, 0x4b, +0x80, 0x7b, 0xb3, 0x67, 0x54, 0x48, 0x1f, 0x3a, 0xd8, 0xd1, 0x92, 0xc5, +0xae, 0x72, 0x7d, 0x7d, 0xa6, 0x2d, 0x6d, 0x75, 0xeb, 0xb7, 0x40, 0xa2, +0xd6, 0x9e, 0xef, 0x5b, 0x8d, 0x98, 0x93, 0x92, 0x10, 0xbf, 0x7d, 0xeb, +0x56, 0x4c, 0x87, 0x41, 0x44, 0x85, 0xe0, 0x90, 0x4a, 0xa1, 0xad, 0x1b, +0xd7, 0x4f, 0xcb, 0x2f, 0x8c, 0xa2, 0xa2, 0x8c, 0x65, 0xd6, 0xa3, 0x04, +0x25, 0xbc, 0x22, 0xbc, 0x5d, 0x13, 0x46, 0x35, 0xa9, 0xef, 0x65, 0x37, +0x40, 0x97, 0xa3, 0x86, 0x0e, 0x25, 0xd6, 0x43, 0x4c, 0x13, 0xe5, 0x5a, +0x77, 0x59, 0x24, 0x19, 0xa9, 0xc2, 0x84, 0x42, 0xdf, 0x20, 0x2f, 0x27, +0x29, 0xbb, 0x7e, 0xf7, 0x63, 0x17, 0xbb, 0xa8, 0x74, 0x39, 0xfa, 0x55, +0x7c, 0x72, 0x46, 0xc7, 0x36, 0xad, 0x01, 0x27, 0x82, 0x1c, 0x5c, 0x8b, +0xc9, 0xe8, 0x7a, 0x85, 0xdf, 0xe2, 0x9c, 0xa0, 0x82, 0x58, 0x92, 0x11, +0x03, 0x8a, 0xe2, 0xb3, 0xea, 0x8d, 0xd9, 0xff, 0x4a, 0xb8, 0x2b, 0x15, +0xda, 0x9e, 0x1e, 0x00, 0xaf, 0x70, 0x41, 0x22, 0x2c, 0x13, 0x27, 0x3c, +0xbc, 0xfe, 0xac, 0xe2, 0x7f, 0xe4, 0x15, 0x74, 0x28, 0x68, 0xd4, 0xf0, +0xd9, 0x67, 0x9f, 0xc5, 0x53, 0x81, 0xf8, 0x24, 0x25, 0x03, 0xcb, 0x55, +0xa9, 0x50, 0x8c, 0x82, 0x1b, 0xe5, 0x64, 0xa4, 0xa6, 0xd6, 0x6a, 0xda, +0xea, 0xd0, 0xc5, 0x78, 0xd5, 0xa9, 0x87, 0x5e, 0x4e, 0x74, 0xa6, 0x4c, +0x9b, 0x38, 0x41, 0xa1, 0x02, 0x6d, 0x5b, 0x6c, 0xc4, 0x81, 0xc4, 0x29, +0x2a, 0x28, 0xf2, 0x5c, 0x5b, 0x6f, 0xde, 0x04, 0x91, 0xd4, 0x1e, 0x72, +0x45, 0xb8, 0x7b, 0x2a, 0x82, 0x83, 0x0a, 0x55, 0xa3, 0x20, 0x22, 0x04, +0x27, 0x81, 0x4a, 0x8b, 0x62, 0x57, 0x92, 0x49, 0xbf, 0x5e, 0xbd, 0x68, +0x7e, 0x85, 0x51, 0x4e, 0xd9, 0x64, 0xcb, 0x55, 0xa9, 0x50, 0xdd, 0x19, +0xe1, 0x03, 0xb9, 0xe9, 0xa9, 0x75, 0x9a, 0x75, 0xaa, 0xbe, 0x93, 0xc5, +0xff, 0x6f, 0xf5, 0x92, 0xef, 0x47, 0x6c, 0x7f, 0xd2, 0xe9, 0x4c, 0x9d, +0x33, 0x73, 0x06, 0x33, 0x09, 0xa2, 0xf8, 0xa4, 0x50, 0xc1, 0x73, 0x51, +0xce, 0xa3, 0x27, 0x95, 0x33, 0x79, 0xea, 0x85, 0xb7, 0x14, 0xec, 0x09, +0xaf, 0xae, 0x90, 0x65, 0xf4, 0x8a, 0x28, 0x2a, 0xec, 0x18, 0x22, 0xac, +0xce, 0xe9, 0xb1, 0xa8, 0x38, 0xd6, 0xe1, 0xb8, 0x6c, 0xe6, 0x4c, 0x69, +0x71, 0x24, 0xd6, 0x27, 0x65, 0x93, 0x0d, 0x4a, 0x90, 0x85, 0x41, 0xc1, +0xd0, 0x23, 0x91, 0x1e, 0x3f, 0x77, 0x2e, 0xc3, 0x99, 0xd0, 0x75, 0xe4, +0x8c, 0x8b, 0x10, 0x3d, 0xf0, 0x75, 0xe7, 0xd5, 0xa7, 0xe3, 0xe3, 0x9d, +0x23, 0x87, 0x0e, 0xc1, 0x3a, 0x0c, 0x2a, 0x94, 0xf8, 0x14, 0xa0, 0x92, +0xa3, 0xa3, 0x02, 0x79, 0xec, 0x8d, 0x37, 0xde, 0x68, 0xdd, 0xcc, 0xd5, +0x6a, 0xbe, 0xf7, 0xfc, 0x0d, 0xed, 0x76, 0x7d, 0xda, 0xb8, 0xe4, 0xcf, +0x64, 0xe7, 0x86, 0x97, 0x40, 0x55, 0x56, 0x0b, 0xb0, 0x29, 0x41, 0xa1, +0x75, 0xe1, 0xae, 0x2a, 0x1b, 0xf1, 0x11, 0x59, 0xea, 0x04, 0x44, 0xd0, +0xa0, 0xf8, 0x8f, 0x29, 0xf5, 0x5a, 0x65, 0xa4, 0xa7, 0xdd, 0x7e, 0xdb, +0x6d, 0x12, 0x3d, 0x8e, 0x9e, 0x2d, 0xd6, 0xa7, 0xf2, 0x0b, 0x95, 0x55, +0x91, 0x48, 0x7f, 0xfb, 0xf2, 0x4b, 0xf6, 0xec, 0x98, 0xd8, 0xc4, 0x49, +0x25, 0x8f, 0x09, 0x45, 0x76, 0x3e, 0xf4, 0x45, 0x76, 0x87, 0x21, 0x34, +0xad, 0xdc, 0xbe, 0x6d, 0x1b, 0xea, 0x8d, 0x4c, 0x26, 0x70, 0xf1, 0x49, +0x60, 0xa9, 0xac, 0x5e, 0x60, 0x1e, 0x6b, 0xef, 0x8f, 0x5f, 0xf9, 0x71, +0xeb, 0xa6, 0x05, 0x10, 0x40, 0xcd, 0xfe, 0x97, 0xb5, 0x99, 0xb7, 0xbd, +0xff, 0x0d, 0x27, 0x87, 0x6f, 0x3e, 0xdb, 0x62, 0xeb, 0x2f, 0x1a, 0x6c, +0xfb, 0x43, 0xda, 0xd6, 0x7f, 0x86, 0x38, 0x42, 0x4c, 0x7e, 0x67, 0x8d, +0xd0, 0x69, 0xc3, 0x80, 0xa8, 0x6c, 0xed, 0xdb, 0x76, 0x83, 0x8a, 0xf0, +0x77, 0xd8, 0xa9, 0xf7, 0xdd, 0xa0, 0xf8, 0x0f, 0x85, 0x53, 0x5c, 0xd5, +0xf2, 0x86, 0x0c, 0x18, 0x40, 0xf4, 0xb8, 0x74, 0xfd, 0x62, 0x6f, 0x16, +0x97, 0x76, 0xb9, 0xda, 0x64, 0x25, 0x0f, 0x8e, 0xf8, 0xdc, 0xe4, 0xc4, +0xc4, 0xac, 0xc2, 0xd1, 0x2d, 0x0e, 0x5e, 0xa4, 0xc2, 0xd1, 0xeb, 0xee, +0x8c, 0x4b, 0x48, 0xea, 0xdf, 0xab, 0x27, 0x59, 0xa3, 0xa0, 0x02, 0xda, +0x15, 0x3d, 0x3b, 0x28, 0xf3, 0x51, 0x41, 0x50, 0x60, 0x1e, 0x5d, 0x05, +0x46, 0xf4, 0xe2, 0x8b, 0x2f, 0x0a, 0x30, 0x62, 0xe3, 0x53, 0x12, 0xd3, +0x6a, 0x24, 0x66, 0xe4, 0xa6, 0xd4, 0x6c, 0x52, 0xaf, 0xd3, 0x60, 0x96, +0x65, 0xf0, 0x0d, 0x77, 0xd4, 0xdf, 0x26, 0xf5, 0xfa, 0x43, 0x51, 0x9c, +0x36, 0xed, 0xef, 0x76, 0x50, 0xc1, 0x26, 0x14, 0xe1, 0xa8, 0xe0, 0x95, +0x77, 0x9f, 0xb3, 0x3e, 0x26, 0x36, 0x01, 0xb2, 0x78, 0xee, 0xb9, 0xe7, +0x88, 0x93, 0xa5, 0x40, 0x96, 0x44, 0x04, 0x4a, 0xa9, 0x9b, 0xf2, 0x90, +0x9d, 0xd8, 0xb0, 0x95, 0x2b, 0x8d, 0x0d, 0x7b, 0xd2, 0xf8, 0xf1, 0xbc, +0xac, 0xd1, 0x7b, 0x5f, 0x12, 0xa0, 0xe6, 0xed, 0xfa, 0xae, 0x59, 0xff, +0x49, 0x44, 0xec, 0x3d, 0xf5, 0xc4, 0x13, 0x4c, 0x46, 0xc9, 0x72, 0xa2, +0xe1, 0x04, 0xee, 0x62, 0x37, 0xd8, 0xbe, 0xc0, 0x3f, 0xbb, 0x00, 0xc0, +0xb8, 0x6e, 0xd5, 0xd5, 0xf3, 0x67, 0xcf, 0x1e, 0x39, 0x68, 0x60, 0xff, +0x9e, 0xdd, 0x6b, 0x67, 0x65, 0xe2, 0xca, 0x4c, 0x88, 0x89, 0x8d, 0x77, +0xa6, 0x55, 0x6b, 0xd5, 0xaf, 0xcf, 0x35, 0xc7, 0xea, 0x6f, 0xfb, 0x2c, +0x04, 0x81, 0x61, 0x42, 0xb2, 0x15, 0x2a, 0x58, 0xe1, 0xd2, 0xbc, 0x6d, +0x2c, 0xb3, 0x11, 0x8e, 0x0a, 0xde, 0x74, 0xf7, 0xcb, 0x6f, 0x89, 0x49, +0x48, 0xae, 0x59, 0x23, 0x8b, 0xb0, 0x3c, 0x49, 0x33, 0xaa, 0x80, 0x28, +0x0f, 0x41, 0x85, 0x18, 0xa0, 0x30, 0xb9, 0xf6, 0xed, 0x41, 0x05, 0xcb, +0x9c, 0xae, 0x87, 0xbf, 0x14, 0x54, 0x74, 0x38, 0xf0, 0x45, 0x4a, 0xed, +0xe6, 0xed, 0x9a, 0xe6, 0x13, 0x92, 0x20, 0x10, 0x65, 0x47, 0x17, 0x46, +0x11, 0xac, 0x30, 0x72, 0xb9, 0xbb, 0x84, 0x42, 0x49, 0x23, 0x3c, 0x9e, +0x5a, 0x6a, 0xab, 0x62, 0x6c, 0x20, 0x49, 0xed, 0xcd, 0x37, 0xdf, 0x7c, +0xf8, 0xec, 0xd9, 0x4d, 0x1b, 0x36, 0x14, 0xb6, 0x6d, 0x9b, 0x18, 0xe3, +0x88, 0x75, 0xa6, 0x76, 0x99, 0xb5, 0x06, 0x99, 0x2a, 0xa4, 0x04, 0x2a, +0x2b, 0xe6, 0x66, 0xa5, 0x57, 0xd8, 0x44, 0x45, 0x44, 0x88, 0x4f, 0xf5, +0xb7, 0x7e, 0xd6, 0xfd, 0x8a, 0x2d, 0x8e, 0x84, 0xe4, 0x8c, 0xe4, 0xa4, +0x03, 0xfb, 0xf7, 0x4b, 0xbe, 0x22, 0x52, 0xa6, 0x50, 0x61, 0xf9, 0x99, +0x9e, 0x44, 0xb8, 0x57, 0xa8, 0xb8, 0x98, 0xde, 0x90, 0x9c, 0xd5, 0xf1, +0xf0, 0x3f, 0x84, 0xe6, 0x26, 0x1f, 0x78, 0x21, 0x3e, 0xa3, 0xe6, 0xb0, +0xfe, 0xfd, 0x40, 0xa9, 0x84, 0xb2, 0x0b, 0x2a, 0x82, 0xa8, 0xe1, 0x08, +0xbb, 0x50, 0x76, 0x61, 0x18, 0x23, 0xc0, 0x40, 0x54, 0x03, 0x84, 0x08, +0x90, 0x60, 0x03, 0x93, 0xc3, 0x47, 0x1f, 0x7d, 0xf4, 0xde, 0x7b, 0xef, +0xbd, 0xfa, 0xea, 0xab, 0x37, 0xde, 0xb0, 0x86, 0x2e, 0xc3, 0x90, 0x53, +0xd7, 0xd9, 0x6b, 0x90, 0x36, 0x2b, 0x04, 0x18, 0x81, 0x4b, 0x6b, 0x32, +0x42, 0x30, 0x79, 0x45, 0xf8, 0xa3, 0xa2, 0xde, 0xd6, 0xcf, 0xba, 0xcd, +0xdf, 0xe4, 0x88, 0x77, 0x56, 0xcf, 0x48, 0xdf, 0xb6, 0x65, 0xcb, 0x3b, +0xef, 0xbc, 0xf3, 0xd3, 0x9f, 0xfe, 0x54, 0x82, 0x64, 0x25, 0x4b, 0xbb, +0xfc, 0xc2, 0x01, 0x75, 0x54, 0x48, 0xc7, 0xad, 0xc1, 0x45, 0x45, 0x24, +0xde, 0xb5, 0x3c, 0x78, 0xd1, 0x7f, 0xd7, 0x74, 0xef, 0xdf, 0x53, 0x1b, +0xb4, 0x6f, 0x98, 0x97, 0xfd, 0xee, 0x3b, 0xef, 0x28, 0x54, 0x04, 0x1d, +0xa5, 0x06, 0x60, 0xf0, 0xc8, 0x88, 0x52, 0x30, 0x2e, 0x98, 0x06, 0xc6, +0x06, 0xac, 0x70, 0x44, 0x52, 0x83, 0x0d, 0x1c, 0x9a, 0x2c, 0xce, 0xa9, +0x53, 0xa7, 0x1a, 0xd6, 0xab, 0x8b, 0xde, 0xd1, 0xf3, 0xca, 0x92, 0x0a, +0x01, 0x46, 0xb0, 0x50, 0x61, 0xa2, 0x64, 0xfb, 0x12, 0x14, 0xdb, 0x43, +0x59, 0x1b, 0x54, 0x98, 0xa3, 0xc2, 0x05, 0x89, 0x79, 0x1b, 0x11, 0x0b, +0xaa, 0x57, 0xcb, 0xdc, 0xb9, 0x63, 0x07, 0x6f, 0x9d, 0x5d, 0x19, 0x22, +0x10, 0x71, 0xa5, 0x62, 0x7a, 0xce, 0xab, 0x0c, 0x07, 0x6e, 0x87, 0x37, +0x3d, 0x39, 0x39, 0xb9, 0xde, 0x1e, 0x55, 0x6f, 0xe6, 0x7c, 0x8f, 0x4b, +0x96, 0xc7, 0x38, 0x1c, 0x2b, 0x97, 0x2d, 0x15, 0xde, 0x55, 0x4e, 0xb1, +0x58, 0x3a, 0x30, 0x44, 0x94, 0x82, 0x29, 0xb1, 0x29, 0x70, 0x47, 0x76, +0x07, 0x56, 0x83, 0x6d, 0x02, 0x2b, 0x0d, 0x32, 0x15, 0xb2, 0xdc, 0xad, +0x87, 0x0e, 0x55, 0xcb, 0xcc, 0x8c, 0x4b, 0xca, 0xe8, 0xbd, 0x6c, 0x5f, +0x85, 0xb0, 0x8b, 0xf2, 0x21, 0xc2, 0x28, 0x2a, 0x2c, 0x5f, 0x1e, 0x82, +0x53, 0xd7, 0xd9, 0x6b, 0x63, 0xe3, 0x9c, 0xd5, 0xd3, 0xd2, 0xf6, 0xec, +0xde, 0xfd, 0xee, 0xbb, 0xef, 0xf2, 0xd6, 0x91, 0x19, 0xd8, 0x95, 0x0d, +0x3e, 0x0a, 0xbf, 0x43, 0x2a, 0x3c, 0x04, 0x3e, 0xa9, 0x3f, 0x49, 0x86, +0x83, 0x54, 0xec, 0x1b, 0x37, 0x6a, 0x54, 0xdd, 0xba, 0x75, 0x53, 0x8a, +0x5d, 0xfe, 0x3b, 0xf9, 0xc1, 0xa7, 0x96, 0x5c, 0xa3, 0x5e, 0x56, 0x4a, +0x12, 0xbb, 0x35, 0xb3, 0xe2, 0x9c, 0xa0, 0x58, 0x9f, 0xcc, 0x13, 0xd3, +0x81, 0xc1, 0x2d, 0x90, 0xd3, 0xc0, 0x06, 0xb7, 0x03, 0x1b, 0xdc, 0x17, +0x6c, 0xb0, 0x2c, 0xe8, 0x5a, 0xc8, 0x96, 0xd8, 0x31, 0x37, 0x6f, 0xda, +0xe4, 0x8c, 0x8d, 0x49, 0xc9, 0x6d, 0x44, 0xc0, 0x98, 0xbf, 0xc0, 0x08, +0x9c, 0x09, 0x04, 0x86, 0x16, 0x9b, 0x36, 0x28, 0x9e, 0x3c, 0x72, 0x78, +0x05, 0x90, 0xe8, 0x34, 0x65, 0x59, 0x6c, 0x6c, 0x5c, 0x5e, 0xf5, 0xcc, +0xfd, 0xfb, 0xf7, 0x03, 0x09, 0x04, 0x27, 0xe1, 0x12, 0x12, 0xf5, 0x54, +0xae, 0xd6, 0x58, 0x9d, 0x28, 0x15, 0x2a, 0xfe, 0xfc, 0x97, 0xbf, 0xf4, +0xe9, 0xd1, 0xbd, 0x45, 0x87, 0x1e, 0x3a, 0x9d, 0x15, 0xec, 0xf9, 0x32, +0x25, 0xa7, 0x41, 0x5e, 0x66, 0x1a, 0x15, 0x15, 0xca, 0xbb, 0x2b, 0x9f, +0x02, 0x86, 0xa0, 0x14, 0xa6, 0x21, 0x45, 0xd3, 0xe0, 0x1b, 0xe8, 0x3c, +0xdc, 0x5d, 0x04, 0x2a, 0x52, 0x9c, 0xd1, 0x34, 0x26, 0x8e, 0x1d, 0x13, +0x1b, 0x1b, 0x3f, 0x70, 0xe9, 0x0e, 0x7f, 0x51, 0x11, 0x18, 0x4d, 0xfb, +0xeb, 0xa2, 0x2d, 0x9d, 0xad, 0x4d, 0x5e, 0x11, 0x39, 0xa8, 0x00, 0x12, +0x6d, 0x87, 0x4c, 0x67, 0x59, 0x9a, 0x35, 0x6a, 0x74, 0xd7, 0xc9, 0x93, +0x02, 0x09, 0x36, 0x42, 0x09, 0x79, 0x52, 0x9e, 0xec, 0xf2, 0xb3, 0xc6, +0x9a, 0x51, 0x01, 0x09, 0x3e, 0xf7, 0xec, 0xb3, 0xf5, 0x72, 0x6b, 0xf4, +0xb9, 0xe4, 0x2a, 0x9d, 0xce, 0x7a, 0xcf, 0x5b, 0xc7, 0x3c, 0x17, 0xcc, +0x9d, 0x83, 0x0c, 0x03, 0x5c, 0x95, 0xf6, 0x5f, 0x4e, 0xec, 0x4b, 0x4f, +0x06, 0xe4, 0xf1, 0x51, 0xeb, 0x15, 0xdf, 0xe0, 0xd6, 0xa2, 0x6c, 0x20, +0xcb, 0xc1, 0x51, 0xcf, 0x9d, 0x3b, 0x97, 0xe4, 0x70, 0x34, 0xea, 0xd4, +0x3f, 0x7b, 0xc7, 0x45, 0x2d, 0xc8, 0x17, 0x78, 0x28, 0x9f, 0x5a, 0xe5, +0x25, 0x75, 0xda, 0x41, 0x05, 0x8c, 0x32, 0x12, 0x50, 0x51, 0xf7, 0x96, +0xdf, 0x77, 0x5f, 0xbc, 0xd3, 0x99, 0xdb, 0x90, 0x35, 0xe9, 0xde, 0xa5, +0xf3, 0x23, 0x8f, 0x3c, 0x82, 0x2e, 0x81, 0xe0, 0x24, 0x99, 0xd9, 0x22, +0x38, 0x19, 0xb8, 0x44, 0x39, 0xd1, 0x9f, 0x41, 0x82, 0x02, 0x15, 0x4b, +0x17, 0x2f, 0x66, 0x56, 0xe3, 0x37, 0xde, 0xad, 0x89, 0x4f, 0x5f, 0x26, +0xe7, 0x36, 0xac, 0x99, 0x99, 0xfe, 0xc2, 0x0b, 0x2f, 0xc0, 0xc6, 0x2b, +0x00, 0x15, 0x62, 0x13, 0x13, 0xa6, 0x21, 0xb6, 0x29, 0xc1, 0x06, 0xd3, +0xc3, 0x9d, 0x82, 0x40, 0x05, 0xd3, 0x10, 0x60, 0xa0, 0x80, 0x15, 0xf5, +0xe8, 0xea, 0xac, 0x5e, 0xb7, 0xcd, 0x2e, 0xdc, 0x17, 0x3e, 0x6d, 0xfc, +0x06, 0x48, 0xf8, 0x74, 0x6d, 0xf0, 0x4e, 0x8e, 0xa2, 0x42, 0xbd, 0xb6, +0x2e, 0x73, 0x37, 0xc6, 0x39, 0xd3, 0xf0, 0x1f, 0x4f, 0x9f, 0x3a, 0xf5, +0xf1, 0xc7, 0x1f, 0x7f, 0xfb, 0xed, 0xb7, 0x79, 0xbb, 0xec, 0x7c, 0xa2, +0x5e, 0x9b, 0xb9, 0x44, 0x79, 0x43, 0x42, 0xa8, 0x10, 0xca, 0xfb, 0xf0, +0x83, 0x0f, 0x5a, 0xe6, 0x37, 0x4c, 0xac, 0xd3, 0x5a, 0x39, 0x2b, 0x28, +0xbd, 0xd3, 0x67, 0xe1, 0x56, 0xde, 0xdd, 0x35, 0xab, 0xae, 0x86, 0x95, +0x55, 0x18, 0x2a, 0x94, 0x65, 0xcc, 0xc0, 0x37, 0x84, 0x69, 0x20, 0x50, +0x09, 0x30, 0x58, 0xb4, 0x49, 0xa3, 0x47, 0xc6, 0xa7, 0xd6, 0x18, 0xbd, +0xf5, 0x61, 0x5f, 0x50, 0x21, 0x90, 0xa8, 0x02, 0x81, 0xd8, 0x51, 0x54, +0xc8, 0x6b, 0xab, 0xbb, 0xe5, 0xf7, 0x09, 0xe9, 0xd9, 0x19, 0x69, 0xa9, +0x9b, 0x36, 0x6e, 0x7c, 0xf9, 0xe5, 0x97, 0x81, 0x04, 0xf2, 0xb1, 0x54, +0xb5, 0xa9, 0x60, 0x5d, 0xc2, 0x20, 0x41, 0xb1, 0x25, 0xff, 0xe8, 0xd9, +0x67, 0xd3, 0x09, 0x40, 0x1a, 0xb2, 0xb0, 0xcb, 0x91, 0xbf, 0x2b, 0x3d, +0x3b, 0xb5, 0x7e, 0x1b, 0xde, 0xdd, 0x99, 0xd3, 0xa7, 0x55, 0x9c, 0xa2, +0x68, 0xdb, 0x81, 0x7b, 0xb5, 0xed, 0x98, 0x01, 0x14, 0x3c, 0x14, 0xd3, +0x90, 0x8a, 0xe5, 0x12, 0x1b, 0x82, 0x82, 0x31, 0x63, 0xca, 0xe4, 0xb8, +0xa4, 0x6a, 0x5d, 0xaf, 0xbe, 0xdd, 0x77, 0x54, 0x54, 0x9e, 0xe0, 0xa4, +0xd8, 0x9a, 0x09, 0x15, 0x62, 0x65, 0x31, 0xfa, 0xb6, 0x91, 0xa0, 0x78, +0xd4, 0x30, 0xb6, 0xcc, 0xf6, 0x5b, 0xb6, 0x3b, 0x2e, 0x36, 0x7e, 0xd8, +0xe0, 0x41, 0x08, 0x24, 0x6f, 0xbd, 0xf5, 0x96, 0x40, 0x42, 0x62, 0xc2, +0x54, 0xa5, 0x82, 0x8a, 0xd1, 0x25, 0xcc, 0xa8, 0x80, 0xf4, 0x59, 0xf9, +0xc6, 0x33, 0xb6, 0x14, 0x1e, 0xb9, 0xd8, 0xef, 0xbd, 0xe7, 0x05, 0x8d, +0xe2, 0x8a, 0x05, 0x0b, 0xb0, 0xf9, 0x48, 0xed, 0x67, 0xb1, 0xcc, 0x56, +0x30, 0x2a, 0x74, 0x99, 0x4a, 0xe5, 0x45, 0x89, 0xbc, 0xbd, 0xf8, 0xf2, +0xf9, 0x8e, 0xf8, 0xe4, 0x2e, 0x2b, 0x0e, 0xfb, 0x82, 0x8a, 0xe0, 0x89, +0x40, 0xbe, 0x89, 0x6d, 0xde, 0xfd, 0x15, 0x16, 0xa8, 0x90, 0xe7, 0x0c, +0x6f, 0x54, 0xb4, 0x1b, 0x3e, 0x33, 0x35, 0x31, 0x71, 0x7b, 0x71, 0xf1, +0x6b, 0xaf, 0xbd, 0x26, 0xa4, 0x06, 0x24, 0x24, 0xac, 0xa3, 0x5c, 0xb3, +0x4f, 0x3d, 0x6f, 0xcc, 0xe2, 0xaf, 0x38, 0x7a, 0xf8, 0x30, 0x18, 0x68, +0x7a, 0xc5, 0xa1, 0xb6, 0xb7, 0xba, 0xe2, 0xb7, 0x29, 0x3f, 0x13, 0x9f, +0xd5, 0xb0, 0x59, 0xa3, 0xfa, 0x0f, 0x3f, 0xf4, 0x90, 0xd8, 0x8b, 0x91, +0xf1, 0x50, 0x76, 0x65, 0x9e, 0x15, 0xc9, 0x2b, 0x0c, 0x1c, 0x03, 0x1d, +0x43, 0xd8, 0x05, 0xd4, 0x32, 0x63, 0xca, 0xc4, 0xb8, 0x94, 0xac, 0x71, +0x3b, 0xce, 0x85, 0x39, 0x2a, 0xc2, 0xdb, 0x32, 0x5b, 0xab, 0x5d, 0xbf, +0xf4, 0x24, 0xe7, 0x3d, 0xa7, 0x4e, 0x61, 0x74, 0x12, 0x99, 0x44, 0xb8, +0x84, 0x04, 0x66, 0x57, 0x3c, 0x97, 0xd0, 0x7d, 0xdb, 0x3b, 0xb6, 0x6e, +0x01, 0x15, 0xcd, 0x97, 0x1c, 0x6f, 0x7e, 0xd0, 0xe5, 0xc2, 0x1b, 0xb6, +0xf9, 0x2c, 0xbf, 0xce, 0x9e, 0x31, 0x03, 0xf4, 0x62, 0x93, 0x15, 0x63, +0x80, 0xca, 0x1d, 0xaf, 0x78, 0x54, 0xa8, 0xc8, 0x14, 0x89, 0x98, 0x02, +0x9c, 0x90, 0x4a, 0x41, 0x9d, 0x9a, 0x69, 0xf5, 0xdb, 0x10, 0xac, 0x15, +0xce, 0xa8, 0x60, 0xd7, 0x0c, 0x6f, 0x5e, 0x51, 0xbb, 0x6d, 0xdf, 0xf4, +0xa4, 0xa4, 0x07, 0xee, 0xbf, 0x1f, 0x52, 0x53, 0xb9, 0x13, 0xbc, 0x60, +0x3d, 0x77, 0xa2, 0x02, 0xd4, 0x6b, 0x03, 0xeb, 0x10, 0x5e, 0xb1, 0x7e, +0xcd, 0x1a, 0x60, 0xd0, 0x62, 0xe5, 0xdd, 0x0d, 0xf6, 0xb9, 0x4a, 0xdd, +0x14, 0x2c, 0xba, 0x95, 0x5f, 0x97, 0x2f, 0x5d, 0x4a, 0x9c, 0x05, 0x00, +0xc6, 0x6a, 0x4c, 0x44, 0xb3, 0x94, 0x69, 0x0b, 0x24, 0x2b, 0xd5, 0xbe, +0x3a, 0x61, 0xe9, 0xe6, 0xd3, 0x3b, 0xbf, 0xbc, 0xf6, 0xea, 0xab, 0x38, +0xdd, 0x5b, 0x0e, 0xbc, 0x24, 0x6f, 0xa7, 0xab, 0xe4, 0x42, 0xe8, 0xfd, +0xd8, 0xd1, 0x2b, 0x24, 0x58, 0x32, 0xbc, 0x51, 0xd1, 0x69, 0xc2, 0x95, +0xc9, 0x09, 0x09, 0xf8, 0x65, 0x55, 0xee, 0x84, 0x04, 0xdb, 0xa9, 0xa8, +0xec, 0x8a, 0x87, 0x84, 0xda, 0x83, 0x57, 0xaf, 0x5c, 0xce, 0x6b, 0x6a, +0x73, 0xdd, 0x7d, 0xd9, 0xbb, 0x5c, 0xf5, 0x33, 0x47, 0x94, 0xb8, 0x9a, +0x35, 0x4e, 0x9f, 0x32, 0x19, 0xe5, 0x07, 0x77, 0x32, 0xce, 0x0a, 0x50, +0x51, 0xf1, 0xdd, 0x33, 0x74, 0xf3, 0xb1, 0x1e, 0x44, 0x88, 0x7a, 0xb3, +0x66, 0xf5, 0x75, 0xf1, 0xb1, 0x09, 0xa3, 0xae, 0x3f, 0x1a, 0x7a, 0x78, +0x30, 0x55, 0x5f, 0x96, 0xac, 0x23, 0x6b, 0xbd, 0x22, 0xec, 0x51, 0x31, +0x74, 0xdd, 0x3d, 0xa4, 0x09, 0x90, 0x90, 0x8d, 0xa1, 0x53, 0x0a, 0x9f, +0x09, 0xa3, 0x28, 0xbf, 0x0a, 0x99, 0x5e, 0xf7, 0x66, 0xf1, 0x0c, 0xa0, +0x2a, 0xac, 0x58, 0xbc, 0xc8, 0xe5, 0x42, 0x59, 0xff, 0x68, 0xe2, 0x36, +0x57, 0x28, 0x44, 0x73, 0x97, 0x5e, 0x51, 0x9f, 0x36, 0x4b, 0x8f, 0x9d, +0x3b, 0x57, 0x15, 0x78, 0x85, 0x21, 0x13, 0x03, 0x25, 0xa7, 0x69, 0x83, +0xfa, 0x29, 0x79, 0x8d, 0x99, 0x67, 0x18, 0xa0, 0x42, 0xba, 0xf6, 0xf8, +0x8d, 0x0a, 0x77, 0xfe, 0x97, 0xca, 0x8e, 0x69, 0xb1, 0xc7, 0xc1, 0x1b, +0x6e, 0xff, 0x53, 0x52, 0xcd, 0x26, 0x79, 0xd9, 0x35, 0xce, 0x3d, 0xf2, +0x88, 0x28, 0xaf, 0xe5, 0x5a, 0x21, 0xd3, 0x2b, 0x24, 0x14, 0xa3, 0x80, +0x5f, 0x2d, 0x5d, 0x74, 0x05, 0xa8, 0x18, 0x70, 0xcb, 0xe3, 0x8a, 0xc8, +0xfa, 0x2d, 0x76, 0xd5, 0x99, 0x25, 0x5d, 0x1b, 0x0b, 0xb2, 0xae, 0x57, +0x54, 0xbc, 0x04, 0x65, 0x08, 0xaa, 0x85, 0xc1, 0xee, 0xd8, 0xb6, 0x2d, +0x21, 0x3e, 0xbe, 0xf7, 0xec, 0xd5, 0xa1, 0x0a, 0x89, 0xb2, 0x35, 0xc9, +0xad, 0x51, 0x71, 0xfb, 0xed, 0xb7, 0xdb, 0x90, 0xa0, 0xcc, 0x36, 0x66, +0x95, 0xf5, 0xa7, 0x42, 0xd8, 0xab, 0x7a, 0x9e, 0x77, 0xaf, 0xcb, 0x5d, +0x4a, 0xed, 0x84, 0x31, 0x63, 0xd8, 0x18, 0x14, 0x2a, 0xca, 0x29, 0xc9, +0xce, 0x12, 0x15, 0xe2, 0x1a, 0x53, 0x87, 0x64, 0x6c, 0xa3, 0x2d, 0x5c, +0x39, 0x8f, 0x9a, 0xb6, 0xf1, 0x23, 0x76, 0x3c, 0xa3, 0xe8, 0x8c, 0x30, +0xf2, 0xac, 0xf6, 0x83, 0x99, 0x2d, 0x46, 0x33, 0xd5, 0x2a, 0xa0, 0xfc, +0xa2, 0x03, 0x3d, 0x60, 0x58, 0x31, 0x0a, 0x09, 0xa7, 0x65, 0xe9, 0x3a, +0xb4, 0x6c, 0xc9, 0x6c, 0x43, 0x98, 0x51, 0x94, 0x03, 0x2a, 0x74, 0xce, +0x50, 0x05, 0x02, 0x5a, 0xec, 0x31, 0x0a, 0xa1, 0xb6, 0xb6, 0x3b, 0x7e, +0x9d, 0x90, 0xdb, 0xb4, 0x55, 0xd3, 0x82, 0x77, 0xde, 0x7e, 0x1b, 0xf3, +0xbf, 0x04, 0x77, 0x94, 0x37, 0x2a, 0x0c, 0x48, 0x30, 0xc7, 0x53, 0xc0, +0x2b, 0xae, 0x5d, 0xbe, 0x0c, 0x00, 0x8c, 0xdd, 0x51, 0xca, 0x2b, 0x98, +0xed, 0xc0, 0x1b, 0xef, 0x74, 0xc4, 0x25, 0xcd, 0x98, 0x36, 0x15, 0xe3, +0xac, 0x54, 0x1b, 0xf1, 0x90, 0x75, 0x64, 0xbe, 0x8b, 0xfa, 0xc6, 0x0e, +0xd7, 0x72, 0x77, 0x8e, 0xce, 0x28, 0xc4, 0x26, 0xbb, 0xe8, 0x0a, 0x17, +0x5b, 0xeb, 0x79, 0xe9, 0xd5, 0x21, 0xcc, 0x28, 0xca, 0xa2, 0xc2, 0x5a, +0xaf, 0x80, 0x57, 0x48, 0xce, 0xae, 0x95, 0xb6, 0xed, 0x35, 0x6a, 0x45, +0x3f, 0xa1, 0xaa, 0xdb, 0x22, 0x9a, 0xef, 0xfc, 0x43, 0x5c, 0x46, 0xed, +0xc2, 0xb6, 0x6d, 0xa0, 0x33, 0x88, 0xac, 0xfc, 0x50, 0x61, 0x60, 0x08, +0x2a, 0xac, 0x08, 0x1d, 0x46, 0x2c, 0x39, 0x7a, 0xec, 0x1d, 0xea, 0x8d, +0x14, 0xca, 0x1f, 0xbb, 0xe9, 0xb4, 0x4e, 0x6a, 0xed, 0xf6, 0xfc, 0x31, +0xb9, 0x56, 0xd3, 0x36, 0x4d, 0x1a, 0x62, 0xf0, 0xd1, 0x2b, 0x53, 0xe9, +0x19, 0xaa, 0x3a, 0xdb, 0x91, 0xbb, 0x88, 0x5a, 0xac, 0x3e, 0xfb, 0x87, +0x0d, 0x7d, 0x58, 0xc9, 0xd4, 0x93, 0x5e, 0x92, 0xc7, 0x8e, 0x1c, 0x49, +0x8e, 0x8f, 0x4d, 0x2f, 0xe8, 0x1e, 0xf2, 0x05, 0xfd, 0x35, 0x1b, 0x94, +0x5b, 0x09, 0xca, 0x36, 0x2a, 0x68, 0x18, 0x69, 0x26, 0xfd, 0xd0, 0xd0, +0x2b, 0x5c, 0x41, 0x1f, 0x25, 0x5f, 0xa6, 0x64, 0xe4, 0xf4, 0xea, 0xda, +0x45, 0x9c, 0x15, 0x4a, 0xdb, 0x0e, 0xa2, 0xf5, 0xc9, 0x40, 0xa6, 0x02, +0x03, 0x1d, 0x09, 0x12, 0x88, 0x2a, 0x71, 0xda, 0xec, 0xbe, 0x92, 0x14, +0xba, 0x63, 0xab, 0x2b, 0xe4, 0x69, 0xc2, 0x2d, 0xf7, 0xeb, 0xa8, 0xc8, +0x29, 0xf9, 0x67, 0xe3, 0xee, 0xc3, 0x53, 0x1d, 0x8e, 0xc7, 0x1f, 0x7b, +0x0c, 0x21, 0x4a, 0xcf, 0x85, 0x52, 0x35, 0xfa, 0x15, 0xf5, 0x03, 0x33, +0xec, 0x54, 0xa0, 0x1d, 0x5b, 0x82, 0x2a, 0x77, 0x60, 0x86, 0x87, 0x1d, +0xbe, 0x61, 0x80, 0x84, 0xca, 0xea, 0x06, 0x9c, 0x8d, 0x48, 0xc4, 0x8b, +0x4b, 0x1a, 0xb1, 0xed, 0x62, 0x61, 0x9e, 0x10, 0x66, 0x17, 0xf6, 0x51, +0x81, 0x65, 0xc6, 0x14, 0xf1, 0x61, 0x96, 0x91, 0xaa, 0xba, 0xf2, 0xe0, +0xe1, 0x55, 0xa5, 0x6c, 0xfb, 0xb6, 0x61, 0xdb, 0xee, 0xed, 0x5a, 0xb6, +0x20, 0x11, 0x19, 0xde, 0xa8, 0x2c, 0xb3, 0x01, 0x0a, 0x51, 0xe6, 0x0d, +0x5b, 0x45, 0x9b, 0x0a, 0x06, 0x74, 0x18, 0x80, 0x04, 0x78, 0x14, 0x60, +0x60, 0xeb, 0x55, 0xb9, 0xa0, 0x57, 0x11, 0x3d, 0xe1, 0x88, 0x99, 0xb2, +0xe7, 0xe9, 0xb2, 0x93, 0x3f, 0xdf, 0x77, 0xd6, 0x2a, 0xde, 0xc8, 0xcc, +0xe9, 0xd3, 0x25, 0x40, 0x50, 0x0a, 0x19, 0x4a, 0x92, 0xa0, 0xa4, 0x1f, +0x29, 0xb6, 0x73, 0xf3, 0x86, 0x0d, 0xfd, 0x7b, 0xf7, 0x6e, 0x5f, 0xd0, +0xb8, 0x55, 0x7e, 0xc3, 0xc5, 0x0b, 0x17, 0x52, 0x29, 0x87, 0x13, 0xb8, +0xbb, 0x74, 0x97, 0x14, 0xeb, 0xb3, 0x0e, 0x12, 0x33, 0x33, 0x51, 0xdf, +0x08, 0xb7, 0x91, 0x47, 0x50, 0x91, 0xe4, 0x3f, 0xfd, 0xe4, 0x13, 0xda, +0xab, 0x32, 0x99, 0x81, 0x57, 0xef, 0x0f, 0x87, 0xc2, 0x9b, 0x6e, 0x50, +0x41, 0xef, 0x79, 0xd2, 0x21, 0x1d, 0xfc, 0x53, 0xda, 0xb6, 0x37, 0x54, +0x08, 0x97, 0x08, 0x61, 0x54, 0x30, 0xff, 0x6e, 0x53, 0x96, 0x54, 0x4f, +0x76, 0xd2, 0x03, 0x92, 0x9d, 0xd5, 0x32, 0x6e, 0x5c, 0x48, 0xdc, 0xec, +0x6b, 0xd3, 0x8d, 0xf7, 0x66, 0xa5, 0x59, 0xa7, 0x24, 0x88, 0x09, 0x1a, +0x42, 0xd8, 0xd8, 0xbf, 0x77, 0xef, 0x53, 0x4f, 0x3e, 0x09, 0x0c, 0x14, +0x12, 0x60, 0x0b, 0xb4, 0x50, 0xe1, 0xe7, 0x67, 0x90, 0xf9, 0x27, 0x9f, +0x7c, 0xfc, 0xd1, 0x47, 0xaf, 0xbf, 0xf6, 0xda, 0xd2, 0xab, 0x16, 0xe7, +0xa4, 0x3a, 0x53, 0xeb, 0xb5, 0x32, 0x53, 0x5b, 0xe3, 0x92, 0xbf, 0x74, +0x18, 0x30, 0x9e, 0x5a, 0x86, 0x03, 0x8b, 0x8a, 0xf6, 0xef, 0xdb, 0xc7, +0x85, 0xaa, 0x56, 0x1a, 0x63, 0x4a, 0xe7, 0x48, 0x81, 0x5c, 0xcf, 0x2e, +0x94, 0xc4, 0x8c, 0x49, 0x69, 0xde, 0x2f, 0xa9, 0x7e, 0x07, 0xde, 0xf8, +0xdd, 0x27, 0x4f, 0xaa, 0x0e, 0x7a, 0x72, 0x8e, 0x19, 0x21, 0x8a, 0x8f, +0x19, 0x18, 0x9a, 0x92, 0xee, 0x24, 0x80, 0x1c, 0x00, 0x7f, 0xf2, 0xf1, +0xc7, 0x3d, 0x0a, 0x0b, 0x19, 0xb6, 0xdf, 0xe5, 0x1b, 0x43, 0x5e, 0x76, +0x32, 0xf9, 0x2b, 0x74, 0x09, 0xaa, 0x0c, 0x2a, 0x44, 0x82, 0x32, 0xa1, +0x42, 0x0f, 0xfa, 0xd5, 0xc1, 0x10, 0xc2, 0xc0, 0x18, 0xbe, 0xf6, 0x24, +0x6f, 0xf7, 0xca, 0x85, 0x0b, 0x55, 0x15, 0x0f, 0xd5, 0x1e, 0x45, 0x36, +0x54, 0x7d, 0xcb, 0xb4, 0xfc, 0x6c, 0x20, 0x26, 0x5d, 0x49, 0x60, 0x28, +0x0a, 0xe7, 0xd0, 0x21, 0xbb, 0x6e, 0x6e, 0x4e, 0x86, 0xd3, 0x99, 0x96, +0x90, 0x90, 0x5b, 0x2d, 0xb3, 0x55, 0x93, 0xfc, 0xd6, 0x05, 0x4d, 0xf8, +0x69, 0x55, 0xd0, 0xa4, 0x79, 0xe3, 0x46, 0x8d, 0x6a, 0xd7, 0xe2, 0xa7, +0xa1, 0xfc, 0xd4, 0xaa, 0xc5, 0x99, 0x34, 0xbc, 0x73, 0xe6, 0x36, 0x9a, +0xb4, 0xd3, 0x5a, 0x2c, 0x01, 0x18, 0xed, 0x07, 0x4d, 0x62, 0xce, 0x69, +0x89, 0x09, 0x2d, 0x0b, 0x9a, 0xcc, 0xba, 0x64, 0xda, 0xfe, 0x3d, 0xbb, +0xdf, 0x78, 0xfd, 0x35, 0x5e, 0x19, 0x4c, 0x43, 0x0e, 0x2c, 0x07, 0x9d, +0xdb, 0xb6, 0x71, 0x66, 0xe4, 0xd0, 0x05, 0x66, 0xcc, 0x8e, 0x27, 0x63, +0x53, 0xaa, 0xb7, 0x2e, 0x68, 0x0c, 0xea, 0x38, 0x87, 0x03, 0x96, 0x28, +0x15, 0x07, 0x31, 0x1f, 0xbd, 0xfd, 0xd6, 0x5b, 0x6f, 0xbf, 0xf9, 0xe6, +0x3b, 0x6f, 0xbd, 0x25, 0x3f, 0xef, 0xbe, 0xfd, 0xb6, 0xfa, 0x71, 0xfd, +0xfa, 0xce, 0x3b, 0xd4, 0x9e, 0xba, 0xf3, 0xe4, 0x89, 0x3b, 0x4f, 0xdc, +0x41, 0x3b, 0xfa, 0x13, 0x77, 0x1c, 0xbf, 0x83, 0x22, 0x8a, 0x47, 0x0e, +0x77, 0x6e, 0xd7, 0xce, 0x05, 0x89, 0x79, 0xeb, 0x42, 0xdb, 0xee, 0xa4, +0x0b, 0xff, 0x56, 0xbc, 0x82, 0x65, 0xf4, 0x15, 0x15, 0x06, 0x75, 0x22, +0x64, 0x74, 0x09, 0x83, 0x40, 0xd5, 0x78, 0xe7, 0xe7, 0x38, 0xc8, 0xea, +0xe5, 0x64, 0x53, 0xd1, 0x15, 0x81, 0x44, 0xda, 0xb5, 0xa8, 0x7d, 0x57, +0xc9, 0x1b, 0x4a, 0x38, 0x31, 0x7f, 0x90, 0x4d, 0x57, 0x0e, 0xd9, 0xa7, +0x45, 0x49, 0x60, 0xcb, 0x99, 0x34, 0x66, 0x14, 0x24, 0x1e, 0xeb, 0x88, +0x49, 0x6b, 0xd4, 0xb1, 0xde, 0xa4, 0x1b, 0x1b, 0x4c, 0x5b, 0x5f, 0xbd, +0xcd, 0xc0, 0xf8, 0xd4, 0x9c, 0xd8, 0xc4, 0xd4, 0x58, 0x67, 0xba, 0x33, +0x35, 0x2b, 0xa7, 0x6e, 0x93, 0x82, 0x6e, 0xc3, 0x5a, 0xf7, 0x19, 0xdd, +0x71, 0xe0, 0x84, 0x6e, 0xc3, 0xa6, 0xf4, 0x1c, 0x79, 0x49, 0x9f, 0x09, +0x73, 0x46, 0x5e, 0xb3, 0x17, 0x3b, 0xac, 0x07, 0xc1, 0x8f, 0x39, 0x8f, +0xdc, 0xfc, 0x40, 0xb3, 0xa1, 0xb3, 0x9d, 0x35, 0xea, 0x27, 0xc4, 0x27, +0x26, 0x3b, 0x93, 0xd2, 0x12, 0xe3, 0x6b, 0xa4, 0x24, 0xb6, 0x6e, 0xd2, +0xa8, 0x7f, 0x8f, 0x6e, 0x97, 0x4e, 0x9a, 0xd8, 0xac, 0x7e, 0x5d, 0xee, +0xdb, 0x6f, 0xf6, 0xf5, 0x0c, 0xd2, 0xf2, 0xd0, 0xb7, 0x83, 0x56, 0xee, +0x8d, 0x8b, 0x89, 0x4d, 0x8f, 0x73, 0x54, 0x73, 0xc6, 0x95, 0xfd, 0x89, +0xcf, 0x70, 0x26, 0x7a, 0xfe, 0x49, 0xa3, 0xd4, 0xb3, 0x33, 0x49, 0xff, +0x49, 0x49, 0x74, 0xc6, 0xc7, 0x39, 0xc3, 0x0a, 0x12, 0x6e, 0x2c, 0xb3, +0x16, 0xa8, 0x80, 0x35, 0x9b, 0x78, 0x85, 0xca, 0x0e, 0x09, 0x61, 0xe6, +0x60, 0xa6, 0xb6, 0x5e, 0x57, 0xdc, 0xc2, 0x4e, 0x31, 0x67, 0xd6, 0x2c, +0x89, 0xa4, 0x00, 0x18, 0xd2, 0x53, 0x0b, 0x51, 0x81, 0x0d, 0x15, 0x84, +0x40, 0xe2, 0xee, 0x0e, 0x11, 0x87, 0x44, 0x22, 0x92, 0x7c, 0x7f, 0x76, +0x62, 0x0c, 0x44, 0xbb, 0x76, 0xec, 0xc8, 0x49, 0x4f, 0x21, 0x34, 0xa8, +0x7a, 0x8b, 0x9e, 0x63, 0x76, 0x3d, 0xdb, 0xfd, 0xe8, 0xdf, 0xbb, 0x1e, +0xfd, 0x07, 0x61, 0xe1, 0xed, 0x6f, 0xfd, 0xba, 0xe5, 0xc1, 0x7f, 0xe6, +0xef, 0xff, 0xa6, 0xce, 0x9e, 0x6f, 0xb3, 0x4a, 0x5c, 0xbd, 0x36, 0xfd, +0xd6, 0x50, 0x51, 0xbe, 0xdb, 0xef, 0xfb, 0xf3, 0x84, 0x9d, 0x4f, 0x0c, +0x59, 0xb6, 0xb3, 0xe3, 0xe8, 0x39, 0x35, 0x9b, 0x75, 0x4e, 0xad, 0x99, +0x9f, 0x9c, 0x55, 0xd7, 0x99, 0x9e, 0x4d, 0xc5, 0x83, 0xbe, 0x73, 0x6e, +0x50, 0x75, 0x38, 0x5b, 0x1c, 0xf8, 0x7a, 0xcc, 0x75, 0xfb, 0xfb, 0x8f, +0x9d, 0xd1, 0x77, 0xd4, 0xd4, 0x3e, 0x23, 0xa7, 0xf4, 0x1e, 0x3e, 0xb9, +0xfb, 0xd0, 0x09, 0x9d, 0x07, 0x8c, 0x29, 0x1c, 0x32, 0xa5, 0xd3, 0xd8, +0x05, 0x6d, 0x46, 0xcc, 0x69, 0x36, 0x78, 0x66, 0xc3, 0x7e, 0xd3, 0x6a, +0xf6, 0x98, 0x98, 0xd3, 0x75, 0x5c, 0xcd, 0x1e, 0x13, 0x1a, 0xf4, 0x9d, +0xc6, 0x37, 0x6d, 0x46, 0xcc, 0xed, 0x38, 0x66, 0x41, 0xcf, 0x99, 0xd7, +0xf5, 0x5f, 0x5c, 0x3c, 0x68, 0xe9, 0x8e, 0x61, 0xcb, 0x4b, 0x86, 0xaf, +0xd8, 0x35, 0x72, 0xe5, 0xee, 0x51, 0xab, 0xf6, 0xc0, 0xc7, 0xc2, 0x41, +0x97, 0xf0, 0x83, 0x57, 0x58, 0xa1, 0xc2, 0xe0, 0xb9, 0x0b, 0x55, 0xfe, +0x60, 0x20, 0xc4, 0xfc, 0x9d, 0x5f, 0x64, 0x36, 0xe9, 0x42, 0xa1, 0xc8, +0x0d, 0xeb, 0xd7, 0x11, 0x3f, 0x8b, 0xb9, 0x1a, 0xd3, 0x8d, 0x04, 0xa5, +0x02, 0x0f, 0x91, 0x37, 0x2c, 0x0f, 0xfe, 0xc4, 0x21, 0x62, 0x09, 0x48, +0x40, 0x35, 0xf8, 0xd1, 0x73, 0xcf, 0xed, 0xdf, 0xb7, 0xb7, 0x3f, 0x35, +0xff, 0x1c, 0x54, 0xfd, 0x6b, 0x34, 0xf4, 0x86, 0xdb, 0xc1, 0x80, 0xdf, +0x74, 0x6f, 0xff, 0xc2, 0xb4, 0xed, 0xdf, 0x37, 0xdc, 0xfb, 0xcf, 0xb6, +0x07, 0xff, 0xde, 0xf9, 0xe0, 0xe7, 0x53, 0xf6, 0x3f, 0xef, 0x46, 0xb0, +0x39, 0x4f, 0x42, 0x9f, 0xe9, 0xa7, 0xaa, 0x5b, 0xcf, 0xed, 0x2f, 0x42, +0x40, 0x67, 0xda, 0x94, 0xa0, 0x3c, 0xa2, 0x22, 0x4c, 0xf0, 0xa0, 0xd6, +0x71, 0xc2, 0x9e, 0x67, 0x9d, 0x35, 0x5c, 0x52, 0x47, 0xc7, 0x56, 0xcd, +0xbb, 0xb6, 0x6f, 0xdb, 0xb3, 0x53, 0x87, 0x51, 0x83, 0x07, 0x4d, 0x1e, +0x37, 0x66, 0xe2, 0x98, 0x51, 0xf3, 0x2e, 0x9b, 0xbd, 0x7c, 0xc9, 0x92, +0xa5, 0x57, 0x5d, 0x75, 0xc3, 0x75, 0xd7, 0x6d, 0xb9, 0xf9, 0xe6, 0x6b, +0xae, 0xbe, 0x7a, 0xd9, 0x92, 0x25, 0x2b, 0x96, 0x2e, 0x5d, 0x72, 0xe5, +0x95, 0xd3, 0x27, 0x4f, 0x9c, 0x34, 0x66, 0xf4, 0xa4, 0xb1, 0xa3, 0x39, +0xad, 0xa8, 0x7b, 0xb7, 0x6e, 0xed, 0x5a, 0xe7, 0x56, 0xcb, 0x60, 0x79, +0x63, 0x12, 0x52, 0x6a, 0xf6, 0xbd, 0x74, 0x64, 0xc9, 0x33, 0xcd, 0xf7, +0xfb, 0x91, 0xda, 0x1f, 0x25, 0xd3, 0xca, 0x58, 0x01, 0xfb, 0xa8, 0x40, +0x1b, 0x2b, 0x6b, 0x99, 0x0d, 0x2b, 0xc1, 0xc9, 0xb0, 0xb5, 0x34, 0xd9, +0xf5, 0xc5, 0x80, 0x79, 0x37, 0xb6, 0xef, 0x3d, 0x3c, 0xbf, 0x63, 0xdf, +0xf4, 0x7a, 0xad, 0x1c, 0x09, 0x69, 0x90, 0xb7, 0xc3, 0x41, 0x55, 0x7c, +0x0f, 0x87, 0x9c, 0xc0, 0x4f, 0x7c, 0x4a, 0xcd, 0xfc, 0x86, 0xed, 0xfb, +0x76, 0x19, 0x7f, 0xf9, 0x88, 0x35, 0xb7, 0x4d, 0xde, 0xfb, 0x5c, 0xb3, +0x7d, 0x9e, 0x14, 0x83, 0x80, 0x76, 0x35, 0x5f, 0x9c, 0xf7, 0xd1, 0x1b, +0xd9, 0x5d, 0x01, 0x3b, 0x96, 0x59, 0x44, 0x02, 0x78, 0x85, 0x1b, 0x54, +0x84, 0x1b, 0xa3, 0x30, 0x2f, 0x5c, 0x5a, 0xf1, 0x77, 0x0d, 0xf6, 0x7c, +0xdd, 0x66, 0xff, 0x97, 0x85, 0x07, 0xff, 0x32, 0xe5, 0xc0, 0x4b, 0x63, +0x77, 0x3e, 0x3d, 0x68, 0xeb, 0xe3, 0xed, 0x57, 0x9e, 0x68, 0x74, 0x59, +0x49, 0x87, 0xeb, 0x4e, 0x0f, 0xda, 0xf2, 0xd8, 0xb8, 0x5d, 0xcf, 0x4c, +0x39, 0xf0, 0x22, 0xe2, 0x4a, 0x87, 0x83, 0x5f, 0x22, 0xae, 0xd4, 0xdd, +0xfd, 0x4d, 0x4a, 0xb1, 0x2b, 0xe4, 0x3b, 0xfa, 0x13, 0xaa, 0x2b, 0x60, +0x42, 0x85, 0x38, 0x49, 0x8d, 0x36, 0x28, 0xf7, 0x12, 0x54, 0xf4, 0xdd, +0x47, 0x57, 0x20, 0xec, 0x56, 0xc0, 0x2b, 0x2a, 0x8e, 0x1f, 0x3f, 0x8e, +0x12, 0x69, 0xc5, 0x2b, 0xc2, 0x6e, 0x2d, 0xa2, 0xbb, 0x7b, 0x74, 0x05, +0xdc, 0x78, 0xf1, 0x8c, 0xbc, 0x22, 0x8a, 0x8a, 0x50, 0x15, 0x03, 0xa2, +0x24, 0xee, 0xf7, 0x0a, 0xd8, 0xe4, 0x15, 0xc4, 0x90, 0x9a, 0xf4, 0x8a, +0x28, 0xaf, 0x88, 0xae, 0x40, 0x98, 0xae, 0x80, 0x86, 0x0a, 0xd2, 0x80, +0x55, 0x21, 0x7a, 0xa3, 0x5e, 0x01, 0x2a, 0x60, 0x22, 0x65, 0xec, 0x2f, +0x9b, 0xfd, 0x77, 0x39, 0x45, 0x77, 0xdf, 0xe8, 0x0a, 0x54, 0xe9, 0x15, +0xf0, 0x8a, 0x0a, 0x91, 0xa0, 0x04, 0x15, 0xb1, 0xb1, 0x84, 0xa2, 0xfd, +0x70, 0x6c, 0x0a, 0xb3, 0xde, 0xb2, 0x61, 0xba, 0xed, 0xf9, 0x2d, 0x45, +0x44, 0xec, 0x85, 0x10, 0xf6, 0x0f, 0x07, 0x04, 0x6f, 0xcd, 0x2b, 0x74, +0x54, 0xe4, 0xe4, 0xe4, 0x94, 0xa2, 0x62, 0xe5, 0x27, 0x55, 0x1a, 0xee, +0x11, 0xfb, 0x52, 0xa3, 0x0f, 0x1e, 0xe0, 0x0a, 0x40, 0xd8, 0x3f, 0x1c, +0x35, 0x6a, 0xd4, 0x70, 0x8b, 0x0a, 0x89, 0xbb, 0x84, 0x57, 0x74, 0xeb, +0xd6, 0xad, 0x14, 0x15, 0x13, 0x8e, 0x44, 0x51, 0x11, 0x5d, 0x81, 0x30, +0x5c, 0x01, 0x08, 0xfb, 0x87, 0xa3, 0x73, 0xe7, 0xce, 0x82, 0x0a, 0x42, +0x7e, 0x88, 0x88, 0xa3, 0x73, 0xea, 0xc5, 0xfc, 0x0a, 0x78, 0x85, 0xa0, +0x82, 0x3f, 0x2c, 0x59, 0xb2, 0xa4, 0x14, 0x15, 0x05, 0x83, 0xc2, 0x70, +0x45, 0x02, 0xdc, 0x66, 0xa2, 0x97, 0x87, 0xc1, 0x0a, 0x14, 0x0c, 0x4a, +0x4b, 0x23, 0x94, 0xc1, 0x75, 0x2c, 0x58, 0xb0, 0x40, 0x5a, 0xe6, 0x5a, +0xa0, 0x82, 0x70, 0x51, 0x80, 0x42, 0x00, 0x29, 0x2d, 0x1d, 0xca, 0x28, +0xdc, 0xb3, 0x1f, 0x8d, 0x02, 0x23, 0xba, 0x02, 0x61, 0xb5, 0x02, 0x90, +0xb4, 0x76, 0xdc, 0x79, 0xe7, 0x9d, 0xc4, 0x86, 0x4a, 0xf4, 0x34, 0xe1, +0xa1, 0xa5, 0xbc, 0xe2, 0x8e, 0x3b, 0xee, 0x90, 0xbe, 0x04, 0xe4, 0x1b, +0x00, 0x9a, 0x1e, 0x3d, 0x7a, 0x94, 0x5e, 0x95, 0xdd, 0xd4, 0x71, 0x53, +0x68, 0x16, 0x12, 0x0d, 0x83, 0x2d, 0x2d, 0xfa, 0x08, 0x41, 0x5f, 0x01, +0x88, 0x39, 0xbb, 0xe9, 0x94, 0x29, 0x53, 0x84, 0xc2, 0x11, 0x9f, 0xa4, +0x6b, 0xae, 0xca, 0xfe, 0x2d, 0x45, 0xc5, 0x89, 0x13, 0x27, 0xa4, 0x03, +0x39, 0xee, 0x6d, 0x40, 0x83, 0x40, 0x55, 0x86, 0x5d, 0xe4, 0x17, 0x45, +0x81, 0x11, 0x56, 0x9b, 0x65, 0xd0, 0x49, 0x2d, 0x54, 0x06, 0x04, 0x12, +0xf9, 0x45, 0x57, 0x5e, 0x79, 0xa5, 0x22, 0xef, 0xdd, 0xbb, 0x77, 0x93, +0xc1, 0x4f, 0x75, 0x46, 0x55, 0x9d, 0x9e, 0x6c, 0xed, 0x8b, 0x7a, 0x05, +0xa8, 0x20, 0x8d, 0x86, 0x00, 0x41, 0x8c, 0xb3, 0x14, 0xbf, 0xe0, 0xa4, +0x69, 0xd3, 0xa6, 0x95, 0x01, 0x06, 0x1c, 0x23, 0x2a, 0x4a, 0x85, 0xca, +0xbb, 0x8f, 0xce, 0xd3, 0x72, 0x05, 0x20, 0xe0, 0xec, 0xa6, 0x3a, 0x24, +0xc6, 0x8d, 0x1b, 0xf7, 0xca, 0x2b, 0xaf, 0xd0, 0x2b, 0x59, 0xda, 0x83, +0x48, 0x67, 0x9f, 0x32, 0xa8, 0x20, 0xf5, 0x0c, 0x85, 0x1b, 0xd5, 0x82, +0x3f, 0x53, 0x64, 0x05, 0x00, 0x75, 0xed, 0xda, 0xb5, 0x0c, 0x30, 0xf8, +0x05, 0xe5, 0x1b, 0xe5, 0x1d, 0xab, 0x56, 0xd4, 0x8f, 0x11, 0xa5, 0xbc, +0xaa, 0xbf, 0x02, 0xf8, 0xa0, 0x21, 0x54, 0xc8, 0x15, 0xa2, 0x85, 0x74, +0x1d, 0x0e, 0x25, 0x38, 0xf1, 0xb9, 0x53, 0xa7, 0x4e, 0xcf, 0x3c, 0xf3, +0xcc, 0xeb, 0xaf, 0xbf, 0x2e, 0x1d, 0xd6, 0xa5, 0x51, 0x28, 0x10, 0x40, +0x50, 0xba, 0xc8, 0x2b, 0x4e, 0x9e, 0x3c, 0x29, 0x4d, 0x09, 0x10, 0xa2, +0xd0, 0x39, 0x50, 0x2d, 0x48, 0x41, 0xa6, 0x21, 0x50, 0x17, 0x57, 0xd9, +0x08, 0x37, 0x47, 0x8c, 0xe6, 0xec, 0x73, 0x7b, 0x52, 0xf4, 0x0f, 0xd1, +0x15, 0xa8, 0x12, 0x2b, 0xa0, 0x2c, 0x4e, 0x32, 0x9b, 0xf6, 0xed, 0xdb, +0x9f, 0x3d, 0x7b, 0x16, 0x0a, 0xa7, 0x86, 0x2f, 0xed, 0x41, 0xd0, 0x1a, +0xa4, 0xa4, 0x10, 0x10, 0x28, 0x45, 0x05, 0x6a, 0xb8, 0xea, 0x61, 0x23, +0xf1, 0xe4, 0x9c, 0x4a, 0xea, 0x26, 0xcd, 0xe3, 0xe0, 0x32, 0x55, 0xe2, +0xb1, 0xa2, 0x93, 0x88, 0xae, 0x40, 0x90, 0x56, 0x60, 0xc4, 0x88, 0x11, +0x18, 0x5a, 0x9f, 0x7d, 0xf6, 0x59, 0x69, 0x79, 0xa5, 0x7a, 0x85, 0x12, +0xde, 0x81, 0x1e, 0x81, 0x36, 0x71, 0x91, 0x57, 0x80, 0x0a, 0x55, 0x1f, +0x0e, 0xc4, 0xc0, 0x2e, 0xe0, 0x29, 0xb8, 0x36, 0x68, 0x1e, 0xf7, 0xe2, +0x8b, 0x2f, 0x6e, 0xdb, 0xb6, 0xad, 0x79, 0x7b, 0x57, 0x79, 0xac, 0xe8, +0x11, 0x5d, 0x81, 0x90, 0x5e, 0x81, 0xc6, 0xad, 0x3a, 0xae, 0x5b, 0xb7, +0xee, 0xd1, 0x47, 0x1f, 0x7d, 0xfa, 0xe9, 0xa7, 0xd1, 0x28, 0xd8, 0xf7, +0xd9, 0xfd, 0x51, 0xa4, 0x55, 0x17, 0x38, 0x24, 0xa6, 0x32, 0xa8, 0x90, +0x5a, 0xa2, 0x68, 0x17, 0xd2, 0x21, 0x53, 0xb4, 0x0b, 0xe4, 0xa8, 0x37, +0xdf, 0x7c, 0x93, 0xeb, 0x9f, 0x7e, 0xe6, 0xb9, 0x8d, 0xdb, 0xf7, 0xf6, +0x9f, 0x38, 0x3b, 0x35, 0xbf, 0x5b, 0x5c, 0x5a, 0x0d, 0x47, 0x54, 0x7c, +0x0a, 0x69, 0xea, 0x88, 0x9c, 0xc9, 0xd3, 0xaf, 0x24, 0x2d, 0x3b, 0xa5, +0x51, 0xe7, 0x6e, 0xa3, 0x2e, 0x5d, 0xbb, 0xb9, 0xf8, 0xfe, 0x87, 0x1e, +0x79, 0xe2, 0x89, 0x27, 0x9e, 0x7b, 0xee, 0x39, 0x48, 0x1a, 0x83, 0xac, +0x68, 0x14, 0x52, 0xe4, 0x45, 0xca, 0x31, 0x02, 0x01, 0x38, 0x84, 0x8b, +0x57, 0xa4, 0xa4, 0xa4, 0xdc, 0x75, 0xd7, 0x5d, 0x52, 0x32, 0x9e, 0xea, +0x46, 0x98, 0x68, 0x55, 0xc5, 0x34, 0x74, 0x73, 0x38, 0x06, 0x90, 0x42, +0x29, 0x79, 0xe9, 0xa5, 0x97, 0x9e, 0x7c, 0xfa, 0xb9, 0xfb, 0x1e, 0x7d, +0xf2, 0xde, 0x87, 0xce, 0xdd, 0xf3, 0xe0, 0x23, 0x77, 0xdd, 0x77, 0xf6, +0xce, 0x33, 0x0f, 0xde, 0x79, 0xef, 0x03, 0xfc, 0x9c, 0x3c, 0x7d, 0xbf, +0x4f, 0x3f, 0x27, 0xee, 0xb9, 0xcf, 0x8f, 0x9f, 0x3b, 0x4e, 0x9d, 0xf1, +0xfa, 0x73, 0xfc, 0xee, 0x7b, 0x0d, 0xe7, 0xf0, 0x8d, 0xd7, 0x9f, 0xdb, +0xef, 0x3a, 0xed, 0xf5, 0xe7, 0xb6, 0x3b, 0xef, 0x31, 0x9c, 0xc3, 0x37, +0x5e, 0x7f, 0x8e, 0x9d, 0x3c, 0x65, 0x38, 0x87, 0x6f, 0x82, 0xf5, 0xe3, +0xf5, 0xee, 0x96, 0x73, 0xf6, 0xfa, 0xa4, 0x9c, 0x60, 0x58, 0x31, 0xf3, +0x37, 0x96, 0x4b, 0x6a, 0x5e, 0x79, 0xaf, 0xef, 0x8b, 0x13, 0xec, 0x53, +0x82, 0x7d, 0x1a, 0x13, 0xb2, 0x74, 0xd1, 0xe7, 0x99, 0x07, 0xef, 0xbe, +0xff, 0xa1, 0x53, 0xf7, 0x3f, 0x7c, 0xf6, 0x91, 0x73, 0x4f, 0x3e, 0xf9, +0x24, 0x78, 0x40, 0xf6, 0x41, 0x70, 0x12, 0x48, 0x48, 0x27, 0x17, 0x78, +0x80, 0xc8, 0x4e, 0x52, 0xa1, 0xb4, 0x14, 0x15, 0x77, 0xdf, 0x7d, 0xb7, +0x74, 0x67, 0x13, 0x76, 0xa1, 0x3c, 0x7a, 0x30, 0x17, 0x38, 0x06, 0x9e, +0x3f, 0xac, 0x57, 0xe8, 0x25, 0x0c, 0x87, 0xa6, 0xf1, 0xfc, 0xf3, 0xcf, +0x33, 0x3a, 0x3c, 0xe8, 0xa9, 0xa7, 0xa8, 0x16, 0xe9, 0x3a, 0xc0, 0x9f, +0x4f, 0x07, 0xed, 0xdf, 0xfd, 0x38, 0x1e, 0xf3, 0xeb, 0x38, 0x67, 0xfb, +0x80, 0xb1, 0xfa, 0x74, 0x20, 0x9b, 0xfa, 0x71, 0x3c, 0x1c, 0x8c, 0xc3, +0xfe, 0x7d, 0x7d, 0x7a, 0x22, 0x75, 0xb2, 0xed, 0x35, 0x2b, 0x73, 0xa2, +0x5f, 0xef, 0xe7, 0x31, 0x3b, 0x94, 0xe0, 0x13, 0x75, 0x71, 0xb2, 0x90, +0x25, 0xf4, 0xc9, 0x81, 0xa1, 0x09, 0x72, 0x45, 0xb1, 0x66, 0x5b, 0x87, +0x80, 0x51, 0x0a, 0xde, 0x7f, 0xff, 0x7d, 0x20, 0x21, 0x4d, 0xa5, 0x45, +0x76, 0xd2, 0xdb, 0x85, 0xc2, 0x21, 0x2e, 0xf2, 0x0a, 0x41, 0x85, 0x54, +0x4a, 0x95, 0x6a, 0xbb, 0x62, 0xa5, 0x45, 0x31, 0xe7, 0x4a, 0x4c, 0x52, +0xb4, 0x66, 0x63, 0x20, 0x86, 0x03, 0x64, 0x6f, 0xbc, 0xf1, 0x06, 0xa3, +0xc3, 0x83, 0x40, 0x08, 0x77, 0xe2, 0x00, 0x7f, 0x3e, 0x1d, 0x4c, 0xd1, +0x8f, 0x03, 0x34, 0xfa, 0x71, 0xfc, 0xc8, 0xf6, 0xc1, 0xda, 0xf9, 0x74, +0xa0, 0xae, 0xf9, 0x71, 0xf0, 0x92, 0x02, 0x3f, 0xec, 0xdf, 0xd7, 0xa7, +0x27, 0x52, 0x27, 0xdb, 0x5e, 0xb3, 0x32, 0x27, 0xfa, 0xf1, 0x76, 0xb8, +0xc4, 0x0e, 0x25, 0xf8, 0x44, 0x5d, 0x9c, 0x2c, 0x64, 0x09, 0x7d, 0x72, +0xfc, 0xf8, 0xc7, 0x3f, 0x86, 0x5c, 0x51, 0x04, 0xd8, 0xd6, 0x21, 0x60, +0x64, 0x1f, 0xdc, 0x71, 0x70, 0x09, 0x81, 0x84, 0xd8, 0x9d, 0x44, 0x76, +0x82, 0xf8, 0x41, 0x01, 0xa8, 0x40, 0x7a, 0x72, 0x49, 0x50, 0xa0, 0x42, +0xba, 0x51, 0x29, 0x39, 0x4a, 0xfa, 0x77, 0x00, 0x0c, 0xae, 0xc4, 0x94, +0x8b, 0x3f, 0x1c, 0x09, 0x0c, 0x6c, 0xe0, 0x1b, 0x47, 0xd9, 0x80, 0x75, +0xe0, 0xd0, 0x40, 0xb2, 0x02, 0x24, 0x1e, 0x0e, 0xe6, 0xe1, 0xf7, 0x01, +0xa6, 0x83, 0x72, 0xb0, 0x1c, 0x36, 0x0f, 0xd0, 0xee, 0xd3, 0x81, 0x54, +0x19, 0x94, 0x83, 0x77, 0x66, 0xe7, 0xf0, 0xef, 0x5e, 0x3e, 0x3d, 0x91, +0x3a, 0xd9, 0xe6, 0x8a, 0x19, 0x4e, 0x0b, 0xca, 0xfb, 0x62, 0x10, 0xfb, +0x34, 0xe3, 0x99, 0xfc, 0xa0, 0x4f, 0x0e, 0x90, 0x00, 0xb9, 0x02, 0x06, +0x44, 0x1e, 0xf0, 0x00, 0x8b, 0xc0, 0x0e, 0x8b, 0xe0, 0x04, 0x61, 0x2b, +0x75, 0x42, 0xef, 0x07, 0x02, 0x16, 0x8c, 0xa8, 0x30, 0x00, 0x03, 0x8e, +0x01, 0x7f, 0x41, 0xf0, 0x12, 0x6c, 0x00, 0x2f, 0x46, 0x04, 0x67, 0x0c, +0x0d, 0x42, 0xb8, 0x07, 0x2a, 0xbc, 0xd7, 0x03, 0x20, 0xa9, 0x73, 0xf8, +0x1c, 0xc4, 0x83, 0xe7, 0x0c, 0xca, 0x01, 0x1b, 0xf4, 0xe3, 0x60, 0xa1, +0x83, 0x72, 0xb0, 0xcb, 0xd8, 0x39, 0xfc, 0xbb, 0x97, 0x1f, 0xcf, 0x65, +0x79, 0x49, 0x50, 0xd6, 0x59, 0x7a, 0x6b, 0xf8, 0x7d, 0xe8, 0x54, 0xe4, +0x95, 0xea, 0x38, 0x01, 0xfa, 0xe4, 0x40, 0x37, 0x86, 0x5c, 0xd9, 0xd3, +0x21, 0x5d, 0x34, 0x02, 0x72, 0x25, 0x90, 0x80, 0x88, 0xe1, 0x90, 0x86, +0x07, 0x4a, 0x9d, 0x50, 0xad, 0x1a, 0x8c, 0xa8, 0x10, 0x76, 0xa1, 0x03, +0x43, 0x74, 0x0c, 0x98, 0x06, 0xd8, 0x00, 0x58, 0xb8, 0x32, 0x18, 0x11, +0x78, 0x30, 0x34, 0x08, 0x91, 0x83, 0x3b, 0x05, 0x7e, 0xc0, 0x8b, 0x18, +0x84, 0xff, 0xe5, 0xd0, 0x3f, 0xab, 0x2f, 0x03, 0xf9, 0xc0, 0x8a, 0xc8, +0xa1, 0x06, 0x51, 0xdf, 0x04, 0xf8, 0x01, 0xf1, 0xb2, 0x6a, 0x1e, 0x01, +0x3e, 0x97, 0xe1, 0x72, 0xd6, 0xcd, 0xc3, 0x1a, 0x06, 0xf2, 0x6a, 0xcc, +0xd7, 0xca, 0xdb, 0x0f, 0x9c, 0xa8, 0x84, 0x3e, 0x61, 0x0b, 0x90, 0x2b, +0x86, 0x26, 0x48, 0x17, 0x02, 0x66, 0x8b, 0x07, 0x0f, 0xd8, 0x93, 0x20, +0x6c, 0x33, 0x24, 0x80, 0x80, 0x05, 0x2a, 0x0c, 0xc0, 0x90, 0xbe, 0x4f, +0xaa, 0x25, 0x8f, 0x74, 0x21, 0x01, 0x21, 0x8c, 0x0b, 0x48, 0xe4, 0xe0, +0x36, 0xc1, 0x3a, 0x40, 0xb0, 0x1c, 0x6a, 0x40, 0x9f, 0xbe, 0x51, 0x27, +0x07, 0xf2, 0x81, 0x85, 0x53, 0x97, 0xf3, 0x59, 0x0e, 0x3b, 0xdf, 0xa8, +0x93, 0xab, 0xc8, 0x07, 0x3b, 0x73, 0xf6, 0x70, 0x4e, 0x20, 0x6b, 0x68, +0x79, 0xad, 0xaf, 0xef, 0x34, 0x70, 0xa2, 0x52, 0x24, 0x2a, 0xe5, 0x83, +0xa5, 0xb1, 0x81, 0x2a, 0xb0, 0x0d, 0x61, 0x4b, 0xfd, 0x79, 0xe1, 0x12, +0xaa, 0x63, 0x89, 0x35, 0x2a, 0x74, 0x60, 0xa8, 0x86, 0x3d, 0x7a, 0xab, +0x1e, 0xe9, 0xd3, 0xa3, 0x0e, 0x77, 0x85, 0x8a, 0xcb, 0xe9, 0x7b, 0xa9, +0x7f, 0xac, 0x17, 0x48, 0x0e, 0xf0, 0x1b, 0x75, 0x79, 0xe0, 0x1f, 0xa4, +0x2a, 0x33, 0x2f, 0x40, 0x0e, 0x69, 0x1c, 0xa1, 0x0e, 0xfd, 0x57, 0x39, +0x33, 0xf0, 0x6f, 0x0c, 0x73, 0x66, 0x40, 0x28, 0xc0, 0xce, 0xe1, 0x6e, +0x86, 0x32, 0x82, 0xfa, 0xab, 0xde, 0x22, 0xc3, 0xe6, 0x3a, 0xab, 0x47, +0x93, 0x41, 0xd4, 0x64, 0x0c, 0xab, 0xe1, 0xa1, 0xc4, 0x75, 0xb0, 0x28, +0x47, 0xa7, 0x52, 0x29, 0x20, 0x2f, 0xc5, 0xe4, 0xd9, 0xe5, 0x05, 0x12, +0xd2, 0xab, 0xc4, 0xd0, 0xc4, 0xc7, 0x2d, 0x2a, 0xa4, 0xa9, 0x8f, 0x92, +0xa6, 0xdc, 0x75, 0x76, 0x93, 0x0e, 0x3a, 0x15, 0x7c, 0x48, 0xb3, 0x08, +0xd5, 0xe3, 0x47, 0xb5, 0x8f, 0xa8, 0xdc, 0x6f, 0x78, 0xf7, 0xe8, 0x06, +0x58, 0x03, 0x89, 0xa2, 0xd9, 0xb4, 0x69, 0xd3, 0x9a, 0x35, 0x6b, 0x1e, +0x78, 0xe0, 0x01, 0xd5, 0x13, 0x43, 0xcd, 0x59, 0x26, 0xa9, 0xff, 0xea, +0xf7, 0x67, 0xd5, 0xe2, 0x48, 0xad, 0x06, 0xc1, 0x6c, 0xab, 0x57, 0xaf, +0xbe, 0xee, 0xba, 0xeb, 0xae, 0xbf, 0xfe, 0xfa, 0x1b, 0x6e, 0xb8, 0x81, +0x39, 0xac, 0x5d, 0xbb, 0x16, 0x57, 0xee, 0x86, 0x0d, 0x1b, 0x6e, 0xbe, +0xf9, 0xe6, 0xcd, 0x9b, 0x37, 0x6f, 0xd9, 0xb2, 0x65, 0xeb, 0xd6, 0xad, +0xdb, 0xb7, 0x6f, 0xdf, 0xb1, 0x63, 0xc7, 0xce, 0x9d, 0x3b, 0xd1, 0x41, +0x65, 0x86, 0x22, 0x0e, 0x60, 0x57, 0xe5, 0xfc, 0xf5, 0xeb, 0xd7, 0x1f, +0x3a, 0x74, 0xe8, 0xbe, 0xfb, 0xee, 0xc3, 0xba, 0xc4, 0x09, 0x88, 0x31, +0x90, 0xaf, 0xf9, 0x5e, 0xe6, 0x6f, 0x20, 0x7a, 0x14, 0x4e, 0xcc, 0x06, +0xf7, 0xdf, 0x7f, 0xff, 0xae, 0x5d, 0xbb, 0x96, 0x2f, 0x5f, 0xbe, 0x7f, +0xff, 0x7e, 0xa6, 0xc1, 0x04, 0xf8, 0x95, 0x04, 0x1e, 0x2c, 0xd2, 0xd8, +0x85, 0x58, 0x25, 0xe4, 0x19, 0xa1, 0xcb, 0x0a, 0xa3, 0x1c, 0x44, 0x5c, +0x0c, 0x53, 0x38, 0xad, 0x59, 0x0a, 0xe6, 0xc3, 0x6b, 0x92, 0xbe, 0x81, +0x96, 0x7d, 0x34, 0xbd, 0xa0, 0xc2, 0x80, 0x0d, 0xbd, 0x3f, 0xa7, 0xb9, +0x73, 0x94, 0xbb, 0x6f, 0xf4, 0x3e, 0x40, 0x3a, 0x41, 0x48, 0xc8, 0x3a, +0x3a, 0x10, 0x12, 0x24, 0x9f, 0xcd, 0xb4, 0x2e, 0xdc, 0xcd, 0xb2, 0xab, +0x90, 0x87, 0x7e, 0x2b, 0x41, 0xfc, 0x93, 0x34, 0x6d, 0x51, 0x44, 0xc3, +0x8b, 0x64, 0x71, 0x31, 0xf3, 0x41, 0x31, 0x7b, 0xf6, 0xec, 0x81, 0xfe, +0x66, 0xce, 0x9c, 0x39, 0x60, 0xc0, 0x80, 0x96, 0x2d, 0x5b, 0x56, 0xab, +0x56, 0xcd, 0xd2, 0x59, 0x3c, 0x64, 0xc8, 0x10, 0xd5, 0xd2, 0xdb, 0xb2, +0x59, 0x8c, 0xde, 0x1a, 0xc6, 0x40, 0x67, 0xfa, 0x7d, 0xb9, 0x35, 0xd6, +0x0e, 0xee, 0x0e, 0xd9, 0xf1, 0x41, 0x35, 0xd6, 0x50, 0x18, 0xc3, 0x1e, +0xd8, 0xa6, 0x4d, 0x1b, 0x3f, 0x1c, 0xd6, 0x57, 0x5f, 0x7d, 0xb5, 0x6c, +0xcc, 0x13, 0x27, 0x4e, 0xf4, 0x70, 0x79, 0x7c, 0x7c, 0x7c, 0x66, 0x66, +0x66, 0x5e, 0x5e, 0x5e, 0xfd, 0xfa, 0xf5, 0x1b, 0x37, 0x6e, 0x9c, 0x9f, +0x9f, 0xdf, 0xa4, 0x49, 0x13, 0xfe, 0x6f, 0x44, 0xdb, 0xa6, 0xda, 0xb5, +0xab, 0x57, 0xaf, 0x9e, 0x98, 0x48, 0xd7, 0x03, 0xdf, 0x0e, 0x06, 0x6c, +0xd0, 0xa0, 0x01, 0x51, 0x7a, 0x45, 0x45, 0x45, 0xe3, 0xc7, 0x8f, 0xbf, +0xec, 0xb2, 0xcb, 0xc8, 0x75, 0x23, 0x1a, 0x75, 0xf8, 0xf0, 0xe1, 0x33, +0x66, 0xcc, 0x58, 0xb1, 0x62, 0x05, 0x30, 0x3e, 0x7c, 0xf8, 0x30, 0x18, +0x03, 0x4b, 0xa8, 0xe9, 0xc8, 0xa5, 0x86, 0xcd, 0x45, 0x7a, 0x9a, 0xa9, +0x96, 0x7f, 0xe2, 0x83, 0xc6, 0xd4, 0x0b, 0x02, 0xa1, 0xfe, 0xb9, 0x73, +0xe7, 0x0e, 0x1a, 0x34, 0xa8, 0x69, 0xd3, 0xa6, 0x96, 0x73, 0x23, 0x51, +0x02, 0xd6, 0xc1, 0xe5, 0xe6, 0x7e, 0x88, 0xb6, 0x50, 0xa1, 0xb7, 0x87, +0x33, 0x34, 0x83, 0xf3, 0xfa, 0xab, 0xd8, 0x79, 0xb1, 0x56, 0x9d, 0x3e, +0x7d, 0x9a, 0xad, 0x6b, 0xd2, 0xa4, 0x49, 0x85, 0x85, 0x85, 0xb5, 0x6a, +0xd5, 0x8a, 0x8b, 0x33, 0xd6, 0xfd, 0x66, 0xdd, 0x1b, 0x36, 0x6c, 0x38, +0x70, 0xe0, 0xc0, 0x95, 0x2b, 0x57, 0xb2, 0x10, 0x32, 0x63, 0x5d, 0xe6, +0xf3, 0x7a, 0xaf, 0xa0, 0x9f, 0x80, 0x51, 0x81, 0x7d, 0x85, 0x17, 0x46, +0x79, 0x87, 0x7a, 0xf5, 0xea, 0x99, 0xe7, 0x6c, 0x87, 0x0a, 0xa6, 0x4f, +0x9f, 0x0e, 0xcd, 0x89, 0xe1, 0x4f, 0x9f, 0xa1, 0x6c, 0x31, 0x6a, 0xcb, +0x40, 0x11, 0xc4, 0x80, 0x88, 0x63, 0x14, 0x63, 0x79, 0x49, 0x49, 0xc9, +0xb5, 0xd7, 0x5e, 0x0b, 0x95, 0x10, 0xc4, 0x46, 0xa6, 0x18, 0x84, 0x98, +0x94, 0x94, 0xa4, 0xdf, 0x2b, 0x23, 0x23, 0x83, 0x20, 0x7f, 0x08, 0x1a, +0x63, 0xbc, 0x6c, 0x34, 0x16, 0x31, 0xff, 0x76, 0x26, 0x77, 0xe1, 0x1c, +0xf8, 0xc6, 0xe2, 0xc5, 0x8b, 0x6d, 0x9f, 0x5e, 0x99, 0x27, 0xb2, 0x0e, +0x75, 0xeb, 0xd6, 0x05, 0x48, 0xd0, 0x09, 0x64, 0x4d, 0xd2, 0x9c, 0x02, +0x06, 0x8b, 0x89, 0x4f, 0xba, 0x4e, 0x9d, 0x3a, 0xf6, 0xe7, 0xb7, 0x6a, +0xd5, 0x2a, 0x71, 0x53, 0x18, 0x80, 0xe1, 0x33, 0x2a, 0xec, 0x34, 0xa5, +0x15, 0xd1, 0x0b, 0x3e, 0x00, 0xd0, 0x99, 0x3a, 0xf4, 0x64, 0x7f, 0xa2, +0xea, 0x4c, 0x9c, 0x8b, 0xec, 0xc4, 0x70, 0x5b, 0xc5, 0xe9, 0x6c, 0xde, +0x3a, 0x28, 0xa7, 0x31, 0x7f, 0xe4, 0x87, 0xec, 0xec, 0x6c, 0x3f, 0x66, +0x6e, 0xbe, 0x84, 0xa8, 0x4c, 0x38, 0x06, 0x2f, 0x40, 0xcd, 0x0d, 0x1b, +0x2b, 0x7b, 0xe1, 0xd0, 0xa1, 0x43, 0x3b, 0x74, 0xe8, 0xc0, 0x8b, 0x4c, +0x48, 0x48, 0xf0, 0xfb, 0x46, 0x7d, 0xfb, 0xf6, 0x45, 0x54, 0xf3, 0xfb, +0x72, 0x2e, 0x64, 0x37, 0x75, 0xb9, 0x72, 0x43, 0xf3, 0x18, 0x39, 0x72, +0xa4, 0xf8, 0x1c, 0xf0, 0x67, 0xfb, 0xfa, 0x04, 0xbc, 0x5f, 0xa8, 0x14, +0x9d, 0x9e, 0x57, 0xc3, 0xf6, 0xa4, 0xde, 0x4e, 0xf0, 0x51, 0xc1, 0x14, +0xf7, 0xee, 0xdd, 0xcb, 0xab, 0xf2, 0x75, 0x8a, 0xee, 0xce, 0x07, 0x57, +0x18, 0x9e, 0x03, 0x6c, 0xfb, 0xab, 0x1e, 0x58, 0xa4, 0x7f, 0x44, 0x4c, +0xa2, 0x0c, 0x88, 0x55, 0x60, 0x51, 0x2c, 0x7b, 0xa5, 0xc2, 0xdc, 0x10, +0x0c, 0x7c, 0x7a, 0x04, 0x67, 0x42, 0x6c, 0x7e, 0x9d, 0xf4, 0xde, 0x6d, +0x73, 0x27, 0x17, 0x35, 0x58, 0x3e, 0xb9, 0x45, 0xb5, 0xb4, 0x52, 0x89, +0x82, 0x55, 0x46, 0x4a, 0x44, 0xef, 0x14, 0x5e, 0x01, 0x11, 0xc7, 0xc4, +0xd0, 0x04, 0xa3, 0x5c, 0x8e, 0x76, 0x4d, 0xaa, 0xdf, 0x30, 0xa3, 0x8d, +0xe5, 0xcf, 0xd5, 0x53, 0x5b, 0x5e, 0x39, 0xae, 0x99, 0xfc, 0xcc, 0x1e, +0x96, 0xaf, 0x6e, 0xaf, 0xf3, 0x40, 0xa6, 0xcd, 0x69, 0xb3, 0x86, 0xe6, +0x0f, 0xed, 0x5a, 0xbb, 0x4b, 0x8b, 0x1a, 0x05, 0x75, 0xd3, 0xf3, 0xaa, +0x27, 0xa5, 0x24, 0x79, 0x6e, 0xe8, 0x71, 0x71, 0xa4, 0xd4, 0xa4, 0xf8, +0x3a, 0xd9, 0xc9, 0x1d, 0x0a, 0xb2, 0x06, 0x77, 0xae, 0x3d, 0x67, 0x44, +0x13, 0x2e, 0xe7, 0x0f, 0x19, 0xa9, 0x09, 0xd7, 0x5e, 0xd2, 0x6a, 0xc1, +0xe8, 0x02, 0x96, 0x65, 0x50, 0xe7, 0x5a, 0x9d, 0x9b, 0xd7, 0x68, 0x52, +0x37, 0xbd, 0x46, 0x86, 0x33, 0x36, 0x36, 0x68, 0x2b, 0x40, 0x49, 0x1a, +0x38, 0x2d, 0xdc, 0xc3, 0xc3, 0x82, 0xe6, 0x54, 0x73, 0x76, 0x6a, 0x96, +0x35, 0xbe, 0x4f, 0xfd, 0x25, 0x13, 0x9b, 0xeb, 0xa7, 0x11, 0x9f, 0x81, +0x0c, 0xcf, 0xab, 0xd1, 0xf7, 0xac, 0xe0, 0xa0, 0x42, 0x02, 0xa8, 0xe0, +0xe6, 0xb3, 0x66, 0xcd, 0xb2, 0xff, 0xbe, 0x59, 0xaf, 0x7a, 0xb9, 0x29, +0xf5, 0x73, 0x53, 0xf9, 0x3f, 0x3d, 0x85, 0x96, 0x43, 0x6e, 0x0f, 0xc4, +0x56, 0x64, 0x2a, 0xec, 0x09, 0xca, 0x27, 0x6f, 0x87, 0x21, 0xc8, 0xac, +0xb8, 0x8a, 0xe4, 0x12, 0x78, 0x25, 0xc2, 0x6b, 0x6e, 0x6e, 0xae, 0xf9, +0x1e, 0x6c, 0xd8, 0x67, 0xce, 0x9c, 0x41, 0x60, 0x13, 0x21, 0x47, 0x64, +0xd3, 0x32, 0xc5, 0x1c, 0xb4, 0x6b, 0x58, 0xdc, 0xf6, 0x4d, 0xaa, 0x0f, +0xeb, 0x56, 0x67, 0xee, 0x88, 0x26, 0x6b, 0x67, 0xb7, 0x3d, 0xb4, 0xb2, +0xdb, 0x43, 0x9b, 0x8b, 0xde, 0x3e, 0x3a, 0xe2, 0xff, 0x1e, 0x9c, 0xf8, +0xcd, 0x33, 0xd3, 0xf5, 0x9f, 0xec, 0x4c, 0xa7, 0xba, 0x0e, 0x25, 0x18, +0x5f, 0x12, 0xfa, 0x00, 0x83, 0xa3, 0x92, 0x22, 0x9d, 0xfb, 0x01, 0x88, +0xb4, 0xe4, 0x78, 0x59, 0xab, 0x64, 0xa7, 0x27, 0x1a, 0x5d, 0x3f, 0xa7, +0x9d, 0x61, 0x26, 0x96, 0xbf, 0x1e, 0xbf, 0xbe, 0xa7, 0x9a, 0x43, 0x56, +0x56, 0x96, 0xfa, 0x3c, 0xaa, 0x47, 0x5d, 0x77, 0x97, 0xff, 0xe9, 0xe1, +0xc9, 0x9f, 0x9d, 0x9d, 0xf4, 0x3f, 0xf7, 0x8c, 0xfb, 0xe9, 0x9d, 0x63, +0xf4, 0x9f, 0x4f, 0xef, 0x9f, 0xc8, 0xf7, 0xe6, 0xab, 0xd8, 0x20, 0x18, +0x16, 0x44, 0x79, 0x18, 0xf0, 0x67, 0x77, 0x8d, 0x7d, 0xfd, 0xd6, 0xe1, +0x4f, 0x6e, 0x1f, 0x78, 0xea, 0xa6, 0xde, 0x07, 0x57, 0x76, 0xbd, 0xe9, +0xb2, 0x76, 0xcf, 0xef, 0x19, 0xf2, 0xe0, 0xcd, 0xfd, 0x0e, 0xaf, 0xea, +0xbe, 0x69, 0x7e, 0xfb, 0x15, 0x93, 0x5b, 0xce, 0x1c, 0xda, 0x18, 0x7c, +0x82, 0xa5, 0x46, 0xb5, 0xd2, 0x40, 0x9d, 0xbb, 0x75, 0x83, 0x8e, 0x0d, +0x4f, 0xc1, 0xb5, 0xbb, 0x97, 0x74, 0x3e, 0xbb, 0xb9, 0xdf, 0xbb, 0xc7, +0x46, 0x7e, 0x71, 0x6e, 0x8a, 0x9a, 0x03, 0xb7, 0x53, 0x83, 0xa4, 0xa7, +0xa7, 0xa3, 0x84, 0xc0, 0xb7, 0xd1, 0x58, 0x20, 0x80, 0x20, 0xf3, 0x0a, +0xf8, 0xd7, 0xe8, 0xd1, 0xa3, 0x3d, 0xbc, 0x69, 0x9e, 0xa7, 0x6f, 0xfb, +0xbc, 0x65, 0x93, 0x5a, 0xf0, 0xb4, 0xcf, 0xed, 0x1e, 0xfc, 0xbf, 0xa7, +0xc7, 0x7f, 0xf5, 0xe4, 0x34, 0xc3, 0x62, 0x7d, 0xf9, 0xd8, 0xd4, 0x9f, +0xdc, 0x3e, 0xea, 0xae, 0xb5, 0xbd, 0x17, 0x8d, 0x6b, 0x56, 0x37, 0x27, +0xc5, 0x30, 0x1a, 0x0a, 0x13, 0x2c, 0x12, 0x12, 0x87, 0x64, 0xed, 0xf0, +0x0d, 0x20, 0x01, 0x2d, 0x8e, 0x1d, 0x3b, 0xd6, 0xa6, 0x32, 0x80, 0xae, +0x89, 0x16, 0x81, 0xb4, 0x86, 0x4d, 0x66, 0xe1, 0xc2, 0x85, 0xfa, 0xdd, +0x2f, 0x1f, 0xdd, 0xf4, 0x47, 0xbb, 0x07, 0xf3, 0xfe, 0xfe, 0xf6, 0xf8, +0x54, 0x3b, 0x04, 0xc7, 0x39, 0x9f, 0x3f, 0x7a, 0xb1, 0x7e, 0x84, 0x8c, +0x73, 0xea, 0xd4, 0x29, 0x74, 0x06, 0xdc, 0x49, 0x6c, 0x48, 0x47, 0x8f, +0x1e, 0xb5, 0x5c, 0x28, 0xb6, 0xcf, 0xa6, 0xf5, 0x32, 0xfa, 0xb4, 0xcb, +0x9b, 0xd8, 0xaf, 0x01, 0x2b, 0xb0, 0x6e, 0x4e, 0xbb, 0x03, 0x2b, 0xba, +0x3e, 0xb0, 0xa9, 0xdf, 0x8b, 0xfb, 0x86, 0x70, 0xeb, 0xbf, 0x3e, 0x56, +0xe6, 0xd6, 0xbf, 0xba, 0x77, 0xfc, 0x89, 0x1b, 0x7a, 0x0e, 0xe8, 0x54, +0xd3, 0x3c, 0xd4, 0xfd, 0x1b, 0xfb, 0xda, 0x99, 0xe4, 0x88, 0xee, 0xa5, +0xf2, 0x37, 0xd6, 0x02, 0x35, 0xce, 0x96, 0xcb, 0x3b, 0xda, 0xb9, 0xdc, +0xeb, 0x39, 0xac, 0x40, 0x42, 0xbc, 0x2b, 0x55, 0x93, 0xfd, 0xce, 0xeb, +0xc9, 0xea, 0x84, 0x37, 0x0e, 0x0f, 0xf7, 0x7c, 0x32, 0x44, 0xf2, 0xcb, +0x7b, 0xc6, 0xbd, 0x7a, 0x70, 0xd8, 0xc3, 0xb7, 0x14, 0xd5, 0xaa, 0x51, +0x2a, 0xf5, 0xb5, 0x6a, 0xd5, 0x4a, 0x3d, 0x02, 0xc4, 0xf6, 0xf5, 0x53, +0x97, 0xb8, 0x1b, 0x67, 0xcf, 0xd2, 0xd2, 0x34, 0x21, 0xec, 0x13, 0x0f, +0x3d, 0xf4, 0x10, 0x41, 0x2b, 0xb8, 0xf9, 0xb0, 0xb3, 0x05, 0x0d, 0x15, +0xe2, 0x05, 0x47, 0x29, 0xb4, 0x7c, 0xd3, 0x5d, 0x5b, 0x66, 0xf3, 0x76, +0x5f, 0xde, 0x3f, 0xd4, 0x8c, 0x01, 0xcf, 0x0f, 0xcf, 0xf9, 0xa7, 0xd7, +0xf7, 0x69, 0xdd, 0xa8, 0x9a, 0x3e, 0x2c, 0x4f, 0x0e, 0xe1, 0xc2, 0xec, +0x64, 0x53, 0x37, 0xb3, 0x0b, 0x99, 0x0c, 0xbb, 0x32, 0xfa, 0xba, 0xbe, +0x73, 0xd8, 0xdc, 0x98, 0x5b, 0xb4, 0x68, 0x41, 0xcc, 0x0c, 0xba, 0x90, +0x7e, 0xfe, 0xe8, 0x9e, 0x75, 0x3d, 0x2c, 0xb1, 0xbb, 0xa7, 0xe0, 0x91, +0xd5, 0x20, 0x98, 0xa7, 0x50, 0xa0, 0x09, 0xec, 0x81, 0x53, 0xc3, 0x28, +0xf4, 0xb5, 0xba, 0x74, 0x70, 0xe3, 0x1f, 0x1f, 0x1c, 0xc6, 0xee, 0xfb, +0xf7, 0x27, 0x8c, 0x7b, 0x84, 0x4d, 0x4a, 0x3a, 0xb3, 0xa1, 0xaf, 0x81, +0xcd, 0xfe, 0xf4, 0xae, 0x31, 0x5e, 0xaf, 0x85, 0xb3, 0xc5, 0xc7, 0x95, +0x0a, 0x30, 0xa9, 0xa9, 0xa9, 0x6a, 0xb6, 0xcc, 0xdc, 0xeb, 0xe5, 0x76, +0x4e, 0x80, 0x6a, 0x65, 0x4c, 0xa0, 0x6e, 0xe7, 0x7c, 0x39, 0x07, 0x8e, +0x61, 0xff, 0x64, 0xb6, 0x0c, 0xcb, 0x37, 0xdb, 0xab, 0x4d, 0xae, 0x87, +0x41, 0xa6, 0x0f, 0x6a, 0xa4, 0xae, 0x42, 0x27, 0x41, 0x4c, 0xc0, 0x94, +0x8c, 0x20, 0xcd, 0xab, 0x09, 0x1a, 0x2a, 0xa0, 0x42, 0xc2, 0x3f, 0x0d, +0x93, 0x43, 0xbc, 0x86, 0xfd, 0xfd, 0xe2, 0xd4, 0x38, 0xfb, 0x4f, 0x68, +0x79, 0x26, 0xe4, 0xb8, 0xfa, 0xd2, 0xd6, 0xfa, 0xe0, 0x37, 0xde, 0x78, +0x23, 0xc0, 0x80, 0xd9, 0xe9, 0xba, 0x91, 0x32, 0x1f, 0x63, 0xbc, 0x9b, +0x37, 0x6f, 0x9e, 0x67, 0x0c, 0x20, 0x7e, 0xf0, 0x9e, 0x58, 0xb8, 0x91, +0x3d, 0xea, 0x76, 0x6c, 0x5a, 0x2a, 0x39, 0xc8, 0x55, 0xed, 0xda, 0xb5, +0xd3, 0xa5, 0x2c, 0x1e, 0xe4, 0x8f, 0x0f, 0x4d, 0xf6, 0xe3, 0x29, 0x76, +0x5d, 0x55, 0xba, 0x21, 0x61, 0xc1, 0xa4, 0x66, 0x04, 0x81, 0x7d, 0x12, +0xa7, 0xa9, 0x4f, 0x0f, 0x48, 0xf8, 0x31, 0xb8, 0xe1, 0x12, 0x78, 0x6f, +0xdc, 0x0f, 0x32, 0x3a, 0x08, 0xf9, 0xe7, 0xd3, 0x6e, 0xb7, 0x49, 0x75, +0x21, 0x82, 0x9f, 0x0e, 0x5a, 0xf5, 0x19, 0x99, 0xd6, 0xd7, 0xfd, 0xcb, +0xdd, 0xfc, 0xd1, 0xac, 0x64, 0x58, 0x98, 0x92, 0xcd, 0x67, 0x84, 0x01, +0xde, 0x76, 0x5d, 0x0f, 0x9b, 0x27, 0xcb, 0x69, 0x97, 0x0c, 0x2c, 0x25, +0x71, 0xf5, 0x14, 0x68, 0x0e, 0x1e, 0x06, 0xe1, 0x9d, 0xaa, 0x33, 0x11, +0x0a, 0x10, 0xbd, 0x30, 0xfb, 0x62, 0xf2, 0x46, 0xe1, 0x0c, 0x0e, 0x2a, +0xd8, 0x9b, 0xd9, 0xb6, 0xaf, 0xb8, 0xe2, 0x0a, 0x75, 0x9b, 0x96, 0x0d, +0x33, 0x91, 0xe4, 0xfc, 0xd8, 0x5c, 0x3d, 0x3c, 0xc6, 0xb4, 0x01, 0x0d, +0xd5, 0xf8, 0x98, 0xb7, 0x09, 0x5c, 0x33, 0x48, 0x81, 0x4c, 0x03, 0x06, +0xb2, 0x74, 0xe9, 0x52, 0x77, 0x78, 0x68, 0x5c, 0x3b, 0x6d, 0xe1, 0xd8, +0xa6, 0x77, 0xde, 0xd8, 0x0b, 0x69, 0xd8, 0x40, 0x34, 0x2f, 0xed, 0x1b, +0x6a, 0xc6, 0x86, 0x8c, 0x03, 0xa9, 0xf9, 0x4d, 0xb5, 0xe3, 0x7a, 0x97, +0x9a, 0xdd, 0x30, 0x3c, 0xe0, 0x3c, 0x82, 0x4d, 0x13, 0x12, 0x87, 0xc9, +0x55, 0x4d, 0x92, 0xd7, 0x63, 0x87, 0x82, 0xed, 0x50, 0xc9, 0xe2, 0xf1, +0xcd, 0x64, 0xd8, 0x6e, 0x2d, 0xb3, 0xed, 0x9c, 0xdf, 0xbf, 0x63, 0xa9, +0xe8, 0xd5, 0xb1, 0x63, 0xc7, 0xd2, 0xbd, 0xd3, 0xbd, 0x52, 0x61, 0x67, +0x58, 0xfd, 0x1c, 0x94, 0x7e, 0x19, 0x96, 0x7d, 0xcd, 0xe6, 0xb5, 0x3b, +0xae, 0x2c, 0xfc, 0xe8, 0xc4, 0x68, 0x9b, 0x27, 0xcb, 0x69, 0xbf, 0x7f, +0x60, 0x22, 0xc6, 0x00, 0xc3, 0x7b, 0x47, 0x65, 0x72, 0x37, 0xc8, 0xef, +0xee, 0x9f, 0xa0, 0x9f, 0x8c, 0x49, 0x1a, 0xd7, 0x13, 0xbc, 0x02, 0xe1, +0x36, 0x38, 0xbc, 0x42, 0xe9, 0xb2, 0x35, 0x6b, 0x96, 0x2e, 0xf1, 0xbd, +0xeb, 0xfb, 0xf8, 0xf4, 0x54, 0x76, 0x4e, 0x46, 0x09, 0x11, 0x09, 0x55, +0x0e, 0xdc, 0xa5, 0xc4, 0xa8, 0x81, 0x6c, 0x65, 0xfb, 0xa7, 0x07, 0x87, +0xa5, 0xfe, 0x8a, 0xbe, 0xcb, 0x8e, 0xf5, 0xa6, 0x0d, 0x51, 0x15, 0xbe, +0x61, 0x46, 0xd4, 0x8d, 0xb3, 0xda, 0xda, 0x99, 0x9e, 0xf9, 0x1c, 0xd4, +0x0f, 0x5d, 0xaa, 0xc1, 0xbe, 0x8c, 0x1d, 0x1d, 0x09, 0x0a, 0x3c, 0xf7, +0xef, 0xdf, 0x5f, 0xdd, 0xc8, 0x3e, 0xb9, 0x78, 0x9d, 0xc6, 0x6b, 0x87, +0x86, 0xc9, 0xb0, 0xd8, 0x00, 0xbc, 0x9e, 0xfc, 0x9b, 0x33, 0x13, 0x74, +0x03, 0x98, 0x6e, 0x6a, 0x43, 0x3d, 0xf5, 0x7a, 0xb9, 0x9d, 0x13, 0x74, +0xe2, 0xb3, 0xa9, 0xe7, 0x30, 0xec, 0x84, 0xbe, 0xf5, 0xfd, 0xd8, 0x26, +0x90, 0xb4, 0x0d, 0xef, 0x0e, 0xed, 0xd4, 0xdd, 0x24, 0x99, 0x8c, 0x3a, +0x19, 0xba, 0xc5, 0x85, 0x4f, 0xf2, 0x16, 0xaf, 0x06, 0x01, 0x04, 0xdd, +0x38, 0x08, 0xbc, 0x42, 0x92, 0x93, 0x10, 0xcb, 0xd4, 0x6d, 0xe0, 0xbf, +0x28, 0x43, 0x76, 0x56, 0xcd, 0xd7, 0x73, 0x30, 0xa8, 0xa9, 0xbb, 0x4c, +0x9d, 0x3a, 0x95, 0x4d, 0x97, 0xf8, 0x47, 0x34, 0x63, 0x18, 0x1f, 0x2e, +0x36, 0x33, 0x41, 0x37, 0xab, 0x9f, 0x81, 0x5a, 0x6f, 0x7f, 0x32, 0x7f, +0x79, 0x64, 0x4a, 0xfd, 0xbc, 0x52, 0xd9, 0x9a, 0x01, 0x5b, 0x34, 0xc8, +0xb4, 0xaf, 0x5b, 0x1b, 0x1e, 0x47, 0x97, 0x77, 0x09, 0xd3, 0xdf, 0xb8, +0x71, 0x23, 0x1e, 0x4c, 0xa9, 0x96, 0xa2, 0x4f, 0x15, 0xcb, 0x95, 0xaf, +0xeb, 0xe0, 0xee, 0x7c, 0xd4, 0x12, 0x19, 0x79, 0xe7, 0x55, 0x85, 0x5e, +0xc7, 0xe4, 0x1c, 0x35, 0x0d, 0x2a, 0xd4, 0xeb, 0x53, 0x42, 0xad, 0xf7, +0x7a, 0xb9, 0x9d, 0x13, 0x4e, 0xae, 0xe9, 0xa5, 0x86, 0x65, 0x3b, 0xb7, +0x73, 0x09, 0xea, 0x10, 0xe2, 0x90, 0x9d, 0x33, 0xcd, 0xe7, 0x4c, 0xea, +0xd7, 0x40, 0xdd, 0x8e, 0xfd, 0xc8, 0x83, 0xa8, 0x82, 0x8d, 0x58, 0x9d, +0x89, 0x37, 0x19, 0x27, 0x20, 0x6e, 0x53, 0xbc, 0x49, 0x98, 0x07, 0x83, +0x63, 0x83, 0x42, 0xb2, 0xc7, 0x5c, 0x83, 0xe3, 0x56, 0xdd, 0x66, 0xc6, +0x90, 0xc6, 0xfe, 0x3d, 0x95, 0xd7, 0xab, 0x8e, 0x5e, 0xdb, 0x5d, 0xdd, +0x05, 0x9d, 0x9b, 0x44, 0x13, 0xf0, 0x00, 0xa9, 0xe9, 0x6c, 0x4a, 0x4e, +0x68, 0x58, 0x2b, 0x0d, 0x06, 0xea, 0x87, 0x08, 0x07, 0x8a, 0x74, 0xfa, +0x78, 0xaa, 0x64, 0xa0, 0xd7, 0x59, 0xb9, 0x3b, 0x81, 0x3d, 0x4f, 0x0d, +0x85, 0x17, 0x96, 0xf2, 0x28, 0x38, 0x28, 0x08, 0x28, 0x42, 0x29, 0x52, +0xdf, 0x23, 0x6a, 0x9a, 0x2f, 0x87, 0xd3, 0xee, 0x5d, 0xd6, 0xe5, 0xad, +0x23, 0x3e, 0xa3, 0x05, 0x65, 0x40, 0x46, 0x7e, 0x72, 0x87, 0xf7, 0x69, +0xf7, 0x68, 0x5d, 0xda, 0x9c, 0x04, 0xca, 0x28, 0x9d, 0x6a, 0x93, 0xea, +0x7e, 0x3f, 0xb2, 0xe1, 0x42, 0xdc, 0x1d, 0x32, 0x2c, 0xf6, 0x12, 0x9b, +0x63, 0xa2, 0x88, 0xf2, 0x0a, 0x6c, 0x9e, 0x6c, 0x38, 0x0d, 0xd6, 0xa4, +0xec, 0xe0, 0x18, 0xf1, 0x3c, 0x0c, 0x82, 0x21, 0x54, 0x3d, 0x2f, 0xfb, +0x29, 0x3c, 0x9c, 0xad, 0x0a, 0x6f, 0x98, 0x44, 0xe5, 0x04, 0x81, 0x57, +0x60, 0x64, 0x44, 0x9a, 0x27, 0xf4, 0x40, 0xdd, 0xe6, 0x91, 0x2d, 0xfd, +0xfd, 0x7b, 0x2a, 0xaf, 0x57, 0x7d, 0x70, 0x7c, 0x94, 0xba, 0x0b, 0x77, +0xc4, 0x07, 0x47, 0xe4, 0x99, 0x4e, 0xc4, 0x7c, 0x4e, 0x4a, 0x8c, 0xc3, +0x54, 0x6f, 0x9f, 0x3f, 0x18, 0x6e, 0x8a, 0xe9, 0x53, 0x99, 0xc3, 0xd1, +0x0a, 0xbc, 0x4e, 0xc9, 0xdd, 0x09, 0xbf, 0xbd, 0x6f, 0x82, 0x2e, 0xef, +0xe1, 0xc0, 0x41, 0xe4, 0x23, 0x19, 0x9a, 0x0d, 0x49, 0xef, 0x0a, 0x82, +0x61, 0xde, 0x30, 0x02, 0xc2, 0x43, 0xed, 0x1f, 0x4c, 0x8d, 0x37, 0xcf, +0xef, 0xe0, 0xd3, 0x04, 0xd0, 0x97, 0x64, 0x35, 0xb8, 0xbb, 0xe7, 0x0b, +0x7f, 0x7e, 0xf7, 0x58, 0x7d, 0xdd, 0xf4, 0xf6, 0x3d, 0xbe, 0xde, 0xd4, +0xdd, 0x8d, 0x78, 0x10, 0x65, 0x58, 0xbf, 0x6a, 0x82, 0x27, 0xc5, 0x57, +0x1f, 0x01, 0x2f, 0x10, 0xa2, 0xb2, 0x4f, 0x4f, 0xad, 0x9f, 0x8c, 0xd2, +0x28, 0xcf, 0x85, 0xf5, 0xdf, 0xdd, 0x20, 0xec, 0x1d, 0xba, 0xc7, 0x83, +0xd8, 0x02, 0x24, 0x1d, 0xc4, 0x27, 0x76, 0x58, 0x94, 0x0a, 0x04, 0x9f, +0x20, 0xa0, 0x02, 0xd7, 0x01, 0x31, 0x58, 0x6a, 0x89, 0x01, 0xeb, 0x3f, +0x4c, 0x2e, 0x08, 0xbf, 0x1f, 0xd2, 0x70, 0x21, 0x23, 0xeb, 0xa2, 0xb0, +0xd9, 0x10, 0x8c, 0x4d, 0xc9, 0x57, 0x45, 0xcd, 0x3c, 0xb7, 0x21, 0x5d, +0x5c, 0xce, 0x6c, 0x7c, 0xae, 0x80, 0xd0, 0xef, 0x99, 0x6f, 0x98, 0xdb, +0x5e, 0xad, 0x09, 0xce, 0x47, 0x18, 0x05, 0x06, 0x28, 0x49, 0xa8, 0xd7, +0xc9, 0xf1, 0xc3, 0x3b, 0x8c, 0x6a, 0x25, 0x36, 0x78, 0x75, 0x42, 0x9b, +0xc6, 0x76, 0xb7, 0x58, 0x99, 0xe7, 0xed, 0xab, 0x5d, 0x05, 0xe4, 0x79, +0x05, 0x5e, 0xa7, 0xbd, 0x79, 0x41, 0x07, 0x75, 0x17, 0xdd, 0xda, 0xc6, +0xf2, 0x62, 0x20, 0xf6, 0x7a, 0xb9, 0x9d, 0x13, 0xde, 0x39, 0x36, 0x52, +0xdd, 0x02, 0x17, 0xa7, 0x9d, 0x4b, 0xde, 0xbf, 0x7d, 0x14, 0xda, 0xb9, +0x9d, 0x33, 0x3d, 0x9c, 0x33, 0xf6, 0x82, 0x85, 0x03, 0x37, 0x8e, 0xbb, +0x73, 0x74, 0xff, 0x1d, 0x11, 0x2e, 0xa8, 0xda, 0xc4, 0xf0, 0x62, 0xb7, +0x24, 0x80, 0xd7, 0x60, 0xd5, 0xf4, 0xdf, 0xb7, 0x0d, 0xbc, 0x74, 0x99, +0x1e, 0x97, 0x7e, 0x80, 0x4f, 0xe5, 0xf9, 0x72, 0x9c, 0x5c, 0x06, 0xe6, +0x20, 0xbf, 0xf2, 0x3a, 0xd9, 0x77, 0x83, 0x62, 0x4f, 0xc4, 0x1b, 0xca, +0x80, 0x38, 0x53, 0xfd, 0x7e, 0x10, 0xe4, 0x7b, 0x42, 0x1e, 0xd4, 0x3c, +0xfb, 0xf5, 0xeb, 0xb7, 0x6f, 0xdf, 0x3e, 0x09, 0xc9, 0xbe, 0xe6, 0x9a, +0x6b, 0xd4, 0xf7, 0xc4, 0x44, 0x98, 0x6f, 0x81, 0xa7, 0x5c, 0x9d, 0x80, +0xa0, 0xec, 0xd3, 0x1c, 0xc4, 0xe4, 0xe5, 0x59, 0x78, 0x90, 0x01, 0xb9, +0xb5, 0xba, 0x8b, 0x1e, 0x71, 0xe8, 0xc1, 0xa5, 0xed, 0xd3, 0x4c, 0x38, +0xf9, 0x96, 0xcb, 0x2f, 0x02, 0x0f, 0xee, 0xad, 0x3b, 0x95, 0x3d, 0x8c, +0x73, 0xc3, 0xcc, 0x36, 0xd7, 0xdb, 0x36, 0x55, 0xb9, 0x1b, 0xe7, 0xd7, +0x67, 0xc6, 0x57, 0x4f, 0x4f, 0xf4, 0xb0, 0x39, 0xea, 0xfe, 0x3b, 0xcc, +0xe5, 0x94, 0x22, 0xc7, 0x2f, 0x8c, 0x13, 0x89, 0x78, 0x6d, 0x83, 0x07, +0xcc, 0x4f, 0x54, 0x60, 0xff, 0x21, 0xf2, 0xc4, 0xe9, 0x2c, 0xa5, 0xd4, +0xa7, 0x77, 0x0e, 0xf2, 0x75, 0xf9, 0x7c, 0x3a, 0xdf, 0xec, 0xed, 0xe6, +0xed, 0xb2, 0x0a, 0x8f, 0x6d, 0x1b, 0xe0, 0xd3, 0x38, 0x1e, 0x4e, 0x46, +0x84, 0x00, 0x63, 0x81, 0xf0, 0x1c, 0xd9, 0xb3, 0xd5, 0x41, 0xdc, 0x2b, +0xfa, 0x1c, 0xa1, 0xfc, 0x58, 0xc4, 0x89, 0x02, 0x54, 0xdf, 0xb3, 0x61, +0x9b, 0xa7, 0x21, 0x51, 0x43, 0x1c, 0x44, 0x76, 0x78, 0xb0, 0xa2, 0x98, +0x2f, 0x64, 0x8f, 0x17, 0x97, 0x1c, 0x1e, 0x71, 0xcf, 0x4b, 0xa1, 0x0b, +0xa2, 0x86, 0x2d, 0xc6, 0x8e, 0x42, 0x62, 0x73, 0x9d, 0xfb, 0x75, 0xb8, +0x28, 0xbb, 0x13, 0x17, 0x63, 0xf3, 0x12, 0x3c, 0x48, 0x7e, 0x1b, 0xc1, +0xf5, 0x5b, 0x60, 0xe7, 0xf0, 0x60, 0xc5, 0xd2, 0xfd, 0x77, 0x84, 0xff, +0x20, 0xd9, 0x52, 0xd0, 0x04, 0xeb, 0x13, 0xfb, 0xbb, 0x84, 0x33, 0x07, +0x24, 0x41, 0x89, 0x4d, 0xf6, 0xd6, 0x5b, 0x6f, 0x55, 0x2b, 0xcb, 0x06, +0xe9, 0x87, 0x82, 0x6b, 0x73, 0xc9, 0xe4, 0xb4, 0x9a, 0x59, 0x46, 0xb3, +0x34, 0x81, 0x31, 0x3e, 0x89, 0x3a, 0x68, 0x0e, 0x18, 0x5b, 0xf1, 0x4e, +0x10, 0x49, 0x61, 0x79, 0x6b, 0x14, 0x3e, 0xa2, 0x2d, 0x7c, 0x9a, 0x95, +0x7e, 0x32, 0xef, 0x03, 0xc9, 0x47, 0xad, 0x09, 0x7a, 0x36, 0xf9, 0x3d, +0xc4, 0x7a, 0x10, 0x7f, 0xa6, 0x5b, 0xea, 0x38, 0xc1, 0x6c, 0xea, 0x41, +0x1f, 0x90, 0x0b, 0x89, 0x1a, 0x7a, 0x62, 0xbb, 0x6f, 0x38, 0xbf, 0x62, +0x4c, 0x53, 0xb9, 0x96, 0x38, 0x22, 0xcf, 0x93, 0xe7, 0xf1, 0x0d, 0x60, +0x90, 0x5f, 0x6d, 0x7a, 0x39, 0xec, 0xac, 0x0c, 0x4e, 0x4f, 0xe5, 0x35, +0xdf, 0xb7, 0xac, 0x8b, 0x9d, 0x4b, 0x30, 0x2b, 0x63, 0x00, 0xf4, 0xc3, +0x26, 0x6b, 0x67, 0x70, 0xfd, 0x1c, 0xa2, 0x12, 0xd5, 0xe3, 0xcf, 0x9e, +0x3d, 0xfb, 0xc8, 0x91, 0x23, 0xec, 0x56, 0x30, 0x0a, 0x74, 0x01, 0x43, +0x84, 0xa8, 0x3f, 0xbc, 0x42, 0x2a, 0xa9, 0xe9, 0xc2, 0xfd, 0xd2, 0x89, +0x6e, 0x55, 0x1c, 0x5f, 0xa7, 0xee, 0xee, 0x7c, 0x43, 0xd8, 0x26, 0xc6, +0x0d, 0x38, 0xa6, 0xfd, 0xc1, 0x89, 0x6c, 0xe3, 0xdd, 0xcb, 0xa2, 0xf0, +0x0e, 0x2c, 0x2f, 0x44, 0x82, 0x22, 0xe8, 0xc8, 0xfe, 0x98, 0x86, 0x33, +0x71, 0x5f, 0xea, 0x34, 0x37, 0x7f, 0xfe, 0x7c, 0x78, 0x34, 0x81, 0x89, +0xe4, 0x03, 0xe9, 0xd9, 0x0b, 0xdd, 0x5b, 0xe5, 0x98, 0x6f, 0x71, 0xe4, +0x1a, 0x97, 0x05, 0x0c, 0x6f, 0x23, 0xb2, 0xaf, 0x4f, 0x13, 0xe0, 0x7c, +0x15, 0x7c, 0xea, 0x35, 0x58, 0xa3, 0x79, 0xfd, 0x52, 0xd3, 0x88, 0x3e, +0xd5, 0x20, 0x32, 0x8a, 0xbb, 0xd7, 0xf6, 0x56, 0x23, 0xdb, 0xd4, 0x9e, +0x57, 0x4e, 0x69, 0x89, 0x5b, 0xc9, 0xa7, 0xa7, 0xf6, 0xe3, 0x64, 0x42, +0x18, 0xf5, 0x47, 0x26, 0xdf, 0x10, 0xad, 0x18, 0xff, 0x9d, 0x21, 0x5a, +0x56, 0xd8, 0x85, 0xcf, 0xa8, 0x00, 0x55, 0x40, 0x02, 0x77, 0x81, 0x7e, +0x8f, 0x57, 0x0e, 0xd8, 0x0d, 0x9e, 0x61, 0x9b, 0x24, 0x74, 0x07, 0x19, +0x1a, 0x51, 0x18, 0xbe, 0x09, 0x7c, 0x09, 0x69, 0xf6, 0x1a, 0x55, 0x81, +0x3f, 0x41, 0xbf, 0x1d, 0x90, 0xe0, 0x21, 0xed, 0x2f, 0x0d, 0x7c, 0x0c, +0x6e, 0xae, 0x46, 0x70, 0xa7, 0xd8, 0x05, 0x68, 0x84, 0xd1, 0x2d, 0x9e, +0x88, 0xad, 0x64, 0x84, 0xb2, 0x1b, 0xa1, 0x67, 0x63, 0xf8, 0xd3, 0x63, +0xd7, 0xf0, 0xe0, 0x9a, 0x67, 0x4e, 0x94, 0x35, 0xc6, 0x13, 0x1e, 0xd3, +0xfe, 0x43, 0x71, 0x26, 0xdc, 0x4f, 0x71, 0x27, 0x3c, 0xf1, 0x86, 0x08, +0x42, 0xc3, 0x50, 0x2c, 0x02, 0x0e, 0x4d, 0x89, 0x75, 0x25, 0x18, 0x87, +0x28, 0x57, 0x7e, 0x7c, 0xbd, 0xa3, 0xd7, 0xe9, 0x11, 0xd9, 0x25, 0xeb, +0x8c, 0x40, 0xe8, 0xf5, 0x64, 0x4e, 0x80, 0x45, 0x10, 0x08, 0x6c, 0x9f, +0x7e, 0xec, 0x8c, 0x69, 0x79, 0x8e, 0xee, 0x44, 0xc2, 0xcc, 0x40, 0xc6, +0x2c, 0x96, 0x7d, 0x0c, 0x50, 0x92, 0x7c, 0x6b, 0x88, 0xa9, 0xf3, 0x07, +0x15, 0xd8, 0x64, 0x51, 0x22, 0x15, 0x91, 0xb1, 0xc3, 0xd9, 0x64, 0x7f, +0x98, 0x4d, 0xd1, 0xc0, 0xcc, 0x4c, 0x9c, 0xdd, 0xc2, 0xf3, 0xd3, 0xea, +0x66, 0x0d, 0x02, 0x25, 0xf0, 0xce, 0xfa, 0xb4, 0x3a, 0xba, 0x9a, 0xc5, +0xdd, 0xc9, 0x1f, 0xb0, 0xbc, 0x3c, 0x90, 0x2d, 0x93, 0x6b, 0xf5, 0xe7, +0xc2, 0xd5, 0x48, 0x70, 0x07, 0x8b, 0x8b, 0x39, 0x9c, 0x22, 0x7f, 0xea, +0x4f, 0xe8, 0x2d, 0x44, 0xfb, 0x98, 0xef, 0xfe, 0xb1, 0x8f, 0x91, 0x0e, +0x32, 0xc2, 0x65, 0xc3, 0x9b, 0xa8, 0x91, 0xdb, 0xe6, 0x07, 0x6a, 0xc3, +0xf1, 0x69, 0x49, 0x2d, 0x4f, 0xc6, 0xe6, 0xa1, 0xfc, 0x06, 0x88, 0xa3, +0x76, 0x06, 0x24, 0x18, 0x99, 0x9d, 0xd1, 0x26, 0xfd, 0xd8, 0x19, 0xd0, +0xdd, 0x39, 0xba, 0xff, 0x8e, 0x66, 0x2e, 0x07, 0x0f, 0x1e, 0x84, 0x8d, +0xe3, 0x44, 0x92, 0x34, 0xc9, 0x80, 0x50, 0x21, 0x1a, 0x05, 0xda, 0x09, +0xc9, 0xca, 0xea, 0x7d, 0x5c, 0x37, 0xdd, 0x6e, 0xa0, 0x8b, 0x81, 0x74, +0xd4, 0x08, 0xf3, 0x46, 0x7a, 0xb1, 0x5f, 0xdd, 0xb3, 0xee, 0xa2, 0x57, +0x9f, 0x45, 0xf7, 0x95, 0x80, 0xd8, 0x41, 0x73, 0xab, 0x95, 0xea, 0x24, +0xd0, 0xa5, 0xd9, 0x2a, 0xca, 0x52, 0x12, 0x46, 0x1a, 0xc8, 0xc6, 0xa9, +0xbb, 0x87, 0x48, 0x65, 0xa6, 0x9a, 0x01, 0x11, 0xe3, 0xb8, 0x29, 0x08, +0x7f, 0x22, 0x8f, 0x54, 0x3d, 0x29, 0xa7, 0x05, 0xf2, 0x6a, 0xf5, 0x6b, +0xb7, 0x5e, 0x51, 0x1a, 0xbf, 0xc4, 0xf8, 0x76, 0x62, 0x3d, 0x82, 0x75, +0x6b, 0x77, 0xe3, 0x3c, 0xbb, 0xcb, 0xd5, 0x4c, 0x48, 0x0e, 0x9b, 0x46, +0x0b, 0x2c, 0x04, 0x08, 0x0e, 0xe5, 0x3d, 0x31, 0xc6, 0xd7, 0x5f, 0xd0, +0x84, 0x09, 0x13, 0x30, 0x97, 0x63, 0x80, 0xc2, 0x2c, 0x6b, 0x19, 0x69, +0xea, 0x1b, 0xaf, 0x90, 0x3c, 0x63, 0xb2, 0x34, 0xf4, 0x7d, 0x91, 0x8d, +0xdc, 0xe6, 0x53, 0x19, 0x02, 0x60, 0xd5, 0x20, 0x24, 0x9d, 0x78, 0x1e, +0x01, 0xb3, 0x1d, 0x27, 0xa3, 0xc6, 0x3d, 0xe3, 0xbb, 0xa5, 0x4b, 0x4f, +0xaf, 0x61, 0x10, 0x77, 0x0e, 0x78, 0xcf, 0xe2, 0x87, 0xe7, 0xe9, 0x31, +0x2b, 0x7d, 0x41, 0xf0, 0xf7, 0x53, 0xeb, 0xe0, 0xde, 0x7b, 0xef, 0xa5, +0x7c, 0x2a, 0xbb, 0x91, 0x9e, 0xbd, 0xb0, 0x7f, 0xb9, 0x2d, 0x05, 0xd4, +0xeb, 0x7a, 0x1e, 0x5e, 0x55, 0x1a, 0xf4, 0x2a, 0xb7, 0xf6, 0xdb, 0x31, +0xec, 0xf5, 0x5e, 0xf6, 0x4f, 0x40, 0x08, 0x94, 0xc9, 0xe0, 0x92, 0xb3, +0x73, 0x15, 0xbc, 0x85, 0x1c, 0x09, 0x24, 0x3a, 0x3b, 0x27, 0x07, 0x72, +0x8e, 0xc1, 0x7f, 0x87, 0x95, 0x1c, 0x2b, 0x08, 0xf9, 0x46, 0x64, 0x5c, +0xe2, 0xd2, 0x36, 0xc7, 0x5f, 0xfb, 0x86, 0x0a, 0x89, 0x7d, 0xa2, 0xf2, +0x82, 0x22, 0x82, 0x56, 0xb6, 0x5d, 0xfa, 0x3c, 0x95, 0xd2, 0x77, 0x75, +0x1a, 0xb2, 0xe3, 0xe8, 0x18, 0x58, 0x58, 0x8b, 0x4b, 0x2c, 0x25, 0x72, +0xaf, 0x8b, 0xa5, 0xc7, 0x5f, 0x10, 0x5f, 0xe9, 0xce, 0xfb, 0xeb, 0x77, +0x86, 0x03, 0x13, 0x28, 0xd2, 0x42, 0x50, 0x49, 0x52, 0xa7, 0xba, 0x0c, +0x9a, 0x1c, 0x19, 0xb0, 0xd4, 0x4b, 0xc5, 0x59, 0xa1, 0x1e, 0x16, 0xd1, +0xdf, 0x27, 0x75, 0xc8, 0xdd, 0xa3, 0x61, 0xdb, 0xd1, 0x17, 0x50, 0x3e, +0x5b, 0x32, 0x40, 0xaf, 0x8b, 0x13, 0xc4, 0x13, 0x90, 0x82, 0xb0, 0x0a, +0xca, 0x64, 0x36, 0xce, 0xb3, 0x25, 0x3e, 0x3d, 0x5e, 0x3c, 0xc0, 0x8e, +0x8f, 0x25, 0xf0, 0x49, 0x92, 0xcc, 0xa4, 0x56, 0x8c, 0xc8, 0x34, 0x6c, +0xb2, 0xc4, 0xe0, 0xbc, 0xfa, 0xea, 0xab, 0x38, 0x2b, 0x50, 0x07, 0xcc, +0xb9, 0x3a, 0xbe, 0xa1, 0x42, 0x62, 0x9f, 0xf4, 0xec, 0x4d, 0x9b, 0xf9, +0x90, 0x3c, 0x18, 0x56, 0x20, 0x95, 0x06, 0xa0, 0xa6, 0x48, 0x76, 0xaf, +0x57, 0x07, 0x1c, 0x51, 0x7a, 0x18, 0xa0, 0xc8, 0xfe, 0xf1, 0x4f, 0xfa, +0x54, 0xf6, 0x38, 0xbc, 0xfd, 0x2f, 0xec, 0xb5, 0x36, 0x31, 0x21, 0x3e, +0xf9, 0x6d, 0x59, 0x46, 0x32, 0xd6, 0x69, 0x94, 0x6e, 0x69, 0x62, 0x7a, +0x92, 0x62, 0x2d, 0x7a, 0x98, 0x3d, 0xd9, 0xcc, 0x01, 0xbe, 0x60, 0xd6, +0x0a, 0x1d, 0xcc, 0x0c, 0x09, 0x76, 0x5c, 0xff, 0x16, 0x27, 0xc0, 0xf9, +0xe8, 0x97, 0xeb, 0x94, 0xf7, 0xc9, 0x49, 0x5b, 0xdb, 0x3f, 0x7a, 0x11, +0xc6, 0xb7, 0x20, 0xce, 0xc1, 0xdd, 0x50, 0x44, 0x97, 0xa9, 0x45, 0x6b, +0xd6, 0xac, 0x19, 0xc2, 0x2d, 0x29, 0xfb, 0x44, 0xd3, 0x11, 0x40, 0xae, +0xfb, 0xef, 0xbc, 0xd7, 0x0e, 0xb4, 0x4c, 0x8c, 0xc6, 0xfa, 0x44, 0x38, +0xb4, 0xfe, 0x56, 0xec, 0x4b, 0xf9, 0x86, 0xcc, 0x29, 0x5c, 0x1c, 0x1e, +0x9c, 0xf3, 0xfa, 0xe3, 0xb1, 0xa3, 0xa0, 0x18, 0x10, 0x01, 0xe6, 0xdf, +0xf2, 0x61, 0x09, 0x65, 0xc2, 0xd8, 0x6a, 0x3c, 0x44, 0xdd, 0xf9, 0x6a, +0x0f, 0xd5, 0x67, 0x22, 0x71, 0x22, 0x72, 0xc0, 0x28, 0x28, 0x0a, 0xc6, +0xa2, 0xe3, 0x1e, 0xc2, 0xbe, 0x41, 0xc5, 0x5f, 0x4a, 0x27, 0xa9, 0xbf, +0x06, 0x48, 0x01, 0xa8, 0xe9, 0x3a, 0x53, 0xd2, 0xdf, 0xc2, 0xd4, 0x01, +0x0d, 0xfd, 0x5b, 0x9c, 0x20, 0x5e, 0x25, 0x52, 0x2e, 0x87, 0x4d, 0xeb, +0x13, 0x9b, 0x1d, 0x26, 0x72, 0x4b, 0x5d, 0xee, 0xcf, 0x8f, 0x4c, 0x0e, +0xae, 0x58, 0x75, 0xe9, 0xe0, 0xd2, 0xe4, 0x24, 0x2a, 0x44, 0x11, 0x14, +0x88, 0x09, 0x04, 0x4a, 0xc6, 0x94, 0x2a, 0x65, 0x6f, 0x54, 0xe2, 0x9a, +0x3f, 0x96, 0x59, 0x82, 0xb7, 0x31, 0x38, 0xaa, 0xf7, 0x51, 0xd8, 0xcc, +0x96, 0xf5, 0x4d, 0x96, 0x9e, 0x0c, 0x29, 0x5c, 0xd1, 0x64, 0x66, 0xa1, +0x5d, 0xa1, 0x3d, 0xdb, 0x0f, 0xe3, 0xc3, 0x4b, 0x45, 0x32, 0xb7, 0xdf, +0xef, 0x0f, 0x3f, 0x31, 0x01, 0xb0, 0x1e, 0x58, 0x01, 0x66, 0x4a, 0xbf, +0xad, 0x4f, 0x7a, 0x68, 0x0d, 0xcb, 0x42, 0x08, 0x0c, 0x71, 0xe3, 0xc8, +0xac, 0x28, 0xd9, 0x30, 0x0a, 0x72, 0x82, 0xd5, 0x5a, 0x25, 0x26, 0xc4, +0xfe, 0xc1, 0x2a, 0xe5, 0xdf, 0xe6, 0x73, 0xa1, 0x1d, 0x65, 0x65, 0xb8, +0x2d, 0x43, 0x86, 0x9a, 0x61, 0x73, 0x9c, 0xf2, 0x3b, 0x8d, 0xe8, 0x7d, +0x79, 0x58, 0x9b, 0x82, 0x2e, 0xbb, 0x24, 0xbc, 0xc2, 0x72, 0x3e, 0x64, +0x41, 0x6c, 0x5b, 0xd8, 0x29, 0x88, 0x53, 0xd5, 0xfd, 0x77, 0x0b, 0x16, +0x2c, 0xc0, 0xa9, 0x8a, 0x6b, 0x95, 0xbc, 0x48, 0x5c, 0x78, 0x52, 0x70, +0xcc, 0x4f, 0x54, 0x48, 0x4a, 0x34, 0x5e, 0x40, 0x3d, 0xf6, 0xd8, 0xa7, +0xa9, 0xe3, 0xd3, 0xf1, 0x43, 0x4a, 0x41, 0xdc, 0xf7, 0x3b, 0xec, 0xde, +0xe6, 0xb2, 0x92, 0xc8, 0x66, 0x1f, 0xa2, 0x86, 0x31, 0xf1, 0x33, 0x28, +0xba, 0xa7, 0xac, 0x13, 0x90, 0x38, 0x70, 0xe0, 0x00, 0x75, 0x29, 0x31, +0x48, 0xa0, 0xc9, 0x5d, 0x7e, 0xf9, 0xe5, 0xea, 0xaf, 0x7e, 0x07, 0x1a, +0x51, 0xa2, 0xc2, 0x5c, 0xb5, 0x40, 0x8f, 0xb5, 0xe1, 0x16, 0x36, 0xfd, +0x65, 0x36, 0x17, 0xc4, 0x8f, 0xd3, 0xf0, 0x84, 0xc8, 0x93, 0xe2, 0x52, +0xb4, 0x69, 0x37, 0x27, 0xc5, 0xd2, 0x9d, 0x40, 0xcb, 0x3e, 0xe8, 0x39, +0xf7, 0xda, 0xa7, 0x19, 0x1a, 0xfc, 0x77, 0x04, 0x1c, 0x48, 0xa6, 0x11, +0x15, 0x0c, 0xcc, 0xb1, 0x1e, 0xbe, 0xf1, 0x0a, 0xb1, 0x3e, 0xd1, 0xf2, +0x43, 0x67, 0xdc, 0xc1, 0x8a, 0xb2, 0xf4, 0xf0, 0x90, 0x64, 0x5a, 0x79, +0x4d, 0xa6, 0xf3, 0x69, 0x8d, 0x0c, 0x27, 0xe3, 0x0f, 0x1e, 0xd3, 0xcb, +0xcf, 0xb8, 0x71, 0x12, 0x65, 0xf4, 0xa2, 0x46, 0x63, 0xc6, 0x8c, 0x41, +0xa3, 0xb8, 0xe7, 0x9e, 0x7b, 0xf0, 0x51, 0xa0, 0xc6, 0xb1, 0x15, 0x51, +0xf3, 0x4f, 0x2d, 0x97, 0x4d, 0x71, 0x51, 0x9f, 0x1e, 0x51, 0xdf, 0xec, +0xa6, 0xe6, 0xba, 0x49, 0x54, 0x5e, 0xec, 0xd9, 0xb3, 0xb4, 0x6e, 0x8d, +0x65, 0xac, 0x61, 0x20, 0x6b, 0xe2, 0xc7, 0xb5, 0xab, 0xa6, 0x5d, 0xcc, +0xe6, 0xb1, 0xa9, 0x3b, 0x11, 0x35, 0x88, 0xa0, 0xe5, 0x4e, 0x17, 0x92, +0xad, 0xdd, 0xd2, 0xb1, 0xe3, 0xc7, 0xdc, 0x74, 0xd1, 0x9d, 0xc8, 0x79, +0x54, 0x6d, 0x32, 0x8d, 0xa8, 0x09, 0x46, 0x71, 0x34, 0xcc, 0xb2, 0x96, +0xf5, 0x62, 0xec, 0x6a, 0xdb, 0x40, 0x02, 0x6d, 0x9d, 0xb2, 0xbe, 0xea, +0x35, 0x53, 0xed, 0xc7, 0x8f, 0x29, 0xfa, 0x7a, 0x49, 0xb0, 0x72, 0x26, +0x2d, 0xef, 0x0b, 0x23, 0xc2, 0xcf, 0x4d, 0xe5, 0x01, 0x5f, 0x67, 0xa5, +0x64, 0x42, 0xb5, 0x1a, 0x54, 0xa1, 0x23, 0x88, 0x80, 0x5c, 0x59, 0x62, +0x01, 0x49, 0xbb, 0x63, 0x1f, 0x02, 0x1e, 0xea, 0xaf, 0x94, 0x50, 0xf0, +0xc9, 0x19, 0xc2, 0x46, 0x40, 0xe8, 0xae, 0x5e, 0x86, 0xa3, 0x54, 0x6a, +0x2d, 0x2c, 0x24, 0x7e, 0x84, 0xfc, 0x75, 0xf5, 0x4d, 0xc5, 0xd8, 0xfb, +0x3d, 0x2c, 0x11, 0x22, 0x00, 0xfe, 0x69, 0x99, 0x0f, 0xf1, 0x91, 0x76, +0x16, 0x13, 0x91, 0x18, 0x7f, 0x8b, 0xe5, 0x99, 0x2a, 0x57, 0xc4, 0xa6, +0x24, 0xe6, 0xf5, 0x76, 0xba, 0xff, 0xae, 0x6d, 0xdb, 0xb6, 0xd4, 0x70, +0xc1, 0x62, 0x4e, 0x65, 0x09, 0xbc, 0xda, 0x68, 0x04, 0xe6, 0x1a, 0x79, +0x3e, 0x44, 0x7c, 0xa0, 0xaa, 0x33, 0x8a, 0x1e, 0xb9, 0x80, 0x5e, 0xef, +0x75, 0x42, 0x01, 0x9e, 0x40, 0xc1, 0xac, 0x40, 0x02, 0x93, 0xbc, 0xde, +0x5d, 0x14, 0xc4, 0xf7, 0x6e, 0xb3, 0xeb, 0x6f, 0xd1, 0x07, 0x84, 0xca, +0xc9, 0xc8, 0x55, 0xa4, 0x49, 0x95, 0x65, 0x58, 0x33, 0x41, 0x04, 0xb0, +0x53, 0x56, 0x9c, 0x7a, 0x0b, 0xc4, 0x9f, 0xa9, 0xbf, 0xda, 0x8c, 0x0c, +0xc7, 0x14, 0x86, 0x43, 0x43, 0xcc, 0x03, 0xe6, 0x83, 0x04, 0x6b, 0xaa, +0xf4, 0x52, 0xd4, 0x47, 0xb7, 0x6b, 0xf9, 0x3d, 0x7f, 0xaf, 0x8b, 0x63, +0xff, 0x04, 0xe5, 0x9c, 0x25, 0xda, 0x97, 0x32, 0x50, 0x76, 0x2e, 0x9c, +0xd2, 0xbf, 0xa1, 0x3b, 0xf3, 0x89, 0xb2, 0x17, 0x51, 0x19, 0xcd, 0xce, +0x50, 0x5e, 0xcf, 0x51, 0x31, 0xbc, 0xac, 0xd5, 0xb0, 0x61, 0xc3, 0xf0, +0xdf, 0x11, 0xfe, 0x44, 0xa6, 0x91, 0xa1, 0x8a, 0xa6, 0x6e, 0x5e, 0xb2, +0xcb, 0x2b, 0x30, 0xc8, 0x92, 0x24, 0xa0, 0x5e, 0x15, 0x36, 0x56, 0xbf, +0x8d, 0x42, 0x5e, 0x1f, 0x43, 0x9d, 0x50, 0xae, 0x41, 0x63, 0xbc, 0x4b, +0xfc, 0xdc, 0xd4, 0x02, 0xf4, 0xcf, 0xa6, 0x09, 0xf9, 0xaa, 0xd5, 0x20, +0x51, 0x81, 0x02, 0xf7, 0x88, 0x4f, 0x08, 0xac, 0xb0, 0x66, 0x34, 0x39, +0x8a, 0x7a, 0xe8, 0x05, 0x16, 0x90, 0x03, 0xdd, 0x3d, 0x35, 0xc6, 0x56, +0x82, 0x46, 0xa9, 0x4d, 0xc6, 0xcb, 0x33, 0x5b, 0xae, 0xe5, 0x16, 0xa4, +0x1f, 0x52, 0x06, 0x81, 0x22, 0x26, 0x18, 0xb8, 0x70, 0x16, 0xf1, 0x6a, +0xd5, 0xad, 0x3d, 0x07, 0x7a, 0x10, 0x66, 0x0f, 0x4b, 0xef, 0xd9, 0x3a, +0x07, 0x13, 0x1c, 0xc1, 0x63, 0x52, 0x7a, 0x10, 0x30, 0x23, 0xb8, 0xdb, +0x7f, 0x0b, 0x5e, 0xcf, 0xc4, 0x31, 0x2a, 0xf3, 0xb1, 0x99, 0x9a, 0x42, +0xd8, 0x1b, 0x46, 0x21, 0x77, 0xc3, 0x22, 0xd0, 0xaa, 0xa7, 0xf3, 0x29, +0x26, 0xda, 0x72, 0x40, 0x83, 0xff, 0x8e, 0x0d, 0x05, 0x8a, 0x47, 0xa9, +0xc0, 0x26, 0xab, 0xeb, 0xd9, 0x7e, 0x46, 0x7c, 0xc0, 0x28, 0xf4, 0xd2, +0x32, 0x36, 0xc5, 0x47, 0xaf, 0x0b, 0xea, 0xe1, 0x84, 0x47, 0xb7, 0xf6, +0xa7, 0xc2, 0x5a, 0x20, 0x23, 0x78, 0xb8, 0x16, 0x95, 0x00, 0x3c, 0xb0, +0xfa, 0x7e, 0x2b, 0x15, 0xd8, 0xdf, 0xd4, 0xcb, 0x23, 0xae, 0x86, 0x20, +0x02, 0x4c, 0x7e, 0x54, 0x91, 0x31, 0x57, 0x67, 0x23, 0xbf, 0xde, 0xec, +0x38, 0x47, 0x05, 0xa4, 0xd8, 0x2b, 0x3e, 0x2c, 0xf6, 0x57, 0x4b, 0xce, +0x20, 0x5f, 0x52, 0xf2, 0x11, 0x15, 0x02, 0x91, 0x89, 0x74, 0x4a, 0xc4, +0x57, 0xfc, 0x83, 0x94, 0xa5, 0xd0, 0xcb, 0x6e, 0xbb, 0x93, 0x43, 0xe4, +0xd9, 0xf5, 0x2a, 0x10, 0xfa, 0x5d, 0x82, 0xc8, 0xe7, 0xb1, 0xa2, 0xaa, +0x70, 0x66, 0x9b, 0xc9, 0xee, 0x64, 0xe1, 0xf3, 0x72, 0x2d, 0xdf, 0x0e, +0x49, 0x97, 0x3a, 0x07, 0x5e, 0xe3, 0x6f, 0x99, 0x15, 0x35, 0xb8, 0xee, +0x45, 0x21, 0xff, 0x8e, 0x48, 0x1c, 0x0c, 0x50, 0x04, 0x1c, 0x90, 0x56, +0xe1, 0xa1, 0x02, 0xa5, 0x2d, 0x5e, 0x81, 0xec, 0x45, 0xa5, 0x19, 0xe2, +0x40, 0xd5, 0xca, 0x06, 0x68, 0x7a, 0xf7, 0x4a, 0xeb, 0x18, 0xb3, 0xb1, +0xf4, 0x05, 0x25, 0x13, 0xc5, 0x7c, 0x2f, 0xaa, 0x4e, 0xa8, 0x98, 0x6a, +0xff, 0xe2, 0x64, 0xb1, 0xf6, 0x7a, 0x20, 0x65, 0xc3, 0x9f, 0x2c, 0xf7, +0x45, 0xf4, 0x25, 0xcf, 0x23, 0x50, 0xa8, 0x41, 0x9a, 0x16, 0xc0, 0x1f, +0x78, 0x97, 0x74, 0x60, 0x21, 0xa1, 0x05, 0x43, 0x3b, 0xbf, 0xaa, 0x0b, +0x51, 0x3c, 0x3c, 0x24, 0x6a, 0xe3, 0x36, 0xa5, 0x20, 0xb4, 0xe5, 0x5d, +0xfc, 0x28, 0x98, 0xe0, 0xee, 0x95, 0xa9, 0x82, 0x6b, 0x38, 0xb6, 0x6d, +0x72, 0x5d, 0xa2, 0x19, 0xdc, 0x59, 0x23, 0xf5, 0x48, 0x2a, 0x66, 0xee, +0x53, 0xe4, 0x84, 0xe5, 0x0c, 0x75, 0xff, 0x1d, 0x04, 0x2c, 0x59, 0xa9, +0x78, 0x2a, 0x28, 0xea, 0x61, 0xa9, 0x51, 0xf8, 0x60, 0x83, 0xe2, 0x7a, +0xbd, 0x0c, 0x3a, 0xa6, 0x77, 0xaf, 0xb1, 0xdf, 0x5e, 0xe9, 0xde, 0xf3, +0x09, 0x94, 0xd4, 0xe6, 0x8d, 0x96, 0x47, 0x22, 0x38, 0x90, 0xd0, 0xb3, +0x34, 0xfd, 0xf3, 0x54, 0x90, 0x13, 0x6b, 0x1f, 0x15, 0x96, 0xb9, 0xcb, +0x48, 0x35, 0x96, 0x23, 0x20, 0x2c, 0xa1, 0x11, 0xc2, 0x79, 0x16, 0x2d, +0x5a, 0x44, 0xc5, 0x68, 0xba, 0x67, 0x10, 0x7b, 0x8b, 0x5b, 0x90, 0x1d, +0x8e, 0xa0, 0x74, 0x9c, 0x83, 0x7a, 0x60, 0x01, 0xd2, 0xb9, 0x87, 0x65, +0xa4, 0x0e, 0x9f, 0xe5, 0x2d, 0x88, 0xb0, 0xf4, 0xc3, 0x44, 0xee, 0xee, +0x46, 0x2a, 0x8a, 0xc7, 0x5c, 0x9f, 0xc1, 0xf2, 0x12, 0x98, 0xa4, 0x87, +0x78, 0x08, 0xe5, 0x0a, 0x54, 0x33, 0xb7, 0x53, 0x20, 0xd4, 0xc3, 0x22, +0xe8, 0xfe, 0x3b, 0xa4, 0x50, 0xec, 0xe6, 0x50, 0x32, 0x8a, 0x1f, 0x9e, +0x8a, 0x80, 0x50, 0x21, 0x36, 0x59, 0x5d, 0xc3, 0xf3, 0x5b, 0xea, 0xb0, +0x09, 0x15, 0x62, 0x28, 0x30, 0x47, 0xc2, 0x2b, 0x6c, 0x9e, 0x6f, 0xff, +0x34, 0x1c, 0x76, 0x94, 0x9c, 0xd1, 0x69, 0xc5, 0x3f, 0x78, 0xeb, 0xe2, +0x93, 0x99, 0xf2, 0x32, 0x53, 0x13, 0x7a, 0xb7, 0xcb, 0xc5, 0x0d, 0x42, +0x04, 0x3b, 0x5e, 0x79, 0x73, 0x84, 0x15, 0xd3, 0xd0, 0xaf, 0xa2, 0x9d, +0x0d, 0x4e, 0x71, 0xc8, 0xfd, 0x92, 0x4b, 0x2e, 0x81, 0x39, 0x10, 0xbb, +0x46, 0xfb, 0x1b, 0x2c, 0x5a, 0x6c, 0x6c, 0xc8, 0x4b, 0x70, 0x73, 0x62, +0x6f, 0x29, 0x6b, 0x42, 0xf6, 0x12, 0x36, 0x2e, 0xfd, 0x42, 0xcf, 0xa6, +0x08, 0x4a, 0x79, 0xab, 0x93, 0xf5, 0x36, 0x48, 0x9e, 0xb1, 0x64, 0x7f, +0x31, 0x39, 0x13, 0x5f, 0x8a, 0xdc, 0x02, 0x0d, 0xcd, 0x66, 0x01, 0x55, +0x12, 0x21, 0x3d, 0x54, 0x9d, 0x42, 0xc3, 0x36, 0xac, 0xa7, 0xcd, 0x84, +0x3e, 0x77, 0xd3, 0xd6, 0xfd, 0x77, 0x54, 0x5b, 0x45, 0xd5, 0x66, 0x67, +0xc1, 0x68, 0x4e, 0xa9, 0x9b, 0x80, 0x50, 0x21, 0x36, 0x59, 0x1a, 0xcc, +0xa8, 0xe9, 0x52, 0x65, 0xc4, 0xa7, 0xb5, 0xf3, 0xe9, 0x64, 0x32, 0xec, +0xa4, 0x00, 0x4c, 0xb0, 0x4c, 0x10, 0xea, 0xee, 0x80, 0xcd, 0x90, 0xe6, +0x4a, 0xf1, 0x28, 0x9f, 0xe6, 0x26, 0x27, 0x93, 0xac, 0x63, 0x78, 0x73, +0x0d, 0x6a, 0xa6, 0xe2, 0xa4, 0x23, 0x25, 0x9f, 0x82, 0x4e, 0xfa, 0xde, +0x46, 0x62, 0x1a, 0x81, 0x5e, 0xe6, 0x5b, 0xa0, 0x5b, 0xab, 0x11, 0xb0, +0xa0, 0xa3, 0x36, 0x50, 0xc8, 0x87, 0x24, 0x6f, 0x0a, 0x46, 0xd1, 0xb7, +0x0a, 0xe5, 0x81, 0x9c, 0x18, 0x12, 0x00, 0x90, 0x97, 0x88, 0xa7, 0x92, +0xe0, 0x11, 0x52, 0x97, 0xb0, 0xf6, 0x62, 0xe9, 0x52, 0x17, 0x7a, 0xf6, +0x73, 0xc1, 0x12, 0x75, 0xc3, 0x2e, 0xd5, 0x46, 0xd4, 0x85, 0x36, 0x8d, +0xa7, 0x76, 0x56, 0x46, 0xf5, 0x82, 0x20, 0xec, 0xc5, 0xce, 0xf9, 0x9c, +0x43, 0x0d, 0x14, 0x77, 0x67, 0x32, 0x67, 0x73, 0x57, 0x0f, 0x9b, 0xe6, +0x3b, 0x77, 0x7c, 0x49, 0x7f, 0x53, 0x2c, 0xac, 0x24, 0x0c, 0xab, 0x5e, +0x22, 0xee, 0xfa, 0x3d, 0x78, 0xef, 0x16, 0x09, 0x24, 0x30, 0xad, 0xa8, +0xd1, 0x89, 0xb1, 0xb3, 0x69, 0x7d, 0xb3, 0xb9, 0x4c, 0xfa, 0x69, 0x8c, +0xac, 0x76, 0x8b, 0x20, 0xf2, 0x0a, 0x0c, 0x11, 0x44, 0x71, 0x9a, 0x2d, +0x3c, 0xf6, 0x0b, 0x03, 0xeb, 0x93, 0x44, 0xa7, 0xc4, 0xcb, 0x81, 0xe1, +0x65, 0xfb, 0xa2, 0x4e, 0x7c, 0xf6, 0x10, 0xc7, 0x41, 0xbe, 0xa1, 0x65, +0x12, 0xb6, 0x5e, 0xd9, 0x16, 0x16, 0x81, 0x1a, 0x0d, 0x18, 0xe0, 0x0c, +0x20, 0x81, 0x60, 0x5b, 0x42, 0xd0, 0x61, 0x0e, 0x80, 0x81, 0xa0, 0x4e, +0xf8, 0x03, 0x78, 0xe0, 0x2d, 0x52, 0x9d, 0x85, 0x0e, 0x1e, 0xfa, 0x3b, +0xf6, 0x5c, 0x7d, 0x8b, 0x2d, 0x59, 0x9d, 0xac, 0xf7, 0xec, 0x03, 0x2a, +0x96, 0xbd, 0x26, 0xfc, 0x78, 0x59, 0x04, 0x04, 0xa8, 0x20, 0x14, 0x0f, +0x46, 0x36, 0x7d, 0x64, 0xdc, 0xbe, 0x1e, 0xbc, 0x99, 0xaa, 0xa6, 0x93, +0xfe, 0x98, 0xc4, 0xcb, 0xf9, 0x31, 0x37, 0xb9, 0x84, 0x3e, 0x18, 0x6a, +0x28, 0x4c, 0x82, 0x2c, 0xaf, 0x65, 0x5d, 0x7e, 0x33, 0x36, 0x3c, 0xa1, +0x42, 0x72, 0x8c, 0x48, 0x56, 0xa2, 0x41, 0x9b, 0x1a, 0xbd, 0xfc, 0x02, +0xd1, 0x30, 0xd4, 0x48, 0xc4, 0xb8, 0x1c, 0x10, 0x31, 0xfa, 0xa2, 0xdf, +0x2b, 0xa2, 0x2e, 0x24, 0x54, 0xc9, 0xcc, 0x97, 0xe5, 0x16, 0x5e, 0x73, +0x00, 0x03, 0xb9, 0x3b, 0x93, 0x87, 0x17, 0x99, 0x23, 0x82, 0x09, 0xf9, +0xd6, 0xdf, 0x3a, 0x1d, 0x0d, 0x89, 0x13, 0x21, 0xb7, 0x11, 0x63, 0x2e, +0xef, 0x0c, 0x30, 0x48, 0x9d, 0x66, 0x4c, 0x87, 0x68, 0x84, 0xd2, 0x29, +0x9d, 0x8d, 0x09, 0x1b, 0x60, 0xaf, 0x5e, 0xa5, 0x65, 0x2a, 0xf1, 0x69, +0x78, 0x56, 0x6d, 0xf5, 0x24, 0x1b, 0x14, 0x15, 0x75, 0x47, 0xfb, 0x75, +0x37, 0xbc, 0x3e, 0xbb, 0x2a, 0x68, 0x02, 0x07, 0xb6, 0x19, 0x87, 0x4f, +0xbc, 0x96, 0x87, 0x5a, 0x38, 0xaa, 0xe2, 0xe0, 0x05, 0x91, 0xac, 0xb4, +0x91, 0x80, 0xdf, 0x21, 0x14, 0xe4, 0xc3, 0xa9, 0x07, 0xc7, 0x4e, 0x28, +0xf5, 0x33, 0x31, 0x40, 0x51, 0x9e, 0x86, 0x55, 0xf5, 0xd0, 0x18, 0xc8, +0x0b, 0x2a, 0x10, 0x9f, 0x70, 0x8c, 0xeb, 0xed, 0xe1, 0xec, 0x17, 0xd3, +0xf5, 0xba, 0xac, 0xfa, 0x09, 0xc8, 0xf7, 0xfa, 0x8b, 0x94, 0x87, 0x09, +0x50, 0xa6, 0x44, 0xd2, 0x25, 0x62, 0xc2, 0x43, 0xab, 0x2d, 0xec, 0x27, +0x3e, 0x4d, 0xd2, 0xa7, 0x93, 0x8f, 0x5d, 0xd7, 0x83, 0x42, 0xe8, 0xe6, +0x4b, 0x74, 0x4d, 0x1d, 0xb9, 0xf4, 0xa6, 0x9b, 0x6e, 0x92, 0x6c, 0x49, +0xa2, 0x38, 0xc1, 0x03, 0x01, 0x54, 0x48, 0xbd, 0xd8, 0x0d, 0x31, 0xfa, +0x09, 0x1e, 0xe4, 0x40, 0xa6, 0xd2, 0xb1, 0x84, 0xad, 0xc6, 0xc3, 0x64, +0x88, 0x95, 0xd0, 0x9f, 0x5a, 0xef, 0x79, 0xe7, 0x47, 0xe0, 0x89, 0xbb, +0x1b, 0x29, 0x6f, 0xa3, 0xfd, 0x64, 0xcc, 0x5b, 0xaf, 0x76, 0xbb, 0xe0, +0x7a, 0xc5, 0x41, 0x9e, 0x54, 0x2f, 0x6a, 0x78, 0x9f, 0xbd, 0x3e, 0x35, +0xe6, 0x79, 0xea, 0xfe, 0x3b, 0xa9, 0x9f, 0x89, 0xf8, 0x24, 0xf5, 0x33, +0xf5, 0x7e, 0x5f, 0xbe, 0xf1, 0x0a, 0xc9, 0x31, 0x62, 0xac, 0x52, 0x5e, +0x9c, 0x96, 0xe8, 0x77, 0x4d, 0x62, 0x0f, 0x6f, 0x91, 0xed, 0x93, 0x6a, +0xc7, 0xfa, 0x5b, 0x97, 0xcf, 0xb8, 0x14, 0xfc, 0x8b, 0x7b, 0xc3, 0x2f, +0x46, 0x91, 0x04, 0xbd, 0xb2, 0xe5, 0x45, 0xfe, 0x13, 0x17, 0xa7, 0x2f, +0xb7, 0xd7, 0x1c, 0x40, 0x9f, 0x60, 0x60, 0x38, 0x19, 0x65, 0x97, 0xce, +0x12, 0xe6, 0x11, 0xf4, 0x27, 0xc5, 0xf6, 0x4a, 0x71, 0x41, 0xec, 0x4b, +0x12, 0x63, 0xab, 0xf8, 0x83, 0x24, 0x88, 0x49, 0x91, 0x22, 0x3e, 0x20, +0x41, 0xe9, 0x6e, 0x10, 0xaf, 0x05, 0x3f, 0x89, 0x95, 0x50, 0x8b, 0xa9, +0xd7, 0x57, 0xc6, 0x0c, 0x10, 0x48, 0xca, 0xa1, 0xfe, 0x2c, 0xaa, 0xd2, +0x21, 0xf0, 0xb3, 0x59, 0xb3, 0x99, 0xa4, 0x0b, 0x0f, 0x60, 0x56, 0x8a, +0xbb, 0x30, 0x8a, 0xe6, 0xcd, 0x4b, 0xbb, 0xd7, 0xf9, 0x57, 0x1c, 0x1e, +0x2e, 0xad, 0xfb, 0x82, 0xa4, 0x7e, 0xa6, 0x54, 0x28, 0xb6, 0xac, 0x60, +0x60, 0xd7, 0xb7, 0xcd, 0x5b, 0x01, 0x52, 0x93, 0x27, 0x4f, 0x56, 0x4b, +0x0c, 0xa9, 0x05, 0x42, 0x28, 0x96, 0xd7, 0xb2, 0x7b, 0x79, 0x68, 0x8a, +0x47, 0x1d, 0x10, 0x9b, 0x0e, 0x4e, 0xb8, 0x0d, 0x42, 0x3c, 0x49, 0xb0, +0x06, 0x2b, 0x93, 0x9a, 0x3c, 0x6d, 0x8b, 0xc9, 0x1d, 0x25, 0x15, 0x4b, +0x7d, 0x63, 0x33, 0x39, 0xc6, 0x8f, 0x47, 0x46, 0x71, 0xb4, 0x2c, 0xf2, +0x80, 0xa3, 0x40, 0x07, 0x3f, 0xaf, 0x8a, 0x60, 0x35, 0x6c, 0x85, 0x04, +0xd8, 0xa2, 0x4c, 0x53, 0x85, 0x05, 0xfe, 0x20, 0x3d, 0x63, 0xc5, 0xc7, +0xc4, 0xc1, 0x2b, 0xa0, 0x36, 0x82, 0xba, 0x8a, 0x90, 0x2a, 0xaf, 0xc6, +0x4a, 0x5a, 0x4c, 0xa9, 0xf3, 0xf5, 0x42, 0xfc, 0x5e, 0xcb, 0xa8, 0xd9, +0x7f, 0x52, 0x65, 0xf1, 0x1c, 0x6e, 0xbb, 0x14, 0x1a, 0x2f, 0xda, 0x83, +0xd4, 0x57, 0xbc, 0xa8, 0x93, 0x9a, 0x33, 0x6e, 0x4a, 0x5d, 0x5c, 0x24, +0x9b, 0xd2, 0xfe, 0xc4, 0xd4, 0x99, 0x06, 0xff, 0x1d, 0x6a, 0x1b, 0x02, +0x2a, 0x9e, 0x0a, 0x34, 0x34, 0x73, 0x56, 0xaa, 0x21, 0x1d, 0xcf, 0x93, +0x04, 0x25, 0x99, 0x77, 0x69, 0x69, 0x17, 0xd3, 0x0e, 0x99, 0x74, 0x10, +0x0b, 0xf5, 0x31, 0x7b, 0x1a, 0x9c, 0xe9, 0xdd, 0x4f, 0x64, 0x51, 0xa8, +0x4a, 0x42, 0xc3, 0x21, 0x9d, 0x74, 0x70, 0x8f, 0xcc, 0x1f, 0x55, 0x80, +0x63, 0xc1, 0x10, 0x60, 0x87, 0x37, 0x83, 0x48, 0x32, 0x24, 0xba, 0x6b, +0xa6, 0xb5, 0x72, 0xd7, 0x99, 0x45, 0xc6, 0xc1, 0x09, 0xc0, 0xae, 0x8c, +0x9d, 0xc7, 0x50, 0xb3, 0xd9, 0xef, 0x00, 0x72, 0xaf, 0x2f, 0x89, 0x78, +0x10, 0xcb, 0x70, 0x15, 0xa6, 0xaa, 0x1e, 0x8d, 0x08, 0x3f, 0xac, 0x22, +0xc7, 0x8f, 0x1f, 0xa7, 0xad, 0x3d, 0x71, 0x53, 0xe0, 0xc1, 0x50, 0xc1, +0x8e, 0xdd, 0x0b, 0x54, 0xd0, 0xac, 0x43, 0x5f, 0x0d, 0xcb, 0xba, 0x83, +0xfa, 0x7c, 0xc0, 0x8c, 0x99, 0xeb, 0xca, 0x37, 0xec, 0xc7, 0x5e, 0x67, +0x6e, 0xe7, 0x04, 0x55, 0xad, 0x90, 0x31, 0xe9, 0xf4, 0x65, 0xe7, 0x12, +0xce, 0xf1, 0x6c, 0xba, 0x24, 0x5a, 0x42, 0x4d, 0x9b, 0x32, 0xd5, 0x04, +0x20, 0xab, 0x5f, 0xed, 0x17, 0x36, 0xd7, 0x67, 0xa2, 0xe7, 0xf1, 0xaa, +0xfa, 0x99, 0x92, 0x53, 0x61, 0xee, 0x20, 0x67, 0x50, 0x33, 0x3c, 0xa1, +0x82, 0x8b, 0x69, 0xb8, 0xa8, 0x26, 0x47, 0xd2, 0xb3, 0xd7, 0x6c, 0x52, +0x9b, 0x0b, 0x84, 0xe0, 0x4b, 0x49, 0x32, 0x73, 0x15, 0x1c, 0x66, 0x8f, +0xf7, 0xea, 0xaa, 0xab, 0xae, 0x62, 0x5f, 0xb7, 0x7c, 0xb5, 0x78, 0xa0, +0x08, 0xe6, 0xe1, 0x87, 0xb2, 0xb3, 0x76, 0x7a, 0xf3, 0x02, 0x69, 0x22, +0x26, 0xe8, 0x3c, 0x8b, 0x9d, 0x07, 0xa5, 0x16, 0xbf, 0x98, 0x1a, 0x96, +0x14, 0x28, 0x9b, 0xb3, 0xf5, 0xe3, 0x34, 0x74, 0x24, 0xca, 0x10, 0x1a, +0x72, 0xa9, 0xd9, 0x29, 0xd1, 0xbf, 0xd5, 0x04, 0x86, 0x0f, 0x1f, 0x4e, +0x0b, 0x66, 0x61, 0xeb, 0x68, 0x11, 0xf0, 0x04, 0xb3, 0x05, 0x9d, 0x6f, +0x08, 0xf0, 0x54, 0x97, 0x20, 0x13, 0x12, 0x6d, 0x4a, 0x90, 0x85, 0x87, +0x29, 0x61, 0x6d, 0x53, 0xe7, 0xeb, 0xf5, 0x95, 0xc9, 0xe3, 0xf3, 0xe3, +0x41, 0x2c, 0x2f, 0x51, 0xdd, 0xbd, 0xe0, 0x87, 0x36, 0x1d, 0x82, 0x94, +0xbc, 0xc0, 0xe6, 0xc1, 0x66, 0x61, 0x6e, 0x36, 0xcb, 0x2d, 0x0c, 0x25, +0x91, 0xe0, 0x8d, 0xe4, 0x06, 0xa9, 0xa7, 0x80, 0x4e, 0x6c, 0x7a, 0xcd, +0xf5, 0xd9, 0xaa, 0xca, 0x54, 0x8c, 0x43, 0xc1, 0x5f, 0xfc, 0x77, 0x58, +0x32, 0xdc, 0xe5, 0x54, 0xe8, 0x65, 0xfa, 0xbd, 0xc4, 0xcc, 0xf2, 0x9e, +0xae, 0xbc, 0xf2, 0x4a, 0x35, 0x39, 0xaf, 0xf5, 0x69, 0xbc, 0x2e, 0x3a, +0x66, 0x19, 0xda, 0x01, 0x12, 0x9c, 0x63, 0x19, 0x23, 0xdd, 0xa5, 0x4b, +0x17, 0xc8, 0x17, 0x37, 0x16, 0xa5, 0x62, 0x20, 0x5f, 0x5a, 0xa3, 0xbb, +0xdb, 0xf3, 0xec, 0x7c, 0x8f, 0xe4, 0x40, 0x2d, 0x51, 0xe6, 0x0f, 0x7f, +0xc0, 0x2f, 0x46, 0x0a, 0x21, 0x76, 0x9e, 0xd5, 0xab, 0x57, 0xab, 0x6b, +0xf1, 0xef, 0x78, 0x9d, 0xb0, 0x7f, 0x27, 0xa0, 0x0b, 0x29, 0xc4, 0x62, +0xf3, 0x81, 0xc1, 0xca, 0x4b, 0xa5, 0xdb, 0x98, 0x3e, 0x73, 0x62, 0x37, +0xb0, 0x8a, 0x48, 0x8a, 0x92, 0x34, 0x4d, 0x36, 0xa8, 0x7d, 0x92, 0xe9, +0x65, 0x48, 0x09, 0x66, 0x04, 0xb0, 0x81, 0xb1, 0xae, 0x64, 0x71, 0xa1, +0xa5, 0x28, 0x45, 0xbc, 0xa0, 0xe5, 0xfa, 0x90, 0x66, 0xe0, 0xdf, 0xe3, +0x18, 0xae, 0x82, 0xac, 0x55, 0xbd, 0x7b, 0xfb, 0x69, 0x67, 0xaa, 0xbc, +0x0b, 0xaf, 0x1e, 0xa1, 0x8b, 0xd4, 0x42, 0x9d, 0xf3, 0xb3, 0x44, 0x6a, +0xce, 0x6c, 0x64, 0xd0, 0x00, 0xbb, 0x98, 0x9e, 0x59, 0xe5, 0x87, 0x7a, +0x49, 0xa7, 0x70, 0x35, 0x26, 0xfd, 0x12, 0xa8, 0x58, 0x47, 0xde, 0x0b, +0x8c, 0x02, 0x00, 0x98, 0x77, 0x1f, 0x5b, 0xa8, 0x50, 0x99, 0x77, 0x7a, +0x29, 0x48, 0xee, 0xc1, 0x9d, 0x28, 0x61, 0x8b, 0x08, 0x48, 0x2e, 0x35, +0x39, 0x31, 0x5e, 0xf7, 0x09, 0x56, 0x90, 0xb4, 0x1e, 0x8a, 0xb2, 0x10, +0x09, 0xc7, 0x56, 0xe1, 0x2e, 0x26, 0x14, 0x0d, 0x98, 0xc6, 0xbe, 0xd0, +0x2e, 0x01, 0x3f, 0xd4, 0x8c, 0x81, 0x7c, 0x91, 0xb6, 0x8b, 0x8b, 0x8b, +0xe9, 0x84, 0xad, 0xd7, 0xcd, 0xf6, 0x0a, 0x06, 0x62, 0xe9, 0xf2, 0xf3, +0xf3, 0xe9, 0x43, 0x37, 0x67, 0xce, 0x1c, 0x46, 0x23, 0x8e, 0x15, 0x30, +0x48, 0x04, 0x11, 0x3c, 0x91, 0x00, 0x18, 0xdc, 0x02, 0x6a, 0x90, 0xa0, +0x7b, 0x09, 0xa1, 0x1e, 0x4c, 0x11, 0x78, 0x03, 0xf4, 0x6a, 0xf8, 0x72, +0x3b, 0x34, 0x6c, 0xb6, 0x49, 0xe4, 0x40, 0x75, 0x77, 0x72, 0xea, 0x89, +0xb1, 0xc5, 0x35, 0x41, 0xd1, 0x03, 0xd2, 0xbb, 0x2d, 0xeb, 0xaf, 0x88, +0x65, 0x1c, 0x7b, 0x94, 0xbb, 0x16, 0xb5, 0x8c, 0x46, 0xa4, 0x10, 0x19, +0x3f, 0xa8, 0xf5, 0xc2, 0xc6, 0x89, 0x8a, 0xb7, 0x5c, 0x25, 0xd4, 0x33, +0xaf, 0x2f, 0xcb, 0x26, 0x66, 0x70, 0x56, 0xca, 0x2d, 0x08, 0x0a, 0xb4, +0xe9, 0xfa, 0x60, 0x53, 0xd0, 0x7b, 0x34, 0xca, 0xe5, 0x28, 0x48, 0x78, +0xe8, 0xb0, 0x2f, 0xb1, 0x68, 0x8a, 0xf9, 0xf0, 0x7d, 0xeb, 0xd6, 0xad, +0xb1, 0xcb, 0xc1, 0xd8, 0xf5, 0x96, 0x3d, 0xee, 0xb2, 0xf6, 0x98, 0x33, +0x73, 0x30, 0x3f, 0x1a, 0x7a, 0x9d, 0xbe, 0x0e, 0x04, 0x0a, 0x60, 0xf8, +0xa6, 0x61, 0xa7, 0xf0, 0x64, 0xb3, 0xd1, 0xc9, 0x16, 0x2a, 0x24, 0xca, +0x83, 0x21, 0x74, 0x03, 0x94, 0x79, 0xb9, 0xa1, 0x72, 0x9c, 0x2c, 0x14, +0xff, 0x21, 0x5c, 0x99, 0x0d, 0x80, 0xee, 0x72, 0xfc, 0xf0, 0x99, 0x80, +0x08, 0x78, 0xab, 0xa1, 0x32, 0xac, 0xe5, 0xdb, 0xa2, 0x8b, 0x76, 0xf7, +0xee, 0xdd, 0x11, 0x99, 0xd8, 0xc5, 0xa1, 0x60, 0x32, 0x42, 0xb0, 0x51, +0xe2, 0x34, 0x64, 0x07, 0x85, 0x8e, 0xc1, 0x06, 0xab, 0x03, 0x36, 0xa0, +0x75, 0x5d, 0x4b, 0x56, 0x43, 0x25, 0x24, 0x24, 0x60, 0x63, 0x29, 0x28, +0x28, 0x40, 0x39, 0x9b, 0x32, 0x65, 0x0a, 0x61, 0x29, 0x0c, 0x85, 0x0a, +0x4b, 0xc4, 0x04, 0x11, 0xd7, 0x00, 0x8c, 0xcd, 0x18, 0xe7, 0x17, 0x56, +0x6a, 0x64, 0x77, 0x3c, 0x62, 0x18, 0x7c, 0x4a, 0xe9, 0xd2, 0xd5, 0x25, +0xac, 0x1b, 0x3f, 0x6c, 0xba, 0xec, 0x79, 0x90, 0x32, 0xc1, 0x57, 0xfc, +0x50, 0xd4, 0x08, 0x0c, 0x63, 0x54, 0x45, 0xa1, 0xe4, 0x07, 0xce, 0xc6, +0x43, 0xe1, 0xef, 0xe3, 0xb9, 0xf8, 0x01, 0x4b, 0x44, 0x65, 0xf3, 0x23, +0x82, 0x1c, 0x52, 0x25, 0x31, 0x9e, 0x7a, 0x98, 0xa7, 0x57, 0xe8, 0xca, +0x09, 0xec, 0x02, 0x44, 0x37, 0xf1, 0x98, 0xa4, 0x28, 0x61, 0x7a, 0x42, +0xc3, 0x36, 0xd7, 0x5f, 0x91, 0xb7, 0xc0, 0x5f, 0xd9, 0xe4, 0xf4, 0x90, +0x0d, 0xcb, 0x5b, 0x20, 0x52, 0xb2, 0x61, 0xe9, 0x41, 0xb2, 0xba, 0x9e, +0x4d, 0xe8, 0x9e, 0xbc, 0x1d, 0x7e, 0x70, 0xc3, 0xcb, 0xa3, 0xe9, 0x3f, +0x3c, 0x2f, 0x4f, 0xad, 0xff, 0xa0, 0x02, 0xc9, 0x82, 0xa8, 0x1f, 0xdc, +0xd2, 0x2c, 0x54, 0xb5, 0xb4, 0x8b, 0xe9, 0xe3, 0xdc, 0x51, 0x8d, 0x89, +0xc4, 0x28, 0xeb, 0x63, 0xfe, 0xc1, 0x80, 0xeb, 0xce, 0xfe, 0x21, 0x0f, +0x82, 0x65, 0x0c, 0x69, 0x56, 0x3d, 0x14, 0x2d, 0xd2, 0x79, 0x4d, 0x28, +0xc7, 0x7a, 0x1d, 0x2d, 0xd2, 0x59, 0xa9, 0x65, 0x4c, 0xae, 0x32, 0xea, +0x07, 0xaf, 0x00, 0x8c, 0x71, 0x77, 0x83, 0xc4, 0x81, 0xa0, 0xc5, 0x97, +0x3c, 0x69, 0xa7, 0x66, 0x59, 0x7a, 0x48, 0x8e, 0xd7, 0xfa, 0x99, 0x80, +0xc4, 0x37, 0x54, 0xf0, 0x4a, 0xf4, 0x68, 0x7e, 0x9b, 0xaf, 0xdc, 0xce, +0x69, 0x68, 0xc0, 0xe0, 0x01, 0x5e, 0x04, 0x1e, 0x80, 0x32, 0x3b, 0x3a, +0x41, 0x3e, 0xe0, 0x01, 0x87, 0x2e, 0x89, 0x3b, 0xc4, 0x38, 0x20, 0x05, +0x52, 0xb4, 0x87, 0x2f, 0xb7, 0x6f, 0xdf, 0x0e, 0x36, 0xae, 0xbf, 0xfe, +0x7a, 0x64, 0x21, 0x42, 0x59, 0xe0, 0x86, 0x1c, 0x7c, 0xe0, 0x5a, 0x04, +0x2d, 0x0e, 0x62, 0x25, 0x60, 0xb8, 0x20, 0x81, 0x3d, 0x06, 0x68, 0x71, +0x3e, 0x70, 0x22, 0xe2, 0x05, 0x91, 0x9d, 0xa2, 0x4c, 0x98, 0xa8, 0x71, +0xdc, 0xe0, 0x17, 0x63, 0x4b, 0xd6, 0xdb, 0xd0, 0xd8, 0x99, 0x64, 0x39, +0x9d, 0x13, 0x1b, 0x1b, 0x0b, 0x68, 0x89, 0x3e, 0x40, 0x67, 0xc0, 0x7c, +0x8e, 0xb7, 0x4e, 0xaf, 0x34, 0x21, 0x4a, 0x36, 0x90, 0x40, 0xaf, 0x43, +0xd5, 0x86, 0xa5, 0x8c, 0x1a, 0x35, 0xca, 0x8f, 0xf6, 0xe1, 0xe5, 0x34, +0xf9, 0xf2, 0x1e, 0x16, 0x7a, 0xc0, 0x81, 0x03, 0x7b, 0xd7, 0x3b, 0x6b, +0x06, 0x72, 0x53, 0xc2, 0xfb, 0x55, 0xfd, 0x4c, 0x4b, 0x49, 0xd5, 0x07, +0x54, 0xf0, 0x9e, 0xe0, 0x15, 0x74, 0xe7, 0x86, 0x3a, 0xd9, 0xd8, 0x2c, +0x9b, 0x94, 0xfa, 0x31, 0x57, 0xa4, 0x46, 0x4c, 0xd1, 0x74, 0xff, 0x5e, +0xb6, 0x6c, 0x19, 0xa4, 0x0c, 0x1d, 0xb3, 0x31, 0x20, 0x32, 0xd1, 0xa7, +0x9d, 0x12, 0x3d, 0xe0, 0x81, 0x8c, 0x67, 0xcc, 0xf3, 0x68, 0x45, 0xc8, +0xd3, 0x6c, 0xf0, 0xc4, 0x3e, 0xc0, 0xfb, 0x58, 0x23, 0x42, 0x47, 0x39, +0x13, 0x62, 0x82, 0xee, 0x01, 0x89, 0x1c, 0x7c, 0xbe, 0xe5, 0x96, 0x5b, +0x64, 0x6b, 0x81, 0x7a, 0x00, 0x03, 0x28, 0x82, 0xbf, 0x01, 0x27, 0xcc, +0x9d, 0x08, 0x27, 0xec, 0xc4, 0xef, 0xbf, 0xff, 0x3e, 0xbf, 0x72, 0xf2, +0xb4, 0x69, 0xd3, 0xf0, 0xf2, 0xea, 0x1d, 0xd7, 0xfd, 0x98, 0xbf, 0x4f, +0x97, 0x50, 0xac, 0x5f, 0x4f, 0x25, 0x55, 0xd7, 0xa2, 0xfc, 0x61, 0x7d, +0x62, 0x0b, 0xc0, 0x4d, 0xc1, 0xbe, 0x83, 0x41, 0x56, 0xb7, 0x3e, 0x01, +0x09, 0x62, 0x01, 0x89, 0x89, 0xd2, 0x3b, 0x86, 0x99, 0xef, 0xab, 0x3b, +0x5e, 0x7c, 0x9a, 0x55, 0xe5, 0x9e, 0x8c, 0x34, 0x48, 0x46, 0xa7, 0xee, +0x58, 0xd4, 0xe7, 0x43, 0x97, 0x0f, 0x5e, 0x34, 0x6f, 0x1c, 0x33, 0x0f, +0x02, 0x70, 0x50, 0xa6, 0x8a, 0xf8, 0xe0, 0xb9, 0x7e, 0xa6, 0x5d, 0x54, +0xa8, 0x58, 0x0f, 0x7c, 0xe3, 0xa4, 0xf3, 0x21, 0xcc, 0xe0, 0x5b, 0x25, +0xeb, 0x88, 0x12, 0x60, 0xe8, 0xc4, 0xc8, 0x33, 0x6c, 0x5d, 0x44, 0x7a, +0xda, 0x99, 0x34, 0x30, 0xc0, 0x83, 0x0b, 0x39, 0x52, 0x9a, 0x16, 0x77, +0x01, 0xfa, 0x34, 0x12, 0x0e, 0x1b, 0x3f, 0x22, 0x3e, 0xfc, 0x01, 0x91, +0x89, 0xfc, 0x66, 0xf0, 0x80, 0x90, 0x40, 0xe7, 0x38, 0x3c, 0x2c, 0xb8, +0xd2, 0x41, 0x23, 0x91, 0x0e, 0xc8, 0xd3, 0xd8, 0xd1, 0xd8, 0xe6, 0xd9, +0xec, 0xf1, 0xfb, 0x42, 0x43, 0xc8, 0x42, 0xec, 0xaf, 0xe0, 0x47, 0x56, +0x8d, 0x83, 0x89, 0x91, 0x14, 0x0a, 0xd1, 0xf3, 0x57, 0x60, 0x40, 0x97, +0x2d, 0x76, 0x5f, 0xb0, 0x84, 0x65, 0x1a, 0x15, 0x05, 0x4f, 0x0b, 0xe2, +0xbb, 0x9d, 0x49, 0x56, 0xca, 0x39, 0xa3, 0x47, 0x8f, 0x06, 0xb1, 0xac, +0x30, 0x4e, 0x25, 0x50, 0x21, 0x0e, 0x0a, 0xac, 0x52, 0x86, 0xbe, 0xa6, +0x1e, 0xe6, 0x86, 0xad, 0xa6, 0x4f, 0x9f, 0x3e, 0x94, 0xb5, 0x8d, 0x8b, +0xb3, 0xa8, 0x69, 0x5d, 0x29, 0x0f, 0xe5, 0xe1, 0xa6, 0x50, 0x02, 0xd1, +0x8d, 0x50, 0x11, 0x1b, 0x22, 0xff, 0xf3, 0xf8, 0x2d, 0x5a, 0xb4, 0x40, +0x06, 0x56, 0x97, 0x20, 0x25, 0xb2, 0x79, 0x41, 0x12, 0xbc, 0x3e, 0x0e, +0x64, 0x69, 0x82, 0x88, 0x03, 0x79, 0x0a, 0x76, 0x40, 0xe4, 0x6a, 0xb6, +0x4b, 0x88, 0x04, 0xc2, 0xf8, 0xe5, 0x2f, 0x7f, 0xe9, 0x2e, 0x2b, 0xd5, +0x96, 0x04, 0x25, 0x4c, 0x9c, 0x21, 0x20, 0x50, 0xde, 0x1c, 0x34, 0xc7, +0x1e, 0xcc, 0xae, 0xcc, 0x06, 0x86, 0x7d, 0x00, 0x49, 0x06, 0xe2, 0xe6, +0x40, 0x8c, 0x61, 0xde, 0x40, 0x85, 0x0d, 0x80, 0x07, 0x1e, 0x3c, 0x78, +0x30, 0xff, 0x63, 0x70, 0xc4, 0xd8, 0x0c, 0x45, 0x22, 0xe7, 0x20, 0xe4, +0x80, 0x54, 0x39, 0x99, 0xb5, 0x00, 0x0f, 0x12, 0x19, 0xca, 0x4e, 0x09, +0x7f, 0x80, 0xa6, 0x11, 0xac, 0x21, 0x62, 0x8c, 0x30, 0x30, 0x25, 0x90, +0xa0, 0x7c, 0xba, 0xe2, 0x56, 0xe7, 0x57, 0x26, 0x40, 0x29, 0x2b, 0xd0, +0x82, 0x08, 0x84, 0x62, 0x80, 0x7c, 0x05, 0x48, 0x78, 0x42, 0x76, 0x53, +0x58, 0x01, 0xd7, 0xc2, 0x5e, 0x94, 0x80, 0xc4, 0x38, 0x14, 0x9b, 0xd1, +0x0b, 0x93, 0x05, 0xb2, 0xa6, 0xf6, 0xaf, 0x85, 0xf5, 0xe9, 0x41, 0x31, +0xf6, 0x2f, 0x24, 0x0f, 0x9b, 0xe8, 0x03, 0x2a, 0x4d, 0xf0, 0xbc, 0x1c, +0xbc, 0x3f, 0x0f, 0xd7, 0xa2, 0xbd, 0x10, 0xc3, 0xaf, 0xea, 0x06, 0x70, +0x26, 0x92, 0x15, 0x46, 0x36, 0x56, 0x98, 0x75, 0x36, 0x68, 0xe4, 0xd8, +0x85, 0x2d, 0xcb, 0xbf, 0x5b, 0x8e, 0x8f, 0x06, 0xa8, 0x57, 0x12, 0x21, +0x64, 0x08, 0xa9, 0x83, 0x6d, 0x1b, 0x5e, 0x87, 0xef, 0x88, 0x1d, 0x0d, +0x7a, 0x45, 0x4b, 0x31, 0x5b, 0x3e, 0x50, 0x0b, 0xd9, 0xec, 0x48, 0x42, +0xe4, 0xbd, 0xa3, 0xfe, 0xf1, 0xea, 0x99, 0x06, 0xab, 0xc1, 0xc1, 0xdc, +0xa0, 0x7b, 0x0e, 0x88, 0x01, 0x55, 0x01, 0xea, 0x84, 0x00, 0x10, 0x77, +0x11, 0x10, 0x90, 0x91, 0x38, 0xa0, 0x04, 0x7e, 0x85, 0x24, 0x38, 0x01, +0x29, 0x7d, 0xc6, 0x8c, 0x19, 0x10, 0x06, 0xd2, 0x2f, 0x54, 0x41, 0x2e, +0x34, 0x12, 0x0a, 0x7b, 0x1c, 0xf5, 0x48, 0x91, 0xae, 0xf1, 0x35, 0x31, +0x0d, 0xb6, 0xe3, 0xde, 0xbd, 0x7b, 0x43, 0x63, 0x8c, 0x09, 0x75, 0x71, +0x3e, 0xe4, 0xb7, 0x70, 0xe1, 0x42, 0x79, 0x7c, 0x54, 0x4a, 0x7e, 0xa5, +0xb5, 0x39, 0x37, 0xe2, 0x76, 0xcc, 0x87, 0xff, 0xa1, 0x55, 0x28, 0x4d, +0x95, 0xc1, 0x46, 0x06, 0xb1, 0xd4, 0xdf, 0xec, 0xf2, 0x0a, 0x51, 0xd2, +0x11, 0xa2, 0x78, 0x61, 0x50, 0x24, 0x8c, 0x5e, 0xa6, 0x88, 0x70, 0x02, +0x94, 0x31, 0xfd, 0xa2, 0xc8, 0xb2, 0xd3, 0xf3, 0x0c, 0x48, 0x2f, 0xdc, +0x18, 0xc0, 0x20, 0xcc, 0xe8, 0x07, 0xdf, 0xf0, 0x3d, 0x7f, 0xe5, 0x1c, +0xce, 0x14, 0xf1, 0x06, 0x41, 0x08, 0x5e, 0x26, 0x12, 0x0e, 0x78, 0x10, +0x09, 0x87, 0x14, 0x10, 0xe4, 0x25, 0x09, 0x4d, 0x41, 0xb9, 0x14, 0x87, +0xae, 0x30, 0x2b, 0x71, 0x23, 0xb2, 0x95, 0xc2, 0x40, 0x60, 0x1d, 0x08, +0xd9, 0xf8, 0x80, 0x11, 0xc4, 0x09, 0x8e, 0x00, 0x24, 0x1c, 0xfc, 0x8a, +0xb6, 0xc0, 0xd3, 0xf2, 0x57, 0xbe, 0xd4, 0xc3, 0x04, 0x3c, 0x90, 0x17, +0xfa, 0x22, 0x5e, 0x3f, 0x14, 0x53, 0x02, 0xa1, 0xc9, 0xc5, 0x23, 0x61, +0x12, 0x57, 0x20, 0xd1, 0x1f, 0x44, 0x31, 0x10, 0x2a, 0x22, 0x3f, 0xa4, +0x2e, 0x60, 0x67, 0x23, 0x14, 0x9c, 0x64, 0x2e, 0xac, 0x2e, 0x04, 0xae, +0xa1, 0x50, 0x92, 0xf4, 0x6c, 0x39, 0xac, 0x9e, 0xa5, 0x68, 0x1f, 0x12, +0x72, 0x26, 0xb9, 0x44, 0xc0, 0x9e, 0x67, 0xc7, 0x91, 0xa7, 0xbb, 0x17, +0xd4, 0x38, 0x4c, 0x95, 0x40, 0x23, 0x0a, 0x3c, 0x4b, 0x0e, 0x96, 0xde, +0x5b, 0x1a, 0x42, 0x44, 0xcc, 0x90, 0xc5, 0x87, 0x22, 0xf5, 0x4b, 0x38, +0x13, 0x3b, 0x38, 0xee, 0x64, 0x66, 0x8e, 0x17, 0x0c, 0x83, 0x8f, 0xfa, +0x2b, 0x91, 0x04, 0xc4, 0x23, 0x63, 0x32, 0x46, 0x7f, 0x25, 0xa7, 0x12, +0x77, 0xbb, 0xa1, 0xd6, 0x1b, 0x34, 0xc7, 0x2e, 0x8e, 0x84, 0xa6, 0x87, +0xe8, 0xb9, 0x7b, 0x2e, 0xf6, 0x63, 0x11, 0x86, 0x99, 0x09, 0x3b, 0x3d, +0x2c, 0x5a, 0x91, 0x01, 0xe2, 0xae, 0x1c, 0x22, 0xe5, 0x22, 0x1a, 0x41, +0x03, 0xd0, 0x28, 0x26, 0x10, 0x14, 0x3c, 0xfe, 0x87, 0x96, 0xd8, 0x1c, +0xf9, 0x1e, 0x01, 0x18, 0x3a, 0x11, 0x53, 0x21, 0x72, 0x01, 0xdb, 0x1c, +0x07, 0x9b, 0x20, 0x7b, 0x1f, 0x3b, 0x32, 0x34, 0xc3, 0xe5, 0x0c, 0x22, +0x62, 0x33, 0xb7, 0x90, 0x31, 0x21, 0x30, 0x2a, 0x48, 0xf0, 0x27, 0x75, +0xf0, 0x2b, 0x5f, 0x0a, 0x41, 0x62, 0xc3, 0x14, 0x61, 0x0c, 0x49, 0x04, +0x79, 0x07, 0x52, 0x61, 0x85, 0xdd, 0xe5, 0x6a, 0xdb, 0xe5, 0x15, 0xa0, +0x42, 0x59, 0xa2, 0x90, 0x7d, 0x19, 0x14, 0xa6, 0xc1, 0xc6, 0xcc, 0x3e, +0x8d, 0x49, 0x87, 0x3b, 0xc1, 0xe3, 0xc0, 0x09, 0xf2, 0x0f, 0x54, 0xce, +0xbd, 0xf1, 0xd1, 0x32, 0x7b, 0x1e, 0x95, 0xff, 0x39, 0xf8, 0x86, 0xef, +0x11, 0x78, 0x30, 0x3e, 0x3e, 0xf8, 0xe0, 0x83, 0x3c, 0x1b, 0xaf, 0x9f, +0x2a, 0xd0, 0xec, 0xee, 0xd4, 0x24, 0x96, 0xdd, 0x1d, 0xbc, 0x41, 0x10, +0xe0, 0x01, 0x1d, 0x08, 0xce, 0x60, 0x99, 0x05, 0x22, 0xf0, 0x10, 0xbe, +0x01, 0x3c, 0x60, 0x1d, 0x9c, 0x8f, 0xd5, 0x19, 0x9c, 0x88, 0xac, 0x85, +0x50, 0xce, 0xf7, 0x8c, 0xa0, 0xfb, 0x7d, 0xf4, 0x57, 0x88, 0xeb, 0x00, +0xb2, 0x20, 0xd1, 0x9e, 0xe8, 0x20, 0x48, 0x3f, 0xc0, 0x22, 0x0c, 0x58, +0xd9, 0x01, 0x0c, 0x50, 0xd1, 0x93, 0xee, 0x75, 0x55, 0x18, 0xeb, 0x87, +0x6e, 0xc2, 0xc2, 0xce, 0x43, 0x96, 0x8f, 0xb2, 0xd5, 0xe0, 0x67, 0xc0, +0x4a, 0xa3, 0x77, 0xbe, 0x64, 0x2f, 0x64, 0x6d, 0xe1, 0x93, 0xd0, 0x96, +0x9a, 0x36, 0x79, 0x88, 0x18, 0x94, 0x08, 0x4a, 0x35, 0xcf, 0x56, 0x5a, +0x5a, 0xca, 0x81, 0x7e, 0xc2, 0x76, 0x03, 0x85, 0xb1, 0xe0, 0x3a, 0x32, +0xc9, 0xdf, 0x30, 0x9b, 0x59, 0x99, 0x39, 0x46, 0x4c, 0xcb, 0xf4, 0x46, +0x3d, 0x61, 0xcd, 0xdc, 0xc2, 0xdc, 0x2b, 0xce, 0xc9, 0x1c, 0x84, 0x1c, +0xd9, 0x28, 0xf1, 0x09, 0x20, 0x53, 0x08, 0x01, 0x70, 0x40, 0x12, 0x1c, +0x4c, 0x8f, 0x03, 0x4a, 0x80, 0x5a, 0xd8, 0x0a, 0xe1, 0x03, 0xec, 0x86, +0x90, 0x29, 0x32, 0x33, 0xf4, 0x80, 0x39, 0x84, 0x2d, 0x92, 0x3f, 0x41, +0x27, 0x10, 0x15, 0xdf, 0x20, 0x48, 0xb3, 0x4b, 0x72, 0x40, 0x75, 0xec, +0x74, 0x90, 0x1c, 0x57, 0x41, 0x4e, 0x0c, 0xc8, 0xf8, 0x02, 0x2a, 0x86, +0x15, 0x02, 0x03, 0x45, 0x8c, 0x0c, 0x11, 0xf2, 0x3f, 0x07, 0xbf, 0xf2, +0x25, 0x87, 0x92, 0xae, 0xd9, 0xcd, 0x71, 0x92, 0x22, 0x3b, 0x61, 0xd2, +0xb0, 0x8c, 0x1e, 0x10, 0x06, 0xe0, 0x03, 0x2a, 0xc4, 0x12, 0xc2, 0x36, +0xc6, 0x3b, 0x83, 0x10, 0x09, 0x20, 0x81, 0x8e, 0xd9, 0xda, 0x11, 0x54, +0xd8, 0xe3, 0x99, 0xae, 0x08, 0x33, 0x80, 0x1b, 0x9c, 0x50, 0x07, 0x09, +0xc9, 0x5e, 0x0e, 0x3e, 0xf3, 0x0d, 0xdf, 0xf3, 0x90, 0xb2, 0x04, 0xd8, +0x94, 0x78, 0x5a, 0xb6, 0x79, 0x54, 0x05, 0x84, 0x25, 0xb6, 0x76, 0x80, +0xab, 0xc2, 0x42, 0x61, 0x4a, 0x66, 0xbb, 0xa4, 0x32, 0x2a, 0x2b, 0xbe, +0x01, 0x36, 0x98, 0x0c, 0x0f, 0xa0, 0x0e, 0x89, 0x27, 0xe5, 0x57, 0x1e, +0x98, 0x74, 0x36, 0xf5, 0xfe, 0x10, 0x1e, 0x70, 0xe5, 0x52, 0x28, 0x09, +0x18, 0xf8, 0x54, 0x88, 0xc9, 0xa6, 0xcd, 0x9e, 0xd3, 0xcc, 0xb9, 0x94, +0x72, 0x77, 0x3b, 0x7d, 0x0b, 0xb0, 0x8d, 0xaa, 0xa9, 0xb2, 0xcb, 0xf2, +0xda, 0xe0, 0xc6, 0x3a, 0xf1, 0x79, 0xc8, 0xe2, 0xd7, 0x23, 0xff, 0x3a, +0x77, 0xee, 0x0c, 0xa1, 0xb0, 0x3d, 0xb1, 0x07, 0xeb, 0x97, 0xdb, 0x4c, +0x8b, 0x93, 0x87, 0x25, 0xee, 0x46, 0x37, 0x71, 0x5a, 0x5a, 0xc0, 0xd5, +0xe0, 0x48, 0x71, 0x64, 0x3b, 0x11, 0x4f, 0xc5, 0x46, 0xa3, 0xbe, 0x84, +0x4d, 0x31, 0x01, 0x68, 0x91, 0xbd, 0x0f, 0xca, 0x16, 0x02, 0x50, 0x07, +0xbb, 0xa1, 0x6c, 0x88, 0x50, 0x0b, 0x4f, 0x0a, 0xa1, 0xb3, 0x0b, 0x60, +0x53, 0x81, 0x52, 0x75, 0xa9, 0x18, 0x3a, 0x61, 0x11, 0x20, 0x12, 0x38, +0x3f, 0xf4, 0xc6, 0x66, 0x07, 0x79, 0x80, 0x0d, 0xe8, 0x0d, 0x4a, 0x63, +0x04, 0xf0, 0x83, 0xe9, 0x85, 0xf1, 0x01, 0x89, 0x10, 0x18, 0x52, 0x16, +0xc3, 0x72, 0x40, 0x84, 0x1c, 0x7c, 0x00, 0x72, 0x50, 0x1d, 0x07, 0x60, +0xe0, 0x33, 0x5f, 0xc2, 0x70, 0xb8, 0x97, 0x84, 0x8e, 0xbb, 0xdb, 0x79, +0x7d, 0x43, 0x85, 0x99, 0x2e, 0x21, 0x41, 0xd2, 0x2d, 0xd8, 0xad, 0x21, +0x6b, 0x66, 0x8f, 0xf4, 0xc2, 0xa4, 0x31, 0x16, 0x51, 0xee, 0x85, 0xed, +0x1f, 0x66, 0xc2, 0x24, 0xf8, 0x9f, 0xcf, 0x3c, 0x1e, 0xe0, 0x01, 0x06, +0x3c, 0x3c, 0x92, 0x0f, 0x8f, 0x07, 0xae, 0x44, 0x73, 0x90, 0x28, 0x14, +0x11, 0x93, 0x3c, 0xc4, 0xb8, 0xdb, 0xf9, 0x93, 0x0c, 0xc2, 0x80, 0x7a, +0x4b, 0x0d, 0x36, 0xda, 0xf2, 0xcb, 0x8b, 0x12, 0x4a, 0x22, 0x9d, 0xc0, +0xdc, 0xbd, 0x12, 0x2a, 0xb1, 0x99, 0xbb, 0x8b, 0x6f, 0x47, 0x91, 0x14, +0x7a, 0x27, 0x2f, 0x0f, 0x05, 0x43, 0x7d, 0x43, 0x81, 0x71, 0x0f, 0x48, +0xd6, 0x1b, 0xcf, 0x61, 0xd1, 0x67, 0x77, 0xe4, 0x72, 0x44, 0x6a, 0x75, +0x39, 0x19, 0xe1, 0xf6, 0xb1, 0xcd, 0x99, 0x3a, 0xf3, 0xc9, 0xcc, 0x34, +0x46, 0x2e, 0x13, 0xa2, 0x42, 0x35, 0x78, 0x50, 0xea, 0x4a, 0x33, 0xfc, +0xa1, 0xd1, 0x04, 0x81, 0xb7, 0xba, 0x8b, 0x06, 0x05, 0x92, 0xcd, 0x5b, +0x4c, 0x88, 0x6c, 0x7f, 0x42, 0x00, 0xea, 0x80, 0x12, 0x38, 0xc4, 0x32, +0x2e, 0xa2, 0x32, 0xbc, 0x5d, 0x36, 0x32, 0xe8, 0x01, 0x7a, 0x65, 0xab, +0x65, 0xaf, 0x14, 0x3a, 0x91, 0x8e, 0xa6, 0xc8, 0x39, 0x72, 0x40, 0x6c, +0xec, 0x9e, 0x90, 0x35, 0xa3, 0xb1, 0x11, 0x33, 0x38, 0xb8, 0xe2, 0x03, +0xbf, 0xf2, 0xc6, 0x45, 0x90, 0x86, 0xc6, 0x20, 0x42, 0x39, 0xf8, 0x15, +0x6a, 0xe4, 0x4f, 0xf2, 0x57, 0xfe, 0x04, 0xc3, 0x01, 0x5d, 0xdc, 0xce, +0x1c, 0x63, 0xa6, 0x13, 0x98, 0x0f, 0xbc, 0x42, 0xbf, 0x4c, 0xf8, 0x06, +0x13, 0xd5, 0x85, 0x19, 0x08, 0x1d, 0xc6, 0x84, 0x14, 0xc4, 0xc3, 0x08, +0xd7, 0x53, 0x07, 0xdf, 0x70, 0xf0, 0x57, 0xce, 0x61, 0x21, 0x54, 0xf6, +0x8c, 0x0a, 0x90, 0xb6, 0x43, 0xf4, 0x5e, 0xcf, 0x11, 0x36, 0xc2, 0xfa, +0x62, 0x90, 0xf6, 0x9b, 0x2c, 0x7c, 0xa2, 0x21, 0x39, 0x59, 0x27, 0x4d, +0x7d, 0x93, 0xb6, 0x59, 0x94, 0x44, 0x2f, 0x63, 0x4e, 0xdc, 0x17, 0x52, +0xb5, 0x3e, 0x88, 0x87, 0x24, 0x04, 0x6e, 0x4d, 0x07, 0x67, 0x75, 0x32, +0xec, 0x91, 0x1d, 0x9a, 0x5d, 0x56, 0x8f, 0x8e, 0xf1, 0xa9, 0xda, 0x22, +0xba, 0x87, 0x4e, 0xdf, 0x28, 0xd9, 0x6a, 0x70, 0x04, 0x3f, 0x77, 0x49, +0xed, 0x27, 0xd7, 0x94, 0xe6, 0x3f, 0x61, 0x63, 0x45, 0x76, 0x12, 0xdf, +0x0b, 0x94, 0x0d, 0x89, 0x2b, 0x1a, 0x40, 0xb8, 0xe0, 0x33, 0xff, 0x73, +0x40, 0xfd, 0xfa, 0xb6, 0x28, 0x84, 0x24, 0xd9, 0x54, 0x90, 0x07, 0xc2, +0xb0, 0xc8, 0x0e, 0xaa, 0x9e, 0x9f, 0xf2, 0xd8, 0xf0, 0x72, 0xf9, 0xab, +0x08, 0x54, 0x6c, 0xc4, 0xfc, 0xcf, 0xc1, 0x80, 0x50, 0x17, 0x63, 0x72, +0x40, 0x63, 0xea, 0xe0, 0x57, 0xa8, 0x51, 0x08, 0x52, 0xfe, 0x04, 0xcf, +0x81, 0xe2, 0x11, 0x46, 0x3c, 0x6f, 0xc1, 0x7e, 0xa2, 0x42, 0xe7, 0x1b, +0x42, 0x8b, 0xa2, 0x0d, 0x73, 0x3f, 0x1e, 0xcf, 0xdd, 0xc1, 0x5f, 0x05, +0xf4, 0xca, 0xf2, 0xe8, 0x95, 0xd0, 0x7d, 0x3a, 0x81, 0x99, 0x30, 0x38, +0xcb, 0x7a, 0xe9, 0xa5, 0x97, 0xaa, 0xd7, 0x89, 0x53, 0xd6, 0x0f, 0x42, +0xf7, 0xe9, 0x12, 0xcb, 0x8a, 0xf9, 0xf6, 0x73, 0x97, 0xf5, 0x94, 0x43, +0xb6, 0x79, 0x4c, 0x3d, 0x6a, 0xf2, 0x48, 0x26, 0x9e, 0x43, 0x30, 0xf5, +0x3c, 0x04, 0xf4, 0x19, 0x04, 0x68, 0xf6, 0x69, 0x75, 0x39, 0xa6, 0x24, +0x0f, 0xb5, 0x70, 0xcc, 0xcf, 0xa8, 0x67, 0x90, 0x13, 0x77, 0xa4, 0xbb, +0xc3, 0x31, 0x42, 0xb8, 0x5b, 0x13, 0x1d, 0xd5, 0x48, 0x71, 0x88, 0x4f, +0x18, 0xcd, 0xd9, 0xc8, 0x21, 0x5f, 0x69, 0x33, 0x67, 0x3e, 0x84, 0x12, +0x74, 0x19, 0x41, 0xb7, 0xa9, 0x28, 0x22, 0x31, 0xec, 0xe8, 0xba, 0xf0, +0xcc, 0x98, 0x58, 0x90, 0xf4, 0x91, 0x19, 0x53, 0x11, 0x98, 0x90, 0xa2, +0x3a, 0x38, 0x4d, 0x3e, 0xdb, 0x24, 0xbc, 0x40, 0x51, 0x21, 0x54, 0x2b, +0x8f, 0x04, 0xf7, 0xe0, 0x10, 0x84, 0x58, 0x1e, 0x72, 0x82, 0x32, 0x2b, +0xf9, 0x44, 0xf1, 0x76, 0x4e, 0x66, 0x70, 0x9e, 0x9c, 0x5d, 0x41, 0xdf, +0x2c, 0x2d, 0x2b, 0xcd, 0xf8, 0x44, 0xf4, 0x9e, 0x4f, 0x76, 0xd7, 0xcb, +0xdd, 0x32, 0xc7, 0xc8, 0x72, 0x28, 0x3d, 0x47, 0x0c, 0xdf, 0xa2, 0xce, +0x28, 0xdc, 0x95, 0x0f, 0x53, 0xe3, 0x50, 0xed, 0x41, 0x9d, 0x8f, 0x0e, +0x80, 0xf6, 0x89, 0x17, 0x48, 0x7d, 0x03, 0xde, 0xec, 0x3f, 0x29, 0x72, +0x60, 0xdd, 0x9c, 0x52, 0xab, 0x1a, 0x06, 0x59, 0xdd, 0xe8, 0xe4, 0xae, +0x83, 0x04, 0xf1, 0xce, 0xba, 0x19, 0x17, 0x23, 0x87, 0xc4, 0x38, 0x22, +0x45, 0xb3, 0xd3, 0x4b, 0xeb, 0x20, 0xf3, 0xa1, 0x28, 0xc1, 0xf0, 0x5a, +0x15, 0x6d, 0x28, 0x3a, 0x31, 0x9f, 0xe0, 0x8e, 0xc6, 0x64, 0x4c, 0xcb, +0x43, 0xc0, 0xe0, 0x6e, 0x4c, 0x33, 0x69, 0x05, 0x07, 0x15, 0x76, 0x48, +0xb6, 0x02, 0xce, 0x11, 0xf3, 0x14, 0xbb, 0x94, 0xbe, 0x59, 0x06, 0x25, +0xdb, 0xdb, 0x03, 0x6d, 0x61, 0xd0, 0x34, 0x9b, 0x65, 0x7c, 0xea, 0x64, +0x45, 0x5d, 0x1c, 0x35, 0x82, 0x1e, 0x34, 0x30, 0xa8, 0xb3, 0x77, 0x9a, +0x26, 0xef, 0x59, 0x5d, 0x8b, 0xf3, 0x0e, 0xcb, 0xa6, 0x6e, 0x66, 0xf0, +0xa9, 0x91, 0x85, 0xa1, 0x60, 0x14, 0x1e, 0x06, 0x35, 0x32, 0x55, 0x4b, +0xdc, 0xad, 0x80, 0xce, 0x5e, 0x30, 0x25, 0x23, 0xfe, 0x89, 0x87, 0xc1, +0x5d, 0x8f, 0xb9, 0x0a, 0x20, 0x83, 0xc0, 0x6f, 0x11, 0x6e, 0xa8, 0x60, +0x73, 0xd2, 0x9d, 0x5f, 0x3e, 0x35, 0x9a, 0xb1, 0xbf, 0xad, 0xaa, 0x33, +0x51, 0x34, 0xf5, 0x50, 0x36, 0x45, 0x46, 0x38, 0x37, 0xec, 0x8f, 0x66, +0x59, 0x22, 0x0d, 0x0b, 0xb2, 0x9d, 0x92, 0x7e, 0xc4, 0x9f, 0xea, 0x98, +0xc4, 0x3d, 0xaa, 0x7e, 0x25, 0xc2, 0xdc, 0x7e, 0xe3, 0x18, 0xc6, 0xd1, +0x63, 0xce, 0x89, 0xc2, 0xd0, 0x05, 0x39, 0x0f, 0x59, 0x03, 0xaa, 0xc3, +0x37, 0xf7, 0xc5, 0x85, 0x27, 0x85, 0x33, 0xd0, 0xb3, 0xd1, 0x95, 0xdd, +0xf9, 0xc8, 0x02, 0xa7, 0xda, 0xf2, 0x1e, 0x21, 0xac, 0x50, 0x21, 0x6e, +0x3e, 0xdc, 0x99, 0x8a, 0x32, 0xdc, 0xf5, 0xd2, 0xb6, 0x4f, 0xb2, 0x9e, +0xcf, 0xc4, 0xed, 0x65, 0x66, 0x14, 0x64, 0x84, 0xfa, 0x34, 0xbe, 0x9e, +0x41, 0xaa, 0x46, 0x73, 0xd7, 0xf8, 0xc7, 0x3c, 0x32, 0xc9, 0x89, 0xea, +0x2a, 0x3d, 0x93, 0xd3, 0xa7, 0xc6, 0x31, 0xe7, 0xb6, 0xf6, 0xd7, 0x1f, +0x04, 0x41, 0x4e, 0x4f, 0xba, 0xa4, 0x66, 0x8c, 0xe5, 0x13, 0x19, 0xfc, +0x7d, 0x84, 0xeb, 0xe3, 0x37, 0xc0, 0x48, 0x8a, 0x95, 0x09, 0x05, 0xd7, +0x9c, 0xe3, 0x56, 0xde, 0xd4, 0x1c, 0xac, 0xf1, 0xc3, 0x0d, 0x15, 0xd8, +0x28, 0xf4, 0xe6, 0x29, 0xbc, 0x6c, 0x9f, 0x08, 0xd4, 0xd7, 0x93, 0x2d, +0x09, 0xda, 0xd7, 0x84, 0x1e, 0x73, 0xe9, 0x41, 0x62, 0x2e, 0xec, 0x37, +0x31, 0xd1, 0x43, 0xf4, 0xf5, 0x5a, 0x4f, 0x3e, 0xd5, 0xef, 0xd0, 0x35, +0x7e, 0x22, 0xa9, 0x08, 0xa3, 0x50, 0x20, 0xc1, 0xf9, 0xed, 0x2e, 0x77, +0xf7, 0xaa, 0x09, 0xa5, 0x45, 0x06, 0x08, 0x7c, 0x24, 0x6a, 0x41, 0x35, +0x23, 0xc5, 0xe6, 0x21, 0xa1, 0x09, 0xc1, 0xa2, 0xd4, 0x8a, 0x1c, 0x27, +0xac, 0x50, 0xc1, 0xe6, 0x84, 0xa7, 0x5c, 0xbd, 0x4e, 0x36, 0x51, 0x0f, +0xe5, 0x86, 0x7c, 0x05, 0x80, 0xf9, 0x7c, 0xc3, 0x4e, 0x29, 0xf7, 0xa5, +0x62, 0x9a, 0xaf, 0xf9, 0x93, 0x7a, 0xa1, 0x5b, 0x19, 0xc4, 0xa7, 0xe2, +0xdb, 0x96, 0x65, 0xcc, 0x81, 0x8a, 0x7d, 0x7f, 0xa5, 0x9e, 0xe9, 0xcf, +0xdd, 0xd1, 0x28, 0xc8, 0x51, 0x51, 0xcb, 0x48, 0x90, 0x88, 0xe5, 0x5a, +0xe1, 0x17, 0xa7, 0x40, 0xa8, 0x3a, 0x8d, 0x78, 0x13, 0x62, 0x7f, 0xf0, +0xaf, 0xc1, 0x28, 0x24, 0xef, 0x5c, 0xb4, 0xdb, 0x8a, 0xa4, 0xe6, 0x60, +0xdd, 0x2b, 0xac, 0x50, 0x81, 0x52, 0x41, 0xac, 0x81, 0x7a, 0x4f, 0xf6, +0x53, 0x93, 0x31, 0xbf, 0xb0, 0x59, 0x92, 0x4b, 0x44, 0xd1, 0x37, 0xf6, +0x3f, 0xa2, 0xa1, 0x08, 0xaf, 0xa0, 0x44, 0x08, 0xb9, 0x6c, 0x1e, 0x94, +0x75, 0xa4, 0x6d, 0xb3, 0xf8, 0x84, 0xef, 0xc2, 0x57, 0xbc, 0x19, 0x92, +0x48, 0x3d, 0xbb, 0xed, 0xcc, 0x83, 0xab, 0x04, 0x51, 0x7d, 0x32, 0x74, +0xe8, 0xb3, 0x3f, 0x0d, 0xc2, 0x49, 0xd4, 0xb5, 0xf4, 0x13, 0xd3, 0xad, +0x58, 0x7c, 0x4f, 0xe9, 0x51, 0xcb, 0xa1, 0xf4, 0x56, 0x5a, 0x44, 0x4c, +0xe3, 0x95, 0xc7, 0x28, 0x4c, 0xe0, 0x06, 0x7a, 0xb6, 0x87, 0xbe, 0x41, +0xc1, 0x22, 0xdc, 0x72, 0x1d, 0x27, 0x7c, 0x50, 0xc1, 0xb6, 0xc4, 0xfe, +0x44, 0x10, 0xa5, 0x7a, 0xc1, 0xb7, 0x5c, 0xde, 0xc1, 0x26, 0x65, 0x60, +0xbd, 0x35, 0xd3, 0xb7, 0xfa, 0x86, 0x80, 0x11, 0x72, 0x09, 0x49, 0x22, +0x23, 0x82, 0x70, 0xee, 0x88, 0x26, 0xc0, 0x46, 0xf2, 0xd1, 0xcc, 0xe4, +0x48, 0x98, 0x9d, 0x1f, 0x99, 0x9f, 0x86, 0xdc, 0x34, 0xcf, 0x6e, 0x3b, +0xf3, 0x13, 0x59, 0x06, 0xc3, 0x9e, 0xd9, 0xd0, 0xd7, 0xe6, 0xb3, 0x13, +0x0f, 0xa2, 0xa7, 0x0a, 0x13, 0xaf, 0xa1, 0x47, 0x55, 0x12, 0x8c, 0xe8, +0x6e, 0x1c, 0x3d, 0xd1, 0x8f, 0x40, 0x5a, 0xa2, 0xf4, 0x88, 0xd0, 0xc6, +0xd9, 0x4c, 0x08, 0x4f, 0xe8, 0xea, 0xd9, 0x02, 0xb6, 0x30, 0x41, 0x85, +0xf8, 0xef, 0x60, 0xdc, 0x7a, 0x80, 0xfe, 0xdb, 0x47, 0x47, 0xd8, 0xa4, +0x0c, 0x38, 0x03, 0x8d, 0x49, 0xc9, 0x66, 0xd6, 0x83, 0x49, 0x3d, 0xe0, +0xc4, 0xdd, 0x9f, 0x28, 0x10, 0x68, 0xf3, 0x8e, 0xfa, 0x69, 0xaa, 0x09, +0x2f, 0xc3, 0x7a, 0x75, 0xdb, 0x99, 0xc7, 0x37, 0xa7, 0xbf, 0x93, 0xe4, +0x69, 0xbf, 0x8a, 0x8f, 0x9e, 0x24, 0x4d, 0x55, 0x66, 0x22, 0xae, 0xf5, +0xa7, 0x73, 0x87, 0x2e, 0x52, 0xf0, 0x75, 0x2d, 0x9f, 0x40, 0x6e, 0x52, +0x6e, 0x08, 0x7c, 0x22, 0xb6, 0x02, 0x7f, 0x51, 0xe8, 0x6a, 0x14, 0x61, +0x85, 0x0a, 0x3c, 0x15, 0xec, 0x4f, 0x7a, 0x61, 0x1e, 0x12, 0x0f, 0x7c, +0x95, 0xef, 0x85, 0xe0, 0xc8, 0x7c, 0x27, 0x74, 0x9c, 0xb4, 0xfa, 0x9d, +0x57, 0x15, 0x12, 0x14, 0x44, 0xa8, 0x36, 0x3d, 0x19, 0x70, 0x6f, 0x79, +0xad, 0xac, 0x43, 0x8a, 0xb0, 0x87, 0x0e, 0x1b, 0x1e, 0x26, 0xa3, 0x97, +0x8f, 0xf7, 0xea, 0xb6, 0x33, 0xa0, 0x02, 0xd6, 0x64, 0x86, 0xa8, 0xcd, +0xd6, 0x5b, 0x0c, 0x45, 0x10, 0x87, 0x5e, 0x93, 0x8e, 0xca, 0x0f, 0x7a, +0x66, 0x48, 0x8f, 0xd6, 0x6e, 0xcb, 0xd7, 0xea, 0xed, 0x51, 0x50, 0xf1, +0x25, 0x6f, 0x81, 0x38, 0x3c, 0xa2, 0x9b, 0x3c, 0x57, 0xbd, 0x2f, 0x57, +0xc9, 0x27, 0x58, 0x83, 0x87, 0x09, 0xaf, 0x40, 0xcf, 0x26, 0xb8, 0x40, +0x0f, 0xf4, 0xa0, 0x83, 0x8e, 0x1f, 0xdb, 0xb6, 0x87, 0x4b, 0xa0, 0x78, +0x6a, 0x45, 0xb2, 0x77, 0xba, 0x63, 0x14, 0xd4, 0xfd, 0xf6, 0x70, 0x39, +0xfd, 0x90, 0xdc, 0xfd, 0x55, 0x55, 0x85, 0xf2, 0xdc, 0x48, 0x8d, 0x06, +0x28, 0xe6, 0x11, 0x08, 0x7c, 0x34, 0xcf, 0xc7, 0x3e, 0xb4, 0x10, 0x32, +0xd5, 0xe5, 0x84, 0x78, 0xe8, 0xdd, 0xd3, 0xd9, 0x05, 0xc8, 0x30, 0x71, +0x37, 0x67, 0xdd, 0xf8, 0x46, 0x89, 0x2d, 0x72, 0x06, 0x09, 0xff, 0x26, +0x1a, 0x9a, 0xa8, 0x24, 0x82, 0xdc, 0x42, 0x54, 0xc9, 0x56, 0xa0, 0x0a, +0x13, 0x54, 0xa0, 0x67, 0xb3, 0x45, 0xe9, 0xc9, 0x00, 0xf6, 0x8b, 0xd8, +0xf9, 0x04, 0x1e, 0xbd, 0x86, 0x8a, 0x9e, 0x94, 0x4b, 0x71, 0x13, 0xcf, +0x25, 0x77, 0x0f, 0xae, 0x74, 0x8b, 0x19, 0xc9, 0xa7, 0xf3, 0xea, 0xb6, +0xb3, 0x6c, 0x19, 0x4c, 0x98, 0x93, 0x01, 0x15, 0x54, 0xe3, 0xb5, 0xd9, +0x14, 0x0a, 0x1b, 0x03, 0xd3, 0x56, 0x97, 0x13, 0xe2, 0xa1, 0x0f, 0x45, +0x1b, 0x1a, 0x77, 0x2b, 0x63, 0x08, 0x72, 0x21, 0xf7, 0x4d, 0xea, 0x7b, +0x63, 0x7d, 0x92, 0xbc, 0x85, 0x60, 0xed, 0xd9, 0x95, 0x35, 0x4e, 0x98, +0xa0, 0x82, 0x37, 0xa1, 0x77, 0xd5, 0xc0, 0x58, 0x69, 0x5f, 0xb0, 0xf6, +0x09, 0x15, 0x1f, 0x9f, 0x28, 0x35, 0xe4, 0xeb, 0xe9, 0xd1, 0x9e, 0xbb, +0x41, 0x53, 0x35, 0xd0, 0x83, 0xb1, 0x55, 0x48, 0xd3, 0xb3, 0xdb, 0x0e, +0xa1, 0x8e, 0x3e, 0xed, 0xe6, 0xa9, 0x52, 0x1b, 0xd7, 0x80, 0x8a, 0xcb, +0x47, 0xdb, 0x6d, 0x88, 0x8a, 0x16, 0xa4, 0x5f, 0xab, 0xab, 0x64, 0x00, +0xd5, 0x43, 0x49, 0x42, 0xbd, 0xe4, 0x3d, 0x01, 0x26, 0x88, 0x4f, 0xd2, +0x43, 0x19, 0xf1, 0x89, 0xa0, 0x54, 0x44, 0xd9, 0xca, 0xa2, 0xe6, 0x60, +0xdd, 0x37, 0x1c, 0x50, 0x01, 0xbf, 0x86, 0x6b, 0xeb, 0x4d, 0xc9, 0x48, +0x53, 0xf6, 0x89, 0xd6, 0xed, 0x9f, 0x4c, 0xbf, 0x12, 0xb3, 0xc4, 0x82, +0xd9, 0xde, 0xb3, 0x63, 0x84, 0x6d, 0xde, 0x83, 0x7c, 0x45, 0x15, 0x29, +0xaf, 0x6e, 0x3b, 0x22, 0x08, 0x2d, 0x43, 0xfd, 0xcc, 0x3e, 0x13, 0x92, +0x57, 0x6d, 0x3e, 0x0e, 0x95, 0xbb, 0xd4, 0xb3, 0xe8, 0x7c, 0x0f, 0xae, +0xe5, 0xa1, 0x3f, 0xa0, 0xde, 0x64, 0x9e, 0xcb, 0x71, 0x53, 0xe0, 0xbc, +0x23, 0x01, 0x88, 0xec, 0x05, 0x62, 0xb6, 0x25, 0xd5, 0x3e, 0x58, 0xd4, +0x59, 0x59, 0xe3, 0x84, 0x09, 0x2a, 0x10, 0x9f, 0xf4, 0x5a, 0xb4, 0xe5, +0xd7, 0x94, 0x4c, 0xcf, 0xde, 0x54, 0x24, 0xe5, 0xb5, 0xf3, 0x2a, 0x3d, +0x5a, 0xcf, 0x6e, 0x76, 0x5b, 0xc1, 0x92, 0x6a, 0xb9, 0x9e, 0xab, 0xcf, +0x93, 0x47, 0xce, 0xbd, 0xc6, 0xf6, 0xae, 0x67, 0x26, 0x77, 0xba, 0x2b, +0xe9, 0x28, 0xc5, 0x2a, 0x60, 0xd3, 0x34, 0x8c, 0x8f, 0xcf, 0x9d, 0x82, +0xe4, 0xb9, 0x30, 0x26, 0xf9, 0x8c, 0xfa, 0x85, 0x52, 0xaf, 0x09, 0x3d, +0x9b, 0x6c, 0x07, 0xde, 0x82, 0xa1, 0x92, 0x55, 0x65, 0x91, 0x75, 0x80, +0xf7, 0x0d, 0x79, 0x54, 0x48, 0x04, 0x3b, 0x7b, 0x95, 0xee, 0x5e, 0xb0, +0xef, 0xd6, 0xb5, 0xb9, 0xad, 0xca, 0x69, 0x84, 0x6d, 0x9b, 0x9b, 0xf3, +0x12, 0x1d, 0xe8, 0x39, 0x2c, 0xf7, 0xcd, 0xc3, 0xae, 0xc2, 0x02, 0xf8, +0x8f, 0xdd, 0xdd, 0x8b, 0x32, 0x98, 0x1e, 0x26, 0x8c, 0xf4, 0x8f, 0xc9, +0x98, 0x11, 0x2c, 0xdb, 0x4a, 0x91, 0x13, 0xa7, 0xd3, 0x28, 0x95, 0x0e, +0x6d, 0x3e, 0x11, 0x66, 0x6b, 0x4b, 0x54, 0x50, 0x01, 0xd6, 0xf3, 0x08, +0x7a, 0x19, 0x63, 0x22, 0xf6, 0x0d, 0x75, 0xd4, 0x43, 0xd7, 0x9f, 0xad, +0x03, 0x29, 0xe4, 0x51, 0x21, 0x29, 0x81, 0xf3, 0xe7, 0xcf, 0x57, 0xef, +0x18, 0xef, 0x92, 0x4d, 0xca, 0xf0, 0xf5, 0x34, 0x44, 0x76, 0x33, 0x25, +0x79, 0x6d, 0x32, 0x22, 0xe5, 0xf8, 0x3d, 0x94, 0x4d, 0xb8, 0x67, 0x5d, +0x1f, 0x0f, 0x33, 0xd9, 0x75, 0xd5, 0xc5, 0x56, 0xdc, 0x96, 0xf6, 0x56, +0x5c, 0x7e, 0xfa, 0x94, 0x50, 0x3f, 0x6c, 0x3e, 0x94, 0xea, 0xc3, 0xa2, +0x2e, 0x47, 0x70, 0xa2, 0xb5, 0x9f, 0xe7, 0xcb, 0x41, 0xaf, 0xee, 0xbb, +0x24, 0x93, 0x96, 0xd8, 0x75, 0xac, 0x4f, 0x1e, 0xea, 0xa8, 0x07, 0xb8, +0x6d, 0x57, 0xca, 0xe5, 0x21, 0x8f, 0x0a, 0xc9, 0xa9, 0xd0, 0xad, 0x4f, +0xd4, 0x39, 0xb7, 0x49, 0x19, 0x3e, 0x9d, 0x06, 0x19, 0xe9, 0xe9, 0x35, +0x42, 0x4c, 0xa8, 0xf5, 0x96, 0xb5, 0xe6, 0xd5, 0xc8, 0x52, 0x8e, 0x9f, +0xa0, 0x6e, 0x0f, 0xfe, 0x0a, 0x0f, 0x7f, 0x22, 0x14, 0x5c, 0x55, 0x00, +0xb1, 0x6c, 0x20, 0x86, 0xf0, 0xa6, 0xc8, 0xda, 0xa7, 0x02, 0xd2, 0x8c, +0xac, 0x37, 0x7f, 0x42, 0xbd, 0xb6, 0xd3, 0xea, 0x49, 0x77, 0xf9, 0x11, +0x54, 0x4b, 0xc9, 0x19, 0xa9, 0xc3, 0x47, 0x7a, 0xb4, 0xbb, 0xea, 0x94, +0x95, 0x42, 0xd6, 0x01, 0xde, 0x34, 0xb4, 0x51, 0x81, 0xf8, 0x84, 0x4d, +0x96, 0x2a, 0x29, 0x8a, 0x32, 0xf0, 0x49, 0x05, 0xab, 0xab, 0x95, 0x8e, +0x19, 0x2c, 0x5a, 0x7a, 0x19, 0x0b, 0x75, 0x3b, 0x0a, 0x80, 0x7b, 0x86, +0x16, 0x75, 0x71, 0x38, 0xb9, 0x7e, 0x9e, 0xdb, 0xac, 0x1d, 0xcf, 0x97, +0xeb, 0xb5, 0x05, 0x2c, 0x65, 0x1b, 0x44, 0x26, 0x35, 0x19, 0xcb, 0x0a, +0x37, 0x1e, 0xc6, 0xc7, 0x13, 0x07, 0x62, 0xf1, 0x51, 0xc2, 0x22, 0xec, +0x14, 0x7c, 0xc0, 0x0d, 0xa2, 0xf3, 0x25, 0x92, 0x51, 0xc5, 0x4d, 0x41, +0xb5, 0x0e, 0xea, 0x0f, 0x84, 0x87, 0x9e, 0x1d, 0xf2, 0xbe, 0x6d, 0xc9, +0xe2, 0x25, 0x10, 0x8d, 0xba, 0xb7, 0xea, 0x6d, 0xb9, 0x0b, 0xf0, 0x34, +0x13, 0x07, 0x89, 0x41, 0x52, 0x48, 0xdc, 0xce, 0x8f, 0x1e, 0x1c, 0xaa, +0x2b, 0x30, 0x5e, 0xb3, 0xa2, 0xb1, 0xfa, 0x73, 0x3e, 0x31, 0x54, 0x3e, +0xf1, 0x25, 0x39, 0x99, 0xa4, 0x50, 0x3d, 0xaa, 0xc2, 0xd2, 0xf8, 0x4b, +0x5d, 0x6e, 0x35, 0x1f, 0x0f, 0xaa, 0x8b, 0x1f, 0x77, 0x37, 0x5c, 0x42, +0x82, 0x38, 0x81, 0x24, 0xea, 0x5e, 0x54, 0x43, 0xa3, 0xb6, 0x1f, 0x8c, +0x82, 0xaa, 0x33, 0x94, 0xd8, 0xa0, 0xbc, 0x40, 0xe8, 0x66, 0x53, 0x98, +0x19, 0x4b, 0x08, 0xf3, 0x0a, 0x89, 0x7d, 0x62, 0x97, 0xa2, 0xa6, 0xb7, +0x7a, 0x5b, 0xd8, 0x64, 0x6c, 0x52, 0x80, 0x1e, 0x28, 0xea, 0xce, 0x1a, +0xe3, 0xf9, 0x7b, 0xc2, 0x04, 0x3d, 0xdf, 0x0b, 0x73, 0x10, 0x01, 0xb0, +0x0c, 0xe2, 0x9f, 0xaa, 0xa3, 0xd7, 0x05, 0x64, 0x10, 0xcb, 0x68, 0x5c, +0x55, 0x48, 0x81, 0x22, 0x4e, 0x36, 0x9d, 0x77, 0x36, 0xd7, 0x47, 0x3f, +0x0d, 0xb7, 0x9d, 0x3c, 0x88, 0x3a, 0x28, 0x92, 0x49, 0xe0, 0x13, 0x55, +0x0b, 0x60, 0x14, 0xb8, 0x29, 0x28, 0xd8, 0x11, 0xea, 0xb1, 0x4f, 0x61, +0xa2, 0x6d, 0x8b, 0x46, 0x41, 0xc1, 0x46, 0xf5, 0xaa, 0x90, 0x07, 0x6c, +0xc6, 0x3e, 0x19, 0xb4, 0x46, 0x35, 0x02, 0x91, 0x76, 0x84, 0x33, 0x51, +0xcf, 0x8f, 0x0e, 0x7d, 0xaa, 0x9f, 0x03, 0xa5, 0xfe, 0x48, 0x81, 0x30, +0xf4, 0xdf, 0x40, 0x28, 0xf7, 0xda, 0xf8, 0x19, 0xab, 0xbf, 0x8c, 0xec, +0xc1, 0x4f, 0xec, 0x8e, 0x46, 0x69, 0x5c, 0x62, 0xc0, 0xe4, 0x2b, 0x07, +0x86, 0x9a, 0x4f, 0x56, 0x91, 0x85, 0xd8, 0x64, 0xfd, 0x20, 0x77, 0x3b, +0x97, 0xd0, 0x88, 0x07, 0x7f, 0xb9, 0x3e, 0x99, 0xae, 0x5d, 0xbb, 0x62, +0x90, 0xa5, 0x00, 0x26, 0xd9, 0x14, 0x94, 0x7b, 0xc2, 0x4d, 0x21, 0x15, +0xa3, 0x43, 0x3d, 0xd0, 0x23, 0x1c, 0x22, 0x3e, 0x24, 0x1f, 0x55, 0x4f, +0x2f, 0xf6, 0x6a, 0x0e, 0x52, 0x44, 0xa0, 0x5a, 0xa6, 0xf3, 0xb2, 0x71, +0x66, 0x51, 0xfd, 0x8e, 0x6f, 0xa8, 0xf3, 0xe7, 0xa1, 0x7d, 0x3a, 0x1b, +0x3f, 0xd6, 0x4c, 0x1a, 0x3b, 0x49, 0x30, 0x9f, 0x9d, 0x06, 0x68, 0x84, +0x9d, 0x0b, 0x31, 0x79, 0xed, 0xe9, 0x68, 0xa0, 0x4e, 0xb0, 0x8d, 0xb8, +0x6f, 0x40, 0x85, 0x39, 0x09, 0x9b, 0xd3, 0x94, 0x45, 0x88, 0xa2, 0xb7, +0x76, 0x48, 0xdc, 0xd7, 0x73, 0xf0, 0x7f, 0x1b, 0x22, 0xd5, 0x49, 0xe9, +0xa6, 0x59, 0x99, 0xf8, 0xb3, 0x69, 0x17, 0x04, 0xa3, 0xc0, 0x85, 0x8a, +0x3f, 0x3b, 0x6c, 0x20, 0x11, 0xda, 0x91, 0xe4, 0x38, 0x8c, 0xa8, 0x94, +0xa8, 0x48, 0x07, 0xc3, 0xa2, 0xfd, 0xd2, 0x91, 0xd8, 0xfe, 0x91, 0xa0, +0x28, 0xef, 0x45, 0x5c, 0x93, 0x4f, 0x84, 0x82, 0xda, 0x4d, 0xc1, 0x0b, +0x8c, 0x51, 0xee, 0x2a, 0xc1, 0xa8, 0xd1, 0x00, 0x58, 0x56, 0xc6, 0xc5, +0x9e, 0x3d, 0x40, 0xce, 0xa7, 0xbb, 0xe0, 0x85, 0x34, 0x40, 0x02, 0x01, +0xc6, 0x3c, 0x42, 0x99, 0xa0, 0xac, 0xb8, 0x98, 0xe0, 0xf6, 0x3e, 0xa7, +0x0a, 0xad, 0x59, 0xc8, 0xa4, 0x0c, 0x33, 0x6d, 0x0a, 0x31, 0x3d, 0xe1, +0xb9, 0xc3, 0xf4, 0x44, 0x41, 0x3e, 0x89, 0x1b, 0xc7, 0x3e, 0x1e, 0xa0, +0xd9, 0xa7, 0x4a, 0x5d, 0x1e, 0xaa, 0x7a, 0x85, 0x58, 0x9f, 0x28, 0xc5, +0xae, 0xa8, 0x87, 0xaa, 0xda, 0xf6, 0x29, 0xcf, 0xa6, 0x03, 0xd8, 0x3c, +0x20, 0x7e, 0x5f, 0xee, 0x88, 0x27, 0xcb, 0xeb, 0xbd, 0xf4, 0x4c, 0x26, +0x0f, 0x01, 0x14, 0xe6, 0x71, 0x00, 0x9e, 0xde, 0x5b, 0x55, 0x1e, 0xd0, +0x32, 0x9c, 0x96, 0xda, 0x84, 0x3a, 0x78, 0x1e, 0xd9, 0x12, 0x9c, 0x24, +0x75, 0x58, 0x10, 0xfb, 0x85, 0x41, 0x91, 0xe0, 0x46, 0xd4, 0xc7, 0x97, +0xce, 0x6c, 0x04, 0x8d, 0xab, 0x1e, 0x34, 0x30, 0x8a, 0xf0, 0xf0, 0xdc, +0x85, 0xbc, 0x5e, 0x21, 0xd6, 0x27, 0x42, 0x0c, 0x74, 0x3d, 0xdb, 0xd7, +0x1a, 0x02, 0x5e, 0xc9, 0xda, 0x7c, 0x02, 0xdb, 0xa7, 0xd4, 0xb9, 0x79, +0xdf, 0x7d, 0x58, 0xb8, 0xba, 0x4a, 0xdf, 0x68, 0xd1, 0x56, 0xed, 0xdf, +0x4e, 0x8f, 0xee, 0x56, 0x44, 0x4f, 0x40, 0x9e, 0x79, 0x04, 0x43, 0x25, +0x4f, 0x62, 0xa5, 0x6c, 0xaa, 0x55, 0x1e, 0x26, 0xf3, 0xec, 0xae, 0x41, +0x96, 0x95, 0x78, 0xa8, 0x1e, 0x42, 0xff, 0x07, 0x20, 0x41, 0x72, 0x36, +0x8d, 0x36, 0x29, 0xba, 0x45, 0xbd, 0x57, 0x91, 0x9d, 0xaa, 0xd4, 0x36, +0x1f, 0x94, 0xc9, 0x84, 0x24, 0xaf, 0x10, 0x3d, 0x9b, 0x76, 0x61, 0x8a, +0x68, 0x70, 0x08, 0x04, 0xab, 0xf9, 0xb7, 0x07, 0x8a, 0x59, 0x39, 0xc5, +0x55, 0x16, 0xdf, 0x4e, 0xe8, 0x21, 0x3e, 0x13, 0xbd, 0xc8, 0x80, 0x1d, +0x6f, 0x80, 0xdc, 0x97, 0x24, 0x0a, 0xcb, 0x66, 0x93, 0x84, 0x42, 0x99, +0x27, 0xb6, 0x69, 0x7e, 0x7b, 0x83, 0xa0, 0x65, 0x3f, 0x29, 0xd7, 0x30, +0x1a, 0xab, 0x47, 0xa2, 0x95, 0x5e, 0xaf, 0x4d, 0x8d, 0x4c, 0xa1, 0x4e, +0x8a, 0xef, 0xa3, 0x4b, 0x20, 0x38, 0xd1, 0x53, 0x02, 0x07, 0x05, 0xfd, +0x15, 0x80, 0x04, 0x99, 0x8f, 0xee, 0x7a, 0x05, 0x05, 0x85, 0x34, 0x2b, +0x71, 0x90, 0x90, 0x44, 0x05, 0x1a, 0x05, 0x9e, 0x54, 0x3d, 0x1c, 0x10, +0xfa, 0xb0, 0xbf, 0x19, 0xfb, 0x77, 0x26, 0xad, 0x93, 0x25, 0x08, 0x8a, +0xb8, 0x26, 0xaf, 0x23, 0xe0, 0x5f, 0x57, 0x54, 0x05, 0x95, 0x7b, 0x3d, +0x5f, 0x9d, 0x80, 0x03, 0xdb, 0x40, 0xe8, 0xf2, 0xab, 0x65, 0xca, 0xd1, +0x9c, 0x1f, 0xb4, 0x79, 0xfd, 0x12, 0x6a, 0x19, 0xda, 0x07, 0x21, 0xf7, +0xc5, 0xcb, 0x41, 0x4c, 0x8a, 0x5e, 0x4b, 0x53, 0x1f, 0x8d, 0x84, 0x6c, +0x7a, 0x59, 0x21, 0x38, 0x51, 0x26, 0x02, 0x48, 0x50, 0xd8, 0x86, 0xd6, +0x2a, 0x84, 0xc7, 0x12, 0x31, 0x0e, 0x24, 0xc2, 0x4f, 0x76, 0x0a, 0x61, +0x2f, 0x1e, 0x50, 0xa6, 0x51, 0x83, 0x7a, 0x79, 0x18, 0x49, 0x7c, 0x55, +0x9a, 0xed, 0x93, 0xa9, 0x3a, 0x53, 0xa2, 0x65, 0xb1, 0xd2, 0xda, 0xb9, +0x56, 0xcf, 0xf4, 0x27, 0x60, 0xd6, 0xce, 0x25, 0x9c, 0x43, 0xbe, 0x9e, +0x65, 0x0f, 0x72, 0xca, 0x1d, 0x58, 0x8e, 0x40, 0xdd, 0x4e, 0x4b, 0x08, +0x11, 0x9a, 0x4e, 0xb1, 0x05, 0xc8, 0xdd, 0x52, 0x7d, 0x82, 0x2d, 0x20, +0x01, 0x52, 0x3f, 0x13, 0x50, 0xc1, 0x63, 0x2d, 0x47, 0xe0, 0x4b, 0x12, +0x27, 0x08, 0x73, 0x42, 0xb7, 0x96, 0x96, 0x85, 0x94, 0x3f, 0xa3, 0x65, +0x04, 0xd9, 0x76, 0x54, 0xc0, 0x47, 0xc3, 0x56, 0x9d, 0xa8, 0x2a, 0x71, +0x47, 0x2f, 0xbf, 0x5b, 0x87, 0x1e, 0xaf, 0x40, 0xa9, 0xc0, 0x3a, 0x8e, +0xc9, 0x5c, 0xbd, 0x4e, 0x0c, 0xa0, 0x36, 0xc9, 0xce, 0xef, 0xd3, 0x54, +0x1a, 0xc3, 0x4b, 0xfb, 0x2c, 0x9c, 0x06, 0x86, 0x61, 0x09, 0xa1, 0xd5, +0xad, 0x99, 0xf6, 0x0b, 0xf0, 0x00, 0x39, 0xf5, 0x50, 0xe9, 0xe9, 0x2e, +0xfb, 0xaf, 0x1c, 0x96, 0x11, 0x50, 0xdc, 0xb4, 0x76, 0x59, 0xcf, 0x9a, +0x99, 0xbe, 0x91, 0xe2, 0xf0, 0xb4, 0xa0, 0xa9, 0xab, 0xde, 0xe7, 0x05, +0x75, 0xd3, 0xf5, 0xf0, 0x27, 0x4b, 0x48, 0x50, 0xfc, 0x86, 0xac, 0x09, +0x32, 0xec, 0xa8, 0x05, 0x88, 0x98, 0x4a, 0xe5, 0x7d, 0x1a, 0x00, 0x60, +0xee, 0xa3, 0xa0, 0x32, 0xf5, 0x3b, 0xa4, 0xa6, 0x72, 0xb8, 0x72, 0x89, +0x90, 0xe4, 0x15, 0x12, 0x37, 0x0e, 0x1f, 0xd7, 0x5f, 0x27, 0x55, 0x9b, +0xfc, 0x26, 0x77, 0x9b, 0x17, 0x4a, 0x69, 0x3d, 0xea, 0x80, 0xd8, 0x39, +0xdf, 0x50, 0xc6, 0x18, 0x26, 0x63, 0xe7, 0x2a, 0x43, 0xde, 0x82, 0x5e, +0x05, 0x10, 0x89, 0xdf, 0x3c, 0x02, 0xb9, 0x72, 0xfa, 0x22, 0x50, 0xf2, +0xc7, 0xdc, 0xbe, 0xd1, 0x1d, 0x1f, 0x70, 0xf7, 0x3d, 0x7d, 0xc3, 0x68, +0xf6, 0x09, 0x7f, 0x90, 0xfe, 0x7a, 0xc4, 0xc3, 0x52, 0xe2, 0x89, 0xba, +0xb1, 0x34, 0xa3, 0x20, 0xac, 0x83, 0x9c, 0x6c, 0x32, 0x28, 0x50, 0xaf, +0xc3, 0xc9, 0x8d, 0x6d, 0xc9, 0x70, 0x42, 0x8c, 0x57, 0x48, 0x94, 0x07, +0x3b, 0x99, 0x7a, 0xaf, 0x34, 0x0a, 0xb2, 0x43, 0x73, 0x81, 0x9c, 0xa3, +0x6a, 0xb0, 0xd2, 0x42, 0xc5, 0xce, 0x38, 0xd8, 0x88, 0x75, 0xb2, 0xb3, +0xd3, 0x40, 0x03, 0x51, 0x47, 0xcf, 0x8c, 0xd3, 0x2b, 0x93, 0x13, 0xca, +0x61, 0x99, 0x2c, 0xaa, 0x9b, 0x65, 0x33, 0x32, 0x32, 0x48, 0x45, 0x9c, +0x3b, 0x77, 0x6e, 0xeb, 0xd6, 0xad, 0x7d, 0x45, 0x02, 0xe7, 0xd7, 0xa9, +0x53, 0xa7, 0x47, 0x8f, 0x1e, 0xb3, 0x67, 0xcf, 0xa6, 0x01, 0x29, 0xc5, +0xce, 0x10, 0x99, 0xe0, 0x0f, 0x88, 0x4c, 0xe0, 0x81, 0x3e, 0x5a, 0x34, +0x13, 0xc2, 0x55, 0xe7, 0xb5, 0x6b, 0x56, 0xf9, 0xc9, 0x33, 0x15, 0x3f, +0x72, 0x28, 0xa1, 0x02, 0x48, 0xa0, 0x67, 0xf3, 0x9e, 0xf4, 0x17, 0x8f, +0x25, 0xd1, 0x0e, 0xa5, 0xfa, 0x7d, 0x0e, 0xf4, 0x4a, 0x91, 0x4c, 0xee, +0x48, 0x03, 0x38, 0x3b, 0x83, 0xa0, 0xe1, 0xe8, 0x7d, 0xe5, 0xb8, 0x90, +0x9e, 0xab, 0xf0, 0x01, 0x9c, 0xc4, 0xf8, 0x3a, 0x08, 0x6b, 0xe5, 0x7f, +0x3a, 0xa4, 0x3c, 0xb6, 0x6d, 0x00, 0x29, 0xe0, 0x2a, 0x72, 0xc9, 0x50, +0xc5, 0x59, 0x6f, 0x38, 0xef, 0x4e, 0x00, 0xd3, 0xdd, 0xf3, 0xd4, 0x78, +0x65, 0x83, 0xc7, 0x4c, 0x44, 0xe7, 0x72, 0x28, 0xbb, 0xa8, 0xa8, 0x88, +0x62, 0xbb, 0x1e, 0xba, 0x6e, 0x93, 0xa2, 0x8d, 0x98, 0x44, 0x58, 0x00, +0x9d, 0x7f, 0x69, 0x46, 0x4c, 0x4b, 0x5f, 0x1a, 0xfb, 0xc2, 0x1f, 0xa8, +0x74, 0x26, 0x5d, 0xcf, 0xcf, 0x9c, 0x39, 0x43, 0x75, 0x02, 0x5c, 0xd7, +0x84, 0x88, 0x63, 0x01, 0x97, 0xfe, 0x2c, 0x9e, 0xfb, 0x15, 0x56, 0x3c, +0xed, 0x96, 0xdf, 0x1d, 0x43, 0x06, 0x15, 0x22, 0x3b, 0x31, 0x5d, 0xac, +0x84, 0x0a, 0x15, 0x14, 0x2c, 0xb2, 0xa4, 0x54, 0xb2, 0xa8, 0x51, 0x28, +0xd9, 0xda, 0x71, 0x12, 0xef, 0x59, 0xda, 0x79, 0xdd, 0x9c, 0x76, 0x84, +0x64, 0x23, 0x9d, 0xab, 0xd0, 0xa6, 0xf9, 0xa3, 0x0a, 0xe8, 0x23, 0x7c, +0xd3, 0x65, 0xed, 0x88, 0xa6, 0xc6, 0xe8, 0x89, 0x59, 0xc9, 0x5d, 0xe2, +0xb5, 0x4a, 0xf9, 0xd7, 0x7d, 0x64, 0x94, 0x51, 0x22, 0x0c, 0x91, 0x6b, +0x19, 0x76, 0xda, 0x80, 0xd2, 0x9e, 0xa8, 0xf8, 0x28, 0x28, 0xcb, 0x69, +0x7f, 0xb7, 0x06, 0x3f, 0x24, 0xe2, 0x51, 0xfd, 0x52, 0x6f, 0xab, 0x97, +0x9f, 0x9f, 0xaf, 0xf7, 0x08, 0x27, 0xa5, 0x81, 0x48, 0x24, 0x22, 0x7c, +0x49, 0x19, 0x3f, 0xbc, 0xaa, 0x3b, 0x91, 0xb3, 0x4c, 0x1b, 0x1b, 0x31, +0x71, 0xb8, 0xea, 0x46, 0xb4, 0xea, 0x42, 0x01, 0x50, 0x9d, 0x9d, 0x21, +0x6e, 0x7e, 0x05, 0x21, 0x70, 0x0f, 0x02, 0x8a, 0x29, 0x07, 0x28, 0xbd, +0xcf, 0x09, 0xe9, 0xa3, 0x4d, 0x30, 0x19, 0x5a, 0x78, 0x1e, 0xa4, 0xd7, +0xf5, 0x9a, 0x35, 0x6b, 0xd6, 0xad, 0x5b, 0x87, 0x17, 0x82, 0x6e, 0xbc, +0xf0, 0x07, 0xf0, 0x40, 0xf3, 0x2e, 0x3c, 0x74, 0xb4, 0x11, 0xa3, 0x60, +0x07, 0xfd, 0xbb, 0x08, 0xfb, 0xf3, 0xd0, 0x6b, 0xb4, 0xfc, 0xe8, 0xb2, +0x72, 0x47, 0x0e, 0x25, 0x54, 0x20, 0x3b, 0xd1, 0x01, 0x4d, 0xa7, 0x39, +0xfc, 0xc7, 0x58, 0x54, 0x3e, 0x3a, 0x31, 0x9a, 0x44, 0xcd, 0x0d, 0x73, +0xdb, 0x43, 0xf4, 0x14, 0xc2, 0xd0, 0x1b, 0xf5, 0xda, 0x27, 0x50, 0xce, +0x24, 0x2e, 0x90, 0xa0, 0x40, 0x62, 0x96, 0x48, 0x8a, 0x90, 0x5d, 0x1c, +0xb7, 0x83, 0x94, 0xa5, 0xe9, 0xd4, 0x2c, 0x8b, 0x30, 0x24, 0xec, 0xad, +0xc0, 0x09, 0x9b, 0x92, 0x4f, 0xc3, 0xfa, 0x7a, 0x32, 0x65, 0x5e, 0x6d, +0x76, 0x0a, 0x57, 0x23, 0xb3, 0xe5, 0x93, 0xea, 0x40, 0x60, 0x92, 0x1c, +0x08, 0x3f, 0xb8, 0x9f, 0xd1, 0x0a, 0x68, 0x32, 0x8d, 0x7a, 0x80, 0x44, +0x04, 0xe9, 0x83, 0x13, 0xfe, 0xe7, 0xa0, 0x47, 0xb5, 0xf4, 0x9f, 0x86, +0x2d, 0x10, 0xb8, 0x41, 0xd1, 0x1a, 0xfa, 0xb0, 0xd0, 0xee, 0x99, 0x08, +0x0e, 0xf8, 0x30, 0xa5, 0x3a, 0xc0, 0x03, 0x22, 0x13, 0xa5, 0xf6, 0x3d, +0x77, 0x79, 0xae, 0x5c, 0xc2, 0x2d, 0xd7, 0xbb, 0x87, 0x0c, 0x2a, 0xcc, +0x7d, 0x8c, 0x08, 0x7c, 0x42, 0xb6, 0x31, 0x27, 0x52, 0xfb, 0x4a, 0x85, +0x96, 0xe7, 0x93, 0x4b, 0x40, 0x20, 0xf7, 0x8c, 0x21, 0x8d, 0xe5, 0xaf, +0xec, 0xe5, 0x96, 0x36, 0xd3, 0xa0, 0xdc, 0x4b, 0x1f, 0x04, 0xa9, 0x86, +0x5d, 0x5c, 0xef, 0x33, 0xe4, 0xf5, 0x16, 0x28, 0x15, 0x6c, 0xf6, 0xec, +0xf1, 0x04, 0x75, 0xe3, 0x5f, 0xc3, 0x78, 0x0a, 0x71, 0x43, 0xe2, 0xb8, +0xdb, 0xe8, 0x6c, 0x2d, 0xad, 0xdd, 0xe1, 0x03, 0x60, 0x80, 0x7e, 0x37, +0x1c, 0x38, 0xa7, 0xf9, 0x52, 0x9a, 0x5e, 0xa3, 0x39, 0x10, 0xf7, 0xca, +0x55, 0x20, 0x81, 0xe6, 0x8e, 0xd2, 0xdb, 0x56, 0x9a, 0x9a, 0xe2, 0x27, +0x95, 0x00, 0xa7, 0x70, 0x0a, 0xfb, 0xb3, 0x89, 0xa5, 0x50, 0x42, 0x05, +0xd6, 0x0f, 0x64, 0x5c, 0xdd, 0x38, 0xe3, 0x95, 0x62, 0x2a, 0xeb, 0x04, +0x64, 0xfa, 0xfe, 0xfd, 0xfb, 0x53, 0x77, 0x0c, 0x92, 0x65, 0x0e, 0xd4, +0x6f, 0xc5, 0xe7, 0x48, 0x68, 0x5d, 0x9b, 0x36, 0x6d, 0xe8, 0xff, 0x4b, +0x83, 0x08, 0x0a, 0x57, 0x26, 0x26, 0x5e, 0x8c, 0x1d, 0x54, 0x93, 0xa4, +0x3e, 0x3e, 0x52, 0x0d, 0xf2, 0x0f, 0xb4, 0x4b, 0x68, 0xaa, 0x9d, 0xc9, +0x33, 0x3e, 0x5a, 0x32, 0xe7, 0x23, 0xf6, 0x40, 0xd9, 0xd2, 0xbe, 0x1a, +0x65, 0x80, 0x9e, 0xce, 0x02, 0x0f, 0xd4, 0x03, 0xfc, 0x0c, 0x34, 0xaa, +0xa3, 0xe0, 0x83, 0x1c, 0x00, 0x86, 0x2f, 0xa5, 0xe3, 0x35, 0x3d, 0xad, +0x31, 0x2e, 0x71, 0x09, 0xf6, 0x25, 0x0a, 0x9c, 0x11, 0xc1, 0xf1, 0xf5, +0xd7, 0x5f, 0x0b, 0x1e, 0x82, 0xd5, 0xee, 0xd9, 0x26, 0x21, 0x56, 0xa9, +0xd3, 0x42, 0x06, 0x15, 0xbc, 0x27, 0xcc, 0xe4, 0x70, 0x76, 0xbd, 0x99, +0xb4, 0x07, 0xba, 0xc1, 0x4c, 0x59, 0xa3, 0x46, 0x0d, 0xac, 0x2b, 0x88, +0xe9, 0x50, 0x58, 0x87, 0x0e, 0x1d, 0xba, 0x74, 0xe9, 0xd2, 0xbd, 0x7b, +0x77, 0x8c, 0x2d, 0x1c, 0xb8, 0x3b, 0x90, 0xc5, 0xf9, 0x1e, 0x09, 0x1e, +0x83, 0x8f, 0xe7, 0x5e, 0xeb, 0x96, 0x77, 0x81, 0x1c, 0xd1, 0x71, 0x09, +0x98, 0x63, 0x34, 0xb4, 0x5b, 0x9a, 0x5f, 0xf5, 0xeb, 0xd7, 0x8f, 0xcf, +0x0c, 0x4b, 0xc8, 0x10, 0x61, 0x8b, 0x0b, 0x17, 0x2e, 0x44, 0xf1, 0xc5, +0x31, 0x4c, 0x0b, 0x6d, 0x3e, 0xc8, 0xc1, 0x67, 0xf5, 0x0d, 0x6a, 0x2e, +0x45, 0x8b, 0x11, 0xfa, 0x99, 0x0c, 0xd9, 0x9e, 0xf0, 0x07, 0xb8, 0x04, +0xd2, 0x0e, 0x5b, 0xfb, 0x5d, 0x77, 0xdd, 0xc5, 0xff, 0x83, 0x06, 0x0d, +0xa2, 0xd3, 0x1c, 0x59, 0x6f, 0x6c, 0x04, 0x39, 0x39, 0x39, 0x3c, 0x0b, +0xd0, 0xa2, 0xac, 0x86, 0xb4, 0xe7, 0xe2, 0x71, 0xd0, 0x16, 0x68, 0xf9, +0x05, 0x8a, 0xd8, 0xfb, 0xe9, 0xc1, 0x2e, 0x0d, 0xaa, 0x11, 0x7b, 0x88, +0xc5, 0xc0, 0x64, 0x04, 0xa1, 0x4b, 0x77, 0x77, 0xfc, 0x6e, 0x78, 0xa3, +0x69, 0x3e, 0x2d, 0x07, 0xbf, 0xf2, 0x25, 0x7f, 0x62, 0x8b, 0x81, 0x39, +0x70, 0x26, 0x3d, 0x7c, 0x51, 0x1e, 0xc4, 0x31, 0x17, 0x66, 0xd1, 0xaf, +0xfe, 0x81, 0xcd, 0xc0, 0x1e, 0x91, 0x30, 0x5d, 0x14, 0xc2, 0x3f, 0x3e, +0xf9, 0x37, 0x62, 0x39, 0x5d, 0xc5, 0xd6, 0xc5, 0x6b, 0xe3, 0x5d, 0xb2, +0xc3, 0x19, 0xea, 0x66, 0x63, 0x51, 0x81, 0xb2, 0xd9, 0x89, 0x29, 0x78, +0x4a, 0x93, 0x1e, 0xf6, 0x4e, 0x88, 0x0f, 0x9b, 0x0c, 0x44, 0x86, 0x1f, +0x8a, 0x83, 0x0d, 0x98, 0x83, 0xb0, 0x05, 0x0e, 0x74, 0x50, 0x39, 0xe4, +0x57, 0xbe, 0xc7, 0xfc, 0xc2, 0x39, 0x38, 0xad, 0xd0, 0x44, 0x7b, 0xf7, +0xee, 0x0d, 0x4e, 0xf4, 0x2a, 0x7a, 0x3a, 0x24, 0x40, 0x02, 0x9b, 0x3d, +0x74, 0x4c, 0xa7, 0x50, 0x51, 0x58, 0xb9, 0x56, 0x46, 0x56, 0xc3, 0x62, +0x08, 0xe2, 0xc0, 0x9e, 0xb3, 0x7e, 0xfd, 0x7a, 0xd1, 0x62, 0x49, 0x45, +0x20, 0x82, 0x48, 0x0e, 0x3e, 0xcb, 0x37, 0x48, 0xf6, 0x50, 0x33, 0xe7, +0x20, 0xee, 0x93, 0xea, 0xc9, 0xf9, 0xa2, 0x2e, 0x1f, 0x3a, 0x74, 0x08, +0xc5, 0x80, 0xbd, 0x9c, 0xff, 0x11, 0xfa, 0x39, 0x19, 0x85, 0x98, 0xc1, +0xb9, 0x91, 0x1c, 0xea, 0x59, 0xf8, 0x52, 0x14, 0x65, 0x89, 0x4d, 0x62, +0xd7, 0x57, 0xfd, 0xa4, 0xd9, 0xef, 0xa5, 0xa9, 0x3b, 0xe4, 0x0e, 0x48, +0x10, 0x8a, 0x38, 0x80, 0x8a, 0x1c, 0xd2, 0xf2, 0x9c, 0x3f, 0x11, 0xb5, +0x81, 0xb0, 0x24, 0x78, 0x10, 0xfb, 0x92, 0xb4, 0x30, 0x2d, 0xa7, 0x37, +0x18, 0xba, 0xc3, 0x56, 0x75, 0x54, 0x60, 0x15, 0x41, 0x30, 0x40, 0x1a, +0x86, 0xb0, 0xa8, 0xb5, 0x3c, 0x7e, 0xfc, 0x78, 0x9d, 0x40, 0x21, 0x14, +0x28, 0x0c, 0xf2, 0x62, 0xc7, 0x85, 0xe6, 0x14, 0x15, 0xa2, 0x59, 0x42, +0x70, 0xb4, 0xf7, 0x2c, 0x29, 0x29, 0x41, 0xbc, 0x96, 0x83, 0xcf, 0x7c, +0xa3, 0xec, 0x36, 0x9c, 0x8c, 0x1a, 0x0a, 0x9d, 0x41, 0x85, 0x50, 0x1e, +0xc1, 0x0e, 0x84, 0x00, 0x21, 0xea, 0xb0, 0x2b, 0x03, 0x42, 0x3c, 0x24, +0xb4, 0x8a, 0x03, 0x09, 0xe0, 0x07, 0xa2, 0xe7, 0x16, 0xa2, 0xb3, 0x42, +0xb5, 0x32, 0x32, 0x03, 0x92, 0xb1, 0x29, 0x82, 0x3b, 0x07, 0x3d, 0xa7, +0xa1, 0x6f, 0x14, 0x59, 0x14, 0x5f, 0x24, 0x78, 0xf2, 0x9b, 0xe5, 0xe0, +0x33, 0x85, 0xd3, 0xe5, 0x1b, 0x14, 0x62, 0x08, 0x1a, 0xd2, 0x87, 0x2d, +0x70, 0x3e, 0x07, 0x27, 0xe3, 0xa0, 0xa4, 0x01, 0x29, 0xf2, 0x0f, 0x7b, +0x3f, 0xb4, 0xce, 0x08, 0x8c, 0xc6, 0xf8, 0xdc, 0x48, 0x0e, 0xf5, 0x2c, +0xdc, 0x91, 0x4b, 0x18, 0x84, 0x34, 0x51, 0x4e, 0x86, 0x09, 0xe8, 0x3d, +0xdb, 0x85, 0x04, 0x55, 0xa3, 0x5e, 0x77, 0x1f, 0x42, 0x97, 0x52, 0x2b, +0x72, 0xe6, 0x55, 0x17, 0x15, 0xaa, 0x97, 0x36, 0xa2, 0x33, 0x01, 0x6a, +0x50, 0x0f, 0xa1, 0x50, 0x60, 0x43, 0xf6, 0x5d, 0x68, 0x05, 0x2a, 0xc7, +0x0e, 0x03, 0x91, 0x41, 0x28, 0x90, 0x1d, 0x41, 0x0a, 0x68, 0x93, 0xd8, +0xdd, 0x39, 0xf3, 0xec, 0xd9, 0xb3, 0x04, 0x3f, 0x23, 0x52, 0x9f, 0x3b, +0x77, 0x0e, 0x09, 0x5b, 0x0e, 0x3e, 0xf3, 0x0d, 0xdf, 0x63, 0x7e, 0x81, +0xfe, 0x38, 0x19, 0xa2, 0x3c, 0x76, 0xec, 0x18, 0x23, 0x40, 0xdf, 0x04, +0xc3, 0x41, 0xf7, 0x20, 0x44, 0x9c, 0x00, 0x80, 0x8d, 0x7d, 0x9d, 0x7b, +0x41, 0xa0, 0x10, 0x31, 0x12, 0x0b, 0x27, 0xb3, 0x9d, 0x33, 0xb8, 0x8c, +0x8c, 0xec, 0x8e, 0xbc, 0x4e, 0x6a, 0x3f, 0x07, 0xfa, 0x2b, 0xb5, 0xf4, +0x44, 0x70, 0xc7, 0xa4, 0x83, 0xd5, 0x1f, 0x24, 0xcb, 0xc1, 0xaf, 0x72, +0xf0, 0x19, 0x1d, 0x17, 0x03, 0x28, 0xa7, 0x71, 0x32, 0x64, 0xcd, 0xc1, +0x37, 0x14, 0x56, 0x82, 0xbe, 0x09, 0xac, 0xe0, 0x31, 0x39, 0x8d, 0xbf, +0x32, 0x4f, 0x76, 0x01, 0x66, 0x08, 0xf5, 0xcb, 0xb3, 0xf0, 0x2b, 0x5a, +0x04, 0x8f, 0x40, 0x14, 0x06, 0x5e, 0x67, 0x82, 0xba, 0x11, 0x90, 0x10, +0x84, 0x42, 0xbd, 0x97, 0x4a, 0x45, 0x12, 0xba, 0x4f, 0xf7, 0xaa, 0xba, +0xa8, 0x90, 0x9c, 0x0a, 0xa4, 0x02, 0x44, 0x61, 0xd4, 0x4a, 0xa8, 0x01, +0x12, 0x81, 0x3a, 0xe5, 0x20, 0x30, 0x01, 0x59, 0x1c, 0xd2, 0x81, 0x46, +0xa1, 0x4b, 0xb6, 0x5b, 0x5a, 0x51, 0x41, 0x8e, 0x50, 0x0c, 0x89, 0xc5, +0xb4, 0x1a, 0x51, 0xf2, 0x34, 0x9a, 0x89, 0x1c, 0x22, 0x70, 0x43, 0x7c, +0x8c, 0x86, 0xfb, 0x16, 0x32, 0x65, 0x4c, 0xae, 0x85, 0xe6, 0x40, 0x08, +0x9b, 0x34, 0x3b, 0xb1, 0xe2, 0x24, 0x80, 0x01, 0x33, 0x0e, 0x78, 0x03, +0x6c, 0xdc, 0x17, 0x8a, 0x14, 0x23, 0x26, 0x83, 0x33, 0xb2, 0x88, 0xe9, +0xf0, 0x31, 0x0e, 0x84, 0x75, 0x91, 0xd7, 0xc9, 0x66, 0x46, 0x56, 0x41, +0x4a, 0x61, 0xce, 0x96, 0x07, 0x32, 0x0c, 0xde, 0x31, 0xa8, 0x99, 0x93, +0xb1, 0x38, 0x73, 0x20, 0x02, 0x21, 0xdb, 0x88, 0x09, 0x88, 0xbf, 0x32, +0x02, 0x03, 0x42, 0xf1, 0x04, 0x20, 0x31, 0x43, 0x18, 0x08, 0x9a, 0x31, +0x9f, 0x51, 0xa6, 0xf9, 0x92, 0x9b, 0x72, 0x23, 0x51, 0x24, 0x70, 0xb1, +0xa1, 0x22, 0x47, 0x85, 0x1f, 0x9f, 0x68, 0xdd, 0xfe, 0xc9, 0x55, 0x1a, +0x15, 0xe2, 0xc5, 0x83, 0x08, 0xa0, 0x06, 0xa8, 0x19, 0xa2, 0x47, 0xfe, +0x96, 0x03, 0x1a, 0x65, 0xdf, 0x85, 0xb2, 0xe9, 0x16, 0x29, 0x30, 0x10, +0xba, 0x51, 0x3a, 0x25, 0xd4, 0x03, 0xfd, 0x41, 0x76, 0x1c, 0xc8, 0xd6, +0xf2, 0x81, 0x6f, 0xf8, 0x1e, 0xad, 0x14, 0xe2, 0xe3, 0x64, 0xc6, 0x84, +0xec, 0x18, 0x81, 0x3d, 0x9e, 0x9d, 0x9b, 0xbd, 0x1f, 0x84, 0xb0, 0x37, +0x0b, 0x43, 0x00, 0x09, 0x6c, 0xea, 0xdc, 0x85, 0xfb, 0x42, 0xa3, 0x9c, +0x0c, 0xb4, 0x84, 0x2e, 0x19, 0x0a, 0x00, 0x40, 0xe2, 0x1c, 0x4c, 0x8f, +0x03, 0x18, 0x40, 0xdc, 0xc8, 0xf7, 0xec, 0xdf, 0x1c, 0x90, 0xac, 0xf9, +0x40, 0x9a, 0xe7, 0x71, 0x20, 0x68, 0x85, 0x19, 0x3e, 0xf3, 0x8d, 0x04, +0x1a, 0xf1, 0x81, 0xef, 0x19, 0x10, 0x6c, 0xc8, 0x0c, 0x05, 0x6f, 0x7c, +0x16, 0xc8, 0xe9, 0x10, 0x0a, 0xa7, 0xaa, 0x33, 0xf6, 0x89, 0xb5, 0xc2, +0xce, 0xac, 0xba, 0xa8, 0x10, 0x29, 0x59, 0x2c, 0x51, 0x90, 0x0b, 0x94, +0x0d, 0x7d, 0x40, 0xca, 0x72, 0xc8, 0x56, 0xcd, 0x37, 0xec, 0xb8, 0xd0, +0xba, 0x52, 0x28, 0x39, 0x13, 0x52, 0x43, 0xa1, 0x84, 0xc8, 0xb8, 0x90, +0x43, 0xc8, 0x94, 0x43, 0x7e, 0xe5, 0x7b, 0xfe, 0x0a, 0x05, 0xb3, 0x37, +0x73, 0x15, 0xd7, 0x32, 0x02, 0xc4, 0x07, 0xc5, 0xc3, 0x49, 0xd8, 0x95, +0x01, 0x18, 0x07, 0x18, 0x80, 0x27, 0xf0, 0xa5, 0xdc, 0x45, 0xf1, 0x01, +0xa1, 0x63, 0xc6, 0x51, 0x44, 0x8f, 0xda, 0xca, 0xa1, 0x2c, 0x9b, 0x9e, +0xdf, 0x9c, 0x38, 0xec, 0xe1, 0x81, 0xea, 0x50, 0xfe, 0x01, 0xa9, 0x14, +0xca, 0xb0, 0x6a, 0x86, 0x4c, 0x52, 0x9e, 0x05, 0xb0, 0xc9, 0x4d, 0x45, +0x45, 0x8e, 0x4c, 0x97, 0x42, 0x85, 0x41, 0x82, 0x1b, 0x55, 0x69, 0x54, +0x08, 0x30, 0xc4, 0x9d, 0x07, 0x65, 0xc8, 0x56, 0x2a, 0x7b, 0x33, 0x34, +0xcd, 0x21, 0x3b, 0xb4, 0x60, 0x40, 0x27, 0x56, 0x21, 0x53, 0xa1, 0x54, +0xfd, 0x90, 0x2f, 0xf9, 0x2b, 0x03, 0xea, 0x08, 0x61, 0x1c, 0x31, 0xdd, +0x28, 0x96, 0x22, 0xdc, 0x40, 0x6e, 0xa4, 0x6e, 0x21, 0x60, 0x30, 0x0c, +0x0b, 0x8d, 0x0a, 0x99, 0xda, 0x94, 0x67, 0xcc, 0x7a, 0xb0, 0x52, 0x94, +0x05, 0x30, 0x6a, 0x86, 0x02, 0x3c, 0xfd, 0x59, 0x7c, 0xba, 0x51, 0x45, +0x92, 0x51, 0x98, 0xdd, 0xab, 0xaa, 0xa3, 0xc2, 0xb0, 0xdc, 0x06, 0x92, +0x0a, 0xe2, 0xcb, 0xf0, 0x60, 0xbd, 0x09, 0xe2, 0x5d, 0xa2, 0x43, 0x85, +0xc4, 0x0a, 0x84, 0x18, 0x2a, 0x42, 0x62, 0x4d, 0xa3, 0x93, 0x0c, 0xf5, +0x15, 0x88, 0xa2, 0x22, 0xd4, 0xdf, 0x60, 0x74, 0xfe, 0xc1, 0x5f, 0x81, +0x28, 0x2a, 0x82, 0xbf, 0xa6, 0xd1, 0x11, 0x43, 0x7d, 0x05, 0xa2, 0xa8, +0x08, 0xf5, 0x37, 0x18, 0x9d, 0x7f, 0xf0, 0x57, 0x20, 0x8a, 0x8a, 0xe0, +0xaf, 0x69, 0x74, 0xc4, 0x50, 0x5f, 0x81, 0x8b, 0xa8, 0xc8, 0xcc, 0xcc, +0x24, 0xae, 0x81, 0x6e, 0x29, 0x78, 0x79, 0xa3, 0x47, 0x74, 0x05, 0x22, +0x79, 0x05, 0x40, 0x01, 0x58, 0x00, 0x11, 0x0e, 0xd2, 0x03, 0x88, 0x5e, +0x4e, 0x4e, 0x4e, 0x26, 0x78, 0x36, 0x7a, 0x44, 0x57, 0x20, 0x92, 0x57, +0x00, 0x14, 0x80, 0x05, 0x10, 0xf1, 0xff, 0x0a, 0xfb, 0x09, 0x6c, 0x5e, +0xaf, 0x2e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, +0x42, 0x60, 0x82, }; diff --git a/Source/Core/InputCommon/Src/ControllerEmu.h b/Source/Core/InputCommon/Src/ControllerEmu.h index 5dc54b463f..750aa692c4 100644 --- a/Source/Core/InputCommon/Src/ControllerEmu.h +++ b/Source/Core/InputCommon/Src/ControllerEmu.h @@ -42,7 +42,7 @@ enum SETTING_SQUARE, }; -const char * const named_directions[] = +const char * const named_directions[] = { "Up", "Down", @@ -109,7 +109,7 @@ public: ControlGroup(const char* const _name, const unsigned int _type = GROUP_TYPE_OTHER) : name(_name), type(_type) {} virtual ~ControlGroup(); - + virtual void LoadConfig(IniFile::Section *sec, const std::string& defdev = "", const std::string& base = "" ); virtual void SaveConfig(IniFile::Section *sec, const std::string& defdev = "", const std::string& base = "" ); @@ -325,7 +325,7 @@ public: { // this section might be all wrong, but its working good enough, I think - ControlState ang = atan2(yy, xx); + ControlState ang = atan2(yy, xx); ControlState ang_sin = sin(ang); ControlState ang_cos = cos(ang); @@ -352,7 +352,7 @@ public: // this is kinda silly here // gui being open will make this happen 2x as fast, o well - + // silly if (step) { @@ -391,7 +391,7 @@ public: m_z = std::max(m_z - 0.1f, zz); *z = m_z; - + // hide if (controls[6]->control_ref->State() > 0.5f) { diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp index 4e38e480ff..7287c380d5 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp @@ -249,7 +249,7 @@ Device::Control* ControllerInterface::InputReference::Detect(const unsigned int if (device->Inputs().size() == 0) return NULL; - // get starting state of all inputs, + // get starting state of all inputs, // so we can ignore those that were activated at time of Detect start std::vector::const_iterator i = device->Inputs().begin(), @@ -308,7 +308,7 @@ Device::Control* ControllerInterface::OutputReference::Detect(const unsigned int device->UpdateOutput(); Common::SleepCurrentThread(10); } - + State(0); device->UpdateOutput(); } diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h index 00b4b2c07d..4efb8941b7 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h +++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h @@ -109,7 +109,7 @@ public: }; ControllerInterface() : m_is_init(false), m_hwnd(NULL) {} - + void SetHwnd(void* const hwnd); void Initialize(); void Shutdown(); diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp index fa33595ee8..7211559e93 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.cpp @@ -76,17 +76,17 @@ void GetXInputGUIDS( std::vector& guids ) bstrNamespace = SysAllocString( L"\\\\.\\root\\cimv2" );if( bstrNamespace == NULL ) goto LCleanup; bstrClassName = SysAllocString( L"Win32_PNPEntity" ); if( bstrClassName == NULL ) goto LCleanup; bstrDeviceID = SysAllocString( L"DeviceID" ); if( bstrDeviceID == NULL ) goto LCleanup; - - // Connect to WMI + + // Connect to WMI hr = pIWbemLocator->ConnectServer( bstrNamespace, NULL, NULL, 0L, 0L, NULL, NULL, &pIWbemServices ); if( FAILED(hr) || pIWbemServices == NULL ) goto LCleanup; - // Switch security level to IMPERSONATE. - CoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, + // Switch security level to IMPERSONATE. + CoSetProxyBlanket( pIWbemServices, RPC_C_AUTHN_WINNT, RPC_C_AUTHZ_NONE, NULL, RPC_C_AUTHN_LEVEL_CALL, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE ); - hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices ); + hr = pIWbemServices->CreateInstanceEnum( bstrClassName, 0, NULL, &pEnumDevices ); if( FAILED(hr) || pEnumDevices == NULL ) goto LCleanup; @@ -105,7 +105,7 @@ void GetXInputGUIDS( std::vector& guids ) if( SUCCEEDED( hr ) && var.vt == VT_BSTR && var.bstrVal != NULL ) { // Check if the device ID contains "IG_". If it does, then it's an XInput device - // This information can not be found from DirectInput + // This information can not be found from DirectInput if( wcsstr( var.bstrVal, L"IG_" ) ) { // If it does, then get the VID/PID from var.bstrVal @@ -122,7 +122,7 @@ void GetXInputGUIDS( std::vector& guids ) guids.push_back( dwVidPid ); //bIsXinputDevice = true; } - } + } SAFE_RELEASE( pDevices[iDevice] ); } } @@ -324,7 +324,7 @@ Joystick::Joystick( /*const LPCDIDEVICEINSTANCE lpddi, */const LPDIRECTINPUTDEVI { eff.cbTypeSpecificParams = sizeof(DIPERIODIC); } - + LPDIRECTINPUTEFFECT pEffect; if (SUCCEEDED(m_device->CreateEffect(force_type_names[f].guid, &eff, &pEffect, NULL))) { diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.h b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.h index ad383bd764..20b38c8a69 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.h +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputJoystick.h @@ -88,7 +88,7 @@ public: Joystick(const LPDIRECTINPUTDEVICE8 device, const unsigned int index); ~Joystick(); - + std::string GetName() const; int GetId() const; std::string GetSource() const; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp index 45be64e91b..bcd3586dc6 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/SDL/SDL.cpp @@ -14,7 +14,7 @@ namespace ciface { namespace SDL { - + std::string GetJoystickName(int index) { #if SDL_VERSION_ATLEAST(2, 0, 0) @@ -25,7 +25,7 @@ std::string GetJoystickName(int index) } void Init( std::vector& devices ) -{ +{ // this is used to number the joysticks // multiple joysticks with the same name shall get unique ids starting at 0 std::map name_counts; @@ -79,7 +79,7 @@ Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsi // get buttons for (u8 i = 0; i != SDL_JoystickNumButtons(m_joystick); ++i) AddInput(new Button(i, m_joystick)); - + // get hats for (u8 i = 0; i != SDL_JoystickNumHats(m_joystick); ++i) { @@ -151,7 +151,7 @@ Joystick::~Joystick() { #ifdef USE_SDL_HAPTIC if (m_haptic) - { + { // stop/destroy all effects SDL_HapticStopAll(m_haptic); std::list::iterator @@ -306,7 +306,7 @@ bool Joystick::UpdateInput() { // each joystick is doin this, o well SDL_JoystickUpdate(); - + return true; } diff --git a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp index 2bc924bf41..0aa639aae8 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp @@ -10,7 +10,7 @@ static const struct { const char* const name; const WORD bitmask; -} named_buttons[] = +} named_buttons[] = { { "Button A", XINPUT_GAMEPAD_A }, { "Button B", XINPUT_GAMEPAD_B }, @@ -153,7 +153,7 @@ Device::Device(const XINPUT_CAPABILITIES& caps, u8 index) void Device::ClearInputState() { - ZeroMemory(&m_state_in, sizeof(m_state_in)); + ZeroMemory(&m_state_in, sizeof(m_state_in)); } std::string Device::GetName() const diff --git a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.cpp b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.cpp index b42eda1f21..23cadd3ee6 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.cpp @@ -8,8 +8,8 @@ #include // This is an input plugin using the XInput 2.0 extension to the X11 protocol, -// loosely based on the old XLib plugin. (Has nothing to do with the XInput -// API on Windows.) +// loosely based on the old XLib plugin. (Has nothing to do with the XInput +// API on Windows.) // This plugin creates one KeyboardMouse object for each master pointer/ // keyboard pair. Each KeyboardMouse object exports four types of controls: @@ -20,20 +20,20 @@ // center of the emulator window. // * Mouse axis controls: one for each cardinal direction. Calculated using // a running average of relative mouse motion on each axis. -// * Key controls: these correspond to a limited subset of the keyboard +// * Key controls: these correspond to a limited subset of the keyboard // keys. // Mouse axis control tuning. Unlike absolute mouse position, relative mouse // motion data needs to be tweaked and smoothed out a bit to be usable. -// Mouse axis control output is simply divided by this number. In practice, +// Mouse axis control output is simply divided by this number. In practice, // that just means you can use a smaller "dead zone" if you bind axis controls // to a joystick. No real need to make this customizable. #define MOUSE_AXIS_SENSITIVITY 8.0f // The mouse axis controls use a weighted running average. Each frame, the new -// value is the average of the old value and the amount of relative mouse +// value is the average of the old value and the amount of relative mouse // motion during that frame. The old value is weighted by a ratio of // MOUSE_AXIS_SMOOTHING:1 compared to the new value. Increasing // MOUSE_AXIS_SMOOTHING makes the controls smoother, decreasing it makes them @@ -49,31 +49,31 @@ namespace XInput2 void Init(std::vector& devices, void* const hwnd) { Display* dpy; - + dpy = XOpenDisplay(NULL); - - // xi_opcode is important; it will be used to identify XInput events by + + // xi_opcode is important; it will be used to identify XInput events by // the polling loop in UpdateInput. int xi_opcode, event, error; - + // verify that the XInput extension is available if (!XQueryExtension(dpy, "XInputExtension", &xi_opcode, &event, &error)) return; - + // verify that the XInput extension is at at least version 2.0 int major = 2, minor = 0; - + if (XIQueryVersion(dpy, &major, &minor) != Success) return; - + // register all master devices with Dolphin - + XIDeviceInfo* all_masters; XIDeviceInfo* current_master; int num_masters; - + all_masters = XIQueryDevice(dpy, XIAllMasterDevices, &num_masters); - + for (int i = 0; i < num_masters; i++) { current_master = &all_masters[i]; @@ -82,34 +82,34 @@ void Init(std::vector& devices, void* const hwnd) // be a master keyboard. devices.push_back(new KeyboardMouse((Window)hwnd, xi_opcode, current_master->deviceid, current_master->attachment)); } - + XCloseDisplay(dpy); - + XIFreeDeviceInfo(all_masters); } -// Apply the event mask to the device and all its slaves. Only used in the +// Apply the event mask to the device and all its slaves. Only used in the // constructor. Remember, each KeyboardMouse has its own copy of the event // stream, which is how multiple event masks can "coexist." void KeyboardMouse::SelectEventsForDevice(Window window, XIEventMask *mask, int deviceid) { // Set the event mask for the master device. - + mask->deviceid = deviceid; XISelectEvents(m_display, window, mask, 1); - + // Query all the master device's slaves and set the same event mask for // those too. There are two reasons we want to do this. For mouse devices, // we want the raw motion events, and only slaves (i.e. physical hardware // devices) emit those. For keyboard devices, selecting slaves avoids // dealing with key focus. - + XIDeviceInfo* all_slaves; XIDeviceInfo* current_slave; int num_slaves; - + all_slaves = XIQueryDevice(m_display, XIAllDevices, &num_slaves); - + for (int i = 0; i < num_slaves; i++) { current_slave = &all_slaves[i]; @@ -118,33 +118,33 @@ void KeyboardMouse::SelectEventsForDevice(Window window, XIEventMask *mask, int mask->deviceid = current_slave->deviceid; XISelectEvents(m_display, window, mask, 1); } - + XIFreeDeviceInfo(all_slaves); } -KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboard) +KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboard) : m_window(window), xi_opcode(opcode), pointer_deviceid(pointer), keyboard_deviceid(keyboard) { memset(&m_state, 0, sizeof(m_state)); - + // The cool thing about each KeyboardMouse object having its own Display // is that each one gets its own separate copy of the X11 event stream, // which it can individually filter to get just the events it's interested // in. So be aware that each KeyboardMouse object actually has its own X11 // "context." m_display = XOpenDisplay(NULL); - + int min_keycode, max_keycode; XDisplayKeycodes(m_display, &min_keycode, &max_keycode); - + int unused; // should always be 1 XIDeviceInfo* pointer_device = XIQueryDevice(m_display, pointer_deviceid, &unused); name = std::string(pointer_device->name); XIFreeDeviceInfo(pointer_device); - + XIEventMask mask; unsigned char mask_buf[(XI_LASTEVENT + 7)/8]; - + mask.mask_len = sizeof(mask_buf); mask.mask = mask_buf; memset(mask_buf, 0, sizeof(mask_buf)); @@ -155,9 +155,9 @@ KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboar XISetMask(mask_buf, XI_KeyPress); XISetMask(mask_buf, XI_KeyRelease); - SelectEventsForDevice(DefaultRootWindow(m_display), &mask, pointer_deviceid); + SelectEventsForDevice(DefaultRootWindow(m_display), &mask, pointer_deviceid); SelectEventsForDevice(DefaultRootWindow(m_display), &mask, keyboard_deviceid); - + // Keyboard Keys for (int i = min_keycode; i <= max_keycode; ++i) { @@ -175,7 +175,7 @@ KeyboardMouse::KeyboardMouse(Window window, int opcode, int pointer, int keyboar // Mouse Cursor, X-/+ and Y-/+ for (int i = 0; i != 4; ++i) AddInput(new Cursor(!!(i & 2), !!(i & 1), (&m_state.cursor.x)[!!(i & 2)])); - + // Mouse Axis, X-/+ and Y-/+ for (int i = 0; i != 4; ++i) AddInput(new Axis(!!(i & 2), !!(i & 1), (&m_state.axis.x)[!!(i & 2)])); @@ -191,15 +191,15 @@ void KeyboardMouse::UpdateCursor() { double root_x, root_y, win_x, win_y; Window root, child; - - // unused-- we're not interested in button presses here, as those are + + // unused-- we're not interested in button presses here, as those are // updated using events XIButtonState button_state; XIModifierState mods; XIGroupState group; - + XIQueryPointer(m_display, pointer_deviceid, m_window, &root, &child, &root_x, &root_y, &win_x, &win_y, &button_state, &mods, &group); - + free (button_state.mask); XWindowAttributes win_attribs; @@ -213,32 +213,32 @@ void KeyboardMouse::UpdateCursor() bool KeyboardMouse::UpdateInput() { XFlush(m_display); - + // Get the absolute position of the mouse pointer UpdateCursor(); - + // for the axis controls float delta_x = 0.0f, delta_y = 0.0f; double delta_delta; - + // Iterate through the event queue - update the axis controls, mouse // button controls, and keyboard controls. XEvent event; - while (XPending(m_display)) + while (XPending(m_display)) { XNextEvent(m_display, &event); - + if (event.xcookie.type != GenericEvent) continue; if (event.xcookie.extension != xi_opcode) continue; if (!XGetEventData(m_display, &event.xcookie)) continue; - + // only one of these will get used XIDeviceEvent* dev_event = (XIDeviceEvent*)event.xcookie.data; XIRawEvent* raw_event = (XIRawEvent*)event.xcookie.data; - + switch (event.xcookie.evtype) { case XI_ButtonPress: @@ -254,7 +254,7 @@ bool KeyboardMouse::UpdateInput() m_state.keyboard[dev_event->detail / 8] &= ~(1<<(dev_event->detail % 8)); break; case XI_RawMotion: - // always safe because there is always at least one byte in + // always safe because there is always at least one byte in // raw_event->valuators.mask, and if a bit is set in the mask, // then the value in raw_values is also available. if (XIMaskIsSet(raw_event->valuators.mask, 0)) @@ -273,10 +273,10 @@ bool KeyboardMouse::UpdateInput() } break; } - + XFreeEventData(m_display, &event.xcookie); } - + // apply axis smoothing m_state.axis.x *= MOUSE_AXIS_SMOOTHING; m_state.axis.x += delta_x; @@ -284,7 +284,7 @@ bool KeyboardMouse::UpdateInput() m_state.axis.y *= MOUSE_AXIS_SMOOTHING; m_state.axis.y += delta_y; m_state.axis.y /= MOUSE_AXIS_SMOOTHING+1.0f; - + return true; } @@ -322,10 +322,10 @@ KeyboardMouse::Key::Key(Display* const display, KeyCode keycode, const char* key } while (keysym == NoSymbol && i < 8); - // Convert to upper case for the keyname + // Convert to upper case for the keyname if (keysym >= 97 && keysym <= 122) keysym -= 32; - + // 0x0110ffff is the top of the unicode character range according // to keysymdef.h although it is probably more than we need. if (keysym == NoSymbol || keysym > 0x0110ffff || diff --git a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.h b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.h index 58a1a38c8c..dfb8fa285d 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.h +++ b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/XInput2.h @@ -35,7 +35,7 @@ private: float x, y; } cursor, axis; }; - + class Key : public Input { friend class KeyboardMouse; @@ -43,21 +43,21 @@ private: std::string GetName() const { return m_keyname; } Key(Display* display, KeyCode keycode, const char* keyboard); ControlState GetState() const; - + private: std::string m_keyname; Display* const m_display; const char* const m_keyboard; const KeyCode m_keycode; }; - + class Button : public Input { public: std::string GetName() const { return name; } Button(unsigned int index, unsigned int& buttons); ControlState GetState() const; - + private: const unsigned int& m_buttons; const unsigned int m_index; @@ -71,14 +71,14 @@ private: bool IsDetectable() { return false; } Cursor(u8 index, bool positive, const float& cursor); ControlState GetState() const; - + private: const float& m_cursor; const u8 m_index; const bool m_positive; std::string name; }; - + class Axis : public Input { public: @@ -93,22 +93,22 @@ private: const bool m_positive; std::string name; }; - + private: void SelectEventsForDevice(Window window, XIEventMask *mask, int deviceid); void UpdateCursor(); - + public: bool UpdateInput(); bool UpdateOutput(); - + KeyboardMouse(Window window, int opcode, int pointer_deviceid, int keyboard_deviceid); ~KeyboardMouse(); - + std::string GetName() const; std::string GetSource() const; int GetId() const; - + private: Window m_window; Display* m_display; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp index 7016c4908b..e507b88c9f 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.cpp @@ -20,7 +20,7 @@ KeyboardMouse::KeyboardMouse(Window window) : m_window(window) int min_keycode, max_keycode; XDisplayKeycodes(m_display, &min_keycode, &max_keycode); - + // Keyboard Keys for (int i = min_keycode; i <= max_keycode; ++i) { @@ -99,7 +99,7 @@ KeyboardMouse::Key::Key(Display* const display, KeyCode keycode, const char* key i++; } while (keysym == NoSymbol && i < 8); - + // Convert to upper case for the keyname if (keysym >= 97 && keysym <= 122) keysym -= 32; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h index c178f1e9b4..35b6100081 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h +++ b/Source/Core/InputCommon/Src/ControllerInterface/Xlib/Xlib.h @@ -26,7 +26,7 @@ private: float x, y; } cursor; }; - + class Key : public Input { friend class KeyboardMouse; @@ -34,14 +34,14 @@ private: std::string GetName() const; Key(Display* display, KeyCode keycode, const char* keyboard); ControlState GetState() const; - + private: std::string m_keyname; Display* const m_display; const char* const m_keyboard; const KeyCode m_keycode; }; - + class Button : public Input { public: @@ -49,7 +49,7 @@ private: Button(unsigned int index, unsigned int& buttons) : m_buttons(buttons), m_index(index) {} ControlState GetState() const; - + private: const unsigned int& m_buttons; const unsigned int m_index; @@ -69,18 +69,18 @@ private: const u8 m_index; const bool m_positive; }; - + public: bool UpdateInput(); bool UpdateOutput(); - + KeyboardMouse(Window window); ~KeyboardMouse(); - + std::string GetName() const; std::string GetSource() const; int GetId() const; - + private: Window m_window; Display* m_display; diff --git a/Source/Core/InputCommon/Src/UDPWiimote.cpp b/Source/Core/InputCommon/Src/UDPWiimote.cpp index f6f505a74d..5419cb61ce 100644 --- a/Source/Core/InputCommon/Src/UDPWiimote.cpp +++ b/Source/Core/InputCommon/Src/UDPWiimote.cpp @@ -59,12 +59,12 @@ struct UDPWiimote::_d int UDPWiimote::noinst = 0; -UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) : +UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) : port(_port), displayName(name), d(new _d) ,x(0),y(0),z(1.0f),naX(0),naY(0),naZ(-1.0f),nunX(0),nunY(0), pointerX(1001.0f/2),pointerY(0),nunMask(0),mask(0),index(_index), int_port(atoi(_port)) { - + static bool sranded=false; if (!sranded) { @@ -72,7 +72,7 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) : sranded=true; } bcastMagic=rand() & 0xFFFF; - + #ifdef _WIN32 u_long iMode = 1; #endif @@ -88,21 +88,21 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) : WSAStartup(sockVersion, &wsaData); } #endif - + noinst++; memset(&hints, 0, sizeof hints); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_DGRAM; hints.ai_flags = AI_PASSIVE; // use my IP - + if (!int_port) { cleanup; err=-1; return; } - + if ((rv = getaddrinfo(NULL, _port, &hints, &servinfo)) != 0) { cleanup; @@ -126,14 +126,14 @@ UDPWiimote::UDPWiimote(const char *_port, const char * name, int _index) : } d->sockfds.push_back(sock); } - + if (d->sockfds.empty()) { cleanup; err=-2; return; } - + freeaddrinfo(servinfo); err=0; d->exit=false; @@ -168,7 +168,7 @@ void UDPWiimote::mainThread() maxfd=(fd)+1; #endif } - + u64 tleft=timeout.tv_sec*1000+timeout.tv_usec/1000; u64 telapsed=time.GetTimeDifference(); time.Update(); @@ -184,14 +184,14 @@ void UDPWiimote::mainThread() timeout.tv_sec=(long)(tleft/1000); timeout.tv_usec=(tleft%1000)*1000; } - + lk.unlock(); //VERY hacky. don't like it - if (d->exit) return; + if (d->exit) return; int rt=select(maxfd,&fds,NULL,NULL,&timeout); if (d->exit) return; lk.lock(); if (d->exit) return; - + if (rt) { for (sock_t fd : d->sockfds) @@ -203,9 +203,9 @@ void UDPWiimote::mainThread() size_t addr_len; struct sockaddr_storage their_addr; addr_len = sizeof their_addr; - if ((size = recvfrom(fd, - (dataz)bf, - size , 0,(struct sockaddr *)&their_addr, (socklen_t*)&addr_len)) == -1) + if ((size = recvfrom(fd, + (dataz)bf, + size , 0,(struct sockaddr *)&their_addr, (socklen_t*)&addr_len)) == -1) { ERROR_LOG(WIIMOTE,"UDPWii Packet error"); } @@ -327,7 +327,7 @@ void UDPWiimote::initBroadcastIPv4() WARN_LOG(WIIMOTE,"socket() failed"); return; } - + int broad=1; if (setsockopt(d->bipv4_fd,SOL_SOCKET,SO_BROADCAST, (const dataz)(&broad), sizeof broad) == -1) { @@ -344,7 +344,7 @@ void UDPWiimote::broadcastIPv4(const void * data, size_t size) their_addr.sin_port = htons(4431); their_addr.sin_addr.s_addr = INADDR_BROADCAST; memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero); - + int num; if ((num=sendto(d->bipv4_fd,(const dataz)data,(int)size,0,(struct sockaddr *) &their_addr, sizeof their_addr)) == -1) { diff --git a/Source/Core/InputCommon/Src/UDPWiimote.h b/Source/Core/InputCommon/Src/UDPWiimote.h index 01b9b11969..877cb87473 100644 --- a/Source/Core/InputCommon/Src/UDPWiimote.h +++ b/Source/Core/InputCommon/Src/UDPWiimote.h @@ -38,7 +38,7 @@ private: std::string port,displayName; int pharsePacket(u8 * data, size_t size); struct _d; //using pimpl because Winsock2.h doesn't have include guards -_- - _d *d; + _d *d; double x,y,z; double naX,naY,naZ; double nunX,nunY; diff --git a/Source/Core/InputCommon/Src/UDPWrapper.cpp b/Source/Core/InputCommon/Src/UDPWrapper.cpp index e176a2164d..7fc77c4f44 100644 --- a/Source/Core/InputCommon/Src/UDPWrapper.cpp +++ b/Source/Core/InputCommon/Src/UDPWrapper.cpp @@ -12,7 +12,7 @@ const char* DefaultPort(const int index) return s.c_str(); } -UDPWrapper::UDPWrapper(int indx, const char* const _name) : +UDPWrapper::UDPWrapper(int indx, const char* const _name) : ControllerEmu::ControlGroup(_name,GROUP_TYPE_UDPWII), inst(NULL), index(indx), updIR(false),updAccel(false), diff --git a/Source/Core/InputCommon/Src/X11InputBase.cpp b/Source/Core/InputCommon/Src/X11InputBase.cpp index d23d2d77c5..b555a21449 100644 --- a/Source/Core/InputCommon/Src/X11InputBase.cpp +++ b/Source/Core/InputCommon/Src/X11InputBase.cpp @@ -105,7 +105,7 @@ KeySym wxCharCodeWXToX(int id) if (id >= 65 && id <= 90) // Standard uppercase letter: return lowercase keycode keySym = (KeySym)id + 32; - else + else // All other keyboard characters keySym = id <= 255 ? (KeySym)id : 0; } @@ -126,7 +126,7 @@ int wxKeyModWXToX(int modstate) #endif void XKeyToString(unsigned int keycode, char *keyStr) { switch (keycode) - { + { case XK_Insert: sprintf(keyStr, "INSERT"); break; @@ -148,10 +148,10 @@ void XKeyToString(unsigned int keycode, char *keyStr) { case XK_Left: sprintf(keyStr, "LEFT"); break; - case XK_Up: + case XK_Up: sprintf(keyStr, "UP"); break; - case XK_Right: + case XK_Right: sprintf(keyStr, "RIGHT"); break; case XK_Down: @@ -178,10 +178,10 @@ void XKeyToString(unsigned int keycode, char *keyStr) { case XK_KP_Left: sprintf(keyStr, "KP LEFT"); break; - case XK_KP_Up: + case XK_KP_Up: sprintf(keyStr, "KP UP"); break; - case XK_KP_Right: + case XK_KP_Right: sprintf(keyStr, "KP RIGHT"); break; case XK_KP_Down: diff --git a/Source/Core/VideoBackends/D3D/Src/D3DBase.h b/Source/Core/VideoBackends/D3D/Src/D3DBase.h index 899621d6c6..7f26cbd3cc 100644 --- a/Source/Core/VideoBackends/D3D/Src/D3DBase.h +++ b/Source/Core/VideoBackends/D3D/Src/D3DBase.h @@ -10,7 +10,7 @@ #include "Common.h" #include -namespace DX11 +namespace DX11 { #define SAFE_RELEASE(x) { if (x) (x)->Release(); (x) = NULL; } diff --git a/Source/Core/VideoBackends/D3D/Src/D3DShader.cpp b/Source/Core/VideoBackends/D3D/Src/D3DShader.cpp index 3ce33898cb..51a51b7233 100644 --- a/Source/Core/VideoBackends/D3D/Src/D3DShader.cpp +++ b/Source/Core/VideoBackends/D3D/Src/D3DShader.cpp @@ -39,7 +39,6 @@ bool CompileVertexShader(const char* code, unsigned int len, D3DBlob** blob) #endif HRESULT hr = PD3DCompile(code, len, NULL, NULL, NULL, "main", D3D::VertexShaderVersionString(), flags, 0, &shaderBuffer, &errorBuffer); - if (errorBuffer) { INFO_LOG(VIDEO, "Vertex shader compiler messages:\n%s\n", @@ -233,4 +232,4 @@ ID3D11PixelShader* CompileAndCreatePixelShader(const char* code, } // namespace -} // namespace DX11 \ No newline at end of file +} // namespace DX11 diff --git a/Source/Core/VideoBackends/D3D/Src/FramebufferManager.cpp b/Source/Core/VideoBackends/D3D/Src/FramebufferManager.cpp index 2e72380603..973cf38181 100644 --- a/Source/Core/VideoBackends/D3D/Src/FramebufferManager.cpp +++ b/Source/Core/VideoBackends/D3D/Src/FramebufferManager.cpp @@ -196,7 +196,7 @@ void XFBSource::DecodeToTexture(u32 xfbAddr, u32 fbWidth, u32 fbHeight) void XFBSource::CopyEFB(float Gamma) { g_renderer->ResetAPIState(); // reset any game specific settings - + // Copy EFB data to XFB and restore render target again const D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, (float)texWidth, (float)texHeight); @@ -211,7 +211,7 @@ void XFBSource::CopyEFB(float Gamma) D3D::context->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV(), FramebufferManager::GetEFBDepthTexture()->GetDSV()); - + g_renderer->RestoreAPIState(); } diff --git a/Source/Core/VideoBackends/D3D/Src/LineGeometryShader.cpp b/Source/Core/VideoBackends/D3D/Src/LineGeometryShader.cpp index 4b96953a3a..a68dadaabb 100644 --- a/Source/Core/VideoBackends/D3D/Src/LineGeometryShader.cpp +++ b/Source/Core/VideoBackends/D3D/Src/LineGeometryShader.cpp @@ -177,7 +177,7 @@ bool LineGeometryShader::SetShader(u32 components, float lineWidth, std::stringstream numTexCoordsStream; numTexCoordsStream << xfregs.numTexGen.numTexGens; - + INFO_LOG(VIDEO, "Compiling line geometry shader for components 0x%.08X (num texcoords %d)", components, xfregs.numTexGen.numTexGens); diff --git a/Source/Core/VideoBackends/D3D/Src/NativeVertexFormat.cpp b/Source/Core/VideoBackends/D3D/Src/NativeVertexFormat.cpp index 373026bcd3..4c6332dedd 100644 --- a/Source/Core/VideoBackends/D3D/Src/NativeVertexFormat.cpp +++ b/Source/Core/VideoBackends/D3D/Src/NativeVertexFormat.cpp @@ -76,7 +76,7 @@ void D3DVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl) for (int i = 0; i < 3; i++) { - if (_vtx_decl.normal_offset[i] > 0) + if (_vtx_decl.normal_offset[i] > 0) { m_elems[m_num_elems].SemanticName = "NORMAL"; m_elems[m_num_elems].SemanticIndex = i; @@ -89,7 +89,7 @@ void D3DVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl) for (int i = 0; i < 2; i++) { - if (_vtx_decl.color_offset[i] > 0) + if (_vtx_decl.color_offset[i] > 0) { m_elems[m_num_elems].SemanticName = "COLOR"; m_elems[m_num_elems].SemanticIndex = i; diff --git a/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.cpp b/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.cpp index 5282c4cbb7..82e95d2bf0 100644 --- a/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.cpp +++ b/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.cpp @@ -31,7 +31,7 @@ namespace DX11 { - + union EFBEncodeParams { struct @@ -384,7 +384,7 @@ static const char EFB_ENCODE_PS[] = "sample[y*8+x] = SampleEFB(subBlockUL+float2(x,y));\n" "}\n" "}\n" - + "uint dw[4];\n" "for (uint i = 0; i < 4; ++i) {\n" "dw[i] = UINT_44444444_BE(\n" @@ -433,7 +433,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample2.r, sample6.r, sampleA.r, sampleE.r),\n" "255*float4(sample3.r, sample7.r, sampleB.r, sampleF.r)\n" ");\n" - + "return dw4;\n" "}\n" @@ -444,7 +444,7 @@ static const char EFB_ENCODE_PS[] = "float2 blockUL = blockCoord * float2(8,4);\n" "float2 subBlockUL = blockUL + float2(0, 2*(cacheCoord.x%2));\n" - + "float4 sample0 = SampleEFB(subBlockUL+float2(0,0));\n" "float4 sample1 = SampleEFB(subBlockUL+float2(1,0));\n" "float4 sample2 = SampleEFB(subBlockUL+float2(2,0));\n" @@ -486,7 +486,7 @@ static const char EFB_ENCODE_PS[] = "Float8ToUint4(sampleE.a), Float8ToUint4(sampleE.r),\n" "Float8ToUint4(sampleF.a), Float8ToUint4(sampleF.r)\n" ");\n" - + "return uint4(dw0, dw1, dw2, dw3);\n" "}\n" @@ -513,7 +513,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample1.a, sample3.a, sample5.a, sample7.a),\n" "255*float4(sample1.r, sample3.r, sample5.r, sample7.r)\n" ");\n" - + "return dw4;\n" "}\n" @@ -532,7 +532,7 @@ static const char EFB_ENCODE_PS[] = "float4 sample5 = SampleEFB(subBlockUL+float2(1,1));\n" "float4 sample6 = SampleEFB(subBlockUL+float2(2,1));\n" "float4 sample7 = SampleEFB(subBlockUL+float2(3,1));\n" - + "uint dw0 = UINT_1616(EncodeRGB565(sample0), EncodeRGB565(sample1));\n" "uint dw1 = UINT_1616(EncodeRGB565(sample2), EncodeRGB565(sample3));\n" "uint dw2 = UINT_1616(EncodeRGB565(sample4), EncodeRGB565(sample5));\n" @@ -556,12 +556,12 @@ static const char EFB_ENCODE_PS[] = "float4 sample5 = SampleEFB(subBlockUL+float2(1,1));\n" "float4 sample6 = SampleEFB(subBlockUL+float2(2,1));\n" "float4 sample7 = SampleEFB(subBlockUL+float2(3,1));\n" - + "uint dw0 = UINT_1616(EncodeRGB5A3(sample0), EncodeRGB5A3(sample1));\n" "uint dw1 = UINT_1616(EncodeRGB5A3(sample2), EncodeRGB5A3(sample3));\n" "uint dw2 = UINT_1616(EncodeRGB5A3(sample4), EncodeRGB5A3(sample5));\n" "uint dw3 = UINT_1616(EncodeRGB5A3(sample6), EncodeRGB5A3(sample7));\n" - + "return Swap4_32(uint4(dw0, dw1, dw2, dw3));\n" "}\n" @@ -602,7 +602,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample1.b, sample3.b, sample5.b, sample7.b)\n" ");\n" "}\n" - + "return dw4;\n" "}\n" @@ -612,7 +612,7 @@ static const char EFB_ENCODE_PS[] = "float2 blockUL = blockCoord * float2(8,4);\n" "float2 subBlockUL = blockUL + float2(0, 2*(cacheCoord.x%2));\n" - + "float4 sample0 = SampleEFB(subBlockUL+float2(0,0));\n" "float4 sample1 = SampleEFB(subBlockUL+float2(1,0));\n" "float4 sample2 = SampleEFB(subBlockUL+float2(2,0));\n" @@ -636,7 +636,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample2.a, sample6.a, sampleA.a, sampleE.a),\n" "255*float4(sample3.a, sample7.a, sampleB.a, sampleF.a)\n" ");\n" - + "return dw4;\n" "}\n" @@ -670,7 +670,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample2.r, sample6.r, sampleA.r, sampleE.r),\n" "255*float4(sample3.r, sample7.r, sampleB.r, sampleF.r)\n" ");\n" - + "return dw4;\n" "}\n" @@ -705,7 +705,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample2.g, sample6.g, sampleA.g, sampleE.g),\n" "255*float4(sample3.g, sample7.g, sampleB.g, sampleF.g)\n" ");\n" - + "return dw4;\n" "}\n" @@ -715,7 +715,7 @@ static const char EFB_ENCODE_PS[] = "float2 blockUL = blockCoord * float2(8,4);\n" "float2 subBlockUL = blockUL + float2(0, 2*(cacheCoord.x%2));\n" - + "float4 sample0 = SampleEFB(subBlockUL+float2(0,0));\n" "float4 sample1 = SampleEFB(subBlockUL+float2(1,0));\n" "float4 sample2 = SampleEFB(subBlockUL+float2(2,0));\n" @@ -739,7 +739,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample2.b, sample6.b, sampleA.b, sampleE.b),\n" "255*float4(sample3.b, sample7.b, sampleB.b, sampleF.b)\n" ");\n" - + "return dw4;\n" "}\n" @@ -765,7 +765,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample1.g, sample3.g, sample5.g, sample7.g),\n" "255*float4(sample1.r, sample3.r, sample5.r, sample7.r)\n" ");\n" - + "return dw4;\n" "}\n" @@ -792,7 +792,7 @@ static const char EFB_ENCODE_PS[] = "255*float4(sample1.b, sample3.b, sample5.b, sample7.b),\n" "255*float4(sample1.g, sample3.g, sample5.g, sample7.g)\n" ");\n" - + "return dw4;\n" "}\n" @@ -902,7 +902,7 @@ void PSTextureEncoder::Init() D3D::SetDebugObjectName(m_outRTV, "efb encoder output rtv"); // Create output staging buffer - + t2dd.Usage = D3D11_USAGE_STAGING; t2dd.BindFlags = 0; t2dd.CPUAccessFlags = D3D11_CPU_ACCESS_READ; @@ -998,7 +998,7 @@ void PSTextureEncoder::Init() void PSTextureEncoder::Shutdown() { m_ready = false; - + for (size_t i = 0; i < 4; ++i) SAFE_RELEASE(m_fetchClass[i]); for (size_t i = 0; i < 2; ++i) @@ -1008,7 +1008,7 @@ void PSTextureEncoder::Shutdown() for (size_t i = 0; i < 16; ++i) SAFE_RELEASE(m_generatorClass[i]); m_linkageArray.clear(); - + SAFE_RELEASE(m_classLinkage); SAFE_RELEASE(m_dynamicShader); @@ -1073,13 +1073,13 @@ size_t PSTextureEncoder::Encode(u8* dst, unsigned int dstFormat, _assert_msg_(VIDEO, totalCacheLines*32 <= MAX_BYTES_PER_ENCODE, "total encode size sanity check"); size_t encodeSize = 0; - + // Reset API g_renderer->ResetAPIState(); // Set up all the state for EFB encoding - + #ifdef USE_DYNAMIC_MODE if (SetDynamicShader(dstFormat, srcFormat, isIntensity, scaleByHalf)) #else @@ -1092,7 +1092,7 @@ size_t PSTextureEncoder::Encode(u8* dst, unsigned int dstFormat, D3D::stateman->PushDepthState(m_efbEncodeDepthState); D3D::stateman->PushRasterizerState(m_efbEncodeRastState); D3D::stateman->Apply(); - + D3D11_VIEWPORT vp = CD3D11_VIEWPORT(0.f, 0.f, FLOAT(cacheLinesPerRow*2), FLOAT(numBlocksY)); D3D::context->RSSetViewports(1, &vp); @@ -1101,14 +1101,14 @@ size_t PSTextureEncoder::Encode(u8* dst, unsigned int dstFormat, UINT stride = sizeof(QuadVertex); UINT offset = 0; D3D::context->IASetVertexBuffers(0, 1, &m_quad, &stride, &offset); - + EFBRectangle fullSrcRect; fullSrcRect.left = 0; fullSrcRect.top = 0; fullSrcRect.right = EFB_WIDTH; fullSrcRect.bottom = EFB_HEIGHT; TargetRectangle targetRect = g_renderer->ConvertEFBRectangle(fullSrcRect); - + EFBEncodeParams params = { 0 }; params.NumHalfCacheLinesX = FLOAT(cacheLinesPerRow*2); params.NumBlocksY = FLOAT(numBlocksY); @@ -1121,7 +1121,7 @@ size_t PSTextureEncoder::Encode(u8* dst, unsigned int dstFormat, D3D::context->UpdateSubresource(m_encodeParams, 0, NULL, ¶ms, 0, 0); D3D::context->VSSetConstantBuffers(0, 1, &m_encodeParams); - + D3D::context->OMSetRenderTargets(1, &m_outRTV, NULL); ID3D11ShaderResourceView* pEFB = (srcFormat == PIXELFMT_Z24) ? @@ -1145,17 +1145,17 @@ size_t PSTextureEncoder::Encode(u8* dst, unsigned int dstFormat, D3D::context->CopySubresourceRegion(m_outStage, 0, 0, 0, 0, m_out, 0, &srcBox); // Clean up state - + IUnknown* nullDummy = NULL; D3D::context->PSSetSamplers(0, 1, (ID3D11SamplerState**)&nullDummy); D3D::context->PSSetShaderResources(0, 1, (ID3D11ShaderResourceView**)&nullDummy); D3D::context->PSSetConstantBuffers(0, 1, (ID3D11Buffer**)&nullDummy); - + D3D::context->OMSetRenderTargets(0, NULL, NULL); D3D::context->VSSetConstantBuffers(0, 1, (ID3D11Buffer**)&nullDummy); - + D3D::stateman->PopRasterizerState(); D3D::stateman->PopDepthState(); D3D::stateman->PopBlendState(); @@ -1312,7 +1312,7 @@ bool PSTextureEncoder::InitDynamicMode() hr = D3D::device->CreatePixelShader(bytecode->Data(), bytecode->Size(), m_classLinkage, &m_dynamicShader); CHECK(SUCCEEDED(hr), "create efb encode pixel shader"); D3D::SetDebugObjectName(m_dynamicShader, "efb encoder pixel shader"); - + // Use D3DReflect ID3D11ShaderReflection* reflect = NULL; @@ -1438,7 +1438,7 @@ bool PSTextureEncoder::SetDynamicShader(unsigned int dstFormat, m_linkageArray[m_intensitySlot] = m_intensityClass[intensityNum]; if (m_generatorSlot != UINT(-1)) m_linkageArray[m_generatorSlot] = m_generatorClass[generatorNum]; - + D3D::context->PSSetShader(m_dynamicShader, m_linkageArray.empty() ? NULL : &m_linkageArray[0], (UINT)m_linkageArray.size()); diff --git a/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.h b/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.h index 14cdfa8bae..ff33e22c0a 100644 --- a/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.h +++ b/Source/Core/VideoBackends/D3D/Src/PSTextureEncoder.h @@ -37,7 +37,7 @@ public: bool scaleByHalf); private: - + bool m_ready; ID3D11Texture2D* m_out; @@ -73,7 +73,7 @@ private: // Stuff only used for dynamic-linking mode (SM5.0+, available as soon as // Microsoft fixes their bloody HLSL compiler) - + bool InitDynamicMode(); bool SetDynamicShader(unsigned int dstFormat, unsigned int srcFormat, bool isIntensity, bool scaleByHalf); diff --git a/Source/Core/VideoBackends/D3D/Src/PixelShaderCache.cpp b/Source/Core/VideoBackends/D3D/Src/PixelShaderCache.cpp index 04a1722d04..d8716c85f2 100644 --- a/Source/Core/VideoBackends/D3D/Src/PixelShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/Src/PixelShaderCache.cpp @@ -80,7 +80,7 @@ const char color_matrix_program_code[] = { "sampler samp0 : register(s0);\n" "Texture2D Tex0 : register(t0);\n" "uniform float4 cColMatrix[7] : register(c0);\n" - "void main(\n" + "void main(\n" "out float4 ocol0 : SV_Target,\n" "in float4 pos : SV_Position,\n" " in float2 uv0 : TEXCOORD0){\n" @@ -94,7 +94,7 @@ const char color_matrix_program_code_msaa[] = { "sampler samp0 : register(s0);\n" "Texture2DMS Tex0 : register(t0);\n" "uniform float4 cColMatrix[7] : register(c0);\n" - "void main(\n" + "void main(\n" "out float4 ocol0 : SV_Target,\n" "in float4 pos : SV_Position,\n" " in float2 uv0 : TEXCOORD0){\n" @@ -343,7 +343,7 @@ ID3D11Buffer* &PixelShaderCache::GetConstantBuffer() memcpy(map.pData, &PixelShaderManager::constants, sizeof(PixelShaderConstants)); D3D::context->Unmap(pscbuf, 0); PixelShaderManager::dirty = false; - + ADDSTAT(stats.thisFrame.bytesUniformStreamed, sizeof(PixelShaderConstants)); } return pscbuf; @@ -368,7 +368,7 @@ void PixelShaderCache::Init() D3D::SetDebugObjectName((ID3D11DeviceChild*)pscbuf, "pixel shader constant buffer used to emulate the GX pipeline"); // used when drawing clear quads - s_ClearProgram = D3D::CompileAndCreatePixelShader(clear_program_code, sizeof(clear_program_code)); + s_ClearProgram = D3D::CompileAndCreatePixelShader(clear_program_code, sizeof(clear_program_code)); CHECK(s_ClearProgram!=NULL, "Create clear pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_ClearProgram, "clear pixel shader"); @@ -441,7 +441,7 @@ void PixelShaderCache::Shutdown() SAFE_RELEASE(s_rgba6_to_rgb8[i]); SAFE_RELEASE(s_rgb8_to_rgba6[i]); } - + Clear(); g_ps_disk_cache.Sync(); g_ps_disk_cache.Close(); @@ -477,7 +477,7 @@ bool PixelShaderCache::SetShader(DSTALPHA_MODE dstAlphaMode, u32 components) { const PSCacheEntry &entry = iter->second; last_entry = &entry; - + GFX_DEBUGGER_PAUSE_AT(NEXT_PIXEL_SHADER_CHANGE,true); return (entry.shader != NULL); } diff --git a/Source/Core/VideoBackends/D3D/Src/PointGeometryShader.cpp b/Source/Core/VideoBackends/D3D/Src/PointGeometryShader.cpp index f33d7444a2..30e4434521 100644 --- a/Source/Core/VideoBackends/D3D/Src/PointGeometryShader.cpp +++ b/Source/Core/VideoBackends/D3D/Src/PointGeometryShader.cpp @@ -168,7 +168,7 @@ bool PointGeometryShader::SetShader(u32 components, float pointSize, code.SetBuffer(buffer); GenerateVSOutputStructForGS(code, components, API_D3D); code.Write("\n%s", POINT_GS_COMMON); - + std::stringstream numTexCoordsStream; numTexCoordsStream << xfregs.numTexGen.numTexGens; diff --git a/Source/Core/VideoBackends/D3D/Src/Render.cpp b/Source/Core/VideoBackends/D3D/Src/Render.cpp index eb2f54387f..9790f2b52e 100644 --- a/Source/Core/VideoBackends/D3D/Src/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Src/Render.cpp @@ -293,7 +293,7 @@ bool Renderer::CheckForResize() // Sanity check if ((client_width != Renderer::GetBackbufferWidth() || - client_height != Renderer::GetBackbufferHeight()) && + client_height != Renderer::GetBackbufferHeight()) && client_width >= 4 && client_height >= 4) { return true; @@ -449,7 +449,7 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) else if (bpmem.zcontrol.pixel_format == PIXELFMT_RGB565_Z16) { ret = RGBA8ToRGB565ToRGBA8(ret); - } + } if(bpmem.zcontrol.pixel_format != PIXELFMT_RGBA6_Z24) { ret |= 0xFF000000; @@ -537,7 +537,7 @@ void Renderer::ClearScreen(const EFBRectangle& rc, bool colorEnable, bool alphaE // Update the view port for clearing the picture TargetRectangle targetRc = Renderer::ConvertEFBRectangle(rc); - D3D11_VIEWPORT vp = CD3D11_VIEWPORT((float)targetRc.left, (float)targetRc.top, (float)targetRc.GetWidth(), (float)targetRc.GetHeight(), 0.f, 1.f); + D3D11_VIEWPORT vp = CD3D11_VIEWPORT((float)targetRc.left, (float)targetRc.top, (float)targetRc.GetWidth(), (float)targetRc.GetHeight(), 0.f, 1.f); D3D::context->RSSetViewports(1, &vp); // Color is passed in bgra mode so we need to convert it to rgba @@ -794,7 +794,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r { xfbSource = xfbSourceList[i]; MathUtil::Rectangle sourceRc; - + sourceRc.left = 0; sourceRc.top = 0; sourceRc.right = (float)xfbSource->texWidth; @@ -1252,7 +1252,7 @@ void Renderer::SetLogicOpMode() D3D11_BLEND_INV_DEST_COLOR,//10 D3D11_BLEND_ONE,//11 D3D11_BLEND_INV_SRC_COLOR,//12 - D3D11_BLEND_INV_SRC_COLOR,//13 + D3D11_BLEND_INV_SRC_COLOR,//13 D3D11_BLEND_INV_DEST_COLOR,//14 D3D11_BLEND_ONE//15 }; @@ -1271,7 +1271,7 @@ void Renderer::SetLogicOpMode() D3D11_BLEND_INV_DEST_COLOR,//10 D3D11_BLEND_INV_DEST_COLOR,//11 D3D11_BLEND_INV_SRC_COLOR,//12 - D3D11_BLEND_ONE,//13 + D3D11_BLEND_ONE,//13 D3D11_BLEND_INV_SRC_COLOR,//14 D3D11_BLEND_ONE//15 }; @@ -1322,7 +1322,7 @@ void Renderer::SetSamplerState(int stage, int texindex) const FourTexUnits &tex = bpmem.tex[texindex]; const TexMode0 &tm0 = tex.texMode0[stage]; const TexMode1 &tm1 = tex.texMode1[stage]; - + unsigned int mip = d3dMipFilters[tm0.min_filter & 3]; if (texindex) stage += 4; diff --git a/Source/Core/VideoBackends/D3D/Src/Television.cpp b/Source/Core/VideoBackends/D3D/Src/Television.cpp index daabf6d8b3..029ba9ce9f 100644 --- a/Source/Core/VideoBackends/D3D/Src/Television.cpp +++ b/Source/Core/VideoBackends/D3D/Src/Television.cpp @@ -103,7 +103,7 @@ void Television::Init() D3D::SetDebugObjectName(m_pShader, "yuyv decoder pixel shader"); // Create sampler state and set border color - // + // // The default sampler border color of { 0.f, 0.f, 0.f, 0.f } // creates a green border around the image - see issue 6483 // (remember, the XFB is being interpreted as YUYV, and 0,0,0,0 diff --git a/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp b/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp index 01fe239cda..7ee92459c6 100644 --- a/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp +++ b/Source/Core/VideoBackends/D3D/Src/TextureCache.cpp @@ -83,10 +83,10 @@ TextureCache::TCacheEntryBase* TextureCache::CreateTexture(unsigned int width, // TODO: better debug names D3D::SetDebugObjectName((ID3D11DeviceChild*)entry->texture->GetTex(), "a texture of the TextureCache"); - D3D::SetDebugObjectName((ID3D11DeviceChild*)entry->texture->GetSRV(), "shader resource view of a texture of the TextureCache"); + D3D::SetDebugObjectName((ID3D11DeviceChild*)entry->texture->GetSRV(), "shader resource view of a texture of the TextureCache"); SAFE_RELEASE(pTexture); - + if (tex_levels != 1) entry->Load(width, height, expanded_width, 0); @@ -138,7 +138,7 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo VertexShaderCache::GetSimpleVertexShader(), VertexShaderCache::GetSimpleInputLayout()); D3D::context->OMSetRenderTargets(1, &FramebufferManager::GetEFBColorTexture()->GetRTV(), FramebufferManager::GetEFBDepthTexture()->GetDSV()); - + g_renderer->RestoreAPIState(); } diff --git a/Source/Core/VideoBackends/D3D/Src/VertexManager.cpp b/Source/Core/VideoBackends/D3D/Src/VertexManager.cpp index b16a91ad95..a48a3d289a 100644 --- a/Source/Core/VideoBackends/D3D/Src/VertexManager.cpp +++ b/Source/Core/VideoBackends/D3D/Src/VertexManager.cpp @@ -40,7 +40,7 @@ void VertexManager::CreateDeviceObjects() m_line_draw_index = 0; m_point_draw_index = 0; m_index_buffers = new PID3D11Buffer[MAX_VBUFFER_COUNT]; - m_vertex_buffers = new PID3D11Buffer[MAX_VBUFFER_COUNT]; + m_vertex_buffers = new PID3D11Buffer[MAX_VBUFFER_COUNT]; for (m_current_index_buffer = 0; m_current_index_buffer < MAX_VBUFFER_COUNT; m_current_index_buffer++) { m_index_buffers[m_current_index_buffer] = NULL; @@ -74,7 +74,7 @@ void VertexManager::DestroyDeviceObjects() SAFE_RELEASE(m_vertex_buffers[m_current_vertex_buffer]); SAFE_RELEASE(m_index_buffers[m_current_vertex_buffer]); } - + } VertexManager::VertexManager() @@ -96,7 +96,7 @@ void VertexManager::PrepareDrawBuffers() if (m_vertex_buffer_cursor + vSize >= VBUFFER_SIZE) { // Wrap around - m_current_vertex_buffer = (m_current_vertex_buffer + 1) % MAX_VBUFFER_COUNT; + m_current_vertex_buffer = (m_current_vertex_buffer + 1) % MAX_VBUFFER_COUNT; m_vertex_buffer_cursor = 0; MapType = D3D11_MAP_WRITE_DISCARD; } @@ -114,7 +114,7 @@ void VertexManager::PrepareDrawBuffers() if (m_index_buffer_cursor + iCount >= (IBUFFER_SIZE / sizeof(u16))) { // Wrap around - m_current_index_buffer = (m_current_index_buffer + 1) % MAX_VBUFFER_COUNT; + m_current_index_buffer = (m_current_index_buffer + 1) % MAX_VBUFFER_COUNT; m_index_buffer_cursor = 0; MapType = D3D11_MAP_WRITE_DISCARD; } @@ -128,7 +128,7 @@ void VertexManager::PrepareDrawBuffers() memcpy((u16*)map.pData + m_point_draw_index, GetPointIndexBuffer(), sizeof(u16) * IndexGenerator::GetPointindexLen()); D3D::context->Unmap(m_index_buffers[m_current_index_buffer], 0); m_index_buffer_cursor += iCount; - + ADDSTAT(stats.thisFrame.bytesVertexStreamed, vSize); ADDSTAT(stats.thisFrame.bytesIndexStreamed, iCount*sizeof(u16)); } @@ -141,7 +141,7 @@ void VertexManager::Draw(UINT stride) { D3D::context->IASetVertexBuffers(0, 1, &m_vertex_buffers[m_current_vertex_buffer], &stride, &m_vertex_draw_offset); D3D::context->IASetIndexBuffer(m_index_buffers[m_current_index_buffer], DXGI_FORMAT_R16_UINT, 0); - + if (IndexGenerator::GetNumTriangles() > 0) { D3D::context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); @@ -217,10 +217,10 @@ void VertexManager::vFlush() { g_renderer->SetSamplerState(i & 3, i >> 2); const FourTexUnits &tex = bpmem.tex[i >> 2]; - const TextureCache::TCacheEntryBase* tentry = TextureCache::Load(i, + const TextureCache::TCacheEntryBase* tentry = TextureCache::Load(i, (tex.texImage3[i&3].image_base/* & 0x1FFFFF*/) << 5, tex.texImage0[i&3].width + 1, tex.texImage0[i&3].height + 1, - tex.texImage0[i&3].format, tex.texTlut[i&3].tmem_offset<<9, + tex.texImage0[i&3].format, tex.texTlut[i&3].tmem_offset<<9, tex.texTlut[i&3].tlut_format, (tex.texMode0[i&3].min_filter & 3), (tex.texMode1[i&3].max_lod + 0xf) / 0x10, diff --git a/Source/Core/VideoBackends/D3D/Src/VertexManager.h b/Source/Core/VideoBackends/D3D/Src/VertexManager.h index 889c2ee0eb..b4b7aa0ef4 100644 --- a/Source/Core/VideoBackends/D3D/Src/VertexManager.h +++ b/Source/Core/VideoBackends/D3D/Src/VertexManager.h @@ -23,7 +23,7 @@ public: void DestroyDeviceObjects(); private: - + void PrepareDrawBuffers(); void Draw(u32 stride); // temp diff --git a/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.cpp b/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.cpp index 28a03b3bca..e17f273a85 100644 --- a/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.cpp @@ -47,7 +47,7 @@ ID3D11Buffer* &VertexShaderCache::GetConstantBuffer() memcpy(map.pData, &VertexShaderManager::constants, sizeof(VertexShaderConstants)); D3D::context->Unmap(vscbuf, 0); VertexShaderManager::dirty = false; - + ADDSTAT(stats.thisFrame.bytesUniformStreamed, sizeof(VertexShaderConstants)); } return vscbuf; @@ -87,7 +87,7 @@ const char clear_shader_code[] = { "struct VSOUTPUT\n" "{\n" "float4 vPosition : POSITION;\n" - "float4 vColor0 : COLOR0;\n" + "float4 vColor0 : COLOR0;\n" "};\n" "VSOUTPUT main(float4 inPosition : POSITION,float4 inColor0: COLOR0)\n" "{\n" @@ -104,7 +104,7 @@ void VertexShaderCache::Init() { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, - + }; const D3D11_INPUT_ELEMENT_DESC clearelems[2] = { diff --git a/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.h b/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.h index b80dbcd7b1..5fe81a11d5 100644 --- a/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.h +++ b/Source/Core/VideoBackends/D3D/Src/VertexShaderCache.h @@ -35,7 +35,7 @@ public: private: struct VSCacheEntry - { + { ID3D11VertexShader* shader; D3DBlob* bytecode; // needed to initialize the input layout @@ -55,7 +55,7 @@ private: } }; typedef std::map VSCache; - + static VSCache vshaders; static const VSCacheEntry* last_entry; static VertexShaderUid last_uid; diff --git a/Source/Core/VideoBackends/D3D/Src/stdafx.h b/Source/Core/VideoBackends/D3D/Src/stdafx.h index 2431184aaf..81bb44dc19 100644 --- a/Source/Core/VideoBackends/D3D/Src/stdafx.h +++ b/Source/Core/VideoBackends/D3D/Src/stdafx.h @@ -9,4 +9,4 @@ #endif #include -#include +#include diff --git a/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp index 4c395d7257..081c5e71d0 100644 --- a/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp +++ b/Source/Core/VideoBackends/OGL/Src/FramebufferManager.cpp @@ -47,7 +47,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms m_resolvedColorTexture = 0; m_resolvedDepthTexture = 0; m_xfbFramebuffer = 0; - + m_targetWidth = targetWidth; m_targetHeight = targetHeight; @@ -95,7 +95,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms glBindTexture(getFbType(), m_efbDepth); glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0); glTexImage2D(getFbType(), 0, depthType, m_targetWidth, m_targetHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); - + glBindTexture(getFbType(), m_resolvedColorTexture); glTexParameteri(getFbType(), GL_TEXTURE_MAX_LEVEL, 0); glTexImage2D(getFbType(), 0, GL_RGBA, m_targetWidth, m_targetHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); @@ -177,14 +177,14 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms // Create XFB framebuffer; targets will be created elsewhere. glGenFramebuffers(1, &m_xfbFramebuffer); - + // EFB framebuffer is currently bound, make sure to clear its alpha value to 1.f glViewport(0, 0, m_targetWidth, m_targetHeight); glScissor(0, 0, m_targetWidth, m_targetHeight); glClearColor(0.f, 0.f, 0.f, 1.f); glClearDepthf(1.0f); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); - + // reinterpret pixel format glGenBuffers(1, &m_pixel_format_vbo); glGenVertexArrays(1, &m_pixel_format_vao); @@ -192,7 +192,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms glBindBuffer(GL_ARRAY_BUFFER, m_pixel_format_vbo); glEnableVertexAttribArray(SHADER_POSITION_ATTRIB); glVertexAttribPointer(SHADER_POSITION_ATTRIB, 2, GL_FLOAT, 0, sizeof(GLfloat)*2, NULL); - + float vertices[] = { -1.0, -1.0, 1.0, -1.0, @@ -200,14 +200,14 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms 1.0, 1.0, }; glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - - char vs[] = + + char vs[] = "ATTRIN vec2 rawpos;\n" "void main(void) {\n" " gl_Position = vec4(rawpos,0,1);\n" "}\n"; - - char ps_rgba6_to_rgb8[] = + + char ps_rgba6_to_rgb8[] = "uniform sampler2DRect samp9;\n" "COLOROUT(ocol0)\n" "void main()\n" @@ -220,8 +220,8 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms " dst8.a = 255;\n" " ocol0 = float4(dst8) / 255.f;\n" "}"; - - char ps_rgb8_to_rgba6[] = + + char ps_rgb8_to_rgba6[] = "uniform sampler2DRect samp9;\n" "COLOROUT(ocol0)\n" "void main()\n" @@ -234,11 +234,11 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms " dst6.a = src8.b & 0x3F;\n" " ocol0 = float4(dst6) / 63.f;\n" "}"; - + if(g_ogl_config.eSupportedGLSLVersion != GLSLES2) { // HACK: This shaders aren't glsles2 compatible as glsles2 don't support bit operations - // it could be workaround by floor + frac + tons off additions, but I think it isn't worth + // it could be workaround by floor + frac + tons off additions, but I think it isn't worth ProgramShaderCache::CompileShader(m_pixel_format_shaders[0], vs, ps_rgb8_to_rgba6); ProgramShaderCache::CompileShader(m_pixel_format_shaders[1], vs, ps_rgba6_to_rgb8); } @@ -273,7 +273,7 @@ FramebufferManager::~FramebufferManager() glDeleteRenderbuffers(2, glObj); m_efbColor = 0; m_efbDepth = 0; - + // reinterpret pixel format glDeleteVertexArrays(1, &m_pixel_format_vao); glDeleteBuffers(1, &m_pixel_format_vbo); @@ -386,9 +386,9 @@ void FramebufferManager::ReinterpretPixelData(unsigned int convtype) return; } g_renderer->ResetAPIState(); - + GLuint src_texture = 0; - + if(m_msaaSamples > 1) { // MSAA mode, so resolve first @@ -402,7 +402,7 @@ void FramebufferManager::ReinterpretPixelData(unsigned int convtype) // Return to EFB. glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_efbFramebuffer); - + src_texture = m_resolvedColorTexture; } else @@ -411,18 +411,18 @@ void FramebufferManager::ReinterpretPixelData(unsigned int convtype) src_texture = m_efbColor; m_efbColor = m_resolvedColorTexture; m_resolvedColorTexture = src_texture; - + // also switch them on fbo glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, getFbType(), m_efbColor, 0); } glViewport(0,0, m_targetWidth, m_targetHeight); glActiveTexture(GL_TEXTURE0 + 9); glBindTexture(getFbType(), src_texture); - + m_pixel_format_shaders[convtype ? 1 : 0].Bind(); glBindVertexArray(m_pixel_format_vao); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - + g_renderer->RestoreAPIState(); } @@ -452,7 +452,7 @@ void XFBSource::DecodeToTexture(u32 xfbAddr, u32 fbWidth, u32 fbHeight) void XFBSource::CopyEFB(float Gamma) { g_renderer->ResetAPIState(); - + // Copy EFB data to XFB and restore render target again glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetEFBFramebuffer()); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, FramebufferManager::GetXFBFramebuffer()); @@ -469,7 +469,7 @@ void XFBSource::CopyEFB(float Gamma) // Return to EFB. FramebufferManager::SetFramebuffer(0); - + g_renderer->RestoreAPIState(); } @@ -479,7 +479,7 @@ XFBSourceBase* FramebufferManager::CreateXFBSource(unsigned int target_width, un GLuint texture; glGenTextures(1, &texture); - + glActiveTexture(GL_TEXTURE0 + 9); glBindTexture(GL_TEXTURE_2D, texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); diff --git a/Source/Core/VideoBackends/OGL/Src/FramebufferManager.h b/Source/Core/VideoBackends/OGL/Src/FramebufferManager.h index 5b0d66f7f6..681f4e3569 100644 --- a/Source/Core/VideoBackends/OGL/Src/FramebufferManager.h +++ b/Source/Core/VideoBackends/OGL/Src/FramebufferManager.h @@ -93,8 +93,8 @@ public: // Same as above but for the depth Target. // After calling this, before you render anything else, you MUST bind the framebuffer you want to draw to. static GLuint ResolveAndGetDepthTarget(const EFBRectangle &rect); - - // Convert EFB content on pixel format change. + + // Convert EFB content on pixel format change. // convtype=0 -> rgb8->rgba6, convtype=2 -> rgba6->rgb8 static void ReinterpretPixelData(unsigned int convtype); @@ -119,7 +119,7 @@ private: static GLuint m_resolvedDepthTexture; static GLuint m_xfbFramebuffer; // Only used in MSAA mode - + // For pixel format draw static GLuint m_pixel_format_vbo; static GLuint m_pixel_format_vao; diff --git a/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp b/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp index 598f336036..6ff264aebe 100644 --- a/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp +++ b/Source/Core/VideoBackends/OGL/Src/GLFunctions.cpp @@ -120,11 +120,11 @@ namespace GLFunc LoadFunction("glBindSampler", (void**)&glBindSampler); LoadFunction("glDeleteSamplers", (void**)&glDeleteSamplers); LoadFunction("glGenSamplers", (void**)&glGenSamplers); - + LoadFunction("glGetProgramBinary", (void**)&glGetProgramBinary); LoadFunction("glProgramBinary", (void**)&glProgramBinary); LoadFunction("glProgramParameteri", (void**)&glProgramParameteri); - + LoadFunction("glDrawRangeElements", (void**)&glDrawRangeElements); LoadFunction("glRenderbufferStorageMultisample", (void**)&glRenderbufferStorageMultisample); diff --git a/Source/Core/VideoBackends/OGL/Src/GLUtil.cpp b/Source/Core/VideoBackends/OGL/Src/GLUtil.cpp index eb05e8cddc..f2cf74acf2 100644 --- a/Source/Core/VideoBackends/OGL/Src/GLUtil.cpp +++ b/Source/Core/VideoBackends/OGL/Src/GLUtil.cpp @@ -53,7 +53,7 @@ GLuint OpenGL_CompileProgram ( const char* vertexShader, const char* fragmentSha GLuint vertexShaderID = glCreateShader(GL_VERTEX_SHADER); GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); GLuint programID = glCreateProgram(); - + // compile vertex shader glShaderSource(vertexShaderID, 1, &vertexShader, NULL); glCompileShader(vertexShaderID); @@ -72,7 +72,7 @@ GLuint OpenGL_CompileProgram ( const char* vertexShader, const char* fragmentSha } bool shader_errors = !Result; #endif - + // compile fragment shader glShaderSource(fragmentShaderID, 1, &fragmentShader, NULL); glCompileShader(fragmentShaderID); @@ -88,7 +88,7 @@ GLuint OpenGL_CompileProgram ( const char* vertexShader, const char* fragmentSha } shader_errors |= !Result; #endif - + // link them glAttachShader(programID, vertexShaderID); glAttachShader(programID, fragmentShaderID); @@ -102,11 +102,11 @@ GLuint OpenGL_CompileProgram ( const char* vertexShader, const char* fragmentSha ERROR_LOG(VIDEO, "GLSL linker error:\n%s%s%s", stringBuffer, vertexShader, fragmentShader); } #endif - + // cleanup glDeleteShader(vertexShaderID); glDeleteShader(fragmentShaderID); - + return programID; } diff --git a/Source/Core/VideoBackends/OGL/Src/GLUtil.h b/Source/Core/VideoBackends/OGL/Src/GLUtil.h index 4dbbd06e05..48466fe580 100644 --- a/Source/Core/VideoBackends/OGL/Src/GLUtil.h +++ b/Source/Core/VideoBackends/OGL/Src/GLUtil.h @@ -32,12 +32,12 @@ #define GL_BGRA GL_RGBA #define glDrawElementsBaseVertex(...) #define glDrawRangeElementsBaseVertex(...) -#define glRenderbufferStorageMultisampleCoverageNV(...) +#define glRenderbufferStorageMultisampleCoverageNV(...) #define glViewportIndexedf(...) #endif #else #define TEX2D GL_TEXTURE_RECTANGLE_ARB -#define PREC +#define PREC #define TEXTYPE "sampler2DRect" #define TEXFUNC "texture2DRect" #endif @@ -71,14 +71,14 @@ __forceinline GLenum GL_REPORT_ERROR() { return GL_NO_ERROR; } #endif // this should be removed in future, but as long as glsl is unstable, we should really read this messages -#if defined(_DEBUG) || defined(DEBUGFAST) +#if defined(_DEBUG) || defined(DEBUGFAST) #define DEBUG_GLSL 1 #else #define DEBUG_GLSL 0 #endif // Isn't defined if we aren't using GLEW 1.6 -#ifndef GL_ONE_MINUS_SRC1_ALPHA +#ifndef GL_ONE_MINUS_SRC1_ALPHA #define GL_ONE_MINUS_SRC1_ALPHA 0x88FB #endif diff --git a/Source/Core/VideoBackends/OGL/Src/NativeVertexFormat.cpp b/Source/Core/VideoBackends/OGL/Src/NativeVertexFormat.cpp index 293e674cbb..c0112c4e9e 100644 --- a/Source/Core/VideoBackends/OGL/Src/NativeVertexFormat.cpp +++ b/Source/Core/VideoBackends/OGL/Src/NativeVertexFormat.cpp @@ -48,21 +48,21 @@ void GLVertexFormat::Initialize(const PortableVertexDeclaration &_vtx_decl) vertex_stride = vtx_decl.stride; // We will not allow vertex components causing uneven strides. - if (vertex_stride & 3) + if (vertex_stride & 3) PanicAlert("Uneven vertex stride: %i", vertex_stride); - + VertexManager *vm = (OGL::VertexManager*)g_vertex_manager; - + glGenVertexArrays(1, &VAO); glBindVertexArray(VAO); - + // the element buffer is bound directly to the vao, so we must it set for every vao glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vm->m_index_buffers); glBindBuffer(GL_ARRAY_BUFFER, vm->m_vertex_buffers); glEnableVertexAttribArray(SHADER_POSITION_ATTRIB); glVertexAttribPointer(SHADER_POSITION_ATTRIB, 3, GL_FLOAT, GL_FALSE, vtx_decl.stride, (u8*)NULL); - + for (int i = 0; i < 3; i++) { if (vtx_decl.num_normals > i) { glEnableVertexAttribArray(SHADER_NORM0_ATTRIB+i); diff --git a/Source/Core/VideoBackends/OGL/Src/PerfQuery.cpp b/Source/Core/VideoBackends/OGL/Src/PerfQuery.cpp index f981a105e0..7cb408b62e 100644 --- a/Source/Core/VideoBackends/OGL/Src/PerfQuery.cpp +++ b/Source/Core/VideoBackends/OGL/Src/PerfQuery.cpp @@ -11,7 +11,7 @@ PerfQuery::PerfQuery() { for (u32 i = 0; i != ArraySize(m_query_buffer); ++i) glGenQueries(1, &m_query_buffer[i].query_id); - + ResetQuery(); } @@ -29,21 +29,21 @@ void PerfQuery::EnableQuery(PerfQueryGroup type) // Is this sane? if (m_query_count > ArraySize(m_query_buffer) / 2) WeakFlush(); - + if (ArraySize(m_query_buffer) == m_query_count) { FlushOne(); //ERROR_LOG(VIDEO, "Flushed query buffer early!"); } - + // start query if (type == PQG_ZCOMP_ZCOMPLOC || type == PQG_ZCOMP) { auto& entry = m_query_buffer[(m_query_read_pos + m_query_count) % ArraySize(m_query_buffer)]; - + glBeginQuery(GL_SAMPLES_PASSED, entry.query_id); entry.query_type = type; - + ++m_query_count; } } @@ -103,10 +103,10 @@ void PerfQuery::WeakFlush() while (!IsFlushed()) { auto& entry = m_query_buffer[m_query_read_pos]; - + GLuint result = GL_FALSE; glGetQueryObjectuiv(entry.query_id, GL_QUERY_RESULT_AVAILABLE, &result); - + if (GL_TRUE == result) { FlushOne(); @@ -130,7 +130,7 @@ u32 PerfQuery::GetQueryResult(PerfQueryType type) return 0; u32 result = 0; - + if (type == PQ_ZCOMP_INPUT_ZCOMPLOC || type == PQ_ZCOMP_OUTPUT_ZCOMPLOC) { result = m_results[PQG_ZCOMP_ZCOMPLOC]; @@ -147,7 +147,7 @@ u32 PerfQuery::GetQueryResult(PerfQueryType type) { result = m_results[PQG_EFB_COPY_CLOCKS]; } - + return result / 4; } diff --git a/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp b/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp index a748ab5085..5d7fff3110 100644 --- a/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp +++ b/Source/Core/VideoBackends/OGL/Src/PostProcessing.cpp @@ -37,7 +37,7 @@ static char s_vertex_shader[] = "void main(void) {\n" " gl_Position = vec4(rawpos,0,1);\n" " uv0 = tex0;\n" - "}\n"; + "}\n"; void Init() { @@ -45,7 +45,7 @@ void Init() s_enable = 0; s_width = 0; s_height = 0; - + glGenFramebuffers(1, &s_fbo); glGenTextures(1, &s_texture); glBindTexture(GL_TEXTURE_2D, s_texture); @@ -56,17 +56,17 @@ void Init() glBindFramebuffer(GL_FRAMEBUFFER, s_fbo); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, s_texture, 0); FramebufferManager::SetFramebuffer(0); - + glGenBuffers(1, &s_vbo); glBindBuffer(GL_ARRAY_BUFFER, s_vbo); - GLfloat vertices[] = { - -1.f, -1.f, 0.f, 0.f, - -1.f, 1.f, 0.f, 1.f, - 1.f, -1.f, 1.f, 0.f, + GLfloat vertices[] = { + -1.f, -1.f, 0.f, 0.f, + -1.f, 1.f, 0.f, 1.f, + 1.f, -1.f, 1.f, 0.f, 1.f, 1.f, 1.f, 1.f }; glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - + glGenVertexArrays(1, &s_vao); glBindVertexArray( s_vao ); glEnableVertexAttribArray(SHADER_POSITION_ATTRIB); @@ -78,10 +78,10 @@ void Init() void Shutdown() { s_shader.Destroy(); - + glDeleteFramebuffers(1, &s_vbo); glDeleteTextures(1, &s_texture); - + glDeleteBuffers(1, &s_vbo); glDeleteVertexArrays(1, &s_vao); } @@ -99,22 +99,22 @@ void BindTargetFramebuffer () void BlitToScreen() { if(!s_enable) return; - + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); glViewport(0, 0, s_width, s_height); - + glBindVertexArray(s_vao); s_shader.Bind(); - + glUniform4f(s_uniform_resolution, (float)s_width, (float)s_height, 1.0f/(float)s_width, 1.0f/(float)s_height); - + glActiveTexture(GL_TEXTURE0+9); glBindTexture(GL_TEXTURE_2D, s_texture); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); glBindTexture(GL_TEXTURE_2D, 0); - + /* glBindFramebuffer(GL_READ_FRAMEBUFFER, s_fbo); - + glBlitFramebuffer(rc.left, rc.bottom, rc.right, rc.top, rc.left, rc.bottom, rc.right, rc.top, GL_COLOR_BUFFER_BIT, GL_NEAREST);*/ @@ -127,7 +127,7 @@ void Update ( u32 width, u32 height ) if(s_enable && (width != s_width || height != s_height)) { s_width = width; s_height = height; - + // alloc texture for framebuffer glActiveTexture(GL_TEXTURE0+9); glBindTexture(GL_TEXTURE_2D, s_texture); @@ -143,12 +143,12 @@ void ApplyShader() s_currentShader = g_ActiveConfig.sPostProcessingShader; s_enable = false; s_shader.Destroy(); - + // shader disabled if (g_ActiveConfig.sPostProcessingShader == "") return; - + // so need to compile shader - + // loading shader code std::string code; std::string path = File::GetUserPath(D_SHADERS_IDX) + g_ActiveConfig.sPostProcessingShader + ".glsl"; @@ -161,16 +161,16 @@ void ApplyShader() ERROR_LOG(VIDEO, "Post-processing shader not found: %s", path.c_str()); return; } - + // and compile it if (!ProgramShaderCache::CompileShader(s_shader, s_vertex_shader, code.c_str())) { ERROR_LOG(VIDEO, "Failed to compile post-processing shader %s", s_currentShader.c_str()); return; } - + // read uniform locations s_uniform_resolution = glGetUniformLocation(s_shader.glprogid, "resolution"); - + // successful s_enable = true; } diff --git a/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp index 40eb206903..cc807b7952 100644 --- a/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/Src/ProgramShaderCache.cpp @@ -94,19 +94,19 @@ void SHADER::SetProgramVariables() { // glsl shader must be bind to set samplers Bind(); - - // Bind UBO + + // Bind UBO if (g_ActiveConfig.backend_info.bSupportsGLSLUBO) { GLint PSBlock_id = glGetUniformBlockIndex(glprogid, "PSBlock"); GLint VSBlock_id = glGetUniformBlockIndex(glprogid, "VSBlock"); - + if(PSBlock_id != -1) glUniformBlockBinding(glprogid, PSBlock_id, 1); if(VSBlock_id != -1) glUniformBlockBinding(glprogid, VSBlock_id, 2); } - + // UBO workaround for (int a = 0; a < NUM_UNIFORMS; ++a) { @@ -120,7 +120,7 @@ void SHADER::SetProgramVariables() int max_uniforms = 0; char name[50]; int size; - + glGetProgramiv(glprogid, GL_ACTIVE_UNIFORMS, &max_uniforms); for(int i=0; iUpload(tmpbuffer, s_ubo_buffer_size); - glBindBufferRange(GL_UNIFORM_BUFFER, 1, + glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->getBuffer(), offset, sizeof(PixelShaderConstants)); - glBindBufferRange(GL_UNIFORM_BUFFER, 2, + glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->getBuffer(), offset+ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align), sizeof(VertexShaderConstants)); } else { size_t offset = s_buffer->Upload((u8*)&PixelShaderManager::constants, ROUND_UP(sizeof(PixelShaderConstants), s_ubo_align)); - glBindBufferRange(GL_UNIFORM_BUFFER, 1, + glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_buffer->getBuffer(), offset, sizeof(PixelShaderConstants)); offset = s_buffer->Upload((u8*)&VertexShaderManager::constants, ROUND_UP(sizeof(VertexShaderConstants), s_ubo_align)); - glBindBufferRange(GL_UNIFORM_BUFFER, 2, + glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_buffer->getBuffer(), offset, sizeof(VertexShaderConstants)); } PixelShaderManager::dirty = false; VertexShaderManager::dirty = false; - + ADDSTAT(stats.thisFrame.bytesUniformStreamed, s_ubo_buffer_size); } } @@ -241,10 +241,10 @@ void ProgramShaderCache::UploadConstants() if(last_entry->shader.UniformSize[a+10] > 0) glUniform4fv(last_entry->shader.UniformLocations[a+10], last_entry->shader.UniformSize[a+10], (float*) &VertexShaderManager::constants + 4*VSVar_Loc[a]); } - + ADDSTAT(stats.thisFrame.bytesUniformStreamed, s_ubo_buffer_size); } - + } GLuint ProgramShaderCache::GetCurrentProgram(void) @@ -317,7 +317,7 @@ SHADER* ProgramShaderCache::SetShader ( DSTALPHA_MODE dstAlphaMode, u32 componen INCSTAT(stats.numPixelShadersCreated); SETSTAT(stats.numPixelShadersAlive, pshaders.size()); GFX_DEBUGGER_PAUSE_AT(NEXT_PIXEL_SHADER_CHANGE, true); - + last_entry->shader.Bind(); return &last_entry->shader; } @@ -333,9 +333,9 @@ bool ProgramShaderCache::CompileShader ( SHADER& shader, const char* vcode, cons glDeleteShader(psid); return false; } - + GLuint pid = shader.glprogid = glCreateProgram();; - + glAttachShader(pid, vsid); glAttachShader(pid, psid); @@ -343,13 +343,13 @@ bool ProgramShaderCache::CompileShader ( SHADER& shader, const char* vcode, cons glProgramParameteri(pid, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE); shader.SetProgramBindings(); - + glLinkProgram(pid); - + // original shaders aren't needed any more glDeleteShader(vsid); glDeleteShader(psid); - + GLint linkStatus; glGetProgramiv(pid, GL_LINK_STATUS, &linkStatus); GLsizei length = 0; @@ -366,7 +366,7 @@ bool ProgramShaderCache::CompileShader ( SHADER& shader, const char* vcode, cons OpenFStream(file, szTemp, std::ios_base::out); file << s_glsl_header << vcode << s_glsl_header << pcode << infoLog; file.close(); - + if(linkStatus != GL_TRUE) PanicAlert("Failed to link shaders!\nThis usually happens when trying to use Dolphin with an outdated GPU or integrated GPU like the Intel GMA series.\n\nIf you're sure this is Dolphin's error anyway, post the contents of %s along with this error message at the forums.\n\nDebug info (%s, %s, %s):\n%s", szTemp, @@ -374,7 +374,7 @@ bool ProgramShaderCache::CompileShader ( SHADER& shader, const char* vcode, cons g_ogl_config.gl_renderer, g_ogl_config.gl_version, infoLog); - + delete [] infoLog; } if (linkStatus != GL_TRUE) @@ -388,7 +388,7 @@ bool ProgramShaderCache::CompileShader ( SHADER& shader, const char* vcode, cons } shader.SetProgramVariables(); - + return true; } @@ -397,7 +397,7 @@ GLuint ProgramShaderCache::CompileSingleShader (GLuint type, const char* code ) GLuint result = glCreateShader(type); const char *src[] = {s_glsl_header, code}; - + glShaderSource(result, 2, src, NULL); glCompileShader(result); GLint compileStatus; @@ -415,16 +415,16 @@ GLuint ProgramShaderCache::CompileSingleShader (GLuint type, const char* code ) glGetShaderInfoLog(result, length, &charsWritten, infoLog); ERROR_LOG(VIDEO, "PS Shader info log:\n%s", infoLog); char szTemp[MAX_PATH]; - sprintf(szTemp, - "%sbad_%s_%04i.txt", - File::GetUserPath(D_DUMP_IDX).c_str(), - type==GL_VERTEX_SHADER ? "vs" : "ps", + sprintf(szTemp, + "%sbad_%s_%04i.txt", + File::GetUserPath(D_DUMP_IDX).c_str(), + type==GL_VERTEX_SHADER ? "vs" : "ps", num_failures++); std::ofstream file; OpenFStream(file, szTemp, std::ios_base::out); file << s_glsl_header << code << infoLog; file.close(); - + if(compileStatus != GL_TRUE) PanicAlert("Failed to compile %s shader!\nThis usually happens when trying to use Dolphin with an outdated GPU or integrated GPU like the Intel GMA series.\n\nIf you're sure this is Dolphin's error anyway, post the contents of %s along with this error message at the forums.\n\nDebug info (%s, %s, %s):\n%s", type==GL_VERTEX_SHADER ? "vertex" : "pixel", @@ -433,7 +433,7 @@ GLuint ProgramShaderCache::CompileSingleShader (GLuint type, const char* code ) g_ogl_config.gl_renderer, g_ogl_config.gl_version, infoLog); - + delete[] infoLog; } if (compileStatus != GL_TRUE) @@ -502,19 +502,19 @@ void ProgramShaderCache::Init(void) { if (!File::Exists(File::GetUserPath(D_SHADERCACHE_IDX))) File::CreateDir(File::GetUserPath(D_SHADERCACHE_IDX).c_str()); - + char cache_filename[MAX_PATH]; sprintf(cache_filename, "%sogl-%s-shaders.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str()); - + ProgramShaderCacheInserter inserter; g_program_disk_cache.OpenAndRead(cache_filename, inserter); } SETSTAT(stats.numPixelShadersAlive, pshaders.size()); } - + CreateHeader(); - + CurrentProgram = 0; last_entry = NULL; } @@ -528,16 +528,16 @@ void ProgramShaderCache::Shutdown(void) for (; iter != pshaders.end(); ++iter) { if(iter->second.in_cache) continue; - + GLint binary_size; glGetProgramiv(iter->second.shader.glprogid, GL_PROGRAM_BINARY_LENGTH, &binary_size); if(!binary_size) continue; - + u8 *data = new u8[binary_size+sizeof(GLenum)]; u8 *binary = data + sizeof(GLenum); GLenum *prog_format = (GLenum*)data; glGetProgramBinary(iter->second.shader.glprogid, binary_size, NULL, prog_format, binary); - + g_program_disk_cache.Append(iter->first, data, binary_size+sizeof(GLenum)); delete [] data; } @@ -547,7 +547,7 @@ void ProgramShaderCache::Shutdown(void) } glUseProgram(0); - + PCache::iterator iter = pshaders.begin(); for (; iter != pshaders.end(); ++iter) iter->second.Destroy(); @@ -566,11 +566,11 @@ void ProgramShaderCache::Shutdown(void) void ProgramShaderCache::CreateHeader ( void ) { GLSL_VERSION v = g_ogl_config.eSupportedGLSLVersion; - snprintf(s_glsl_header, sizeof(s_glsl_header), + snprintf(s_glsl_header, sizeof(s_glsl_header), "%s\n" "%s\n" // ubo "%s\n" // early-z - + // Precision defines for GLSLES2/3 "%s\n" @@ -604,18 +604,18 @@ void ProgramShaderCache::CreateHeader ( void ) "%s\n" "#define COLOROUT(name) %s\n" - + , v==GLSLES2 ? "" : v==GLSLES3 ? "#version 300 es" : v==GLSL_130 ? "#version 130" : v==GLSL_140 ? "#version 140" : "#version 150" , g_ActiveConfig.backend_info.bSupportsGLSLUBO && v>16)&0xff)/255.f,GLfloat((color>>8)&0xff)/255.f,GLfloat((color>>0)&0xff)/255.f,GLfloat((color>>24)&0xff)/255.f); cached_color = color; } - + glActiveTexture(GL_TEXTURE0+8); glDrawArrays(GL_TRIANGLES, 0, usage/4); } diff --git a/Source/Core/VideoBackends/OGL/Src/RasterFont.h b/Source/Core/VideoBackends/OGL/Src/RasterFont.h index 97ad877082..7f3cff1414 100644 --- a/Source/Core/VideoBackends/OGL/Src/RasterFont.h +++ b/Source/Core/VideoBackends/OGL/Src/RasterFont.h @@ -15,7 +15,7 @@ public: void printMultilineText(const char *text, double x, double y, double z, int bbWidth, int bbHeight, u32 color); private: - + u32 VBO; u32 VAO; u32 texture; diff --git a/Source/Core/VideoBackends/OGL/Src/Render.cpp b/Source/Core/VideoBackends/OGL/Src/Render.cpp index 537e04a25e..b63fa3cffd 100644 --- a/Source/Core/VideoBackends/OGL/Src/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Src/Render.cpp @@ -144,9 +144,9 @@ int GetNumMSAASamples(int MSAAMode) default: samples = 1; } - + if(samples <= g_ogl_config.max_samples) return samples; - + // TODO: move this to InitBackendInfo OSD::AddMessage(StringFromFormat("%d Anti Aliasing samples selected, but only %d supported by your GPU.", samples, g_ogl_config.max_samples), 10000); return g_ogl_config.max_samples; @@ -171,7 +171,7 @@ int GetNumMSAACoverageSamples(int MSAAMode) samples = 0; } if(g_ogl_config.bSupportCoverageMSAA || samples == 0) return samples; - + // TODO: move this to InitBackendInfo OSD::AddMessage("CSAA Anti Aliasing isn't supported by your GPU.", 10000); return 0; @@ -255,7 +255,7 @@ void InitDriverInfo() // Get the vendor first if (svendor == "NVIDIA Corporation" && srenderer != "NVIDIA Tegra") - vendor = DriverDetails::VENDOR_NVIDIA; + vendor = DriverDetails::VENDOR_NVIDIA; else if (svendor == "ATI Technologies Inc." || svendor == "Advanced Micro Devices, Inc.") vendor = DriverDetails::VENDOR_ATI; else if (std::string::npos != sversion.find("Mesa")) @@ -277,7 +277,7 @@ void InitDriverInfo() vendor = DriverDetails::VENDOR_TEGRA; else if (svendor == "Vivante Corporation") vendor = DriverDetails::VENDOR_VIVANTE; - + // Get device family and driver version...if we care about it switch(vendor) { @@ -305,7 +305,7 @@ void InitDriverInfo() driver = DriverDetails::DRIVER_I965; else if(std::string::npos != srenderer.find("AMD") || std::string::npos != srenderer.find("ATI")) driver = DriverDetails::DRIVER_R600; - + int major = 0; int minor = 0; int release = 0; @@ -337,7 +337,7 @@ Renderer::Renderer() g_ogl_config.gl_renderer = (const char*)glGetString(GL_RENDERER); g_ogl_config.gl_version = (const char*)glGetString(GL_VERSION); g_ogl_config.glsl_version = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); - + InitDriverInfo(); // Init extension support. @@ -347,21 +347,21 @@ Renderer::Renderer() WARN_LOG(VIDEO, "Running the OpenGL ES 3 backend!"); g_Config.backend_info.bSupportsDualSourceBlend = false; - g_Config.backend_info.bSupportsGLSLUBO = !DriverDetails::HasBug(DriverDetails::BUG_ANNIHILATEDUBOS); - g_Config.backend_info.bSupportsPrimitiveRestart = true; + g_Config.backend_info.bSupportsGLSLUBO = !DriverDetails::HasBug(DriverDetails::BUG_ANNIHILATEDUBOS); + g_Config.backend_info.bSupportsPrimitiveRestart = true; g_Config.backend_info.bSupportsEarlyZ = false; -#ifdef ANDROID - g_ogl_config.bSupportsGLSLCache = false; +#ifdef ANDROID + g_ogl_config.bSupportsGLSLCache = false; #else - g_ogl_config.bSupportsGLSLCache = true; + g_ogl_config.bSupportsGLSLCache = true; #endif - g_ogl_config.bSupportsGLPinnedMemory = false; - g_ogl_config.bSupportsGLSync = true; - g_ogl_config.bSupportsGLBaseVertex = false; + g_ogl_config.bSupportsGLPinnedMemory = false; + g_ogl_config.bSupportsGLSync = true; + g_ogl_config.bSupportsGLBaseVertex = false; g_ogl_config.bSupportCoverageMSAA = false; // XXX: GLES3 spec has MSAA - g_ogl_config.bSupportSampleShading = false; - g_ogl_config.bSupportOGL31 = false; + g_ogl_config.bSupportSampleShading = false; + g_ogl_config.bSupportOGL31 = false; g_ogl_config.bSupportViewportFloat = false; if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA) || DriverDetails::HasBug(DriverDetails::BUG_ISPOWERVR)) g_ogl_config.eSupportedGLSLVersion = GLSLES2; @@ -376,7 +376,7 @@ Renderer::Renderer() PanicAlert("glewInit() failed! Does your video card support OpenGL 2.x?"); return; } - + // check for the max vertex attributes GLint numvertexattribs = 0; glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &numvertexattribs); @@ -397,7 +397,7 @@ Renderer::Renderer() max_texture_size); bSuccess = false; } - + #if defined(_DEBUG) || defined(DEBUGFAST) if (GLEW_ARB_debug_output) { @@ -431,7 +431,7 @@ Renderer::Renderer() "GPU: Does your video card support OpenGL 3.0?"); bSuccess = false; } - + if (!GLEW_ARB_map_buffer_range) { // ogl3 buffer mapping for better streaming support. @@ -450,7 +450,7 @@ Renderer::Renderer() "Please report this issue, then there will be a workaround"); bSuccess = false; } - + // OpenGL 3 doesn't provide GLES like float functions for depth. // They are in core in OpenGL 4.1, so almost every driver should support them. // But for the oldest ones, we provide fallbacks to the old double functions. @@ -458,14 +458,14 @@ Renderer::Renderer() { glDepthRangef = DepthRangef; glClearDepthf = ClearDepthf; - + } - + g_Config.backend_info.bSupportsDualSourceBlend = GLEW_ARB_blend_func_extended; g_Config.backend_info.bSupportsGLSLUBO = GLEW_ARB_uniform_buffer_object; g_Config.backend_info.bSupportsPrimitiveRestart = GLEW_VERSION_3_1 || GLEW_NV_primitive_restart; g_Config.backend_info.bSupportsEarlyZ = GLEW_ARB_shader_image_load_store; - + g_ogl_config.bSupportsGLSLCache = GLEW_ARB_get_program_binary; g_ogl_config.bSupportsGLPinnedMemory = GLEW_AMD_pinned_memory; g_ogl_config.bSupportsGLSync = GLEW_ARB_sync; @@ -503,11 +503,11 @@ Renderer::Renderer() // Else some of the next calls might crash. return; } - + glGetIntegerv(GL_MAX_SAMPLES, &g_ogl_config.max_samples); - if(g_ogl_config.max_samples < 1) + if(g_ogl_config.max_samples < 1) g_ogl_config.max_samples = 1; - + if(g_Config.backend_info.bSupportsGLSLUBO && DriverDetails::HasBug(DriverDetails::BUG_BROKENUBO)) { g_Config.backend_info.bSupportsGLSLUBO = false; @@ -515,14 +515,14 @@ Renderer::Renderer() OSD::AddMessage("Major performance warning: Buggy GPU driver detected.", 20000); OSD::AddMessage("Please either install the closed-source GPU driver or update your Mesa 3D version.", 20000); } - + UpdateActiveConfig(); OSD::AddMessage(StringFromFormat("Video Info: %s, %s, %s", g_ogl_config.gl_vendor, g_ogl_config.gl_renderer, g_ogl_config.gl_version), 5000); - + WARN_LOG(VIDEO,"Missing OGL Extensions: %s%s%s%s%s%s%s%s%s%s", g_ActiveConfig.backend_info.bSupportsDualSourceBlend ? "" : "DualSourceBlend ", g_ActiveConfig.backend_info.bSupportsGLSLUBO ? "" : "UniformBuffer ", @@ -535,12 +535,12 @@ Renderer::Renderer() g_ogl_config.bSupportCoverageMSAA ? "" : "CSAA ", g_ogl_config.bSupportSampleShading ? "" : "SSAA " ); - + s_LastMultisampleMode = g_ActiveConfig.iMultisampleMode; s_MSAASamples = GetNumMSAASamples(s_LastMultisampleMode); s_MSAACoverageSamples = GetNumMSAACoverageSamples(s_LastMultisampleMode); ApplySSAASettings(); - + // Decide framebuffer size s_backbuffer_width = (int)GLInterface->GetBackBufferWidth(); s_backbuffer_height = (int)GLInterface->GetBackBufferHeight(); @@ -561,7 +561,7 @@ Renderer::Renderer() // Because of the fixed framebuffer size we need to disable the resolution // options while running g_Config.bRunning = true; - + glStencilFunc(GL_ALWAYS, 0, 0); glBlendFunc(GL_ONE, GL_ONE); @@ -608,14 +608,14 @@ Renderer::~Renderer() void Renderer::Shutdown() { delete g_framebuffer_manager; - + g_Config.bRunning = false; UpdateActiveConfig(); - + glDeleteBuffers(1, &s_ShowEFBCopyRegions_VBO); glDeleteVertexArrays(1, &s_ShowEFBCopyRegions_VAO); s_ShowEFBCopyRegions_VBO = 0; - + delete s_pfont; s_pfont = 0; s_ShowEFBCopyRegions.Destroy(); @@ -626,10 +626,10 @@ void Renderer::Init() // Initialize the FramebufferManager g_framebuffer_manager = new FramebufferManager(s_target_width, s_target_height, s_MSAASamples, s_MSAACoverageSamples); - + s_pfont = new RasterFont(); - - ProgramShaderCache::CompileShader(s_ShowEFBCopyRegions, + + ProgramShaderCache::CompileShader(s_ShowEFBCopyRegions, "ATTRIN vec2 rawpos;\n" "ATTRIN vec3 color0;\n" "VARYOUT vec4 c;\n" @@ -642,7 +642,7 @@ void Renderer::Init() "void main(void) {\n" " ocol0 = c;\n" "}\n"); - + // creating buffers glGenBuffers(1, &s_ShowEFBCopyRegions_VBO); glGenVertexArrays(1, &s_ShowEFBCopyRegions_VAO); @@ -688,7 +688,7 @@ void Renderer::DrawDebugInfo() // Draw EFB copy regions rectangles int a = 0; GLfloat color[3] = {0.0f, 1.0f, 1.0f}; - + for (std::vector::const_iterator it = stats.efb_regions.begin(); it != stats.efb_regions.end(); ++it) { @@ -704,78 +704,78 @@ void Renderer::DrawDebugInfo() Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + Vertices[a++] = x2; Vertices[a++] = y; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - - + + Vertices[a++] = x2; Vertices[a++] = y; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + Vertices[a++] = x2; Vertices[a++] = y2; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - - + + Vertices[a++] = x2; Vertices[a++] = y2; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + Vertices[a++] = x; Vertices[a++] = y2; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - - + + Vertices[a++] = x; Vertices[a++] = y2; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + Vertices[a++] = x; Vertices[a++] = y; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - - + + Vertices[a++] = x; Vertices[a++] = y; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + Vertices[a++] = x2; Vertices[a++] = y2; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - - + + Vertices[a++] = x2; Vertices[a++] = y; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + Vertices[a++] = x; Vertices[a++] = y2; Vertices[a++] = color[0]; Vertices[a++] = color[1]; Vertices[a++] = color[2]; - + // TO DO: build something nicer here GLfloat temp = color[0]; color[0] = color[1]; @@ -783,7 +783,7 @@ void Renderer::DrawDebugInfo() color[2] = temp; } glUnmapBuffer(GL_ARRAY_BUFFER); - + s_ShowEFBCopyRegions.Bind(); glBindVertexArray( s_ShowEFBCopyRegions_VAO ); glDrawArrays(GL_LINES, 0, stats.efb_regions.size() * 2*6); @@ -945,11 +945,11 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) if (s_MSAASamples > 1) { g_renderer->ResetAPIState(); - + // Resolve our rectangle. FramebufferManager::GetEFBDepthTexture(efbPixelRc); glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetResolvedFramebuffer()); - + g_renderer->RestoreAPIState(); } @@ -998,11 +998,11 @@ u32 Renderer::AccessEFB(EFBAccessType type, u32 x, u32 y, u32 poke_data) if (s_MSAASamples > 1) { g_renderer->ResetAPIState(); - + // Resolve our rectangle. FramebufferManager::GetEFBColorTexture(efbPixelRc); glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetResolvedFramebuffer()); - + g_renderer->RestoreAPIState(); } @@ -1159,10 +1159,10 @@ void Renderer::SetBlendMode(bool forceUpdate) // Our render target always uses an alpha channel, so we need to override the blend functions to assume a destination alpha of 1 if the render target isn't supposed to have an alpha channel // Example: D3DBLEND_DESTALPHA needs to be D3DBLEND_ONE since the result without an alpha channel is assumed to always be 1. bool target_has_alpha = bpmem.zcontrol.pixel_format == PIXELFMT_RGBA6_Z24; - + bool useDstAlpha = !g_ActiveConfig.bDstAlphaPass && bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate && target_has_alpha; bool useDualSource = useDstAlpha && g_ActiveConfig.backend_info.bSupportsDualSourceBlend; - + const GLenum glSrcFactors[8] = { GL_ZERO, @@ -1216,7 +1216,7 @@ void Renderer::SetBlendMode(bool forceUpdate) // subtract enable change GLenum equation = newval & 4 ? GL_FUNC_REVERSE_SUBTRACT : GL_FUNC_ADD; GLenum equationAlpha = useDualSource ? GL_FUNC_ADD : equation; - + glBlendEquationSeparate(equation, equationAlpha); } @@ -1232,7 +1232,7 @@ void Renderer::SetBlendMode(bool forceUpdate) { srcidx = GX_BL_ONE; dstidx = GX_BL_ZERO; - } + } else { // we can't use GL_DST_COLOR or GL_ONE_MINUS_DST_COLOR for source in alpha channel so use their alpha equivalent instead @@ -1242,7 +1242,7 @@ void Renderer::SetBlendMode(bool forceUpdate) // we can't use GL_SRC_COLOR or GL_ONE_MINUS_SRC_COLOR for destination in alpha channel so use their alpha equivalent instead if (dstidx == GX_BL_SRCCLR) dstidx = GX_BL_SRCALPHA; if (dstidx == GX_BL_INVSRCCLR) dstidx = GX_BL_INVSRCALPHA; - } + } GLenum srcFactorAlpha = glSrcFactors[srcidx]; GLenum dstFactorAlpha = glDestFactors[dstidx]; // blend RGB change @@ -1291,7 +1291,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r int tmp = flipped_trc.top; flipped_trc.top = flipped_trc.bottom; flipped_trc.bottom = tmp; - + GL_REPORT_ERRORD(); // Copy the framebuffer to screen. @@ -1302,7 +1302,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r { // Render to the real/postprocessing buffer now. PostProcessing::BindTargetFramebuffer(); - + // draw each xfb source glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetXFBFramebuffer()); @@ -1325,12 +1325,12 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r int xfbHeight = xfbSource->srcHeight; int xfbWidth = xfbSource->srcWidth; int hOffset = ((s32)xfbSource->srcAddr - (s32)xfbAddr) / ((s32)fbWidth * 2); - + drawRc.top = flipped_trc.top - hOffset * flipped_trc.GetHeight() / fbHeight; drawRc.bottom = flipped_trc.top - (hOffset + xfbHeight) * flipped_trc.GetHeight() / fbHeight; drawRc.left = flipped_trc.left + (flipped_trc.GetWidth() - xfbWidth * flipped_trc.GetWidth() / fbWidth)/2; drawRc.right = flipped_trc.left + (flipped_trc.GetWidth() + xfbWidth * flipped_trc.GetWidth() / fbWidth)/2; - + // The following code disables auto stretch. Kept for reference. // scale draw area for a 1 to 1 pixel mapping with the draw target //float vScale = (float)fbHeight / (float)flipped_trc.GetHeight(); @@ -1355,22 +1355,22 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r else { TargetRectangle targetRc = ConvertEFBRectangle(rc); - + // for msaa mode, we must resolve the efb content to non-msaa FramebufferManager::ResolveAndGetRenderTarget(rc); - + // Render to the real/postprocessing buffer now. (resolve have changed this in msaa mode) PostProcessing::BindTargetFramebuffer(); - + // always the non-msaa fbo GLuint fb = s_MSAASamples>1?FramebufferManager::GetResolvedFramebuffer():FramebufferManager::GetEFBFramebuffer(); - + glBindFramebuffer(GL_READ_FRAMEBUFFER, fb); glBlitFramebuffer(targetRc.left, targetRc.bottom, targetRc.right, targetRc.top, flipped_trc.left, flipped_trc.bottom, flipped_trc.right, flipped_trc.top, GL_COLOR_BUFFER_BIT, GL_LINEAR); } - + PostProcessing::BlitToScreen(); glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); @@ -1422,7 +1422,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r #ifndef _WIN32 FlipImageData(&frame_data[0], w, h); #endif - + AVIDump::AddFrame(&frame_data[0], w, h); } @@ -1521,7 +1521,7 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangle& r s_MSAASamples = GetNumMSAASamples(s_LastMultisampleMode); s_MSAACoverageSamples = GetNumMSAACoverageSamples(s_LastMultisampleMode); ApplySSAASettings(); - + delete g_framebuffer_manager; g_framebuffer_manager = new FramebufferManager(s_target_width, s_target_height, s_MSAASamples, s_MSAACoverageSamples); @@ -1635,11 +1635,11 @@ void Renderer::RestoreAPIState() #ifndef USE_GLES3 glPolygonMode(GL_FRONT_AND_BACK, g_ActiveConfig.bWireFrame ? GL_LINE : GL_FILL); #endif - + VertexManager *vm = (OGL::VertexManager*)g_vertex_manager; glBindBuffer(GL_ARRAY_BUFFER, vm->m_vertex_buffers); vm->m_last_vao = 0; - + TextureCache::SetStage(); } @@ -1747,7 +1747,7 @@ void Renderer::SetSamplerState(int stage, int texindex) auto const& tex = bpmem.tex[texindex]; auto const& tm0 = tex.texMode0[stage]; auto const& tm1 = tex.texMode1[stage]; - + g_sampler_cache->SetSamplerState((texindex * 4) + stage, tm0, tm1); } diff --git a/Source/Core/VideoBackends/OGL/Src/Render.h b/Source/Core/VideoBackends/OGL/Src/Render.h index 96a001eca4..58ae98dabf 100644 --- a/Source/Core/VideoBackends/OGL/Src/Render.h +++ b/Source/Core/VideoBackends/OGL/Src/Render.h @@ -28,12 +28,12 @@ extern struct VideoConfig { GLSL_VERSION eSupportedGLSLVersion; bool bSupportOGL31; bool bSupportViewportFloat; - + const char *gl_vendor; const char *gl_renderer; const char* gl_version; const char* glsl_version; - + s32 max_samples; } g_ogl_config; @@ -42,7 +42,7 @@ class Renderer : public ::Renderer public: Renderer(); ~Renderer(); - + static void Init(); static void Shutdown(); diff --git a/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp b/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp index fff3063009..8419777fae 100644 --- a/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp +++ b/Source/Core/VideoBackends/OGL/Src/SamplerCache.cpp @@ -30,18 +30,18 @@ void SamplerCache::SetSamplerState(int stage, const TexMode0& tm0, const TexMode m_last_max_anisotropy = g_ActiveConfig.iMaxAnisotropy; Clear(); } - + Params params(tm0, tm1); - + // take equivalent forced linear when bForceFiltering if (g_ActiveConfig.bForceFiltering) { params.tm0.min_filter |= 0x4; params.tm0.mag_filter |= 0x1; } - + // TODO: Should keep a circular buffer for each stage of recently used samplers. - + auto& active_sampler = m_active_samplers[stage]; if (active_sampler.first != params || !active_sampler.second.sampler_id) { @@ -60,11 +60,11 @@ auto SamplerCache::GetEntry(const Params& params) -> Value& // Sampler not found in cache, create it. glGenSamplers(1, &val.sampler_id); SetParameters(val.sampler_id, params); - + // TODO: Maybe kill old samplers if the cache gets huge. It doesn't seem to get huge though. //ERROR_LOG(VIDEO, "Sampler cache size is now %ld.", m_cache.size()); } - + return val; } @@ -81,7 +81,7 @@ void SamplerCache::SetParameters(GLuint sampler_id, const Params& params) GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, }; - + static const GLint wrap_settings[4] = { GL_CLAMP_TO_EDGE, @@ -89,7 +89,7 @@ void SamplerCache::SetParameters(GLuint sampler_id, const Params& params) GL_MIRRORED_REPEAT, GL_REPEAT, }; - + auto& tm0 = params.tm0; auto& tm1 = params.tm1; @@ -98,7 +98,7 @@ void SamplerCache::SetParameters(GLuint sampler_id, const Params& params) glSamplerParameteri(sampler_id, GL_TEXTURE_WRAP_S, wrap_settings[tm0.wrap_s]); glSamplerParameteri(sampler_id, GL_TEXTURE_WRAP_T, wrap_settings[tm0.wrap_t]); - + glSamplerParameterf(sampler_id, GL_TEXTURE_MIN_LOD, tm1.min_lod / 16.f); glSamplerParameterf(sampler_id, GL_TEXTURE_MAX_LOD, tm1.max_lod / 16.f); diff --git a/Source/Core/VideoBackends/OGL/Src/SamplerCache.h b/Source/Core/VideoBackends/OGL/Src/SamplerCache.h index 81180d2a7a..4de716b27d 100644 --- a/Source/Core/VideoBackends/OGL/Src/SamplerCache.h +++ b/Source/Core/VideoBackends/OGL/Src/SamplerCache.h @@ -15,10 +15,10 @@ class SamplerCache : NonCopyable public: SamplerCache(); ~SamplerCache(); - + void SetSamplerState(int stage, const TexMode0& tm0, const TexMode1& tm1); void Clear(); - + private: struct Params { @@ -29,47 +29,47 @@ private: TexMode0 tm0; TexMode1 tm1; }; - + u64 hex; }; - + Params() : hex() {} - + Params(const TexMode0& _tm0, const TexMode1& _tm1) : tm0(_tm0) , tm1(_tm1) { static_assert(sizeof(Params) == 8, "Assuming I can treat this as a 64bit int."); } - + bool operator<(const Params& other) const { return hex < other.hex; } - + bool operator!=(const Params& other) const { return hex != other.hex; } }; - + struct Value { Value() : sampler_id() {} - + GLuint sampler_id; }; - + void SetParameters(GLuint sampler_id, const Params& params); Value& GetEntry(const Params& params); std::map m_cache; std::pair m_active_samplers[8]; - + int m_last_max_anisotropy; }; diff --git a/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp b/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp index 59d8a1b3ca..9826033098 100644 --- a/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp +++ b/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp @@ -20,9 +20,9 @@ StreamBuffer::StreamBuffer(u32 type, size_t size, StreamType uploadType) : m_uploadtype(uploadType), m_buffertype(type), m_size(size) { glGenBuffers(1, &m_buffer); - + bool nvidia = !strcmp(g_ogl_config.gl_vendor, "NVIDIA Corporation"); - + if(m_uploadtype & STREAM_DETECT) { // TODO: move this to InitBackendInfo @@ -32,8 +32,8 @@ StreamBuffer::StreamBuffer(u32 type, size_t size, StreamType uploadType) g_ActiveConfig.bHackedBufferUpload = false; g_Config.bHackedBufferUpload = false; } - - if(!g_ogl_config.bSupportsGLBaseVertex && (m_uploadtype & BUFFERSUBDATA) + + if(!g_ogl_config.bSupportsGLBaseVertex && (m_uploadtype & BUFFERSUBDATA) && !DriverDetails::HasBug(DriverDetails::BUG_BROKENBUFFERSTREAM)) m_uploadtype = BUFFERSUBDATA; else if(!g_ogl_config.bSupportsGLBaseVertex && (m_uploadtype & BUFFERDATA)) @@ -46,7 +46,7 @@ StreamBuffer::StreamBuffer(u32 type, size_t size, StreamType uploadType) m_uploadtype = BUFFERSUBDATA; else if(g_ogl_config.bSupportsGLSync && (m_uploadtype & MAP_AND_SYNC)) m_uploadtype = MAP_AND_SYNC; - else + else m_uploadtype = MAP_AND_ORPHAN; } @@ -69,7 +69,7 @@ void StreamBuffer::Alloc ( size_t size, u32 stride ) m_iterator_aligned = m_iterator_aligned - (m_iterator_aligned % stride) + stride; } size_t iter_end = m_iterator_aligned + size; - + switch(m_uploadtype) { case MAP_AND_ORPHAN: if(iter_end >= m_size) { @@ -79,14 +79,14 @@ void StreamBuffer::Alloc ( size_t size, u32 stride ) break; case MAP_AND_SYNC: case PINNED_MEMORY: - + // insert waiting slots for used memory for(u32 i=SLOT(m_used_iterator); i= m_size) { - + // insert waiting slots in unused space at the end of the buffer for(u32 i=SLOT(m_used_iterator); i < SYNC_POINTS; i++) fences[i] = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); - + // move to the start m_used_iterator = m_iterator_aligned = m_iterator = 0; // offset 0 is always aligned iter_end = size; - + // wait for space at the start for(u32 i=0; i<=SLOT(iter_end); i++) { @@ -114,7 +114,7 @@ void StreamBuffer::Alloc ( size_t size, u32 stride ) } m_free_iterator = iter_end; } - + break; case MAP_AND_RISK: if(iter_end >= m_size) { @@ -170,13 +170,13 @@ void StreamBuffer::Init() m_iterator = 0; m_used_iterator = 0; m_free_iterator = 0; - + switch(m_uploadtype) { case MAP_AND_SYNC: fences = new GLsync[SYNC_POINTS]; for(u32 i=0; iframebuffer); FramebufferManager::SetFramebuffer(entry->framebuffer); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, entry->texture, 0); @@ -355,7 +355,7 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo glBindBuffer(GL_ARRAY_BUFFER, vbo_it->second.vbo); glBufferData(GL_ARRAY_BUFFER, 4*4*sizeof(GLfloat), vertices, GL_STREAM_DRAW); - + vbo_it->second.targetSource = targetSource; } @@ -370,10 +370,10 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo int encoded_size = TextureConverter::EncodeToRamFromTexture( addr, read_texture, - srcFormat == PIXELFMT_Z24, - isIntensity, - dstFormat, - scaleByHalf, + srcFormat == PIXELFMT_Z24, + isIntensity, + dstFormat, + scaleByHalf, srcRect); u8* dst = Memory::GetPointer(addr); @@ -404,7 +404,7 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo TextureCache::TextureCache() { - const char *pColorMatrixProg = + const char *pColorMatrixProg = "uniform sampler2DRect samp9;\n" "uniform vec4 colmat[7];\n" "VARYIN vec2 uv0;\n" @@ -458,7 +458,7 @@ TextureCache::~TextureCache() { s_ColorMatrixProgram.Destroy(); s_DepthMatrixProgram.Destroy(); - + for(auto& cache : s_VBO) { glDeleteBuffers(1, &cache.second.vbo); glDeleteVertexArrays(1, &cache.second.vao); diff --git a/Source/Core/VideoBackends/OGL/Src/TextureConverter.cpp b/Source/Core/VideoBackends/OGL/Src/TextureConverter.cpp index 104b6f5b1c..0c1800381e 100644 --- a/Source/Core/VideoBackends/OGL/Src/TextureConverter.cpp +++ b/Source/Core/VideoBackends/OGL/Src/TextureConverter.cpp @@ -169,7 +169,7 @@ void Init() glBindTexture(GL_TEXTURE_2D, s_dstTexture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, renderBufferWidth, renderBufferHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - + CreatePrograms(); } @@ -229,7 +229,7 @@ void EncodeToRamUsingShader(GLuint srcTexture, const TargetRectangle& sourceRc, GL_REPORT_ERRORD(); if(!(s_cached_sourceRc == sourceRc)) { GLfloat vertices[] = { - -1.f, -1.f, + -1.f, -1.f, (float)sourceRc.left, (float)sourceRc.top, -1.f, 1.f, (float)sourceRc.left, (float)sourceRc.bottom, @@ -240,13 +240,13 @@ void EncodeToRamUsingShader(GLuint srcTexture, const TargetRectangle& sourceRc, }; glBindBuffer(GL_ARRAY_BUFFER, s_encode_VBO ); glBufferData(GL_ARRAY_BUFFER, 4*4*sizeof(GLfloat), vertices, GL_STREAM_DRAW); - + s_cached_sourceRc = sourceRc; - } + } glBindVertexArray( s_encode_VAO ); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - + GL_REPORT_ERRORD(); // .. and then read back the results. @@ -303,16 +303,16 @@ int EncodeToRamFromTexture(u32 address,GLuint source_texture, bool bFromZBuffer, int size_in_bytes = TexDecoder_GetTextureSizeInBytes(width, height, format); u16 blkW = TexDecoder_GetBlockWidthInTexels(format) - 1; - u16 blkH = TexDecoder_GetBlockHeightInTexels(format) - 1; - u16 samples = TextureConversionShader::GetEncodedSampleCount(format); + u16 blkH = TexDecoder_GetBlockHeightInTexels(format) - 1; + u16 samples = TextureConversionShader::GetEncodedSampleCount(format); // only copy on cache line boundaries // extra pixels are copied but not displayed in the resulting texture s32 expandedWidth = (width + blkW) & (~blkW); s32 expandedHeight = (height + blkH) & (~blkH); - + float sampleStride = bScaleByHalf ? 2.f : 1.f; - + float params[] = { Renderer::EFBToScaledXf(sampleStride), Renderer::EFBToScaledYf(sampleStride), 0.0f, 0.0f, @@ -344,9 +344,9 @@ int EncodeToRamFromTexture(u32 address,GLuint source_texture, bool bFromZBuffer, void EncodeToRamYUYV(GLuint srcTexture, const TargetRectangle& sourceRc, u8* destAddr, int dstWidth, int dstHeight) { g_renderer->ResetAPIState(); - + s_rgbToYuyvProgram.Bind(); - + EncodeToRamUsingShader(srcTexture, sourceRc, destAddr, dstWidth / 2, dstHeight, 0, false, false); FramebufferManager::SetFramebuffer(0); TextureCache::DisableStage(0); @@ -399,7 +399,7 @@ void DecodeToTexture(u32 xfbAddr, int srcWidth, int srcHeight, GLuint destTextur s_yuyvToRgbProgram.Bind(); GL_REPORT_ERRORD(); - + if(s_cached_srcHeight != srcHeight || s_cached_srcWidth != srcWidth) { GLfloat vertices[] = { 1.f, -1.f, @@ -411,17 +411,17 @@ void DecodeToTexture(u32 xfbAddr, int srcWidth, int srcHeight, GLuint destTextur -1.f, 1.f, 0.f, 0.f }; - + glBindBuffer(GL_ARRAY_BUFFER, s_decode_VBO ); glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat)*4*4, vertices, GL_STREAM_DRAW); - + s_cached_srcHeight = srcHeight; s_cached_srcWidth = srcWidth; } - + glBindVertexArray( s_decode_VAO ); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - + GL_REPORT_ERRORD(); FramebufferManager::SetFramebuffer(0); diff --git a/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp b/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp index dbebc3ecfd..4fb355d897 100644 --- a/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/Src/VertexManager.cpp @@ -60,10 +60,10 @@ void VertexManager::CreateDeviceObjects() { s_vertexBuffer = new StreamBuffer(GL_ARRAY_BUFFER, MAX_VBUFFER_SIZE); m_vertex_buffers = s_vertexBuffer->getBuffer(); - + s_indexBuffer = new StreamBuffer(GL_ELEMENT_ARRAY_BUFFER, MAX_IBUFFER_SIZE); m_index_buffers = s_indexBuffer->getBuffer(); - + m_CurrentVertexFmt = NULL; m_last_vao = 0; } @@ -74,7 +74,7 @@ void VertexManager::DestroyDeviceObjects() glBindBuffer(GL_ARRAY_BUFFER, 0 ); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0 ); GL_REPORT_ERROR(); - + delete s_vertexBuffer; delete s_indexBuffer; GL_REPORT_ERROR(); @@ -87,7 +87,7 @@ void VertexManager::PrepareDrawBuffers(u32 stride) u32 line_index_size = IndexGenerator::GetLineindexLen(); u32 point_index_size = IndexGenerator::GetPointindexLen(); u32 index_size = (triangle_index_size+line_index_size+point_index_size) * sizeof(u16); - + s_vertexBuffer->Alloc(vertex_data_size, stride); u32 offset = s_vertexBuffer->Upload(GetVertexBuffer(), vertex_data_size); s_baseVertex = offset / stride; @@ -105,7 +105,7 @@ void VertexManager::PrepareDrawBuffers(u32 stride) { s_offset[2] = s_indexBuffer->Upload((u8*)GetPointIndexBuffer(), point_index_size * sizeof(u16)); } - + ADDSTAT(stats.thisFrame.bytesVertexStreamed, vertex_data_size); ADDSTAT(stats.thisFrame.bytesIndexStreamed, index_size); } @@ -117,7 +117,7 @@ void VertexManager::Draw(u32 stride) u32 point_index_size = IndexGenerator::GetPointindexLen(); u32 max_index = IndexGenerator::GetNumVerts(); GLenum triangle_mode = g_ActiveConfig.backend_info.bSupportsPrimitiveRestart?GL_TRIANGLE_STRIP:GL_TRIANGLES; - + if(g_ogl_config.bSupportsGLBaseVertex) { if (triangle_index_size > 0) { @@ -134,7 +134,7 @@ void VertexManager::Draw(u32 stride) glDrawRangeElementsBaseVertex(GL_POINTS, 0, max_index, point_index_size, GL_UNSIGNED_SHORT, (u8*)NULL+s_offset[2], s_baseVertex); INCSTAT(stats.thisFrame.numIndexedDrawCalls); } - } + } else if (DriverDetails::HasBug(DriverDetails::BUG_ISTEGRA)) { if (triangle_index_size > 0) @@ -168,17 +168,17 @@ void VertexManager::Draw(u32 stride) glDrawRangeElements(GL_POINTS, 0, max_index, point_index_size, GL_UNSIGNED_SHORT, (u8*)NULL+s_offset[2]); INCSTAT(stats.thisFrame.numIndexedDrawCalls); } - } + } } void VertexManager::vFlush() { -#if defined(_DEBUG) || defined(DEBUGFAST) +#if defined(_DEBUG) || defined(DEBUGFAST) PRIM_LOG("frame%d:\n texgen=%d, numchan=%d, dualtex=%d, ztex=%d, cole=%d, alpe=%d, ze=%d", g_ActiveConfig.iSaveTargetId, xfregs.numTexGen.numTexGens, xfregs.numChan.numColorChans, xfregs.dualTexTrans.enabled, bpmem.ztex2.op, bpmem.blendmode.colorupdate, bpmem.blendmode.alphaupdate, bpmem.zmode.updateenable); - for (unsigned int i = 0; i < xfregs.numChan.numColorChans; ++i) + for (unsigned int i = 0; i < xfregs.numChan.numColorChans; ++i) { LitChannel* ch = &xfregs.color[i]; PRIM_LOG("colchan%d: matsrc=%d, light=0x%x, ambsrc=%d, diffunc=%d, attfunc=%d", i, ch->matsource, ch->GetFullLightMask(), ch->ambsource, ch->diffusefunc, ch->attnfunc); @@ -186,7 +186,7 @@ void VertexManager::vFlush() PRIM_LOG("alpchan%d: matsrc=%d, light=0x%x, ambsrc=%d, diffunc=%d, attfunc=%d", i, ch->matsource, ch->GetFullLightMask(), ch->ambsource, ch->diffusefunc, ch->attnfunc); } - for (unsigned int i = 0; i < xfregs.numTexGen.numTexGens; ++i) + for (unsigned int i = 0; i < xfregs.numTexGen.numTexGens; ++i) { TexMtxInfo tinfo = xfregs.texMtxInfo[i]; if (tinfo.texgentype != XF_TEXGEN_EMBOSS_MAP) tinfo.hex &= 0x7ff; @@ -202,10 +202,10 @@ void VertexManager::vFlush() #endif (void)GL_REPORT_ERROR(); - + GLVertexFormat *nativeVertexFmt = (GLVertexFormat*)g_nativeVertexFmt; u32 stride = nativeVertexFmt->GetVertexStride(); - + if(m_last_vao != nativeVertexFmt->VAO) { glBindVertexArray(nativeVertexFmt->VAO); m_last_vao = nativeVertexFmt->VAO; @@ -231,10 +231,10 @@ void VertexManager::vFlush() TextureCache::SetNextStage(i); g_renderer->SetSamplerState(i % 4, i / 4); FourTexUnits &tex = bpmem.tex[i >> 2]; - TextureCache::TCacheEntryBase* tentry = TextureCache::Load(i, + TextureCache::TCacheEntryBase* tentry = TextureCache::Load(i, (tex.texImage3[i&3].image_base/* & 0x1FFFFF*/) << 5, tex.texImage0[i&3].width + 1, tex.texImage0[i&3].height + 1, - tex.texImage0[i&3].format, tex.texTlut[i&3].tmem_offset<<9, + tex.texImage0[i&3].format, tex.texTlut[i&3].tmem_offset<<9, tex.texTlut[i&3].tlut_format, (tex.texMode0[i&3].min_filter & 3), (tex.texMode1[i&3].max_lod + 0xf) / 0x10, @@ -279,7 +279,7 @@ void VertexManager::vFlush() VertexShaderManager::SetConstants(); PixelShaderManager::SetConstants(g_nativeVertexFmt->m_components); ProgramShaderCache::UploadConstants(); - + // setup the pointers if (g_nativeVertexFmt) g_nativeVertexFmt->SetupVertexPointers(); @@ -300,24 +300,24 @@ void VertexManager::vFlush() VertexShaderManager::SetConstants(); PixelShaderManager::SetConstants(g_nativeVertexFmt->m_components); } - + // only update alpha glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_TRUE); glDisable(GL_BLEND); Draw(stride); - + // restore color mask g_renderer->SetColorMask(); - if (bpmem.blendmode.blendenable || bpmem.blendmode.subtract) + if (bpmem.blendmode.blendenable || bpmem.blendmode.subtract) glEnable(GL_BLEND); } GFX_DEBUGGER_PAUSE_AT(NEXT_FLUSH, true); - + #if defined(_DEBUG) || defined(DEBUGFAST) - if (g_ActiveConfig.iLog & CONF_SAVESHADERS) + if (g_ActiveConfig.iLog & CONF_SAVESHADERS) { // save the shaders ProgramShaderCache::PCacheEntry prog = ProgramShaderCache::GetShaderProgram(); @@ -332,7 +332,7 @@ void VertexManager::vFlush() fvs << prog.shader.strvprog.c_str(); } - if (g_ActiveConfig.iLog & CONF_SAVETARGETS) + if (g_ActiveConfig.iLog & CONF_SAVETARGETS) { char str[128]; sprintf(str, "%starg%.3d.tga", File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), g_ActiveConfig.iSaveTargetId); diff --git a/Source/Core/VideoBackends/OGL/Src/VertexManager.h b/Source/Core/VideoBackends/OGL/Src/VertexManager.h index e31c8d48ec..67017b3436 100644 --- a/Source/Core/VideoBackends/OGL/Src/VertexManager.h +++ b/Source/Core/VideoBackends/OGL/Src/VertexManager.h @@ -21,7 +21,7 @@ namespace OGL virtual void Initialize(const PortableVertexDeclaration &_vtx_decl); virtual void SetupVertexPointers(); - + GLuint VAO; }; @@ -35,10 +35,10 @@ public: NativeVertexFormat* CreateNativeVertexFormat(); void CreateDeviceObjects(); void DestroyDeviceObjects(); - + // NativeVertexFormat use this GLuint m_vertex_buffers; - GLuint m_index_buffers; + GLuint m_index_buffers; GLuint m_last_vao; private: void Draw(u32 stride); diff --git a/Source/Core/VideoBackends/OGL/Src/main.cpp b/Source/Core/VideoBackends/OGL/Src/main.cpp index ada52a385f..7ad18bca25 100644 --- a/Source/Core/VideoBackends/OGL/Src/main.cpp +++ b/Source/Core/VideoBackends/OGL/Src/main.cpp @@ -5,7 +5,7 @@ // OpenGL Backend Documentation -/* +/* 1.1 Display settings @@ -182,7 +182,7 @@ bool VideoBackend::Initialize(void *&window_handle) if (!GLInterface->Create(window_handle)) return false; - // Do our OSD callbacks + // Do our OSD callbacks OSD::DoCallbacks(OSD::OSD_INIT); s_BackendInitialized = true; @@ -233,14 +233,14 @@ void VideoBackend::Shutdown() { s_BackendInitialized = false; - // Do our OSD callbacks + // Do our OSD callbacks OSD::DoCallbacks(OSD::OSD_SHUTDOWN); GLInterface->Shutdown(); } void VideoBackend::Video_Cleanup() { - + if (g_renderer) { s_efbAccessRequested = false; diff --git a/Source/Core/VideoBackends/OGL/Src/stdafx.h b/Source/Core/VideoBackends/OGL/Src/stdafx.h index 2431184aaf..81bb44dc19 100644 --- a/Source/Core/VideoBackends/OGL/Src/stdafx.h +++ b/Source/Core/VideoBackends/OGL/Src/stdafx.h @@ -9,4 +9,4 @@ #endif #include -#include +#include diff --git a/Source/Core/VideoBackends/Software/Src/BPMemLoader.cpp b/Source/Core/VideoBackends/Software/Src/BPMemLoader.cpp index 6317398f39..f6f810791d 100644 --- a/Source/Core/VideoBackends/Software/Src/BPMemLoader.cpp +++ b/Source/Core/VideoBackends/Software/Src/BPMemLoader.cpp @@ -97,7 +97,7 @@ void SWBPWritten(int address, int newvalue) case BPMEM_LOADTLUT1: // Load a Texture Look Up Table { u32 tlutTMemAddr = (newvalue & 0x3FF) << 9; - u32 tlutXferCount = (newvalue & 0x1FFC00) >> 5; + u32 tlutXferCount = (newvalue & 0x1FFC00) >> 5; u8 *ptr = 0; diff --git a/Source/Core/VideoBackends/Software/Src/Clipper.cpp b/Source/Core/VideoBackends/Software/Src/Clipper.cpp index fc34fbe0da..6d6069b262 100644 --- a/Source/Core/VideoBackends/Software/Src/Clipper.cpp +++ b/Source/Core/VideoBackends/Software/Src/Clipper.cpp @@ -8,18 +8,18 @@ Copyright (c) 2007, 2008 Markus Trenkwalder All rights reserved. -Redistribution and use in source and binary forms, with or without +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -* Redistributions of source code must retain the above copyright notice, +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation + this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -* Neither the name of the library's copyright owner nor the names of its - contributors may be used to endorse or promote products derived from this +* Neither the name of the library's copyright owner nor the names of its + contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS @@ -190,7 +190,7 @@ namespace Clipper inlist[1] = 1; inlist[2] = 2; - // mark this triangle as unused in case it should be completely + // mark this triangle as unused in case it should be completely // clipped indices[0] = SKIP_FLAG; indices[1] = SKIP_FLAG; @@ -229,13 +229,13 @@ namespace Clipper mask |= clip_mask[i]; } - if (mask == 0) + if (mask == 0) return; float t0 = 0; float t1 = 0; - // Mark unused in case of early termination + // Mark unused in case of early termination // of the macros below. (When fully clipped) indices[0] = SKIP_FLAG; indices[1] = SKIP_FLAG; @@ -247,7 +247,7 @@ namespace Clipper LINE_CLIP(CLIP_POS_Z_BIT, 0, 0, -1, 1); LINE_CLIP(CLIP_NEG_Z_BIT, 0, 0, 1, 1); - // Restore the old values as this line + // Restore the old values as this line // was not fully clipped. indices[0] = 0; indices[1] = 1; @@ -305,7 +305,7 @@ namespace Clipper PerspectiveDivide(Vertices[indices[i+1]]); PerspectiveDivide(Vertices[indices[i+2]]); - Rasterizer::DrawTriangleFrontFace(Vertices[indices[i]], Vertices[indices[i+1]], Vertices[indices[i+2]]); + Rasterizer::DrawTriangleFrontFace(Vertices[indices[i]], Vertices[indices[i+1]], Vertices[indices[i+2]]); } } } @@ -349,7 +349,7 @@ namespace Clipper float dx = v1->screenPosition.x - v0->screenPosition.x; float dy = v1->screenPosition.y - v0->screenPosition.y; - + float screenDx = 0; float screenDy = 0; @@ -405,7 +405,7 @@ namespace Clipper float w1 = v1->projectedPosition.w; float w2 = v2->projectedPosition.w; - float normalZDir = (x0*w2 - x2*w0)*y1 + (x2*y0 - x0*y2)*w1 + (y2*w0 - y0*w2)*x1; + float normalZDir = (x0*w2 - x2*w0)*y1 + (x2*y0 - x0*y2)*w1 + (y2*w0 - y0*w2)*x1; backface = normalZDir <= 0.0f; diff --git a/Source/Core/VideoBackends/Software/Src/DebugUtil.h b/Source/Core/VideoBackends/Software/Src/DebugUtil.h index 89b0db9b72..3cbb318ffb 100644 --- a/Source/Core/VideoBackends/Software/Src/DebugUtil.h +++ b/Source/Core/VideoBackends/Software/Src/DebugUtil.h @@ -24,4 +24,4 @@ namespace DebugUtil void CopyTempBuffer(s16 x, s16 y, int bufferBase, int subBuffer, const char *name); } -#endif +#endif diff --git a/Source/Core/VideoBackends/Software/Src/EfbCopy.cpp b/Source/Core/VideoBackends/Software/Src/EfbCopy.cpp index 303d5a06ad..1191b3c6df 100644 --- a/Source/Core/VideoBackends/Software/Src/EfbCopy.cpp +++ b/Source/Core/VideoBackends/Software/Src/EfbCopy.cpp @@ -19,7 +19,7 @@ namespace EfbCopy { void CopyToXfb() { - GLInterface->Update(); // just updates the render window position and the backbuffer size + GLInterface->Update(); // just updates the render window position and the backbuffer size if (!g_SWVideoConfig.bHwRasterizer) { diff --git a/Source/Core/VideoBackends/Software/Src/EfbInterface.cpp b/Source/Core/VideoBackends/Software/Src/EfbInterface.cpp index 3d8ea0f9f1..f13f6a47b1 100644 --- a/Source/Core/VideoBackends/Software/Src/EfbInterface.cpp +++ b/Source/Core/VideoBackends/Software/Src/EfbInterface.cpp @@ -185,7 +185,7 @@ namespace EfbInterface u32 *dst = (u32*)&efb[offset]; u32 val = *dst & 0xff000000; val |= depth & 0x00ffffff; - *dst = val; + *dst = val; } break; case PIXELFMT_RGB565_Z16: @@ -194,7 +194,7 @@ namespace EfbInterface u32 *dst = (u32*)&efb[offset]; u32 val = *dst & 0xff000000; val |= depth & 0x00ffffff; - *dst = val; + *dst = val; } break; default: diff --git a/Source/Core/VideoBackends/Software/Src/HwRasterizer.cpp b/Source/Core/VideoBackends/Software/Src/HwRasterizer.cpp index 5e3e4a4ae0..996b440dc4 100644 --- a/Source/Core/VideoBackends/Software/Src/HwRasterizer.cpp +++ b/Source/Core/VideoBackends/Software/Src/HwRasterizer.cpp @@ -130,7 +130,7 @@ namespace HwRasterizer glDepthFunc(GL_LEQUAL); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); - + CreateShaders(); GL_REPORT_ERRORD(); } @@ -141,7 +141,7 @@ namespace HwRasterizer u32 imageAddr = texUnit.texImage3[0].image_base; // Texture Rectangle uses pixel coordinates // While GLES uses texture coordinates -#ifdef USE_GLES +#ifdef USE_GLES width = texUnit.texImage0[0].width; height = texUnit.texImage0[0].height; #else @@ -303,7 +303,7 @@ namespace HwRasterizer { glUseProgram(clearProg); glVertexAttribPointer(clear_apos, 3, GL_FLOAT, GL_FALSE, 0, verts); - glUniform4f(clear_ucol, r, g, b, a); + glUniform4f(clear_ucol, r, g, b, a); glEnableVertexAttribArray(col_apos); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); glDisableVertexAttribArray(col_apos); diff --git a/Source/Core/VideoBackends/Software/Src/HwRasterizer.h b/Source/Core/VideoBackends/Software/Src/HwRasterizer.h index ac0892841f..c3af17cec2 100644 --- a/Source/Core/VideoBackends/Software/Src/HwRasterizer.h +++ b/Source/Core/VideoBackends/Software/Src/HwRasterizer.h @@ -28,10 +28,10 @@ namespace HwRasterizer struct TexCacheEntry { - TexImage0 texImage0; - TexImage1 texImage1; - TexImage2 texImage2; - TexImage3 texImage3; + TexImage0 texImage0; + TexImage1 texImage1; + TexImage2 texImage2; + TexImage3 texImage3; TexTLUT texTlut; GLuint texture; @@ -47,4 +47,4 @@ namespace HwRasterizer static TextureCache textures; } -#endif +#endif diff --git a/Source/Core/VideoBackends/Software/Src/OpcodeDecoder.cpp b/Source/Core/VideoBackends/Software/Src/OpcodeDecoder.cpp index 7c3408a316..21f0a97abd 100644 --- a/Source/Core/VideoBackends/Software/Src/OpcodeDecoder.cpp +++ b/Source/Core/VideoBackends/Software/Src/OpcodeDecoder.cpp @@ -82,7 +82,7 @@ void DecodePrimitiveStream(u32 iBufferSize) void ReadXFData(u32 iBufferSize) { - _assert_msg_(VIDEO, iBufferSize >= (u32)(streamSize * 4), "Underflow during standard opcode decoding"); + _assert_msg_(VIDEO, iBufferSize >= (u32)(streamSize * 4), "Underflow during standard opcode decoding"); u32 pData[16]; for (int i = 0; i < streamSize; i++) @@ -109,7 +109,7 @@ void ExecuteDisplayList(u32 addr, u32 count) u32 readCount = (u32)(g_pVideoData - dlStart); dlStart = g_pVideoData; - _assert_msg_(VIDEO, count >= readCount, "Display list underrun"); + _assert_msg_(VIDEO, count >= readCount, "Display list underrun"); count -= readCount; } @@ -119,7 +119,7 @@ void ExecuteDisplayList(u32 addr, u32 count) void DecodeStandard(u32 bufferSize) { - _assert_msg_(VIDEO, CommandRunnable(bufferSize), "Underflow during standard opcode decoding"); + _assert_msg_(VIDEO, CommandRunnable(bufferSize), "Underflow during standard opcode decoding"); int Cmd = DataReadU8(); @@ -191,7 +191,7 @@ void DecodeStandard(u32 bufferSize) // zelda 4 swords calls it and checks the metrics registers after that break; - case GX_CMD_INVL_VC:// Invalidate (vertex cache?) + case GX_CMD_INVL_VC:// Invalidate (vertex cache?) DEBUG_LOG(VIDEO, "Invalidate (vertex cache?)"); break; @@ -202,7 +202,7 @@ void DecodeStandard(u32 bufferSize) } break; - // draw primitives + // draw primitives default: if (Cmd & 0x80) { @@ -284,7 +284,7 @@ bool CommandRunnable(u32 iBufferSize) minSize = 5; break; - // draw primitives + // draw primitives default: if (Cmd & 0x80) minSize = 3; diff --git a/Source/Core/VideoBackends/Software/Src/SWCommandProcessor.cpp b/Source/Core/VideoBackends/Software/Src/SWCommandProcessor.cpp index 5fd1353a94..06876a2035 100644 --- a/Source/Core/VideoBackends/Software/Src/SWCommandProcessor.cpp +++ b/Source/Core/VideoBackends/Software/Src/SWCommandProcessor.cpp @@ -88,7 +88,7 @@ void Init() cpreg.bboxbottom = 0; cpreg.token = 0; - + et_UpdateInterrupts = CoreTiming::RegisterEvent("UpdateInterrupts", UpdateInterrupts_Wrapper); // internal buffer position @@ -174,7 +174,7 @@ void Write16(const u16 _Value, const u32 _Address) cpreg.status.UnderflowLoWatermark = 0; INFO_LOG(COMMANDPROCESSOR,"\t write to CLEAR_REGISTER : %04x",_Value); - } + } break; // Fifo Registers diff --git a/Source/Core/VideoBackends/Software/Src/SWPixelEngine.cpp b/Source/Core/VideoBackends/Software/Src/SWPixelEngine.cpp index 6c81aedac7..a747a669ed 100644 --- a/Source/Core/VideoBackends/Software/Src/SWPixelEngine.cpp +++ b/Source/Core/VideoBackends/Software/Src/SWPixelEngine.cpp @@ -81,7 +81,7 @@ void Write16(const u16 _iValue, const u32 _iAddress) switch (address) { - case PE_CTRL_REGISTER: + case PE_CTRL_REGISTER: { UPECtrlReg tmpCtrl(_iValue); @@ -135,7 +135,7 @@ void SetToken_OnMainThread(u64 userdata, int cyclesLate) void SetFinish_OnMainThread(u64 userdata, int cyclesLate) { - g_bSignalFinishInterrupt = true; + g_bSignalFinishInterrupt = true; UpdateInterrupts(); } diff --git a/Source/Core/VideoBackends/Software/Src/SWPixelEngine.h b/Source/Core/VideoBackends/Software/Src/SWPixelEngine.h index b61af07a06..01fb49685b 100644 --- a/Source/Core/VideoBackends/Software/Src/SWPixelEngine.h +++ b/Source/Core/VideoBackends/Software/Src/SWPixelEngine.h @@ -46,7 +46,7 @@ namespace SWPixelEngine union UPEZConfReg { u16 Hex; - struct + struct { u16 ZCompEnable : 1; // Z Comparator Enable u16 Function : 3; @@ -58,7 +58,7 @@ namespace SWPixelEngine union UPEAlphaConfReg { u16 Hex; - struct + struct { u16 BMMath : 1; // GX_BM_BLEND || GX_BM_SUBSTRACT u16 BMLogic : 1; // GX_BM_LOGIC @@ -75,7 +75,7 @@ namespace SWPixelEngine union UPEDstAlphaConfReg { u16 Hex; - struct + struct { u16 DstAlpha : 8; u16 Enable : 1; @@ -86,7 +86,7 @@ namespace SWPixelEngine union UPEAlphaModeConfReg { u16 Hex; - struct + struct { u16 Threshold : 8; u16 CompareMode : 8; @@ -96,7 +96,7 @@ namespace SWPixelEngine union UPEAlphaReadReg { u16 Hex; - struct + struct { u16 ReadMode : 3; u16 : 13; @@ -105,7 +105,7 @@ namespace SWPixelEngine union UPECtrlReg { - struct + struct { u16 PETokenEnable : 1; u16 PEFinishEnable : 1; diff --git a/Source/Core/VideoBackends/Software/Src/SWRenderer.cpp b/Source/Core/VideoBackends/Software/Src/SWRenderer.cpp index 57557c1ee8..1d894b18da 100644 --- a/Source/Core/VideoBackends/Software/Src/SWRenderer.cpp +++ b/Source/Core/VideoBackends/Software/Src/SWRenderer.cpp @@ -30,7 +30,7 @@ void SWRenderer::Init() void SWRenderer::Shutdown() { glDeleteProgram(program); - glDeleteTextures(1, &s_RenderTarget); + glDeleteTextures(1, &s_RenderTarget); #ifndef USE_GLES delete s_pfont; s_pfont = 0; @@ -62,7 +62,7 @@ void CreateShaders() uni_tex = glGetUniformLocation(program, "Texture"); attr_pos = glGetAttribLocation(program, "pos"); - attr_tex = glGetAttribLocation(program, "TexCoordIn"); + attr_tex = glGetAttribLocation(program, "TexCoordIn"); } void SWRenderer::Prepare() @@ -100,7 +100,7 @@ void SWRenderer::DrawDebugText() char *p = debugtext_buffer; p[0] = 0; - if (g_SWVideoConfig.bShowStats) + if (g_SWVideoConfig.bShowStats) { p+=sprintf(p,"Objects: %i\n",swstats.thisFrame.numDrawnObjects); p+=sprintf(p,"Primitives: %i\n",swstats.thisFrame.numPrimatives); @@ -136,7 +136,7 @@ void SWRenderer::DrawTexture(u8 *texture, int width, int height) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - + glUseProgram(program); static const GLfloat verts[4][2] = { { -1, -1}, // Left top @@ -161,13 +161,13 @@ void SWRenderer::DrawTexture(u8 *texture, int width, int height) glDisableVertexAttribArray(attr_pos); glDisableVertexAttribArray(attr_tex); - glBindTexture(GL_TEXTURE_2D, 0); + glBindTexture(GL_TEXTURE_2D, 0); GL_REPORT_ERRORD(); } void SWRenderer::SwapBuffer() { - // Do our OSD callbacks + // Do our OSD callbacks OSD::DoCallbacks(OSD::OSD_ONFRAME); DrawDebugText(); @@ -177,7 +177,7 @@ void SWRenderer::SwapBuffer() GLInterface->Swap(); swstats.ResetFrame(); - + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); GL_REPORT_ERRORD(); diff --git a/Source/Core/VideoBackends/Software/Src/SWVertexLoader.cpp b/Source/Core/VideoBackends/Software/Src/SWVertexLoader.cpp index f176acd635..f08e2f3825 100644 --- a/Source/Core/VideoBackends/Software/Src/SWVertexLoader.cpp +++ b/Source/Core/VideoBackends/Software/Src/SWVertexLoader.cpp @@ -76,13 +76,13 @@ void SWVertexLoader::SetFormat(u8 attributeIndex, u8 primitiveType) g_VtxDesc.Tex4Coord, g_VtxDesc.Tex5Coord, g_VtxDesc.Tex6Coord, (const u32)((g_VtxDesc.Hex >> 31) & 3) }; const u32 tcElements[8] = { - m_CurrentVat->g0.Tex0CoordElements, m_CurrentVat->g1.Tex1CoordElements, m_CurrentVat->g1.Tex2CoordElements, + m_CurrentVat->g0.Tex0CoordElements, m_CurrentVat->g1.Tex1CoordElements, m_CurrentVat->g1.Tex2CoordElements, m_CurrentVat->g1.Tex3CoordElements, m_CurrentVat->g1.Tex4CoordElements, m_CurrentVat->g2.Tex5CoordElements, m_CurrentVat->g2.Tex6CoordElements, m_CurrentVat->g2.Tex7CoordElements }; const u32 tcFormat[8] = { - m_CurrentVat->g0.Tex0CoordFormat, m_CurrentVat->g1.Tex1CoordFormat, m_CurrentVat->g1.Tex2CoordFormat, + m_CurrentVat->g0.Tex0CoordFormat, m_CurrentVat->g1.Tex1CoordFormat, m_CurrentVat->g1.Tex2CoordFormat, m_CurrentVat->g1.Tex3CoordFormat, m_CurrentVat->g1.Tex4CoordFormat, m_CurrentVat->g2.Tex5CoordFormat, m_CurrentVat->g2.Tex6CoordFormat, m_CurrentVat->g2.Tex7CoordFormat }; @@ -161,10 +161,10 @@ void SWVertexLoader::SetFormat(u8 attributeIndex, u8 primitiveType) { m_VertexSize += VertexLoader_Normal::GetSize(g_VtxDesc.Normal, m_CurrentVat->g0.NormalFormat, m_CurrentVat->g0.NormalElements, m_CurrentVat->g0.NormalIndex3); - + m_normalLoader = VertexLoader_Normal::GetFunction(g_VtxDesc.Normal, m_CurrentVat->g0.NormalFormat, m_CurrentVat->g0.NormalElements, m_CurrentVat->g0.NormalIndex3); - + if (m_normalLoader == 0) { ERROR_LOG(VIDEO, "VertexLoader_Normal::GetFunction returned zero!"); @@ -192,7 +192,7 @@ void SWVertexLoader::SetFormat(u8 attributeIndex, u8 primitiveType) } AddAttributeLoader(LoadColor, i); break; - case INDEX8: + case INDEX8: m_VertexSize += 1; switch (colComp[i]) { diff --git a/Source/Core/VideoBackends/Software/Src/SWVideoConfig.cpp b/Source/Core/VideoBackends/Software/Src/SWVideoConfig.cpp index a6ebb97eb9..43b6a96ef7 100644 --- a/Source/Core/VideoBackends/Software/Src/SWVideoConfig.cpp +++ b/Source/Core/VideoBackends/Software/Src/SWVideoConfig.cpp @@ -12,7 +12,7 @@ SWVideoConfig::SWVideoConfig() { bFullscreen = false; bHideCursor = false; - renderToMainframe = false; + renderToMainframe = false; bHwRasterizer = false; diff --git a/Source/Core/VideoBackends/Software/Src/SWVideoConfig.h b/Source/Core/VideoBackends/Software/Src/SWVideoConfig.h index 94e3a6b2a8..ce1857d774 100644 --- a/Source/Core/VideoBackends/Software/Src/SWVideoConfig.h +++ b/Source/Core/VideoBackends/Software/Src/SWVideoConfig.h @@ -19,7 +19,7 @@ struct SWVideoConfig : NonCopyable // General bool bFullscreen; bool bHideCursor; - bool renderToMainframe; + bool renderToMainframe; bool bHwRasterizer; diff --git a/Source/Core/VideoBackends/Software/Src/SWmain.cpp b/Source/Core/VideoBackends/Software/Src/SWmain.cpp index 7f6792fc1c..939dd4553a 100644 --- a/Source/Core/VideoBackends/Software/Src/SWmain.cpp +++ b/Source/Core/VideoBackends/Software/Src/SWmain.cpp @@ -61,8 +61,8 @@ void VideoSoftware::ShowConfig(void *_hParent) bool VideoSoftware::Initialize(void *&window_handle) { g_SWVideoConfig.Load((File::GetUserPath(D_CONFIG_IDX) + "gfx_software.ini").c_str()); - InitInterface(); - + InitInterface(); + if (!GLInterface->Create(window_handle)) { INFO_LOG(VIDEO, "%s", "SWRenderer::Create failed\n"); @@ -150,7 +150,7 @@ void VideoSoftware::Shutdown() HwRasterizer::Shutdown(); SWRenderer::Shutdown(); - // Do our OSD callbacks + // Do our OSD callbacks OSD::DoCallbacks(OSD::OSD_SHUTDOWN); GLInterface->Shutdown(); @@ -177,7 +177,7 @@ void VideoSoftware::Video_Prepare() // Handle VSync on/off GLInterface->SwapInterval(VSYNC_ENABLED); - // Do our OSD callbacks + // Do our OSD callbacks OSD::DoCallbacks(OSD::OSD_INIT); HwRasterizer::Prepare(); @@ -188,7 +188,7 @@ void VideoSoftware::Video_Prepare() // Run from the CPU thread (from VideoInterface.cpp) void VideoSoftware::Video_BeginField(u32 xfbAddr, u32 fbWidth, u32 fbHeight) -{ +{ } // Run from the CPU thread (from VideoInterface.cpp) @@ -263,7 +263,7 @@ void VideoSoftware::Video_EnterLoop() Common::SleepCurrentThread(1); m_csSWVidOccupied.lock(); } - } + } } void VideoSoftware::Video_ExitLoop() diff --git a/Source/Core/VideoBackends/Software/Src/SetupUnit.cpp b/Source/Core/VideoBackends/Software/Src/SetupUnit.cpp index f0cc179f25..b08584e0a9 100644 --- a/Source/Core/VideoBackends/Software/Src/SetupUnit.cpp +++ b/Source/Core/VideoBackends/Software/Src/SetupUnit.cpp @@ -99,7 +99,7 @@ void SetupUnit::SetupTriStrip() m_VertPointer[2 - (m_VertexCounter & 1)] = m_VertPointer[0]; m_VertWritePointer = m_VertPointer[0]; - m_VertPointer[0] = &m_Vertices[(m_VertexCounter + 1) % 3]; + m_VertPointer[0] = &m_Vertices[(m_VertexCounter + 1) % 3]; } void SetupUnit::SetupTriFan() diff --git a/Source/Core/VideoBackends/Software/Src/Tev.cpp b/Source/Core/VideoBackends/Software/Src/Tev.cpp index effe1d3261..da9b30fe78 100644 --- a/Source/Core/VideoBackends/Software/Src/Tev.cpp +++ b/Source/Core/VideoBackends/Software/Src/Tev.cpp @@ -179,7 +179,7 @@ void Tev::DrawColorRegular(TevStageCombiner::ColorCombiner &cc) InputReg.c = *m_ColorInputLUT[cc.c][i]; InputReg.d = *m_ColorInputLUT[cc.d][i]; - u16 c = InputReg.c + (InputReg.c >> 7); + u16 c = InputReg.c + (InputReg.c >> 7); s32 temp = InputReg.a * (256 - c) + (InputReg.b * c); temp = cc.op?(-temp >> 8):(temp >> 8); @@ -285,7 +285,7 @@ void Tev::DrawColorCompare(TevStageCombiner::ColorCombiner &cc) Reg[cc.dest][BLU_C + i] = InputReg.d + ((InputReg.a > InputReg.b) ? InputReg.c : 0); } break; - case TEVCMP_RGB8_EQ: + case TEVCMP_RGB8_EQ: for (int i = 0; i < 3; i++) { InputReg.a = *m_ColorInputLUT[cc.a][i]; @@ -307,7 +307,7 @@ void Tev::DrawAlphaRegular(TevStageCombiner::AlphaCombiner &ac) InputReg.c = m_AlphaInputLUT[ac.c][ALP_C]; InputReg.d = m_AlphaInputLUT[ac.d][ALP_C]; - u16 c = InputReg.c + (InputReg.c >> 7); + u16 c = InputReg.c + (InputReg.c >> 7); s32 temp = InputReg.a * (256 - c) + (InputReg.b * c); temp = ac.op?(-temp >> 8):(temp >> 8); @@ -736,8 +736,8 @@ void Tev::Draw() s32 denom = bpmem.fog.b_magnitude - (Position[2] >> bpmem.fog.b_shift); //in addition downscale magnitude and zs to 0.24 bits ze = (bpmem.fog.a.GetA() * 16777215.0f) / (float)denom; - } - else + } + else { // orthographic // ze = a*Zs @@ -848,7 +848,7 @@ void Tev::SetRegColor(int reg, int comp, bool konst, s16 color) void Tev::DoState(PointerWrap &p) { p.DoArray(Reg, sizeof(Reg)); - + p.DoArray(KonstantColors, sizeof(KonstantColors)); p.DoArray(TexColor,4); p.DoArray(RasColor,4); diff --git a/Source/Core/VideoBackends/Software/Src/Tev.h b/Source/Core/VideoBackends/Software/Src/Tev.h index fee3c8022e..e86768ac0b 100644 --- a/Source/Core/VideoBackends/Software/Src/Tev.h +++ b/Source/Core/VideoBackends/Software/Src/Tev.h @@ -9,7 +9,7 @@ #include "ChunkFile.h" class Tev -{ +{ struct InputRegType { unsigned a : 8; @@ -49,7 +49,7 @@ class Tev { BLU_INP, GRN_INP, - RED_INP + RED_INP }; enum BufferBase diff --git a/Source/Core/VideoBackends/Software/Src/TextureEncoder.cpp b/Source/Core/VideoBackends/Software/Src/TextureEncoder.cpp index 9874e13449..07bb162cd6 100644 --- a/Source/Core/VideoBackends/Software/Src/TextureEncoder.cpp +++ b/Source/Core/VideoBackends/Software/Src/TextureEncoder.cpp @@ -359,7 +359,7 @@ void EncodeRGBA6(u8 *dst, u8 *src, u32 format) SetSpans(sBlkSize, tBlkSize, tSpan, sBlkSpan, tBlkSpan, writeStride); ENCODE_LOOP_BLOCKS { - RGBA_to_RGBA8(src, dst[1], dst[32], dst[33], dst[0]); + RGBA_to_RGBA8(src, dst[1], dst[32], dst[33], dst[0]); src += readStride; dst += 2; } @@ -563,7 +563,7 @@ void EncodeRGBA6halfscale(u8 *dst, u8 *src, u32 format) boxfilterRGBA_to_RGB8(src, r, g, b); src += readStride; - u16 val = ((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001e); + u16 val = ((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001e); *(u16*)dst = Common::swap16(val); dst+=2; } @@ -595,7 +595,7 @@ void EncodeRGBA6halfscale(u8 *dst, u8 *src, u32 format) SetSpans(sBlkSize, tBlkSize, tSpan, sBlkSpan, tBlkSpan, writeStride); ENCODE_LOOP_BLOCKS { - boxfilterRGBA_to_RGBA8(src, dst[1], dst[32], dst[33], dst[0]); + boxfilterRGBA_to_RGBA8(src, dst[1], dst[32], dst[33], dst[0]); src += readStride; dst += 2; } @@ -721,7 +721,7 @@ void EncodeRGBA6halfscale(u8 *dst, u8 *src, u32 format) default: PanicAlert("Unknown texture copy format: 0x%x\n", format); - break; + break; } } @@ -790,7 +790,7 @@ void EncodeRGB8(u8 *dst, u8 *src, u32 format) SetSpans(sBlkSize, tBlkSize, tSpan, sBlkSpan, tBlkSpan, writeStride); ENCODE_LOOP_BLOCKS { - u16 val = ((src[2] << 8) & 0xf800) | ((src[1] << 3) & 0x07e0) | ((src[0] >> 3) & 0x001e); + u16 val = ((src[2] << 8) & 0xf800) | ((src[1] << 3) & 0x07e0) | ((src[0] >> 3) & 0x001e); *(u16*)dst = Common::swap16(val); src += readStride; dst+=2; @@ -935,7 +935,7 @@ void EncodeRGB8(u8 *dst, u8 *src, u32 format) default: PanicAlert("Unknown texture copy format: 0x%x\n", format); - break; + break; } } @@ -1010,7 +1010,7 @@ void EncodeRGB8halfscale(u8 *dst, u8 *src, u32 format) ENCODE_LOOP_BLOCKS { boxfilterRGB_to_RGB8(src, r, g, b); - u16 val = ((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001e); + u16 val = ((r << 8) & 0xf800) | ((g << 3) & 0x07e0) | ((b >> 3) & 0x001e); *(u16*)dst = Common::swap16(val); src += readStride; dst+=2; @@ -1166,7 +1166,7 @@ void EncodeRGB8halfscale(u8 *dst, u8 *src, u32 format) default: PanicAlert("Unknown texture copy format: 0x%x\n", format); - break; + break; } } @@ -1270,7 +1270,7 @@ void EncodeZ24(u8 *dst, u8 *src, u32 format) default: PanicAlert("Unknown texture copy format: 0x%x\n", format); - break; + break; } } @@ -1314,7 +1314,7 @@ void EncodeZ24halfscale(u8 *dst, u8 *src, u32 format) SetSpans(sBlkSize, tBlkSize, tSpan, sBlkSpan, tBlkSpan, writeStride); ENCODE_LOOP_BLOCKS { - boxfilterRGB_to_RGB8(src, dst[33], dst[32], dst[1]); + boxfilterRGB_to_RGB8(src, dst[33], dst[32], dst[1]); dst[0] = 255; src += readStride; dst += 2; @@ -1380,7 +1380,7 @@ void EncodeZ24halfscale(u8 *dst, u8 *src, u32 format) default: PanicAlert("Unknown texture copy format: 0x%x\n", format); - break; + break; } } @@ -1389,7 +1389,7 @@ void Encode(u8 *dest_ptr) int pixelformat = bpmem.zcontrol.pixel_format; bool bFromZBuffer = pixelformat == PIXELFMT_Z24; bool bIsIntensityFmt = bpmem.triggerEFBCopy.intensity_fmt > 0; - u32 copyfmt = ((bpmem.triggerEFBCopy.target_pixel_format / 2) + ((bpmem.triggerEFBCopy.target_pixel_format & 1) * 8)); + u32 copyfmt = ((bpmem.triggerEFBCopy.target_pixel_format / 2) + ((bpmem.triggerEFBCopy.target_pixel_format & 1) * 8)); // pack copy format information into a single variable u32 format = copyfmt; diff --git a/Source/Core/VideoBackends/Software/Src/TextureSampler.cpp b/Source/Core/VideoBackends/Software/Src/TextureSampler.cpp index f7c87ba513..0657f701f2 100644 --- a/Source/Core/VideoBackends/Software/Src/TextureSampler.cpp +++ b/Source/Core/VideoBackends/Software/Src/TextureSampler.cpp @@ -124,7 +124,7 @@ void SampleMip(s32 s, s32 t, s32 mip, bool linear, u8 texmap, u8 *sample) int imageHeight = ti0.height; int tlutAddress = texTlut.tmem_offset << 9; - + // reduce sample location and texture size to mip level // move texture pointer to mip location if (mip) diff --git a/Source/Core/VideoBackends/Software/Src/TransformUnit.cpp b/Source/Core/VideoBackends/Software/Src/TransformUnit.cpp index a1c2bd190a..e00f05e4aa 100644 --- a/Source/Core/VideoBackends/Software/Src/TransformUnit.cpp +++ b/Source/Core/VideoBackends/Software/Src/TransformUnit.cpp @@ -248,7 +248,7 @@ void LightColor(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChann float attn; if (chan.attnfunc == 3) // spot - { + { float dist2 = ldir.length2(); float dist = sqrtf(dist2); ldir = ldir / dist; @@ -259,7 +259,7 @@ void LightColor(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChann attn = SafeDivide(max(0.0f, cosAtt), distAtt); } else if (chan.attnfunc == 1) // specular - { + { // donko - what is going on here? 655.36 is a guess but seems about right. attn = (light->pos * normal) > -655.36 ? max(0.0f, (light->dir * normal)) : 0; ldir.set(1.0f, attn, attn * attn); diff --git a/Source/Core/VideoBackends/Software/Src/Vec3.h b/Source/Core/VideoBackends/Software/Src/Vec3.h index d4b1502dcb..117a6f4197 100644 --- a/Source/Core/VideoBackends/Software/Src/Vec3.h +++ b/Source/Core/VideoBackends/Software/Src/Vec3.h @@ -62,7 +62,7 @@ public: Vec3 operator %(const Vec3 &v) const { return Vec3(y*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x); - } + } float length2() const { return x*x+y*y+z*z; } @@ -88,11 +88,11 @@ public: { return *((&x) + i); } - bool operator == (const Vec3 &other) const + bool operator == (const Vec3 &other) const { if (x==other.x && y==other.y && z==other.z) return true; - else + else return false; } void setZero() diff --git a/Source/Core/VideoBackends/Software/Src/VideoBackend.h b/Source/Core/VideoBackends/Software/Src/VideoBackend.h index 6c382aa0b2..dd62838bc0 100644 --- a/Source/Core/VideoBackends/Software/Src/VideoBackend.h +++ b/Source/Core/VideoBackends/Software/Src/VideoBackend.h @@ -27,7 +27,7 @@ class VideoSoftware : public VideoBackend void Video_ExitLoop(); void Video_BeginField(u32, u32, u32); void Video_EndField(); - + u32 Video_AccessEFB(EFBAccessType, u32, u32, u32); u32 Video_GetQueryResult(PerfQueryType type); @@ -57,7 +57,7 @@ class VideoSoftware : public VideoBackend void PauseAndLock(bool doLock, bool unpauseOnUnlock=true); void DoState(PointerWrap &p); - + public: void CheckInvalidState(); }; diff --git a/Source/Core/VideoBackends/Software/Src/VideoConfigDialog.cpp b/Source/Core/VideoBackends/Software/Src/VideoConfigDialog.cpp index eea908edfc..5ac6946d23 100644 --- a/Source/Core/VideoBackends/Software/Src/VideoConfigDialog.cpp +++ b/Source/Core/VideoBackends/Software/Src/VideoConfigDialog.cpp @@ -28,7 +28,7 @@ VideoConfigDialog::VideoConfigDialog(wxWindow* parent, const std::string& title, { vconfig.Load((File::GetUserPath(D_CONFIG_IDX) + ininame + ".ini").c_str()); - wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize); + wxNotebook* const notebook = new wxNotebook(this, -1, wxDefaultPosition, wxDefaultSize); // -- GENERAL -- { @@ -79,7 +79,7 @@ VideoConfigDialog::VideoConfigDialog(wxWindow* parent, const std::string& title, szr_info->Add(new SettingCheckBox(page_general, wxT("Various Statistics"), wxT(""), vconfig.bShowStats)); } - + // - utility { wxStaticBoxSizer* const group_utility = new wxStaticBoxSizer(wxVERTICAL, page_general, wxT("Utility")); diff --git a/Source/Core/VideoBackends/Software/Src/XFMemLoader.cpp b/Source/Core/VideoBackends/Software/Src/XFMemLoader.cpp index 4580bafad8..899a5fab48 100644 --- a/Source/Core/VideoBackends/Software/Src/XFMemLoader.cpp +++ b/Source/Core/VideoBackends/Software/Src/XFMemLoader.cpp @@ -23,7 +23,7 @@ void XFWritten(u32 transferSize, u32 baseAddress) if (baseAddress <= 0x1026 && topAddress >= 0x1020) Clipper::SetViewOffset(); - // fix lights so invalid values don't trash the lighting computations + // fix lights so invalid values don't trash the lighting computations if (baseAddress <= 0x067f && topAddress >= 0x0604) { u32* x = swxfregs.lights; diff --git a/Source/Core/VideoBackends/Software/Src/XFMemLoader.h b/Source/Core/VideoBackends/Software/Src/XFMemLoader.h index 75e05110bf..ff6c7267dd 100644 --- a/Source/Core/VideoBackends/Software/Src/XFMemLoader.h +++ b/Source/Core/VideoBackends/Software/Src/XFMemLoader.h @@ -158,7 +158,7 @@ struct Projection union TexMtxInfo { - struct + struct { u32 unknown : 1; u32 projection : 1; // XF_TEXPROJ_X @@ -173,7 +173,7 @@ union TexMtxInfo union PostMtxInfo { - struct + struct { u32 index : 6; // base row of dual transform matrix u32 unused : 2; diff --git a/Source/Core/VideoBackends/Software/Src/stdafx.h b/Source/Core/VideoBackends/Software/Src/stdafx.h index 60f0912113..9d8868e8a9 100644 --- a/Source/Core/VideoBackends/Software/Src/stdafx.h +++ b/Source/Core/VideoBackends/Software/Src/stdafx.h @@ -9,5 +9,5 @@ #endif #include -#include +#include diff --git a/Source/Core/VideoCommon/Src/AVIDump.cpp b/Source/Core/VideoCommon/Src/AVIDump.cpp index 0910381d74..d6f2755e33 100644 --- a/Source/Core/VideoCommon/Src/AVIDump.cpp +++ b/Source/Core/VideoCommon/Src/AVIDump.cpp @@ -4,7 +4,7 @@ #if defined(__FreeBSD__) #define __STDC_CONSTANT_MACROS 1 -#endif +#endif #include "AVIDump.h" #include "HW/VideoInterface.h" //for TargetRefreshRate @@ -71,9 +71,9 @@ bool AVIDump::CreateFile() HRESULT hr = AVIFileOpenA(&m_file, movie_file_name, OF_WRITE | OF_CREATE, NULL); if (FAILED(hr)) { - if (hr == AVIERR_BADFORMAT) NOTICE_LOG(VIDEO, "The file couldn't be read, indicating a corrupt file or an unrecognized format."); - if (hr == AVIERR_MEMORY) NOTICE_LOG(VIDEO, "The file could not be opened because of insufficient memory."); - if (hr == AVIERR_FILEREAD) NOTICE_LOG(VIDEO, "A disk error occurred while reading the file."); + if (hr == AVIERR_BADFORMAT) NOTICE_LOG(VIDEO, "The file couldn't be read, indicating a corrupt file or an unrecognized format."); + if (hr == AVIERR_MEMORY) NOTICE_LOG(VIDEO, "The file could not be opened because of insufficient memory."); + if (hr == AVIERR_FILEREAD) NOTICE_LOG(VIDEO, "A disk error occurred while reading the file."); if (hr == AVIERR_FILEOPEN) NOTICE_LOG(VIDEO, "A disk error occurred while opening the file."); if (hr == REGDB_E_CLASSNOTREG) NOTICE_LOG(VIDEO, "AVI class not registered"); Stop(); diff --git a/Source/Core/VideoCommon/Src/AVIDump.h b/Source/Core/VideoCommon/Src/AVIDump.h index dced69887e..f5697613ca 100644 --- a/Source/Core/VideoCommon/Src/AVIDump.h +++ b/Source/Core/VideoCommon/Src/AVIDump.h @@ -29,7 +29,7 @@ class AVIDump static bool Start(int w, int h); #endif static void AddFrame(const u8* data, int width, int height); - + static void Stop(); }; diff --git a/Source/Core/VideoCommon/Src/BPMemory.h b/Source/Core/VideoCommon/Src/BPMemory.h index 83dbefed50..94455b04bf 100644 --- a/Source/Core/VideoCommon/Src/BPMemory.h +++ b/Source/Core/VideoCommon/Src/BPMemory.h @@ -21,7 +21,7 @@ #define BPMEM_LINEPTWIDTH 0x22 #define BPMEM_PERF0_TRI 0x23 #define BPMEM_PERF0_QUAD 0x24 -#define BPMEM_RAS1_SS0 0x25 +#define BPMEM_RAS1_SS0 0x25 #define BPMEM_RAS1_SS1 0x26 #define BPMEM_IREF 0x27 #define BPMEM_TREF 0x28 // 0x28 + 8 @@ -47,7 +47,7 @@ #define BPMEM_TRIGGER_EFB_COPY 0x52 #define BPMEM_COPYFILTER0 0x53 #define BPMEM_COPYFILTER1 0x54 -#define BPMEM_CLEARBBOX1 0x55 +#define BPMEM_CLEARBBOX1 0x55 #define BPMEM_CLEARBBOX2 0x56 #define BPMEM_CLEAR_PIXEL_PERF 0x57 #define BPMEM_REVBITS 0x58 @@ -181,7 +181,7 @@ enum Compare enum AlphaOp { - ALPHAOP_AND = 0, + ALPHAOP_AND = 0, ALPHAOP_OR, ALPHAOP_XOR, ALPHAOP_XNOR, @@ -289,7 +289,7 @@ struct TevStageCombiner }; union AlphaCombiner { - struct + struct { u32 rswap : 2; u32 tswap : 2; @@ -367,7 +367,7 @@ struct TevStageCombiner }; struct { - u32 hex : 21; + u32 hex : 21; u32 unused : 11; }; @@ -442,7 +442,7 @@ union RAS1_IREF union TexMode0 { - struct + struct { u32 wrap_s : 2; u32 wrap_t : 2; @@ -458,7 +458,7 @@ union TexMode0 }; union TexMode1 { - struct + struct { u32 min_lod : 8; u32 max_lod : 8; @@ -467,7 +467,7 @@ union TexMode1 }; union TexImage0 { - struct + struct { u32 width : 10; //actually w-1 u32 height : 10; //actually h-1 @@ -477,7 +477,7 @@ union TexImage0 }; union TexImage1 { - struct + struct { u32 tmem_even : 15; // tmem line index for even LODs u32 cache_width : 3; @@ -489,10 +489,10 @@ union TexImage1 union TexImage2 { - struct + struct { u32 tmem_odd : 15; // tmem line index for odd LODs - u32 cache_width : 3; + u32 cache_width : 3; u32 cache_height : 3; }; u32 hex; @@ -500,7 +500,7 @@ union TexImage2 union TexImage3 { - struct + struct { u32 image_base: 24; //address in memory >> 5 (was 20 for GC) }; @@ -508,7 +508,7 @@ union TexImage3 }; union TexTLUT { - struct + struct { u32 tmem_offset : 10; u32 tlut_format : 2; @@ -518,7 +518,7 @@ union TexTLUT union ZTex1 { - struct + struct { u32 bias : 24; }; @@ -527,7 +527,7 @@ union ZTex1 union ZTex2 { - struct + struct { u32 type : 2; // TEV_Z_TYPE_X u32 op : 2; // GXZTexOp @@ -563,7 +563,7 @@ struct FourTexUnits union GenMode { - struct + struct { u32 numtexgens : 4; // 0xF u32 numcolchans : 5; // 0x1E0 @@ -578,7 +578,7 @@ union GenMode union LPSize { - struct + struct { u32 linesize : 8; // in 1/6th pixels u32 pointsize : 8; // in 1/6th pixels @@ -593,7 +593,7 @@ union LPSize union X12Y12 { - struct + struct { u32 y : 12; u32 x : 12; @@ -602,7 +602,7 @@ union X12Y12 }; union X10Y10 { - struct + struct { u32 x : 10; u32 y : 10; @@ -626,7 +626,7 @@ union X10Y10 union BlendMode { - struct + struct { u32 blendenable : 1; u32 logicopenable : 1; @@ -644,7 +644,7 @@ union BlendMode union FogParam0 { - struct + struct { u32 mantissa : 11; u32 exponent : 8; @@ -674,7 +674,7 @@ union FogParam3 // amount to subtract from eyespacez after range adjustment float GetC() - { + { union { u32 i; float f; } dummy; dummy.i = ((u32)c_sign << 31) | ((u32)c_exp << 23) | ((u32)c_mant << 12); // scale mantissa from 11 to 23 bits return dummy.f; @@ -814,7 +814,7 @@ union PE_CONTROL union TCInfo { - struct + struct { u32 scale_minus_1 : 16; u32 range_bias : 1; @@ -924,7 +924,7 @@ union AlphaTest union UPE_Copy { u32 Hex; - struct + struct { u32 clamp0 : 1; // if set clamp top u32 clamp1 : 1; // if set clamp bottom @@ -939,7 +939,7 @@ union UPE_Copy u32 intensity_fmt : 1; // if set, is an intensity format (I4,I8,IA4,IA8) u32 auto_conv : 1; // if 0 automatic color conversion by texture format and pixel type }; - u32 tp_realFormat() { + u32 tp_realFormat() { return target_pixel_format / 2 + (target_pixel_format & 1) * 8; } }; @@ -983,7 +983,7 @@ struct BPMemory // indirect matrices (set by GXSetIndTexMtx, selected by TevStageIndirect::mid) // abc form a 2x3 offset matrix, there's 3 such matrices // the 3 offset matrices can either be indirect type, S-type, or T-type - // 6bit scale factor s is distributed across IND_MTXA/B/C. + // 6bit scale factor s is distributed across IND_MTXA/B/C. // before using matrices scale by 2^-(s-17) IND_MTX indmtx[3];//06-0e GXSetIndTexMtx, 2x3 matrices IND_IMASK imask;//0f diff --git a/Source/Core/VideoCommon/Src/BPStructs.cpp b/Source/Core/VideoCommon/Src/BPStructs.cpp index e3ada3c0bf..ed3fcce5dc 100644 --- a/Source/Core/VideoCommon/Src/BPStructs.cpp +++ b/Source/Core/VideoCommon/Src/BPStructs.cpp @@ -27,7 +27,7 @@ static int numWrites; extern volatile bool g_bSkipCurrentFrame; -static const float s_gammaLUT[] = +static const float s_gammaLUT[] = { 1.0f, 1.7f, @@ -67,7 +67,7 @@ void BPWritten(const BPCmd& bp) just stuff geometry in them and don't put state changes there ---------------------------------------------------------------------------------------------------------------- */ - + // check for invalid state, else unneeded configuration are built g_video_backend->CheckInvalidState(); @@ -104,7 +104,7 @@ void BPWritten(const BPCmd& bp) { numWrites = 0; } - else if (++numWrites >= 100) // seem that if 100 consecutive BP writes are called to either of these addresses in ZTP, + else if (++numWrites >= 100) // seem that if 100 consecutive BP writes are called to either of these addresses in ZTP, { // then it is safe to assume the map texture address is currently loaded into the BP memory mapTexAddress = bpmem.tex[0].texImage3[0].hex << 5; mapTexFound = true; @@ -119,7 +119,7 @@ void BPWritten(const BPCmd& bp) FlushPipeline(); } } // END ZTP SPEEDUP HACK - else + else { if (((s32*)&bpmem)[bp.address] == bp.newvalue) { @@ -143,7 +143,7 @@ void BPWritten(const BPCmd& bp) } ((u32*)&bpmem)[bp.address] = bp.newvalue; - + switch (bp.address) { case BPMEM_GENMODE: // Set the Generation Mode @@ -199,7 +199,7 @@ void BPWritten(const BPCmd& bp) { if (bp.changes & 0xFFFF) { - PRIM_LOG("blendmode: en=%d, open=%d, colupd=%d, alphaupd=%d, dst=%d, src=%d, sub=%d, mode=%d", + PRIM_LOG("blendmode: en=%d, open=%d, colupd=%d, alphaupd=%d, dst=%d, src=%d, sub=%d, mode=%d", bpmem.blendmode.blendenable, bpmem.blendmode.logicopenable, bpmem.blendmode.colorupdate, bpmem.blendmode.alphaupdate, bpmem.blendmode.dstfactor, bpmem.blendmode.srcfactor, bpmem.blendmode.subtract, bpmem.blendmode.logicmode); @@ -265,7 +265,7 @@ void BPWritten(const BPCmd& bp) EFBRectangle rc; rc.left = (int)bpmem.copyTexSrcXY.x; rc.top = (int)bpmem.copyTexSrcXY.y; - + // Here Width+1 like Height, otherwise some textures are corrupted already since the native resolution. rc.right = (int)(bpmem.copyTexSrcXY.x + bpmem.copyTexSrcWH.x + 1); rc.bottom = (int)(bpmem.copyTexSrcXY.y + bpmem.copyTexSrcWH.y + 1); @@ -287,7 +287,7 @@ void BPWritten(const BPCmd& bp) // We should be able to get away with deactivating the current bbox tracking // here. Not sure if there's a better spot to put this. // the number of lines copied is determined by the y scale * source efb height - + PixelEngine::bbox_active = false; float yScale; @@ -303,8 +303,8 @@ void BPWritten(const BPCmd& bp) xfbLines = MAX_XFB_HEIGHT; } - RenderToXFB(bp, rc, yScale, xfbLines, - bpmem.copyTexDest << 5, + RenderToXFB(bp, rc, yScale, xfbLines, + bpmem.copyTexDest << 5, bpmem.copyMipMapStrideChannels << 4, (u32)xfbLines, s_gammaLUT[PE_copy.gamma]); @@ -377,7 +377,7 @@ void BPWritten(const BPCmd& bp) { if (bp.changes & 3) PixelShaderManager::SetZTextureTypeChanged(); - #if defined(_DEBUG) || defined(DEBUGFAST) + #if defined(_DEBUG) || defined(DEBUGFAST) const char* pzop[] = {"DISABLE", "ADD", "REPLACE", "?"}; const char* pztype[] = {"Z8", "Z16", "Z24", "?"}; PRIM_LOG("ztex op=%s, type=%s", pzop[bpmem.ztex2.op], pztype[bpmem.ztex2.type]); @@ -442,7 +442,7 @@ void BPWritten(const BPCmd& bp) { int right = bp.newvalue >> 10; int left = bp.newvalue & 0x3ff; - + // We should only set these if bbox is calculated properly. PixelEngine::bbox[0] = left; PixelEngine::bbox[1] = right; @@ -498,7 +498,7 @@ void BPWritten(const BPCmd& bp) case BPMEM_IND_IMASK: // Index Mask ? case BPMEM_REVBITS: // Always set to 0x0F when GX_InitRevBits() is called. break; - + case BPMEM_CLEAR_PIXEL_PERF: // GXClearPixMetric writes 0xAAA here, Sunshine alternates this register between values 0x000 and 0xAAA g_perf_query->ResetQuery(); diff --git a/Source/Core/VideoCommon/Src/CPMemory.h b/Source/Core/VideoCommon/Src/CPMemory.h index 28bc3d7d95..0647c2ae39 100644 --- a/Source/Core/VideoCommon/Src/CPMemory.h +++ b/Source/Core/VideoCommon/Src/CPMemory.h @@ -38,7 +38,7 @@ enum enum { FORMAT_16B_565 = 0, // NA - FORMAT_24B_888 = 1, + FORMAT_24B_888 = 1, FORMAT_32B_888x = 2, FORMAT_16B_4444 = 3, FORMAT_24B_6666 = 4, @@ -56,7 +56,7 @@ enum union TVtxDesc { u64 Hex; - struct + struct { // 0: not present // 1: present @@ -70,9 +70,9 @@ union TVtxDesc u32 Tex6MatIdx : 1; u32 Tex7MatIdx : 1; - // 00: not present - // 01: direct - // 10: 8 bit index + // 00: not present + // 01: direct + // 10: 8 bit index // 11: 16 bit index u32 Position : 2; u32 Normal : 2; @@ -98,21 +98,21 @@ union TVtxDesc union UVAT_group0 { u32 Hex; - struct + struct { // 0:8 u32 PosElements : 1; - u32 PosFormat : 3; - u32 PosFrac : 5; + u32 PosFormat : 3; + u32 PosFrac : 5; // 9:12 - u32 NormalElements : 1; - u32 NormalFormat : 3; + u32 NormalElements : 1; + u32 NormalFormat : 3; // 13:16 u32 Color0Elements : 1; - u32 Color0Comp : 3; + u32 Color0Comp : 3; // 17:20 u32 Color1Elements : 1; - u32 Color1Comp : 3; + u32 Color1Comp : 3; // 21:29 u32 Tex0CoordElements : 1; u32 Tex0CoordFormat : 3; @@ -126,7 +126,7 @@ union UVAT_group0 union UVAT_group1 { u32 Hex; - struct + struct { // 0:8 u32 Tex1CoordElements : 1; @@ -143,7 +143,7 @@ union UVAT_group1 // 27:30 u32 Tex4CoordElements : 1; u32 Tex4CoordFormat : 3; - // + // u32 : 1; }; }; @@ -151,7 +151,7 @@ union UVAT_group1 union UVAT_group2 { u32 Hex; - struct + struct { // 0:4 u32 Tex4Frac : 5; @@ -186,10 +186,10 @@ struct TexAttr struct TVtxAttr { u8 PosElements; - u8 PosFormat; - u8 PosFrac; + u8 PosFormat; + u8 PosFrac; u8 NormalElements; - u8 NormalFormat; + u8 NormalFormat; ColorAttr color[2]; TexAttr texCoord[8]; u8 ByteDequant; diff --git a/Source/Core/VideoCommon/Src/CommandProcessor.cpp b/Source/Core/VideoCommon/Src/CommandProcessor.cpp index d0645c31ea..4f64d4172c 100644 --- a/Source/Core/VideoCommon/Src/CommandProcessor.cpp +++ b/Source/Core/VideoCommon/Src/CommandProcessor.cpp @@ -108,7 +108,7 @@ void Init() m_bboxbottom = 480; m_tokenReg = 0; - + memset(&fifo,0,sizeof(fifo)); fifo.CPCmdIdle = 1; fifo.CPReadIdle = 1; @@ -613,7 +613,7 @@ void ProcessFifoEvents() void Shutdown() { - + } void SetCpStatusRegister() @@ -656,7 +656,7 @@ void SetCpControlRegister() ProcessorInterface::Fifo_CPUBase = fifo.CPBase; ProcessorInterface::Fifo_CPUEnd = fifo.CPEnd; } - + if(fifo.bFF_GPReadEnable && !m_CPCtrlReg.GPReadEnable) { fifo.bFF_GPReadEnable = m_CPCtrlReg.GPReadEnable; diff --git a/Source/Core/VideoCommon/Src/CommandProcessor.h b/Source/Core/VideoCommon/Src/CommandProcessor.h index 4cfa6cf8bf..6d480ef0bc 100644 --- a/Source/Core/VideoCommon/Src/CommandProcessor.h +++ b/Source/Core/VideoCommon/Src/CommandProcessor.h @@ -23,7 +23,7 @@ extern volatile bool interruptSet; extern volatile bool interruptWaiting; extern volatile bool interruptTokenWaiting; extern volatile bool interruptFinishWaiting; - + // internal hardware addresses enum { diff --git a/Source/Core/VideoCommon/Src/DataReader.h b/Source/Core/VideoCommon/Src/DataReader.h index 3488642385..95c992a011 100644 --- a/Source/Core/VideoCommon/Src/DataReader.h +++ b/Source/Core/VideoCommon/Src/DataReader.h @@ -43,7 +43,7 @@ __forceinline u16 DataPeek16(int _uOffset) return DataPeek(_uOffset); } -__forceinline u32 DataPeek32(int _uOffset) +__forceinline u32 DataPeek32(int _uOffset) { return DataPeek(_uOffset); } diff --git a/Source/Core/VideoCommon/Src/DriverDetails.cpp b/Source/Core/VideoCommon/Src/DriverDetails.cpp index 2ca8f4577b..21b2273a49 100644 --- a/Source/Core/VideoCommon/Src/DriverDetails.cpp +++ b/Source/Core/VideoCommon/Src/DriverDetails.cpp @@ -51,7 +51,7 @@ namespace DriverDetails m_vendor = vendor; m_driver = driver; m_version = version; - + if (driver == DRIVER_UNKNOWN) switch(vendor) { @@ -74,7 +74,7 @@ namespace DriverDetails default: break; } - + for(auto& bug : m_known_bugs) { if( @@ -91,7 +91,7 @@ namespace DriverDetails { auto it = m_bugs.find(bug); if (it == m_bugs.end()) - return false; + return false; return it->second.m_hasbug; } } diff --git a/Source/Core/VideoCommon/Src/DriverDetails.h b/Source/Core/VideoCommon/Src/DriverDetails.h index cc1b0d783c..b9ace5b4f5 100644 --- a/Source/Core/VideoCommon/Src/DriverDetails.h +++ b/Source/Core/VideoCommon/Src/DriverDetails.h @@ -69,7 +69,7 @@ namespace DriverDetails // Affected devices: Qualcomm/Adreno // Started Version: ? (Noticed on v14) // Ended Version: -1 - // When compiling a shader, it is important that when it fails, + // When compiling a shader, it is important that when it fails, // you first get the length of the information log prior to grabbing it. // This allows you to allocate an array to store all of the log // Adreno devices /always/ return 0 when querying GL_INFO_LOG_LENGTH @@ -129,7 +129,7 @@ namespace DriverDetails // PowerVR 5 hardware limitations don't allow it to support OpenGL ES 3 // This is fixed in PowerVR6 BUG_ISPOWERVR, - // Bug: glBufferSubData/glMapBufferRange stalls + OOM + // Bug: glBufferSubData/glMapBufferRange stalls + OOM // Affected devices: Adreno a3xx/Mali-t6xx // Started Version: -1 // Ended Version: -1 @@ -138,10 +138,10 @@ namespace DriverDetails // Apparently Mali and Adreno share code in this regard since it was wrote by the same person. BUG_BROKENBUFFERSTREAM, }; - - // Initializes our internal vendor, device family, and driver version + + // Initializes our internal vendor, device family, and driver version void Init(Vendor vendor, Driver driver, const double version); - + // Once Vendor and driver version is set, this will return if it has the applicable bug passed to it. bool HasBug(Bug bug); } diff --git a/Source/Core/VideoCommon/Src/EmuWindow.cpp b/Source/Core/VideoCommon/Src/EmuWindow.cpp index fc4c049c80..9b8cde5178 100644 --- a/Source/Core/VideoCommon/Src/EmuWindow.cpp +++ b/Source/Core/VideoCommon/Src/EmuWindow.cpp @@ -145,8 +145,8 @@ LRESULT CALLBACK WndProc( HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) // Called when a screensaver wants to show up while this window is active case WM_SYSCOMMAND: - - switch (wParam) + + switch (wParam) { case SC_SCREENSAVE: case SC_MONITORPOWER: diff --git a/Source/Core/VideoCommon/Src/Fifo.cpp b/Source/Core/VideoCommon/Src/Fifo.cpp index b7e00e128a..92b9753623 100644 --- a/Source/Core/VideoCommon/Src/Fifo.cpp +++ b/Source/Core/VideoCommon/Src/Fifo.cpp @@ -28,7 +28,7 @@ static u8 *videoBuffer; static int size = 0; } // namespace -void Fifo_DoState(PointerWrap &p) +void Fifo_DoState(PointerWrap &p) { p.DoArray(videoBuffer, FIFO_SIZE); p.Do(size); @@ -148,7 +148,7 @@ void RunGpuLoop() Common::AtomicStore(CommandProcessor::VITicks, CommandProcessor::m_cpClockOrigin); - // check if we are able to run this buffer + // check if we are able to run this buffer while (GpuRunningState && !CommandProcessor::interruptWaiting && fifo.bFF_GPReadEnable && fifo.CPReadWriteDistance && !AtBreakpoint()) { fifo.isGpuReadingData = true; @@ -181,11 +181,11 @@ void RunGpuLoop() } CommandProcessor::SetCpStatus(); - + // This call is pretty important in DualCore mode and must be called in the FIFO Loop. // If we don't, s_swapRequested or s_efbAccessRequested won't be set to false // leading the CPU thread to wait in Video_BeginField or Video_AccessEFB thus slowing things down. - VideoFifo_CheckAsyncRequest(); + VideoFifo_CheckAsyncRequest(); CommandProcessor::isPossibleWaitingSetDrawDone = false; } diff --git a/Source/Core/VideoCommon/Src/GenericDLCache.cpp b/Source/Core/VideoCommon/Src/GenericDLCache.cpp index d6826bbbde..d5ed12c9c8 100644 --- a/Source/Core/VideoCommon/Src/GenericDLCache.cpp +++ b/Source/Core/VideoCommon/Src/GenericDLCache.cpp @@ -32,7 +32,7 @@ void Shutdown() { } -void Clear() +void Clear() { } diff --git a/Source/Core/VideoCommon/Src/GenericTextureDecoder.cpp b/Source/Core/VideoCommon/Src/GenericTextureDecoder.cpp index c5d14bfe9e..fa9c2b1520 100644 --- a/Source/Core/VideoCommon/Src/GenericTextureDecoder.cpp +++ b/Source/Core/VideoCommon/Src/GenericTextureDecoder.cpp @@ -50,7 +50,7 @@ extern const unsigned char sfont_raw[][9*10]; int TexDecoder_GetTexelSizeInNibbles(int format) { switch (format & 0x3f) { - case GX_TF_I4: return 1; + case GX_TF_I4: return 1; case GX_TF_I8: return 2; case GX_TF_IA4: return 2; case GX_TF_IA8: return 4; @@ -61,7 +61,7 @@ int TexDecoder_GetTexelSizeInNibbles(int format) case GX_TF_C8: return 2; case GX_TF_C14X2: return 4; case GX_TF_CMPR: return 1; - case GX_CTF_R4: return 1; + case GX_CTF_R4: return 1; case GX_CTF_RA4: return 2; case GX_CTF_RA8: return 4; case GX_CTF_YUVA8: return 8; @@ -76,7 +76,7 @@ int TexDecoder_GetTexelSizeInNibbles(int format) case GX_TF_Z16: return 4; case GX_TF_Z24X8: return 8; - case GX_CTF_Z4: return 1; + case GX_CTF_Z4: return 1; case GX_CTF_Z8M: return 2; case GX_CTF_Z8L: return 2; case GX_CTF_Z16L: return 4; @@ -93,7 +93,7 @@ int TexDecoder_GetBlockWidthInTexels(u32 format) { switch (format) { - case GX_TF_I4: return 8; + case GX_TF_I4: return 8; case GX_TF_I8: return 8; case GX_TF_IA4: return 8; case GX_TF_IA8: return 4; @@ -130,7 +130,7 @@ int TexDecoder_GetBlockHeightInTexels(u32 format) { switch (format) { - case GX_TF_I4: return 8; + case GX_TF_I4: return 8; case GX_TF_I8: return 4; case GX_TF_IA4: return 4; case GX_TF_IA8: return 4; @@ -307,7 +307,7 @@ inline void decodebytesC4RGB565_To_RGBA(u32* dst, const u8* src, int tlutaddr) //inline void decodebytesC8(u32 *dst, const u8 *src, int numbytes, int tlutaddr, int tlutfmt) inline void decodebytesC8_5A3_To_BGRA32(u32 *dst, const u8 *src, int tlutaddr) -{ +{ u16 *tlut = (u16*)(texMem + tlutaddr); for (int x = 0; x < 8; x++) { @@ -317,7 +317,7 @@ inline void decodebytesC8_5A3_To_BGRA32(u32 *dst, const u8 *src, int tlutaddr) } inline void decodebytesC8_5A3_To_RGBA32(u32 *dst, const u8 *src, int tlutaddr) -{ +{ u16 *tlut = (u16*)(texMem + tlutaddr); for (int x = 0; x < 8; x++) { @@ -471,7 +471,7 @@ inline void decodebytesARGB8_4(u32 *dst, const u16 *src, const u16 *src2) // some unpack instruction x2: // ABABABABABABABAB 1212121212121212 -> // AB12AB12AB12AB12 AB12AB12AB12AB12 - // 2x pshufb-> + // 2x pshufb-> // 21BA21BA21BA21BA 21BA21BA21BA21BA // and we are done. } @@ -521,7 +521,7 @@ void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) int green3 = ((green2 - green1) >> 1) - ((green2 - green1) >> 3); int red3 = ((red2 - red1) >> 1) - ((red2 - red1) >> 3); colors[2] = makecol(red1 + red3, green1 + green3, blue1 + blue3, 255); - colors[3] = makecol(red2 - red3, green2 - green3, blue2 - blue3, 255); + colors[3] = makecol(red2 - red3, green2 - green3, blue2 - blue3, 255); } else { @@ -532,7 +532,7 @@ void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) } for (int y = 0; y < 4; y++) - { + { int val = src->lines[y]; for (int x = 0; x < 4; x++) { @@ -564,7 +564,7 @@ void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) int green3 = ((green2 - green1) >> 1) - ((green2 - green1) >> 3); int red3 = ((red2 - red1) >> 1) - ((red2 - red1) >> 3); colors[2] = makeRGBA(red1 + red3, green1 + green3, blue1 + blue3, 255); - colors[3] = makeRGBA(red2 - red3, green2 - green3, blue2 - blue3, 255); + colors[3] = makeRGBA(red2 - red3, green2 - green3, blue2 - blue3, 255); } else { @@ -575,7 +575,7 @@ void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) } for (int y = 0; y < 4; y++) - { + { int val = src->lines[y]; for (int x = 0; x < 4; x++) { @@ -629,7 +629,7 @@ PC_TexFormat GetPC_TexFormat(int texformat, int tlutfmt) return PC_TEX_FMT_IA4_AS_IA8; case GX_TF_IA8: return PC_TEX_FMT_IA8; - case GX_TF_C14X2: + case GX_TF_C14X2: return GetPCFormatFromTLUTFormat(tlutfmt); case GX_TF_RGB565: return PC_TEX_FMT_RGB565; @@ -739,7 +739,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh } } return PC_TEX_FMT_IA8; - case GX_TF_C14X2: + case GX_TF_C14X2: if (tlutfmt == 2) { // Special decoding is required for TLUT format 5A3 @@ -817,14 +817,14 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh { for (int x = 0, yStep = (y / 8) * Wsteps8; x < width; x += 8, yStep++) { - const u8* src2 = src + 4 * sizeof(DXTBlock) * yStep; + const u8* src2 = src + 4 * sizeof(DXTBlock) * yStep; decodeDXTBlock((u32*)dst + y * width + x, (DXTBlock*)src2, width); src2 += sizeof(DXTBlock); decodeDXTBlock((u32*)dst + y * width + x + 4, (DXTBlock*)src2, width); src2 += sizeof(DXTBlock); decodeDXTBlock((u32*)dst + (y + 4) * width + x, (DXTBlock*)src2, width); src2 += sizeof(DXTBlock); - decodeDXTBlock((u32*)dst + (y + 4) * width + x + 4, (DXTBlock*)src2, width); + decodeDXTBlock((u32*)dst + (y + 4) * width + x + 4, (DXTBlock*)src2, width); } } #endif @@ -937,7 +937,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he for (int y = 0; y < height; y += 4) for (int x = 0, yStep = (y / 4) * Wsteps8; x < width; x += 8, yStep++) for (int iy = 0, xStep = 4 * yStep; iy < 4; iy++, xStep++) - decodebytesC8RGB565_To_RGBA(dst + (y + iy) * width + x, src + 8 * xStep, tlutaddr); + decodebytesC8RGB565_To_RGBA(dst + (y + iy) * width + x, src + 8 * xStep, tlutaddr); } break; @@ -1088,7 +1088,7 @@ PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, in { int xcnt = 0; int nchar = sfont_map[(int)*fmt]; - + const unsigned char *ptr = sfont_raw[nchar]; // each char is up to 9x10 for (int x = 0; x < 9;x++) @@ -1147,7 +1147,7 @@ PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, in void TexDecoder_DecodeTexel(u8 *dst, const u8 *src, int s, int t, int imageWidth, int texformat, int tlutaddr, int tlutfmt) { /* General formula for computing texture offset - // + // u16 sBlk = s / blockWidth; u16 tBlk = t / blockHeight; u16 widthBlks = (width / blockWidth) + 1; @@ -1289,7 +1289,7 @@ void TexDecoder_DecodeTexel(u8 *dst, const u8 *src, int s, int t, int imageWidth *((u32*)dst) = decodeIA8Swapped(*valAddr); } break; - case GX_TF_C14X2: + case GX_TF_C14X2: { u16 sBlk = s >> 2; u16 tBlk = t >> 2; @@ -1515,696 +1515,696 @@ const unsigned char sfont_map[] = { const unsigned char sfont_raw[][9*10] = { { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, }, }; diff --git a/Source/Core/VideoCommon/Src/HiresTextures.cpp b/Source/Core/VideoCommon/Src/HiresTextures.cpp index 3b432903d8..c88e4ae5d5 100644 --- a/Source/Core/VideoCommon/Src/HiresTextures.cpp +++ b/Source/Core/VideoCommon/Src/HiresTextures.cpp @@ -27,7 +27,7 @@ void Init(const char *gameCode) char szDir[MAX_PATH]; sprintf(szDir, "%s%s", File::GetUserPath(D_HIRESTEXTURES_IDX).c_str(), gameCode); Directories.push_back(std::string(szDir)); - + for (u32 i = 0; i < Directories.size(); i++) { diff --git a/Source/Core/VideoCommon/Src/ImageWrite.cpp b/Source/Core/VideoCommon/Src/ImageWrite.cpp index e8f3f68123..f53bd1c18f 100644 --- a/Source/Core/VideoCommon/Src/ImageWrite.cpp +++ b/Source/Core/VideoCommon/Src/ImageWrite.cpp @@ -26,7 +26,7 @@ struct TGA_HEADER s16 height; // image height in pixels u8 bits; // image bits per pixel 8,16,24,32 u8 descriptor; // image descriptor bits (vh flip bits) - + // pixel data follows header }; diff --git a/Source/Core/VideoCommon/Src/IndexGenerator.cpp b/Source/Core/VideoCommon/Src/IndexGenerator.cpp index 25597862e0..4b49a4db5e 100644 --- a/Source/Core/VideoCommon/Src/IndexGenerator.cpp +++ b/Source/Core/VideoCommon/Src/IndexGenerator.cpp @@ -74,7 +74,7 @@ template __forceinline void IndexGenerator::WriteTriangle(u32 index1, *Tptr++ = index3; if(pr) *Tptr++ = s_primitive_restart; - + ++numT; } @@ -96,7 +96,7 @@ template void IndexGenerator::AddStrip(u32 const numVerts) } *Tptr++ = s_primitive_restart; numT += numVerts - 2; - + } else { @@ -115,27 +115,27 @@ template void IndexGenerator::AddStrip(u32 const numVerts) /** * FAN simulator: - * + * * 2---3 * / \ / \ * 1---0---4 - * + * * would generate this triangles: * 012, 023, 034 - * + * * rotated (for better striping): * 120, 302, 034 - * + * * as odd ones have to winded, following strip is fine: * 12034 - * + * * so we use 6 indices for 3 triangles */ template void IndexGenerator::AddFan(u32 numVerts) { u32 i = 2; - + if(pr) { for(; i+3<=numVerts; i+=3) @@ -148,7 +148,7 @@ template void IndexGenerator::AddFan(u32 numVerts) *Tptr++ = s_primitive_restart; numT += 3; } - + for(; i+2<=numVerts; i+=2) { *Tptr++ = index + i - 1; @@ -159,7 +159,7 @@ template void IndexGenerator::AddFan(u32 numVerts) numT += 2; } } - + for (; i < numVerts; ++i) { WriteTriangle(index, index + i - 1, index + i); @@ -168,18 +168,18 @@ template void IndexGenerator::AddFan(u32 numVerts) /* * QUAD simulator - * + * * 0---1 4---5 * |\ | |\ | * | \ | | \ | * | \| | \| * 3---2 7---6 - * + * * 012,023, 456,467 ... * or 120,302, 564,746 * or as strip: 1203, 5647 - * - * Warning: + * + * Warning: * A simple triangle has to be rendered for three vertices. * ZWW do this for sun rays */ @@ -220,7 +220,7 @@ void IndexGenerator::AddLineList(u32 numVerts) *Lptr++ = index + i; ++numL; } - + } // shouldn't be used as strips as LineLists are much more common diff --git a/Source/Core/VideoCommon/Src/IndexGenerator.h b/Source/Core/VideoCommon/Src/IndexGenerator.h index 1f25119bc0..1f72e6e74f 100644 --- a/Source/Core/VideoCommon/Src/IndexGenerator.h +++ b/Source/Core/VideoCommon/Src/IndexGenerator.h @@ -29,7 +29,7 @@ public: static u32 GetTriangleindexLen() {return (u32)(Tptr - BASETptr);} static u32 GetLineindexLen() {return (u32)(Lptr - BASELptr);} static u32 GetPointindexLen() {return (u32)(Pptr - BASEPptr);} - + static u32 GetRemainingIndices(); /* enum IndexPrimitiveType diff --git a/Source/Core/VideoCommon/Src/MainBase.cpp b/Source/Core/VideoCommon/Src/MainBase.cpp index 9df7ba9325..320f2d6752 100644 --- a/Source/Core/VideoCommon/Src/MainBase.cpp +++ b/Source/Core/VideoCommon/Src/MainBase.cpp @@ -181,12 +181,12 @@ void VideoFifo_CheckPerfQueryRequest() if (s_perf_query_requested) { g_perf_query->FlushResults(); - + { std::lock_guard lk(s_perf_query_lock); s_perf_query_requested = false; } - + s_perf_query_cond.notify_one(); } } @@ -262,7 +262,7 @@ void VideoBackendHardware::CheckInvalidState() if (m_invalid) { m_invalid = false; - + BPReload(); TextureCache::Invalidate(); } diff --git a/Source/Core/VideoCommon/Src/NativeVertexFormat.h b/Source/Core/VideoCommon/Src/NativeVertexFormat.h index f97b493e67..f4f060e7bb 100644 --- a/Source/Core/VideoCommon/Src/NativeVertexFormat.h +++ b/Source/Core/VideoCommon/Src/NativeVertexFormat.h @@ -92,7 +92,7 @@ struct PortableVertexDeclaration // The implementation of this class is specific for GL/DX, so NativeVertexFormat.cpp // is in the respective backend, not here in VideoCommon. -// Note that this class can't just invent arbitrary vertex formats out of its input - +// Note that this class can't just invent arbitrary vertex formats out of its input - // all the data loading code must always be made compatible. class NativeVertexFormat : NonCopyable { diff --git a/Source/Core/VideoCommon/Src/OpcodeDecoding.cpp b/Source/Core/VideoCommon/Src/OpcodeDecoding.cpp index 818a2365fe..72b0584908 100644 --- a/Source/Core/VideoCommon/Src/OpcodeDecoding.cpp +++ b/Source/Core/VideoCommon/Src/OpcodeDecoding.cpp @@ -130,7 +130,7 @@ u32 FifoCommandRunnable(u32 &command_size) if (buffer_size == 0) return 0; // can't peek - u8 cmd_byte = DataPeek8(0); + u8 cmd_byte = DataPeek8(0); switch (cmd_byte) { @@ -340,14 +340,14 @@ static void Decode() u32 address = DataReadU32(); u32 count = DataReadU32(); ExecuteDisplayList(address, count); - } + } break; case GX_CMD_UNKNOWN_METRICS: // zelda 4 swords calls it and checks the metrics registers after that DEBUG_LOG(VIDEO, "GX 0x44: %08x", cmd_byte); break; - case GX_CMD_INVL_VC: // Invalidate Vertex Cache + case GX_CMD_INVL_VC: // Invalidate Vertex Cache DEBUG_LOG(VIDEO, "Invalidate (vertex cache?)"); break; @@ -359,7 +359,7 @@ static void Decode() } break; - // draw primitives + // draw primitives default: if (cmd_byte & 0x80) { @@ -392,7 +392,7 @@ static void DecodeSemiNop() switch (cmd_byte) { case GX_CMD_UNKNOWN_METRICS: // zelda 4 swords calls it and checks the metrics registers after that - case GX_CMD_INVL_VC: // Invalidate Vertex Cache + case GX_CMD_INVL_VC: // Invalidate Vertex Cache case GX_NOP: break; @@ -432,7 +432,7 @@ static void DecodeSemiNop() break; case GX_CMD_CALL_DL: - // Hm, wonder if any games put tokens in display lists - in that case, + // Hm, wonder if any games put tokens in display lists - in that case, // we'll have to parse them too. DataSkip(8); break; @@ -447,7 +447,7 @@ static void DecodeSemiNop() } break; - // draw primitives + // draw primitives default: if (cmd_byte & 0x80) { diff --git a/Source/Core/VideoCommon/Src/OpenCL.cpp b/Source/Core/VideoCommon/Src/OpenCL.cpp index 6dac8725af..7781b04978 100644 --- a/Source/Core/VideoCommon/Src/OpenCL.cpp +++ b/Source/Core/VideoCommon/Src/OpenCL.cpp @@ -144,7 +144,7 @@ cl_program CompileProgram(const char *Kernel) buildlog = new char[buildlog_size + 1]; err = clGetProgramBuildInfo(program, OpenCL::device_id, CL_PROGRAM_BUILD_LOG, buildlog_size, buildlog, NULL); buildlog[buildlog_size] = 0; - + if(err != CL_SUCCESS) { HandleCLError(err, "Error: can't get build log"); @@ -192,7 +192,7 @@ void Destroy() { clReleaseContext(g_context); g_context = NULL; - } + } g_bInitialized = false; } diff --git a/Source/Core/VideoCommon/Src/PixelEngine.cpp b/Source/Core/VideoCommon/Src/PixelEngine.cpp index 5819f64a83..40a21a2132 100644 --- a/Source/Core/VideoCommon/Src/PixelEngine.cpp +++ b/Source/Core/VideoCommon/Src/PixelEngine.cpp @@ -26,7 +26,7 @@ namespace PixelEngine union UPEZConfReg { u16 Hex; - struct + struct { u16 ZCompEnable : 1; // Z Comparator Enable u16 Function : 3; @@ -38,7 +38,7 @@ union UPEZConfReg union UPEAlphaConfReg { u16 Hex; - struct + struct { u16 BMMath : 1; // GX_BM_BLEND || GX_BM_SUBSTRACT u16 BMLogic : 1; // GX_BM_LOGIC @@ -55,7 +55,7 @@ union UPEAlphaConfReg union UPEDstAlphaConfReg { u16 Hex; - struct + struct { u16 DstAlpha : 8; u16 Enable : 1; @@ -66,7 +66,7 @@ union UPEDstAlphaConfReg union UPEAlphaModeConfReg { u16 Hex; - struct + struct { u16 Threshold : 8; u16 CompareMode : 8; @@ -76,7 +76,7 @@ union UPEAlphaModeConfReg // fifo Control Register union UPECtrlReg { - struct + struct { u16 PETokenEnable : 1; u16 PEFinishEnable : 1; @@ -129,7 +129,7 @@ void DoState(PointerWrap &p) p.Do(g_bSignalFinishInterrupt); p.Do(interruptSetToken); p.Do(interruptSetFinish); - + p.Do(bbox); p.Do(bbox_active); } @@ -187,7 +187,7 @@ void Read16(u16& _uReturnValue, const u32 _iAddress) case PE_ALPHAMODE: _uReturnValue = m_AlphaModeConf.Hex; INFO_LOG(PIXELENGINE, "(r16) ALPHAMODE"); - break; + break; case PE_ALPHAREAD: _uReturnValue = m_AlphaRead.Hex; WARN_LOG(PIXELENGINE, "(r16) ALPHAREAD"); @@ -303,7 +303,7 @@ void Read16(u16& _uReturnValue, const u32 _iAddress) _uReturnValue = 1; break; } - + } void Write16(const u16 _iValue, const u32 _iAddress) @@ -332,7 +332,7 @@ void Write16(const u16 _iValue, const u32 _iAddress) INFO_LOG(PIXELENGINE, "(w16) ALPHAREAD: %02x", _iValue); break; - case PE_CTRL_REGISTER: + case PE_CTRL_REGISTER: { UPECtrlReg tmpCtrl(_iValue); @@ -376,7 +376,7 @@ void UpdateInterrupts() { // check if there is a token-interrupt UpdateTokenInterrupt((g_bSignalTokenInterrupt & m_Control.PETokenEnable)); - + // check if there is a finish-interrupt UpdateFinishInterrupt((g_bSignalFinishInterrupt & m_Control.PEFinishEnable)); } diff --git a/Source/Core/VideoCommon/Src/PixelEngine.h b/Source/Core/VideoCommon/Src/PixelEngine.h index 65323590a1..c420dbe9f1 100644 --- a/Source/Core/VideoCommon/Src/PixelEngine.h +++ b/Source/Core/VideoCommon/Src/PixelEngine.h @@ -25,18 +25,18 @@ enum // NOTE: Order not verified // These indicate the number of quads that are being used as input/output for each particular stage - PE_PERF_ZCOMP_INPUT_ZCOMPLOC_L = 0x18, + PE_PERF_ZCOMP_INPUT_ZCOMPLOC_L = 0x18, PE_PERF_ZCOMP_INPUT_ZCOMPLOC_H = 0x1a, - PE_PERF_ZCOMP_OUTPUT_ZCOMPLOC_L = 0x1c, - PE_PERF_ZCOMP_OUTPUT_ZCOMPLOC_H = 0x1e, - PE_PERF_ZCOMP_INPUT_L = 0x20, + PE_PERF_ZCOMP_OUTPUT_ZCOMPLOC_L = 0x1c, + PE_PERF_ZCOMP_OUTPUT_ZCOMPLOC_H = 0x1e, + PE_PERF_ZCOMP_INPUT_L = 0x20, PE_PERF_ZCOMP_INPUT_H = 0x22, - PE_PERF_ZCOMP_OUTPUT_L = 0x24, - PE_PERF_ZCOMP_OUTPUT_H = 0x26, - PE_PERF_BLEND_INPUT_L = 0x28, - PE_PERF_BLEND_INPUT_H = 0x2a, - PE_PERF_EFB_COPY_CLOCKS_L = 0x2c, - PE_PERF_EFB_COPY_CLOCKS_H = 0x2e, + PE_PERF_ZCOMP_OUTPUT_L = 0x24, + PE_PERF_ZCOMP_OUTPUT_H = 0x26, + PE_PERF_BLEND_INPUT_L = 0x28, + PE_PERF_BLEND_INPUT_H = 0x2a, + PE_PERF_EFB_COPY_CLOCKS_L = 0x2c, + PE_PERF_EFB_COPY_CLOCKS_H = 0x2e, }; namespace PixelEngine diff --git a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp index 274e4f511d..442cfc1ef4 100644 --- a/Source/Core/VideoCommon/Src/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/Src/PixelShaderGen.cpp @@ -529,7 +529,7 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T AlphaTest::TEST_RESULT Pretest = bpmem.alpha_test.TestResult(); uid_data.Pretest = Pretest; - // NOTE: Fragment may not be discarded if alpha test always fails and early depth test is enabled + // NOTE: Fragment may not be discarded if alpha test always fails and early depth test is enabled // (in this case we need to write a depth value if depth test passes regardless of the alpha testing result) if (Pretest == AlphaTest::UNDETERMINED || (Pretest == AlphaTest::FAIL && bpmem.UseLateDepthTest())) WriteAlphaTest(out, uid_data, ApiType, dstAlphaMode, per_pixel_depth); diff --git a/Source/Core/VideoCommon/Src/PixelShaderManager.cpp b/Source/Core/VideoCommon/Src/PixelShaderManager.cpp index 5f793b5a44..b999ada6a3 100644 --- a/Source/Core/VideoCommon/Src/PixelShaderManager.cpp +++ b/Source/Core/VideoCommon/Src/PixelShaderManager.cpp @@ -29,7 +29,7 @@ void PixelShaderManager::Dirty() s_bFogRangeAdjustChanged = true; s_bViewPortChanged = true; nLightsChanged[0] = 0; nLightsChanged[1] = 0x80; - + SetColorChanged(0, 0); SetColorChanged(0, 1); SetColorChanged(0, 2); @@ -135,7 +135,7 @@ void PixelShaderManager::SetConstants(u32 components) nLightsChanged[0] = nLightsChanged[1] = -1; } } - + if(s_bViewPortChanged) { constants.zbias[1][0] = xfregs.viewport.farZ / 16777216.0f; @@ -156,7 +156,7 @@ void PixelShaderManager::SetColorChanged(int type, int num) c[num][2] = bpmem.tevregs[num].high.a / 255.0f; c[num][1] = bpmem.tevregs[num].high.b / 255.0f; dirty = true; - + PRIM_LOG("pixel %scolor%d: %f %f %f %f\n", type?"k":"", num, c[num][0], c[num][1], c[num][2], c[num][3]); } @@ -179,7 +179,7 @@ void PixelShaderManager::SetTexDims(int texmapid, u32 width, u32 height, u32 wra // or better, use textureSize() in glsl if(constants.texdims[texmapid][0] != 1.0f/width || constants.texdims[texmapid][1] != 1.0f/height) dirty = true; - + constants.texdims[texmapid][0] = 1.0f/width; constants.texdims[texmapid][1] = 1.0f/height; } @@ -336,7 +336,7 @@ void PixelShaderManager::DoState(PointerWrap &p) { p.Do(constants); p.Do(dirty); - + if (p.GetMode() == PointerWrap::MODE_READ) { Dirty(); diff --git a/Source/Core/VideoCommon/Src/PixelShaderManager.h b/Source/Core/VideoCommon/Src/PixelShaderManager.h index c68ae569a2..d0c3509baa 100644 --- a/Source/Core/VideoCommon/Src/PixelShaderManager.h +++ b/Source/Core/VideoCommon/Src/PixelShaderManager.h @@ -42,7 +42,7 @@ public: static void SetFogRangeAdjustChanged(); static void InvalidateXFRange(int start, int end); static void SetMaterialColorChanged(int index, u32 color); - + static PixelShaderConstants constants; static bool dirty; }; diff --git a/Source/Core/VideoCommon/Src/ShaderGenCommon.h b/Source/Core/VideoCommon/Src/ShaderGenCommon.h index 31ec8d3e71..35ec50407a 100644 --- a/Source/Core/VideoCommon/Src/ShaderGenCommon.h +++ b/Source/Core/VideoCommon/Src/ShaderGenCommon.h @@ -253,7 +253,7 @@ public: } } } - + private: std::map m_shaders; std::vector m_uids; diff --git a/Source/Core/VideoCommon/Src/Statistics.h b/Source/Core/VideoCommon/Src/Statistics.h index a7976651a5..3a79061b7a 100644 --- a/Source/Core/VideoCommon/Src/Statistics.h +++ b/Source/Core/VideoCommon/Src/Statistics.h @@ -21,7 +21,7 @@ struct Statistics int numRenderTargetsCreated; int numRenderTargetsAlive; - + int numDListsCalled; int numDListsCreated; int numDListsAlive; @@ -44,11 +44,11 @@ struct Statistics int numBPLoads; int numCPLoads; int numXFLoads; - + int numBPLoadsInDL; int numCPLoadsInDL; int numXFLoadsInDL; - + int numDLs; int numPrims; int numDLPrims; @@ -60,7 +60,7 @@ struct Statistics int numBufferSplits; int numDListsCalled; - + int bytesVertexStreamed; int bytesIndexStreamed; int bytesUniformStreamed; diff --git a/Source/Core/VideoCommon/Src/TextureCacheBase.cpp b/Source/Core/VideoCommon/Src/TextureCacheBase.cpp index 111f70cac1..ea008dc898 100644 --- a/Source/Core/VideoCommon/Src/TextureCacheBase.cpp +++ b/Source/Core/VideoCommon/Src/TextureCacheBase.cpp @@ -112,7 +112,7 @@ void TextureCache::OnConfigChanged(VideoConfig& config) g_texture_cache->ClearRenderTargets(); } } - + backup_config.s_colorsamples = config.iSafeTextureCache_ColorSamples; backup_config.s_copy_efb_to_texture = config.bCopyEFBToTexture; backup_config.s_copy_efb_scaled = config.bCopyEFBScaled; @@ -131,7 +131,7 @@ void TextureCache::Cleanup() while (iter != tcend) { if ( frameCount > TEXTURE_KILL_THRESHOLD + iter->second->frameCount - + // EFB copies living on the host GPU are unrecoverable and thus shouldn't be deleted && ! iter->second->IsEfbCopy() ) { @@ -499,7 +499,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage, entry->SetGeneralParameters(address, texture_size, full_format, entry->num_mipmaps); entry->SetDimensions(nativeW, nativeH, width, height); entry->hash = tex_hash; - + if (entry->IsEfbCopy() && !g_ActiveConfig.bCopyEFBToTexture) entry->type = TCET_EC_DYNAMIC; else @@ -515,7 +515,7 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage, if (use_native_mips) { src_data += texture_size; - + const u8* ptr_even = NULL; const u8* ptr_odd = NULL; if (from_tmem) @@ -530,13 +530,13 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage, const u32 mip_height = CalculateLevelSize(height, level); const u32 expanded_mip_width = (mip_width + bsw) & (~bsw); const u32 expanded_mip_height = (mip_height + bsh) & (~bsh); - + const u8*& mip_src_data = from_tmem ? ((level % 2) ? ptr_odd : ptr_even) : src_data; TexDecoder_Decode(temp, mip_src_data, expanded_mip_width, expanded_mip_height, texformat, tlutaddr, tlutfmt, g_ActiveConfig.backend_info.bUseRGBATextures); mip_src_data += TexDecoder_GetTextureSizeInBytes(expanded_mip_width, expanded_mip_height, texformat); - + entry->Load(mip_width, mip_height, expanded_mip_width, level); if (g_ActiveConfig.bDumpTextures) @@ -566,19 +566,19 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat const EFBRectangle& srcRect, bool isIntensity, bool scaleByHalf) { // Emulation methods: - // + // // - EFB to RAM: // Encodes the requested EFB data at its native resolution to the emulated RAM using shaders. // Load() decodes the data from there again (using TextureDecoder) if the EFB copy is being used as a texture again. // Advantage: CPU can read data from the EFB copy and we don't lose any important updates to the texture // Disadvantage: Encoding+decoding steps often are redundant because only some games read or modify EFB copies before using them as textures. - // + // // - EFB to texture: // Copies the requested EFB data to a texture object in VRAM, performing any color conversion using shaders. // Advantage: Works for many games, since in most cases EFB copies aren't read or modified at all before being used as a texture again. // Since we don't do any further encoding or decoding here, this method is much faster. // It also allows enhancing the visual quality by doing scaled EFB copies. - // + // // - Hybrid EFB copies: // 1a) Whenever this function gets called, encode the requested EFB data to RAM (like EFB to RAM) // 1b) Set type to TCET_EC_DYNAMIC for all texture cache entries in the destination address range. @@ -667,10 +667,10 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat break; } } - else if (isIntensity) + else if (isIntensity) { fConstAdd[0] = fConstAdd[1] = fConstAdd[2] = 16.0f/255.0f; - switch (dstFormat) + switch (dstFormat) { case 0: // I4 case 1: // I8 @@ -682,7 +682,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat colmat[4] = 0.257f; colmat[5] = 0.504f; colmat[6] = 0.098f; colmat[8] = 0.257f; colmat[9] = 0.504f; colmat[10] = 0.098f; - if (dstFormat < 2 || dstFormat == 8) + if (dstFormat < 2 || dstFormat == 8) { colmat[12] = 0.257f; colmat[13] = 0.504f; colmat[14] = 0.098f; fConstAdd[3] = 16.0f/255.0f; @@ -710,7 +710,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat { cbufid = 11; } - + } break; @@ -723,7 +723,7 @@ void TextureCache::CopyRenderTargetToTexture(u32 dstAddr, unsigned int dstFormat } else { - switch (dstFormat) + switch (dstFormat) { case 0: // R4 colmat[0] = colmat[4] = colmat[8] = colmat[12] = 1; diff --git a/Source/Core/VideoCommon/Src/TextureConversionShader.cpp b/Source/Core/VideoCommon/Src/TextureConversionShader.cpp index 9e8467fe44..02109b88fd 100644 --- a/Source/Core/VideoCommon/Src/TextureConversionShader.cpp +++ b/Source/Core/VideoCommon/Src/TextureConversionShader.cpp @@ -66,7 +66,7 @@ const char* WriteRegister(API_TYPE ApiType, const char *prefix, const u32 num) return result; } -// block dimensions : widthStride, heightStride +// block dimensions : widthStride, heightStride // texture dims : width, height, x offset, y offset void WriteSwizzler(char*& p, u32 format, API_TYPE ApiType) { @@ -176,7 +176,7 @@ void Write32BitSwizzler(char*& p, u32 format, API_TYPE ApiType) WRITE(p, " float xoff = xel - (xb * %f);\n", blkH); WRITE(p, " float x2 = uv1.x * 2.0;\n"); - WRITE(p, " float xl = floor(x2 / %f);\n", blkW); + WRITE(p, " float xl = floor(x2 / %f);\n", blkW); WRITE(p, " float xib = x2 - (xl * %f);\n", blkW); WRITE(p, " float halfxb = floor(xb / 2.0);\n"); @@ -334,12 +334,12 @@ void WriteI4Encoder(char* p, API_TYPE ApiType) void WriteIA8Encoder(char* p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_IA8, ApiType); - WRITE(p, " float4 texSample;\n"); + WRITE(p, " float4 texSample;\n"); WriteSampleColor(p, "rgba", "texSample", ApiType); WRITE(p, " ocol0.b = texSample.a;\n"); WriteColorToIntensity(p, "texSample", "ocol0.g"); - WriteIncrementSampleX(p, ApiType); + WriteIncrementSampleX(p, ApiType); WriteSampleColor(p, "rgba", "texSample", ApiType); WRITE(p, " ocol0.r = texSample.a;\n"); diff --git a/Source/Core/VideoCommon/Src/TextureDecoder.h b/Source/Core/VideoCommon/Src/TextureDecoder.h index 968570a084..d474f1684b 100644 --- a/Source/Core/VideoCommon/Src/TextureDecoder.h +++ b/Source/Core/VideoCommon/Src/TextureDecoder.h @@ -5,7 +5,7 @@ #ifndef _TEXTUREDECODER_H #define _TEXTUREDECODER_H #include "Hash.h" -enum +enum { TMEM_SIZE = 1024*1024, TMEM_LINE_SIZE = 32, diff --git a/Source/Core/VideoCommon/Src/VertexLoader.cpp b/Source/Core/VideoCommon/Src/VertexLoader.cpp index 697db81338..d5cf003e76 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader.cpp @@ -91,18 +91,18 @@ void LOADERDECL PosMtx_Write() DataWrite(0); } -void LOADERDECL UpdateBoundingBoxPrepare() +void LOADERDECL UpdateBoundingBoxPrepare() { if (!PixelEngine::bbox_active) return; - + // set our buffer as videodata buffer, so we will get a copy of the vertex positions // this is a big hack, but so we can use the same converting function then without bbox s_bbox_pCurBufferPointer_orig = VertexManager::s_pCurBufferPointer; VertexManager::s_pCurBufferPointer = (u8*)s_bbox_vertex_buffer; } -void LOADERDECL UpdateBoundingBox() +void LOADERDECL UpdateBoundingBox() { if (!PixelEngine::bbox_active) return; @@ -140,7 +140,7 @@ void LOADERDECL UpdateBoundingBox() o[1] = (1.0f - o[1]) * 242.0f; if (o[0] < PixelEngine::bbox[0]) PixelEngine::bbox[0] = (u16) std::max(0.0f, o[0]); - if (o[0] > PixelEngine::bbox[1]) PixelEngine::bbox[1] = (u16) o[0]; + if (o[0] > PixelEngine::bbox[1]) PixelEngine::bbox[1] = (u16) o[0]; if (o[1] < PixelEngine::bbox[2]) PixelEngine::bbox[2] = (u16) std::max(0.0f, o[1]); if (o[1] > PixelEngine::bbox[3]) PixelEngine::bbox[3] = (u16) o[1]; } @@ -172,7 +172,7 @@ void LOADERDECL TexMtx_Write_Float4() DataWrite(0.f); } -VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr) +VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr) { m_compiledCode = NULL; m_numLoadedVertices = 0; @@ -197,7 +197,7 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr) } -VertexLoader::~VertexLoader() +VertexLoader::~VertexLoader() { #ifdef USE_JIT FreeCodeSpace(); @@ -248,7 +248,7 @@ void VertexLoader::CompileVertexTranslator() m_VtxDesc.Tex0Coord, m_VtxDesc.Tex1Coord, m_VtxDesc.Tex2Coord, m_VtxDesc.Tex3Coord, m_VtxDesc.Tex4Coord, m_VtxDesc.Tex5Coord, m_VtxDesc.Tex6Coord, (const u32)((m_VtxDesc.Hex >> 31) & 3) }; - + // Reset pipeline m_numPipelineStages = 0; @@ -265,7 +265,7 @@ void VertexLoader::CompileVertexTranslator() } // m_VBVertexStride for texmtx and posmtx is computed later when writing. - + // Position Matrix Index if (m_VtxDesc.PosMatIdx) { @@ -303,7 +303,7 @@ void VertexLoader::CompileVertexTranslator() { m_VertexSize += VertexLoader_Normal::GetSize(m_VtxDesc.Normal, m_VtxAttr.NormalFormat, m_VtxAttr.NormalElements, m_VtxAttr.NormalIndex3); - + TPipelineFunction pFunc = VertexLoader_Normal::GetFunction(m_VtxDesc.Normal, m_VtxAttr.NormalFormat, m_VtxAttr.NormalElements, m_VtxAttr.NormalIndex3); @@ -347,7 +347,7 @@ void VertexLoader::CompileVertexTranslator() m_NativeFmt->m_components |= VB_HAS_COL0 << i; switch (col[i]) { - case NOT_PRESENT: + case NOT_PRESENT: m_NativeFmt->m_components &= ~(VB_HAS_COL0 << i); vtx_decl.color_offset[i] = -1; break; @@ -454,7 +454,7 @@ void VertexLoader::CompileVertexTranslator() if (tc[i] == NOT_PRESENT) { - // if there's more tex coords later, have to write a dummy call + // if there's more tex coords later, have to write a dummy call int j = i + 1; for (; j < 8; ++j) { @@ -551,8 +551,8 @@ int VertexLoader::SetupRunVertices(int vtx_attr_group, int primitive, int const if (g_nativeVertexFmt != NULL && g_nativeVertexFmt != m_NativeFmt) { // We really must flush here. It's possible that the native representations - // of the two vtx formats are the same, but we have no way to easily check that - // now. + // of the two vtx formats are the same, but we have no way to easily check that + // now. VertexManager::Flush(); // Also move the Set() here? } @@ -587,7 +587,7 @@ int VertexLoader::SetupRunVertices(int vtx_attr_group, int primitive, int const colElements[i] = m_VtxAttr.color[i].Elements; VertexManager::PrepareForAdditionalData(primitive, count, native_stride); - + return count; } @@ -627,10 +627,10 @@ void VertexLoader::RunCompiledVertices(int vtx_attr_group, int primitive, int co VertexManager::s_pCurBufferPointer += native_stride * new_count; DataSkip(new_count * m_VertexSize); - VertexManager::AddVertices(primitive, new_count); + VertexManager::AddVertices(primitive, new_count); } -void VertexLoader::SetVAT(u32 _group0, u32 _group1, u32 _group2) +void VertexLoader::SetVAT(u32 _group0, u32 _group1, u32 _group2) { VAT vat; vat.g0.Hex = _group0; @@ -674,7 +674,7 @@ void VertexLoader::SetVAT(u32 _group0, u32 _group1, u32 _group2) m_VtxAttr.texCoord[7].Elements = vat.g2.Tex7CoordElements; m_VtxAttr.texCoord[7].Format = vat.g2.Tex7CoordFormat; m_VtxAttr.texCoord[7].Frac = vat.g2.Tex7Frac; - + if(!m_VtxAttr.ByteDequant) { ERROR_LOG(VIDEO, "ByteDequant is set to zero"); } @@ -722,7 +722,7 @@ void VertexLoader::AppendToString(std::string *dest) const } } u32 tex_mode[8] = { - m_VtxDesc.Tex0Coord, m_VtxDesc.Tex1Coord, m_VtxDesc.Tex2Coord, m_VtxDesc.Tex3Coord, + m_VtxDesc.Tex0Coord, m_VtxDesc.Tex1Coord, m_VtxDesc.Tex2Coord, m_VtxDesc.Tex3Coord, m_VtxDesc.Tex4Coord, m_VtxDesc.Tex5Coord, m_VtxDesc.Tex6Coord, m_VtxDesc.Tex7Coord }; for (int i = 0; i < 8; i++) diff --git a/Source/Core/VideoCommon/Src/VertexLoader.h b/Source/Core/VideoCommon/Src/VertexLoader.h index da96431f97..c9ef28175c 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader.h +++ b/Source/Core/VideoCommon/Src/VertexLoader.h @@ -24,7 +24,7 @@ class VertexLoaderUID u32 vid[5]; size_t hash; public: - VertexLoaderUID() + VertexLoaderUID() { } @@ -94,7 +94,7 @@ public: ~VertexLoader(); int GetVertexSize() const {return m_VertexSize;} - + int SetupRunVertices(int vtx_attr_group, int primitive, int const count); void RunVertices(int vtx_attr_group, int primitive, int count); void RunCompiledVertices(int vtx_attr_group, int primitive, int count, u8* Data); diff --git a/Source/Core/VideoCommon/Src/VertexLoader_Color.cpp b/Source/Core/VideoCommon/Src/VertexLoader_Color.cpp index 45af21138f..e32af6226c 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader_Color.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader_Color.cpp @@ -100,7 +100,7 @@ void LOADERDECL Color_ReadDirect_24b_6666() // F|RES: i am not 100 percent sure, but the colElements seems to be important for rendering only // at least it fixes mario party 4 // -// if (colElements[colIndex]) +// if (colElements[colIndex]) // else // col |= 0xFF< __forceinline void Normal_Index_Offset() { static_assert(!std::numeric_limits::is_signed, "Only unsigned I is sane!"); - + auto const index = DataRead(); auto const data = reinterpret_cast(cached_arraybases[ARRAY_NORMAL] + (index * arraystrides[ARRAY_NORMAL]) + sizeof(T) * 3 * Offset); diff --git a/Source/Core/VideoCommon/Src/VertexLoader_Normal.h b/Source/Core/VideoCommon/Src/VertexLoader_Normal.h index 40fd8cac06..4ad15c51b0 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader_Normal.h +++ b/Source/Core/VideoCommon/Src/VertexLoader_Normal.h @@ -65,7 +65,7 @@ private: gc_size = T::size; function = T::function; } - + int gc_size; TPipelineFunction function; }; diff --git a/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp b/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp index 2b383fc3f8..da844484ad 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp @@ -27,7 +27,7 @@ MOVZX(32, R(EBX), MOffset(ESI, 1)); MOVZX(32, R(ECX), MOffset(ESI, 2)); MOVD(XMM0, R(EAX)); MOVD(XMM1, R(EBX)); -MOVD(XMM2, R(ECX)); +MOVD(XMM2, R(ECX)); CVTDQ2PS(XMM0, XMM0); CVTDQ2PS(XMM1, XMM1); CVTDQ2PS(XMM2, XMM2); diff --git a/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp b/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp index 2d956b242a..70c1f2de3f 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp @@ -67,7 +67,7 @@ template void LOADERDECL TexCoord_ReadIndex() { static_assert(!std::numeric_limits::is_signed, "Only unsigned I is sane!"); - + auto const index = DataRead(); auto const data = reinterpret_cast(cached_arraybases[ARRAY_TEXCOORD0 + tcIndex] + (index * arraystrides[ARRAY_TEXCOORD0 + tcIndex])); diff --git a/Source/Core/VideoCommon/Src/VertexManagerBase.cpp b/Source/Core/VideoCommon/Src/VertexManagerBase.cpp index 13fbd55641..b586ad1a99 100644 --- a/Source/Core/VideoCommon/Src/VertexManagerBase.cpp +++ b/Source/Core/VideoCommon/Src/VertexManagerBase.cpp @@ -50,13 +50,13 @@ u32 VertexManager::GetRemainingSize() } void VertexManager::PrepareForAdditionalData(int primitive, u32 count, u32 stride) -{ +{ u32 const needed_vertex_bytes = count * stride; - + if (count > IndexGenerator::GetRemainingIndices() || count > GetRemainingIndices(primitive) || needed_vertex_bytes > GetRemainingSize()) { Flush(); - + if(count > IndexGenerator::GetRemainingIndices()) ERROR_LOG(VIDEO, "Too little remaining index values. Use 32-bit or reset them on flush."); if (count > GetRemainingIndices(primitive)) @@ -75,7 +75,7 @@ bool VertexManager::IsFlushed() const u32 VertexManager::GetRemainingIndices(int primitive) { - + if(g_Config.backend_info.bSupportsPrimitiveRestart) { switch (primitive) @@ -125,7 +125,7 @@ u32 VertexManager::GetRemainingIndices(int primitive) default: return 0; } - } + } } void VertexManager::AddVertices(int primitive, u32 numVertices) @@ -158,12 +158,12 @@ void VertexManager::Flush() #if (0) void VertexManager::Flush() { -#if defined(_DEBUG) || defined(DEBUGFAST) +#if defined(_DEBUG) || defined(DEBUGFAST) PRIM_LOG("frame%d:\n texgen=%d, numchan=%d, dualtex=%d, ztex=%d, cole=%d, alpe=%d, ze=%d", g_ActiveConfig.iSaveTargetId, xfregs.numTexGens, xfregs.nNumChans, (int)xfregs.bEnableDualTexTransform, bpmem.ztex2.op, bpmem.blendmode.colorupdate, bpmem.blendmode.alphaupdate, bpmem.zmode.updateenable); - for (int i = 0; i < xfregs.nNumChans; ++i) + for (int i = 0; i < xfregs.nNumChans; ++i) { LitChannel* ch = &xfregs.colChans[i].color; PRIM_LOG("colchan%d: matsrc=%d, light=0x%x, ambsrc=%d, diffunc=%d, attfunc=%d", i, ch->matsource, ch->GetFullLightMask(), ch->ambsource, ch->diffusefunc, ch->attnfunc); @@ -171,7 +171,7 @@ void VertexManager::Flush() PRIM_LOG("alpchan%d: matsrc=%d, light=0x%x, ambsrc=%d, diffunc=%d, attfunc=%d", i, ch->matsource, ch->GetFullLightMask(), ch->ambsource, ch->diffusefunc, ch->attnfunc); } - for (int i = 0; i < xfregs.numTexGens; ++i) + for (int i = 0; i < xfregs.numTexGens; ++i) { TexMtxInfo tinfo = xfregs.texcoords[i].texmtxinfo; if (tinfo.texgentype != XF_TEXGEN_EMBOSS_MAP) tinfo.hex &= 0x7ff; @@ -206,10 +206,10 @@ void VertexManager::Flush() Renderer::SetSamplerState(i & 3, i >> 2); FourTexUnits &tex = bpmem.tex[i >> 2]; - TCacheEntry::TCacheEntryBase* tentry = TextureCache::Load(i, + TCacheEntry::TCacheEntryBase* tentry = TextureCache::Load(i, (tex.texImage3[i&3].image_base/* & 0x1FFFFF*/) << 5, tex.texImage0[i&3].width + 1, tex.texImage0[i&3].height + 1, - tex.texImage0[i&3].format, tex.texTlut[i&3].tmem_offset<<9, + tex.texImage0[i&3].format, tex.texTlut[i&3].tmem_offset<<9, tex.texTlut[i&3].tlut_format, (tex.texMode0[i&3].min_filter & 3) && (tex.texMode0[i&3].min_filter != 8), (tex.texMode1[i&3].max_lod >> 4)); @@ -257,7 +257,7 @@ void VertexManager::Flush() //IndexGenerator::Start(TIBuffer, LIBuffer, PIBuffer); #if defined(_DEBUG) || defined(DEBUGFAST) - if (g_ActiveConfig.iLog & CONF_SAVESHADERS) + if (g_ActiveConfig.iLog & CONF_SAVESHADERS) { // save the shaders char strfile[255]; @@ -271,7 +271,7 @@ void VertexManager::Flush() fvs << vs->strprog.c_str(); } - if (g_ActiveConfig.iLog & CONF_SAVETARGETS) + if (g_ActiveConfig.iLog & CONF_SAVETARGETS) { char str[128]; sprintf(str, "%starg%.3d.tga", File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), g_ActiveConfig.iSaveTargetId); @@ -297,12 +297,12 @@ void VertexManager::DoStateShared(PointerWrap& p) // It seems we half-assume to be flushed here // We update s_pCurBufferPointer yet don't worry about IndexGenerator's outdated pointers // and maybe other things are overlooked - + p.Do(LocalVBuffer); p.Do(TIBuffer); p.Do(LIBuffer); p.Do(PIBuffer); - + s_pBaseBufferPointer = &LocalVBuffer[0]; s_pEndBufferPointer = s_pBaseBufferPointer + LocalVBuffer.size(); p.DoPointer(s_pCurBufferPointer, s_pBaseBufferPointer); diff --git a/Source/Core/VideoCommon/Src/VertexManagerBase.h b/Source/Core/VideoCommon/Src/VertexManagerBase.h index fafde8de44..b5b13c8933 100644 --- a/Source/Core/VideoCommon/Src/VertexManagerBase.h +++ b/Source/Core/VideoCommon/Src/VertexManagerBase.h @@ -12,13 +12,13 @@ class VertexManager { private: static const u32 SMALLEST_POSSIBLE_VERTEX = sizeof(float)*3; // 3 pos - static const u32 LARGEST_POSSIBLE_VERTEX = sizeof(float)*45 + sizeof(u32)*2; // 3 pos, 3*3 normal, 2*u32 color, 8*4 tex, 1 posMat - + static const u32 LARGEST_POSSIBLE_VERTEX = sizeof(float)*45 + sizeof(u32)*2; // 3 pos, 3*3 normal, 2*u32 color, 8*4 tex, 1 posMat + static const u32 MAX_PRIMITIVES_PER_COMMAND = (u16)-1; - + public: static const u32 MAXVBUFFERSIZE = ROUND_UP_POW2 (MAX_PRIMITIVES_PER_COMMAND * LARGEST_POSSIBLE_VERTEX); - + // We may convert triangle-fans to triangle-lists, almost 3x as many indices. static const u32 MAXIBUFFERSIZE = ROUND_UP_POW2 (MAX_PRIMITIVES_PER_COMMAND * 3); @@ -43,7 +43,7 @@ public: static void DoState(PointerWrap& p); virtual void CreateDeviceObjects(){}; virtual void DestroyDeviceObjects(){}; - + protected: u16* GetTriangleIndexBuffer() { return &TIBuffer[0]; } u16* GetLineIndexBuffer() { return &LIBuffer[0]; } @@ -55,13 +55,13 @@ protected: private: bool IsFlushed() const; - + void ResetBuffer(); - + //virtual void Draw(u32 stride, bool alphapass) = 0; // temp virtual void vFlush() = 0; - + std::vector LocalVBuffer; std::vector TIBuffer; std::vector LIBuffer; diff --git a/Source/Core/VideoCommon/Src/VertexShaderGen.cpp b/Source/Core/VideoCommon/Src/VertexShaderGen.cpp index 1b298c489a..f36f857973 100644 --- a/Source/Core/VideoCommon/Src/VertexShaderGen.cpp +++ b/Source/Core/VideoCommon/Src/VertexShaderGen.cpp @@ -136,7 +136,7 @@ static inline void GenerateVertexShader(T& out, u32 components, API_TYPE api_typ out.Write("VARYOUT float4 clipPos_2;\n"); if (g_ActiveConfig.bEnablePixelLighting && g_ActiveConfig.backend_info.bSupportsPixelLighting) out.Write("VARYOUT float4 Normal_2;\n"); - + out.Write("VARYOUT float4 colors_02;\n"); out.Write("VARYOUT float4 colors_12;\n"); diff --git a/Source/Core/VideoCommon/Src/VertexShaderManager.cpp b/Source/Core/VideoCommon/Src/VertexShaderManager.cpp index 6fa22c4b9c..5ec371a0ba 100644 --- a/Source/Core/VideoCommon/Src/VertexShaderManager.cpp +++ b/Source/Core/VideoCommon/Src/VertexShaderManager.cpp @@ -197,16 +197,16 @@ void VertexShaderManager::Shutdown() void VertexShaderManager::Dirty() { - nTransformMatricesChanged[0] = 0; + nTransformMatricesChanged[0] = 0; nTransformMatricesChanged[1] = 256; nNormalMatricesChanged[0] = 0; nNormalMatricesChanged[1] = 96; - nPostTransformMatricesChanged[0] = 0; + nPostTransformMatricesChanged[0] = 0; nPostTransformMatricesChanged[1] = 256; - nLightsChanged[0] = 0; + nLightsChanged[0] = 0; nLightsChanged[1] = 0x80; bPosNormalMatrixChanged = true; @@ -216,7 +216,7 @@ void VertexShaderManager::Dirty() bProjectionChanged = true; nMaterialsChanged = 15; - + dirty = true; } @@ -304,7 +304,7 @@ void VertexShaderManager::SetConstants() constants.materials[i][3] = ( data & 0xFF) / 255.0f; } } - + for (int i = 0; i < 2; ++i) { if (nMaterialsChanged & (1 << (i + 2))) @@ -338,7 +338,7 @@ void VertexShaderManager::SetConstants() if (bTexMatricesChanged[0]) { bTexMatricesChanged[0] = false; - const float *fptrs[] = + const float *fptrs[] = { (const float *)xfmem + MatrixIndexA.Tex0MtxIdx * 4, (const float *)xfmem + MatrixIndexA.Tex1MtxIdx * 4, (const float *)xfmem + MatrixIndexA.Tex2MtxIdx * 4, (const float *)xfmem + MatrixIndexA.Tex3MtxIdx * 4 @@ -386,7 +386,7 @@ void VertexShaderManager::SetConstants() if (bProjectionChanged) { bProjectionChanged = false; - + float *rawProjection = xfregs.projection.rawProjection; switch(xfregs.projection.type) diff --git a/Source/Core/VideoCommon/Src/VertexShaderManager.h b/Source/Core/VideoCommon/Src/VertexShaderManager.h index 8b5875a8ac..93287ffe1e 100644 --- a/Source/Core/VideoCommon/Src/VertexShaderManager.h +++ b/Source/Core/VideoCommon/Src/VertexShaderManager.h @@ -34,7 +34,7 @@ public: static void TranslateView(float x, float y, float z = 0.0f); static void RotateView(float x, float y); static void ResetView(); - + static VertexShaderConstants constants; static bool dirty; }; diff --git a/Source/Core/VideoCommon/Src/VideoBackendBase.cpp b/Source/Core/VideoCommon/Src/VideoBackendBase.cpp index d62a799d42..68ea7c9c35 100644 --- a/Source/Core/VideoCommon/Src/VideoBackendBase.cpp +++ b/Source/Core/VideoCommon/Src/VideoBackendBase.cpp @@ -21,7 +21,7 @@ static VideoBackend* s_default_backend = NULL; #include // http://msdn.microsoft.com/en-us/library/ms725491.aspx -static bool IsGteVista() +static bool IsGteVista() { OSVERSIONINFOEX osvi; DWORDLONG dwlConditionMask = 0; diff --git a/Source/Core/VideoCommon/Src/VideoBackendBase.h b/Source/Core/VideoCommon/Src/VideoBackendBase.h index 1d691c8ba4..0e8c142e0e 100644 --- a/Source/Core/VideoCommon/Src/VideoBackendBase.h +++ b/Source/Core/VideoCommon/Src/VideoBackendBase.h @@ -55,7 +55,7 @@ struct SCPFifoStruct volatile u32 bFF_Breakpoint; volatile u32 CPCmdIdle; - volatile u32 CPReadIdle; + volatile u32 CPReadIdle; volatile u32 bFF_LoWatermarkInt; volatile u32 bFF_HiWatermarkInt; diff --git a/Source/Core/VideoCommon/Src/VideoConfig.h b/Source/Core/VideoCommon/Src/VideoConfig.h index e717cc463b..4e597e6235 100644 --- a/Source/Core/VideoCommon/Src/VideoConfig.h +++ b/Source/Core/VideoCommon/Src/VideoConfig.h @@ -6,7 +6,7 @@ // IMPORTANT: UI etc should modify g_Config. Graphics code should read g_ActiveConfig. // The reason for this is to get rid of race conditions etc when the configuration // changes in the middle of a frame. This is done by copying g_Config to g_ActiveConfig -// at the start of every frame. Noone should ever change members of g_ActiveConfig +// at the start of every frame. Noone should ever change members of g_ActiveConfig // directly. #ifndef _VIDEO_CONFIG_H_ @@ -112,7 +112,7 @@ struct VideoConfig bool bEFBCopyEnable; bool bEFBCopyCacheEnable; bool bEFBEmulateFormatChanges; - bool bCopyEFBToTexture; + bool bCopyEFBToTexture; bool bCopyEFBScaled; int iSafeTextureCache_ColorSamples; int iPhackvalue[4]; diff --git a/Source/Core/VideoCommon/Src/VideoState.cpp b/Source/Core/VideoCommon/Src/VideoState.cpp index 00d6eba320..9bfbeeaf52 100644 --- a/Source/Core/VideoCommon/Src/VideoState.cpp +++ b/Source/Core/VideoCommon/Src/VideoState.cpp @@ -38,7 +38,7 @@ static void DoState(PointerWrap &p) // Texture decoder p.DoArray(texMem, TMEM_SIZE); p.DoMarker("texMem"); - + // FIFO Fifo_DoState(p); p.DoMarker("Fifo"); diff --git a/Source/Core/VideoCommon/Src/XFMemory.h b/Source/Core/VideoCommon/Src/XFMemory.h index c350f67395..f681e15f50 100644 --- a/Source/Core/VideoCommon/Src/XFMemory.h +++ b/Source/Core/VideoCommon/Src/XFMemory.h @@ -139,7 +139,7 @@ union INVTXSPEC union TexMtxInfo { - struct + struct { u32 unknown : 1; u32 projection : 1; // XF_TEXPROJ_X @@ -154,7 +154,7 @@ union TexMtxInfo union PostMtxInfo { - struct + struct { u32 index : 6; // base row of dual transform matrix u32 unused : 2; @@ -194,14 +194,14 @@ union DualTexInfo struct Light { - u32 useless[3]; + u32 useless[3]; u32 color; // rgba float a0; // attenuation - float a1; - float a2; + float a1; + float a2; float k0; // k stuff - float k1; - float k2; + float k1; + float k2; union { diff --git a/Source/Core/VideoCommon/Src/XFStructs.cpp b/Source/Core/VideoCommon/Src/XFStructs.cpp index 7d806fcabe..2b9e0d45a5 100644 --- a/Source/Core/VideoCommon/Src/XFStructs.cpp +++ b/Source/Core/VideoCommon/Src/XFStructs.cpp @@ -57,7 +57,7 @@ void XFRegWritten(int transferSize, u32 baseAddress, u32 *pData) case XFMEM_SETCHAN1_AMBCOLOR: { u8 chan = address - XFMEM_SETCHAN0_AMBCOLOR; - if (xfregs.ambColor[chan] != newValue) + if (xfregs.ambColor[chan] != newValue) { VertexManager::Flush(); VertexShaderManager::SetMaterialColorChanged(chan, newValue); @@ -226,7 +226,7 @@ void LoadXFReg(u32 transferSize, u32 baseAddress, u32 *pData) { transferSize = 0; } - + XFMemWritten(xfMemTransferSize, xfMemBase); memcpy_gc(&xfmem[xfMemBase], pData, xfMemTransferSize * 4); @@ -235,9 +235,9 @@ void LoadXFReg(u32 transferSize, u32 baseAddress, u32 *pData) // write to XF regs if (transferSize > 0) - { + { XFRegWritten(transferSize, baseAddress, pData); - memcpy_gc((u32*)(&xfregs) + (baseAddress - 0x1000), pData, transferSize * 4); + memcpy_gc((u32*)(&xfregs) + (baseAddress - 0x1000), pData, transferSize * 4); } } diff --git a/Source/Core/VideoCommon/Src/memcpy_amd.cpp b/Source/Core/VideoCommon/Src/memcpy_amd.cpp index bd393560d4..a563b80886 100644 --- a/Source/Core/VideoCommon/Src/memcpy_amd.cpp +++ b/Source/Core/VideoCommon/Src/memcpy_amd.cpp @@ -60,7 +60,7 @@ MEMCPY_AMD.CPP // uses the software prefetch instruction to pre-read the data. // USE 64 * 1024 FOR THIS VALUE IF YOU'RE ALWAYS FILLING A "CLEAN CACHE" -#define BLOCK_PREFETCH_COPY infinity // no limit for movq/movntq w/block prefetch +#define BLOCK_PREFETCH_COPY infinity // no limit for movq/movntq w/block prefetch #define CACHEBLOCK 80h // number of 64-byte blocks (cache lines) for block prefetch // For the largest size blocks, a special technique called Block Prefetch // can be used to accelerate the read operations. Block Prefetch reads @@ -233,7 +233,7 @@ $memcpy_bp_3: add esi, 64 ; update source pointer movntq [edi ], mm0 ; write 64 bits, bypassing cache movntq [edi+ 8], mm1 ; note: movntq also prevents the CPU - movntq [edi+16], mm2 ; from READING the destination address + movntq [edi+16], mm2 ; from READING the destination address movntq [edi+24], mm3 ; into the cache, only to be over-written, movntq [edi+32], mm4 ; so that also helps performance movntq [edi+40], mm5 @@ -273,7 +273,7 @@ $memcpy_last_few: ; dword aligned from before movsd''s jz $memcpy_final ; no more, lets leave rep movsb ; the last 1, 2, or 3 bytes -$memcpy_final: +$memcpy_final: emms ; clean up the MMX state sfence ; flush the write buffer mov eax, [dest] ; ret value = destination pointer @@ -294,7 +294,7 @@ unsigned char memcmp_mmx(const void* src1, const void* src2, int cmpsize) mov ecx, cmpsize mov edx, src1 mov esi, src2 - + cmp ecx, 32 jl Done4 @@ -358,7 +358,7 @@ Cmp8: pand mm0, mm6 pand mm0, mm7 pmovmskb eax, mm0 - + // check if eq cmp eax, 0xff je Continue diff --git a/Source/Core/VideoCommon/Src/x64DLCache.cpp b/Source/Core/VideoCommon/Src/x64DLCache.cpp index 7c59a3a072..c2ad2a558c 100644 --- a/Source/Core/VideoCommon/Src/x64DLCache.cpp +++ b/Source/Core/VideoCommon/Src/x64DLCache.cpp @@ -58,7 +58,7 @@ struct ReferencedDataRegion ReferencedDataRegion* NextRegion; u32 size; u32 MustClean; - + int IntersectsMemoryRange(u8* range_address, u32 range_size) { @@ -78,7 +78,7 @@ struct CachedDisplayList uncachable(false), num_xf_reg(0), num_cp_reg(0), - num_bp_reg(0), + num_bp_reg(0), num_index_xf(0), num_draw_call(0), pass(DLPASS_ANALYZE), @@ -96,7 +96,7 @@ struct CachedDisplayList // Analytic data u32 num_xf_reg; u32 num_cp_reg; - u32 num_bp_reg; + u32 num_bp_reg; u32 num_index_xf; u32 num_draw_call; u32 pass; @@ -142,7 +142,7 @@ struct CachedDisplayList NewRegion = new ReferencedDataRegion; NewRegion->MustClean = false; NewRegion->size = Size; - NewRegion->start_address = RegionStartAddress; + NewRegion->start_address = RegionStartAddress; NewRegion->hash = GetHash64(RegionStartAddress, Size, DL_HASH_STEPS); InsertRegion(NewRegion); } @@ -241,11 +241,11 @@ u32 AnalyzeAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) u8* startAddress = Memory::GetPointer(address); u32 num_xf_reg = 0; u32 num_cp_reg = 0; - u32 num_bp_reg = 0; + u32 num_bp_reg = 0; u32 num_index_xf = 0; u32 num_draw_call = 0; u32 result = 0; - + // Avoid the crash if Memory::GetPointer failed .. if (startAddress != 0) @@ -322,7 +322,7 @@ u32 AnalyzeAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) case GX_CMD_UNKNOWN_METRICS: // zelda 4 swords calls it and checks the metrics registers after that DEBUG_LOG(VIDEO, "GX 0x44: %08x", cmd_byte); break; - case GX_CMD_INVL_VC: // Invalidate Vertex Cache + case GX_CMD_INVL_VC: // Invalidate Vertex Cache DEBUG_LOG(VIDEO, "Invalidate (vertex cache?)"); break; case GX_LOAD_BP_REG: //0x61 @@ -334,7 +334,7 @@ u32 AnalyzeAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) } break; - // draw primitives + // draw primitives default: if (cmd_byte & 0x80) { @@ -349,7 +349,7 @@ u32 AnalyzeAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) numVertices); num_draw_call++; const u32 tc[12] = { - g_VtxDesc.Position, g_VtxDesc.Normal, g_VtxDesc.Color0, g_VtxDesc.Color1, g_VtxDesc.Tex0Coord, g_VtxDesc.Tex1Coord, + g_VtxDesc.Position, g_VtxDesc.Normal, g_VtxDesc.Color0, g_VtxDesc.Color1, g_VtxDesc.Tex0Coord, g_VtxDesc.Tex1Coord, g_VtxDesc.Tex2Coord, g_VtxDesc.Tex3Coord, g_VtxDesc.Tex4Coord, g_VtxDesc.Tex5Coord, g_VtxDesc.Tex6Coord, (const u32)((g_VtxDesc.Hex >> 31) & 3) }; for(int i = 0; i < 12; i++) @@ -380,11 +380,11 @@ u32 AnalyzeAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) dl->num_index_xf = num_index_xf; dl->num_xf_reg = num_xf_reg; // reset to the old pointer - g_pVideoData = old_pVideoData; + g_pVideoData = old_pVideoData; return result; } -// The only sensible way to detect changes to vertex data is to convert several times +// The only sensible way to detect changes to vertex data is to convert several times // and hash the output. // Second pass - compile @@ -506,7 +506,7 @@ void CompileAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) // zelda 4 swords calls it and checks the metrics registers after that break; - case GX_CMD_INVL_VC:// Invalidate (vertex cache?) + case GX_CMD_INVL_VC:// Invalidate (vertex cache?) DEBUG_LOG(VIDEO, "Invalidate (vertex cache?)"); break; @@ -521,7 +521,7 @@ void CompileAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) } break; - // draw primitives + // draw primitives default: if (cmd_byte & 0x80) { @@ -543,13 +543,13 @@ void CompileAndRunDisplayList(u32 address, u32 size, CachedDisplayList *dl) ReferencedDataRegion* NewRegion = new ReferencedDataRegion; NewRegion->MustClean = true; NewRegion->size = Vdatasize; - NewRegion->start_address = (u8*)new u8[Vdatasize]; + NewRegion->start_address = (u8*)new u8[Vdatasize]; NewRegion->hash = 0; dl->InsertRegion(NewRegion); memcpy(NewRegion->start_address, StartAddress, Vdatasize); emitter.ABI_CallFunctionCCCP((void *)&VertexLoaderManager::RunCompiledVertices, cmd_byte & GX_VAT_MASK, (cmd_byte & GX_PRIMITIVE_MASK) >> GX_PRIMITIVE_SHIFT, numVertices, NewRegion->start_address); const u32 tc[12] = { - g_VtxDesc.Position, g_VtxDesc.Normal, g_VtxDesc.Color0, g_VtxDesc.Color1, g_VtxDesc.Tex0Coord, g_VtxDesc.Tex1Coord, + g_VtxDesc.Position, g_VtxDesc.Normal, g_VtxDesc.Color0, g_VtxDesc.Color1, g_VtxDesc.Tex0Coord, g_VtxDesc.Tex1Coord, g_VtxDesc.Tex2Coord, g_VtxDesc.Tex3Coord, g_VtxDesc.Tex4Coord, g_VtxDesc.Tex5Coord, g_VtxDesc.Tex6Coord, (const u32)((g_VtxDesc.Hex >> 31) & 3) }; for(int i = 0; i < 12; i++) @@ -592,11 +592,11 @@ void Init() void Shutdown() { Clear(); - FreeMemoryPages(dlcode_cache, DL_CODE_CACHE_SIZE); + FreeMemoryPages(dlcode_cache, DL_CODE_CACHE_SIZE); dlcode_cache = NULL; } -void Clear() +void Clear() { VDLMap::iterator iter = dl_map.begin(); while (iter != dl_map.end()) @@ -625,7 +625,7 @@ void ProgressiveCleanup() { VDlist &ParentEntry = iter->second; DLMap::iterator childiter = ParentEntry.dl_map.begin(); - while (childiter != ParentEntry.dl_map.end()) + while (childiter != ParentEntry.dl_map.end()) { CachedDisplayList &entry = childiter->second; int limit = 3600; @@ -712,9 +712,9 @@ bool HandleDisplayList(u32 address, u32 size) if (dl.check != CheckContextId) { dl.check = CheckContextId; - DlistChanged = !dl.CheckRegions() || dl.dl_hash != GetHash64(Memory::GetPointer(address), size, 0); + DlistChanged = !dl.CheckRegions() || dl.dl_hash != GetHash64(Memory::GetPointer(address), size, 0); } - if (DlistChanged) + if (DlistChanged) { dl.uncachable = true; dl.ClearRegions(); @@ -734,7 +734,7 @@ bool HandleDisplayList(u32 address, u32 size) INCSTAT(stats.numDListsCalled); INCSTAT(stats.thisFrame.numDListsCalled); - + Statistics::SwapDL(); g_pVideoData = old_datareader; break; @@ -744,7 +744,7 @@ bool HandleDisplayList(u32 address, u32 size) } DLCache::CachedDisplayList dl; - + u32 dlvatused = DLCache::AnalyzeAndRunDisplayList(address, size, &dl); dl.dl_hash = GetHash64(Memory::GetPointer(address), size,0); dl.pass = DLCache::DLPASS_COMPILE; @@ -754,14 +754,14 @@ bool HandleDisplayList(u32 address, u32 size) { DLCache::VDlist &vdl = Parentiter->second; vdl.dl_map[vhash] = dl; - vdl.VATUsed = dlvatused; + vdl.VATUsed = dlvatused; vdl.count++; } else { DLCache::VDlist vdl; vdl.dl_map[vhash] = dl; - vdl.VATUsed = dlvatused; + vdl.VATUsed = dlvatused; vdl.count = 1; DLCache::dl_map[dl_id] = vdl; } diff --git a/Source/Core/VideoCommon/Src/x64TextureDecoder.cpp b/Source/Core/VideoCommon/Src/x64TextureDecoder.cpp index 4c26509878..6887a0bdd0 100644 --- a/Source/Core/VideoCommon/Src/x64TextureDecoder.cpp +++ b/Source/Core/VideoCommon/Src/x64TextureDecoder.cpp @@ -54,7 +54,7 @@ extern const unsigned char sfont_raw[][9*10]; int TexDecoder_GetTexelSizeInNibbles(int format) { switch (format & 0x3f) { - case GX_TF_I4: return 1; + case GX_TF_I4: return 1; case GX_TF_I8: return 2; case GX_TF_IA4: return 2; case GX_TF_IA8: return 4; @@ -65,7 +65,7 @@ int TexDecoder_GetTexelSizeInNibbles(int format) case GX_TF_C8: return 2; case GX_TF_C14X2: return 4; case GX_TF_CMPR: return 1; - case GX_CTF_R4: return 1; + case GX_CTF_R4: return 1; case GX_CTF_RA4: return 2; case GX_CTF_RA8: return 4; case GX_CTF_YUVA8: return 8; @@ -80,7 +80,7 @@ int TexDecoder_GetTexelSizeInNibbles(int format) case GX_TF_Z16: return 4; case GX_TF_Z24X8: return 8; - case GX_CTF_Z4: return 1; + case GX_CTF_Z4: return 1; case GX_CTF_Z8M: return 2; case GX_CTF_Z8L: return 2; case GX_CTF_Z16L: return 4; @@ -97,7 +97,7 @@ int TexDecoder_GetBlockWidthInTexels(u32 format) { switch (format) { - case GX_TF_I4: return 8; + case GX_TF_I4: return 8; case GX_TF_I8: return 8; case GX_TF_IA4: return 8; case GX_TF_IA8: return 4; @@ -134,7 +134,7 @@ int TexDecoder_GetBlockHeightInTexels(u32 format) { switch (format) { - case GX_TF_I4: return 8; + case GX_TF_I4: return 8; case GX_TF_I8: return 4; case GX_TF_IA4: return 4; case GX_TF_IA8: return 4; @@ -311,7 +311,7 @@ inline void decodebytesC4RGB565_To_RGBA(u32* dst, const u8* src, int tlutaddr) //inline void decodebytesC8(u32 *dst, const u8 *src, int numbytes, int tlutaddr, int tlutfmt) inline void decodebytesC8_5A3_To_BGRA32(u32 *dst, const u8 *src, int tlutaddr) -{ +{ u16 *tlut = (u16*)(texMem + tlutaddr); for (int x = 0; x < 8; x++) { @@ -321,7 +321,7 @@ inline void decodebytesC8_5A3_To_BGRA32(u32 *dst, const u8 *src, int tlutaddr) } inline void decodebytesC8_5A3_To_RGBA32(u32 *dst, const u8 *src, int tlutaddr) -{ +{ u16 *tlut = (u16*)(texMem + tlutaddr); for (int x = 0; x < 8; x++) { @@ -501,7 +501,7 @@ inline void decodebytesARGB8_4(u32 *dst, const u16 *src, const u16 *src2) // some unpack instruction x2: // ABABABABABABABAB 1212121212121212 -> // AB12AB12AB12AB12 AB12AB12AB12AB12 - // 2x pshufb-> + // 2x pshufb-> // 21BA21BA21BA21BA 21BA21BA21BA21BA // and we are done. } @@ -551,7 +551,7 @@ void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) int green3 = ((green2 - green1) >> 1) - ((green2 - green1) >> 3); int red3 = ((red2 - red1) >> 1) - ((red2 - red1) >> 3); colors[2] = makecol(red1 + red3, green1 + green3, blue1 + blue3, 255); - colors[3] = makecol(red2 - red3, green2 - green3, blue2 - blue3, 255); + colors[3] = makecol(red2 - red3, green2 - green3, blue2 - blue3, 255); } else { @@ -562,7 +562,7 @@ void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) } for (int y = 0; y < 4; y++) - { + { int val = src->lines[y]; for (int x = 0; x < 4; x++) { @@ -592,9 +592,9 @@ void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) { int blue3 = ((blue2 - blue1) >> 1) - ((blue2 - blue1) >> 3); int green3 = ((green2 - green1) >> 1) - ((green2 - green1) >> 3); - int red3 = ((red2 - red1) >> 1) - ((red2 - red1) >> 3); + int red3 = ((red2 - red1) >> 1) - ((red2 - red1) >> 3); colors[2] = makeRGBA(red1 + red3, green1 + green3, blue1 + blue3, 255); - colors[3] = makeRGBA(red2 - red3, green2 - green3, blue2 - blue3, 255); + colors[3] = makeRGBA(red2 - red3, green2 - green3, blue2 - blue3, 255); } else { @@ -605,7 +605,7 @@ void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) } for (int y = 0; y < 4; y++) - { + { int val = src->lines[y]; for (int x = 0; x < 4; x++) { @@ -659,7 +659,7 @@ PC_TexFormat GetPC_TexFormat(int texformat, int tlutfmt) return PC_TEX_FMT_IA4_AS_IA8; case GX_TF_IA8: return PC_TEX_FMT_IA8; - case GX_TF_C14X2: + case GX_TF_C14X2: return GetPCFormatFromTLUTFormat(tlutfmt); case GX_TF_RGB565: return PC_TEX_FMT_RGB565; @@ -715,7 +715,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh for (int y = 0; y < height; y += 8) for (int x = 0, yStep = (y / 8) * Wsteps8; x < width; x += 8, yStep++) for (int iy = 0, xStep = yStep * 8; iy < 8; iy++, xStep++) - decodebytesC4_5A3_To_BGRA32((u32*)dst + (y + iy) * width + x, src + 4 * xStep, tlutaddr); + decodebytesC4_5A3_To_BGRA32((u32*)dst + (y + iy) * width + x, src + 4 * xStep, tlutaddr); } else { @@ -723,7 +723,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh for (int y = 0; y < height; y += 8) for (int x = 0, yStep = (y / 8) * Wsteps8; x < width; x += 8, yStep++) for (int iy = 0, xStep = yStep * 8; iy < 8; iy++, xStep++) - decodebytesC4_To_Raw16((u16*)dst + (y + iy) * width + x, src + 4 * xStep, tlutaddr); + decodebytesC4_To_Raw16((u16*)dst + (y + iy) * width + x, src + 4 * xStep, tlutaddr); } return GetPCFormatFromTLUTFormat(tlutfmt); case GX_TF_I4: @@ -807,7 +807,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh } return PC_TEX_FMT_IA8; - case GX_TF_C14X2: + case GX_TF_C14X2: if (tlutfmt == 2) { // Special decoding is required for TLUT format 5A3 @@ -904,7 +904,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh { const u8* src2 = src + 64 * yStep; for (int iy = 0; iy < 4; iy++) - decodebytesARGB8_4((u32*)dst + (y+iy)*width + x, (u16*)src2 + 4 * iy, (u16*)src2 + 4 * iy + 16); + decodebytesARGB8_4((u32*)dst + (y+iy)*width + x, (u16*)src2 + 4 * iy, (u16*)src2 + 4 * iy + 16); } } } @@ -936,14 +936,14 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh { for (int x = 0, yStep = (y / 8) * Wsteps8; x < width; x += 8, yStep++) { - const u8* src2 = src + 4 * sizeof(DXTBlock) * yStep; + const u8* src2 = src + 4 * sizeof(DXTBlock) * yStep; decodeDXTBlock((u32*)dst + y * width + x, (DXTBlock*)src2, width); src2 += sizeof(DXTBlock); decodeDXTBlock((u32*)dst + y * width + x + 4, (DXTBlock*)src2, width); src2 += sizeof(DXTBlock); decodeDXTBlock((u32*)dst + (y + 4) * width + x, (DXTBlock*)src2, width); src2 += sizeof(DXTBlock); - decodeDXTBlock((u32*)dst + (y + 4) * width + x + 4, (DXTBlock*)src2, width); + decodeDXTBlock((u32*)dst + (y + 4) * width + x + 4, (DXTBlock*)src2, width); } } #endif @@ -991,7 +991,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he for (int x = 0, yStep = (y / 8) * Wsteps8; x < width; x += 8,yStep++) for (int iy = 0, xStep = 8 * yStep; iy < 8; iy++,xStep++) decodebytesC4IA8_To_RGBA(dst + (y + iy) * width + x, src + 4 * xStep, tlutaddr); - + } else { @@ -1140,7 +1140,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he _mm_storeu_si128(quaddst, rgba0); _mm_storeu_si128(quaddst+1, rgba1); } - + } else #endif // JSD optimized with SSE2 intrinsics. @@ -1224,7 +1224,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he _mm_storeu_si128(quaddst, rgba6); // Store (hhhh gggg ffff eeee) out: _mm_storeu_si128(quaddst+1, rgba7); - + } } } @@ -1246,7 +1246,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he for (int x = 0, yStep = (y / 4) * Wsteps8; x < width; x += 8, yStep++) for (int iy = 0, xStep = 4 * yStep; iy < 4; iy++, xStep++) decodebytesC8IA8_To_RGBA(dst + (y + iy) * width + x, src + 8 * xStep, tlutaddr); - + } else { @@ -1254,7 +1254,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he for (int y = 0; y < height; y += 4) for (int x = 0, yStep = (y / 4) * Wsteps8; x < width; x += 8, yStep++) for (int iy = 0, xStep = 4 * yStep; iy < 4; iy++, xStep++) - decodebytesC8RGB565_To_RGBA(dst + (y + iy) * width + x, src + 8 * xStep, tlutaddr); + decodebytesC8RGB565_To_RGBA(dst + (y + iy) * width + x, src + 8 * xStep, tlutaddr); } break; @@ -1404,7 +1404,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he // 0b_gggBBBbb_RRRrrGGg_gggBBBbb_RRRrrGGg >> 3 [32] = // 0b_000gggBB_BbbRRRrr_GGggggBB_BbbRRRrr & - // 0b_00000000_00000000_11111100_00000000 = + // 0b_00000000_00000000_11111100_00000000 = // 0b_00000000_00000000_GGgggg00_00000000 const __m128i gtmp = _mm_srli_epi32(c0, 3); const __m128i g0 = _mm_and_si128(gtmp, kMaskG0); @@ -1784,7 +1784,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he _mm_storeu_si128(dst128, rgba10); dst128 = (__m128i*)( dst + (y + 3) * width + x ); _mm_storeu_si128(dst128, rgba11); - } + } } } break; @@ -2017,7 +2017,7 @@ PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int he assert( memcmp(&(tmp0[3]), &dst32[(width * 3)], 16) == 0 ); assert( memcmp(&(tmp1[3]), &dst32[(width * 3) + 4], 16) == 0 ); #endif - } + } } } break; @@ -2067,7 +2067,7 @@ PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, in { int xcnt = 0; int nchar = sfont_map[(int)*fmt]; - + const unsigned char *ptr = sfont_raw[nchar]; // each char is up to 9x10 for (int x = 0; x < 9;x++) @@ -2103,7 +2103,7 @@ PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, in dtp[(y + yoff)*width + x + xoff] = ptr[x] ? 0xFFFF : 0x0000; break; } - default: + default: case PC_TEX_FMT_BGRA32: { int *dtp = (int*)dst; @@ -2126,7 +2126,7 @@ PC_TexFormat TexDecoder_Decode(u8 *dst, const u8 *src, int width, int height, in void TexDecoder_DecodeTexel(u8 *dst, const u8 *src, int s, int t, int imageWidth, int texformat, int tlutaddr, int tlutfmt) { /* General formula for computing texture offset - // + // u16 sBlk = s / blockWidth; u16 tBlk = t / blockHeight; u16 widthBlks = (width / blockWidth) + 1; @@ -2268,7 +2268,7 @@ void TexDecoder_DecodeTexel(u8 *dst, const u8 *src, int s, int t, int imageWidth *((u32*)dst) = decodeIA8Swapped(*valAddr); } break; - case GX_TF_C14X2: + case GX_TF_C14X2: { u16 sBlk = s >> 2; u16 tBlk = t >> 2; @@ -2494,696 +2494,696 @@ const unsigned char sfont_map[] = { const unsigned char sfont_raw[][9*10] = { { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, },{ - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, - 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + },{ + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0x00, 0x00, 0x00, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x78, 0x78, 0x78, }, }; diff --git a/Source/DSPSpy/dsp_interface.cpp b/Source/DSPSpy/dsp_interface.cpp index 5a935f12ef..b6a56acacb 100644 --- a/Source/DSPSpy/dsp_interface.cpp +++ b/Source/DSPSpy/dsp_interface.cpp @@ -23,7 +23,7 @@ void IDSP::SendTask(void *addr, u16 iram_addr, u16 len, u16 start) // iram_addr dsp addr 4byte aligned (2 DSP words) // len block length in bytes multiple of 4 (wtf? if you want to fill whole iram, you need 8191) // (8191 % 4 = 3) wtffff - // start dsp iram entry point + // start dsp iram entry point while (CheckMailTo()); SendMailTo(0x80F3A001); while (CheckMailTo()); diff --git a/Source/DSPSpy/dsp_interface.h b/Source/DSPSpy/dsp_interface.h index 03ce9c4f60..e1842ccedc 100644 --- a/Source/DSPSpy/dsp_interface.h +++ b/Source/DSPSpy/dsp_interface.h @@ -36,7 +36,7 @@ class IDSP { public: virtual ~IDSP() {} - + virtual void Init() = 0; virtual void Reset() = 0; virtual u32 CheckMailTo() = 0; diff --git a/Source/DSPSpy/main_spy.cpp b/Source/DSPSpy/main_spy.cpp index aba2007852..0000eacb7c 100644 --- a/Source/DSPSpy/main_spy.cpp +++ b/Source/DSPSpy/main_spy.cpp @@ -21,7 +21,7 @@ // It's very unpolished though // Use Dolphin's dsptool to generate a new dsp_code.h. // Originally written by duddie and modified by FIRES. Then further modified by ector. - + #include #include #include @@ -75,7 +75,7 @@ u16 *dspbufC; u32 *dspbufU; u16 dspreg_in[32] = { - 0x0410, 0x0510, 0x0610, 0x0710, 0x0810, 0x0910, 0x0a10, 0x0b10, + 0x0410, 0x0510, 0x0610, 0x0710, 0x0810, 0x0910, 0x0a10, 0x0b10, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0855, 0x0966, 0x0a77, 0x0b88, 0x0014, 0xfff5, 0x00ff, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0004, 0x8000, 0x000C, 0x0007, 0x0008, 0x0009, 0x000a, @@ -84,22 +84,22 @@ u16 dspreg_in[32] = { /* ttt ? u16 dspreg_in[32] = { -0x0e4c, 0x03c0, 0x0bd9, 0x06a3, 0x0c06, 0x0240, 0x0010, 0x0ecc, +0x0e4c, 0x03c0, 0x0bd9, 0x06a3, 0x0c06, 0x0240, 0x0010, 0x0ecc, 0x0000, 0x0000, 0x0000, 0x0000, 0x0322, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00ff, 0x1b41, 0x0000, 0x0040, 0x00ff, 0x0000, 0x1000, 0x96cc, 0x0000, 0x0000, 0x3fc0, 0x96cc, 0x0000, 0x0000, }; */ -// if i set bit 0x4000 of SR my tests crashes :( +// if i set bit 0x4000 of SR my tests crashes :( /* // zelda 0x00da u16 dspreg_in[32] = { -0x0a50, 0x0ca2, 0x04f8, 0x0ab0, 0x8039, 0x0000, 0x0000, 0x0000, +0x0a50, 0x0ca2, 0x04f8, 0x0ab0, 0x8039, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x03d1, 0x0000, 0x0418, 0x0002, // r08 must have a value ... no idea why (ector: it's the looped addressing regs) 0x0000, 0x0000, 0x00ff, 0x1804, 0xdb70, 0x4ddb, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xde6d, 0x0000, 0x0000, 0x0000, 0x004e, -};*/ +};*/ u16 dspreg_out[1000][32]; @@ -470,16 +470,16 @@ void dump_all_ucodes(bool fastmode) sprintf(filename, "sd:/dsp_dump_all.bin"); FILE *f2 = fopen(filename, "ab"); - if (fastmode == false) + if (fastmode == false) { // Then write microcode dump to file sprintf(filename, "sd:/dsp_dump%d.bin", UCodeToDump); FILE *f = fopen(filename, "wb"); - if (f) + if (f) { // First write initial regs written = fwrite(dspreg_in, 1, 32 * 2, f); - + // Then write all the dumps. written += fwrite(dspreg_out, 1, dsp_steps * 32 * 2, f); fclose(f); diff --git a/Source/DSPSpy/mem_dump.h b/Source/DSPSpy/mem_dump.h index b3768f28ca..389c9f27c0 100644 --- a/Source/DSPSpy/mem_dump.h +++ b/Source/DSPSpy/mem_dump.h @@ -17,516 +17,516 @@ unsigned int mem_dump[] __attribute__ ((aligned (64))) = { - 0x0c3966ad, 0x0d46ffdf, 0x0b396696, 0x0e5fffd8, - 0x0a446669, 0x0f83ffd0, 0x095a6626, 0x10b4ffc8, - 0x087d65cd, 0x11f0ffbf, 0x07ab655e, 0x1338ffb6, - 0x06e464d9, 0x148cffac, 0x0628643f, 0x15ebffa1, - 0x0577638f, 0x1756ff96, 0x04d162cb, 0x18cbff8a, - 0x043561f3, 0x1a4cff7e, 0x03a46106, 0x1bd7ff71, - 0x031c6007, 0x1d6cff64, 0x029f5ef5, 0x1f0bff56, - 0x022a5dd0, 0x20b3ff48, 0x01be5c9a, 0x2264ff3a, - 0x015b5b53, 0x241eff2c, 0x010159fc, 0x25e0ff1e, - 0x00ae5896, 0x27a9ff10, 0x00635720, 0x297aff02, - 0x001f559d, 0x2b50fef4, 0xffe2540d, 0x2d2cfee8, - 0xffac5270, 0x2f0dfedb, 0xff7c50c7, 0x30f3fed0, - 0xff534f14, 0x32dcfec6, 0xff2e4d57, 0x34c8febd, - 0xff0f4b91, 0x36b6feb6, 0xfef549c2, 0x38a5feb0, - 0xfedf47ed, 0x3a95feac, 0xfece4611, 0x3c85feab, - 0xfec04430, 0x3e74feac, 0xfeb6424a, 0x4060feaf, - 0xfeaf4060, 0x424afeb6, 0xfeac3e74, 0x4430fec0, - 0xfeab3c85, 0x4611fece, 0xfeac3a95, 0x47edfedf, - 0xfeb038a5, 0x49c2fef5, 0xfeb636b6, 0x4b91ff0f, - 0xfebd34c8, 0x4d57ff2e, 0xfec632dc, 0x4f14ff53, - 0xfed030f3, 0x50c7ff7c, 0xfedb2f0d, 0x5270ffac, - 0xfee82d2c, 0x540dffe2, 0xfef42b50, 0x559d001f, - 0xff02297a, 0x57200063, 0xff1027a9, 0x589600ae, - 0xff1e25e0, 0x59fc0101, 0xff2c241e, 0x5b53015b, - 0xff3a2264, 0x5c9a01be, 0xff4820b3, 0x5dd0022a, - 0xff561f0b, 0x5ef5029f, 0xff641d6c, 0x6007031c, - 0xff711bd7, 0x610603a4, 0xff7e1a4c, 0x61f30435, - 0xff8a18cb, 0x62cb04d1, 0xff961756, 0x638f0577, - 0xffa115eb, 0x643f0628, 0xffac148c, 0x64d906e4, - 0xffb61338, 0x655e07ab, 0xffbf11f0, 0x65cd087d, - 0xffc810b4, 0x6626095a, 0xffd00f83, 0x66690a44, - 0xffd80e5f, 0x66960b39, 0xffdf0d46, 0x66ad0c39, - 0x00000c8b, 0x18f82527, 0x30fb3c56, 0x471c5133, - 0x5a8262f1, 0x6a6d70e2, 0x76417a7c, 0x7d897f61, - 0x7fff7f61, 0x7d897a7c, 0x764170e2, 0x6a6d62f1, - 0x5a825133, 0x471c3c56, 0x30fb2527, 0x18f80c8b, - 0x0000f375, 0xe708dad9, 0xcf05c3aa, 0xb8e4aecd, - 0xa57e9d0f, 0x95938f1e, 0x89bf8584, 0x8277809f, - 0x8001809f, 0x82778584, 0x89bf8f1e, 0x95939d0f, - 0xa57eaecd, 0xb8e4c3aa, 0xcf05dad9, 0xe708f375, - 0x000007ff, 0x0fff17ff, 0x1fff27ff, 0x2fff37ff, - 0x3fff47ff, 0x4fff57ff, 0x5fff67ff, 0x6fff77ff, - 0x7fff7800, 0x70006800, 0x60005800, 0x50004800, - 0x40003800, 0x30002800, 0x20001800, 0x10000800, - 0x0000f801, 0xf001e801, 0xe001d801, 0xd001c801, - 0xc001b801, 0xb001a801, 0xa0019801, 0x90018801, - 0x80018800, 0x90009800, 0xa000a800, 0xb000b800, - 0xc000c800, 0xd000d800, 0xe000e800, 0xf000f800, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x682e469b, 0x25080375, 0xe1e2c04f, 0x9ebc7d29, - 0x5b963a03, 0x1870f6dd, 0xd54ab3b7, 0x92247091, - 0x4efe2d6b, 0x0bd8ea45, 0xc8b2a71f, 0x858c63f9, - 0x426620d3, 0xff40ddad, 0xbc1a9a87, 0x78f45761, - 0x35ce143b, 0xf2a8d115, 0xaf828def, 0x6c5c4ac9, - 0x293607a3, 0xe610c47d, 0xa2ea8157, 0x5fc43e31, - 0x1c9efb0b, 0xd978b7e5, 0x965274bf, 0x532c3199, - 0x1006ee73, 0xcce0ab4d, 0x89ba6827, 0x46942501, - 0x00000001, 0x00020003, 0x00040005, 0x00060007, - 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, - 0x00000001, 0x00020003, 0x00040005, 0x00060007, - 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, - 0x00000001, 0x00020003, 0x00040005, 0x00060007, - 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, - 0x00000001, 0x00020003, 0x00040005, 0x00060007, - 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, - 0x5a825b9c, 0x5cb35dc7, 0x5ed75fe3, 0x60eb61f0, - 0x62f163ee, 0x64e865dd, 0x66cf67bc, 0x68a6698b, - 0x6a6d6b4a, 0x6c236cf8, 0x6dc96e96, 0x6f5e7022, - 0x70e2719d, 0x72547307, 0x73b5745f, 0x750475a5, - 0x764176d8, 0x776b77fa, 0x78847909, 0x79897a05, - 0x7a7c7aee, 0x7b5c7bc5, 0x7c297c88, 0x7ce37d39, - 0x7d897dd5, 0x7e1d7e5f, 0x7e9c7ed5, 0x7f097f37, - 0x7f617f86, 0x7fa67fc1, 0x7fd87fe9, 0x7ff57ffd, - 0x00058100, 0x0040806a, 0x19e08039, 0x8f208039, - 0x8ee0806a, 0x79e00002, 0x8d00000a, 0x803ea5e0, - 0x00038207, 0x5ffb8069, 0xffa0806a, 0x04000003, - 0x82075ffb, 0x806a0860, 0x806a0cc0, 0x00038207, - 0x5ffb806a, 0x1120806a, 0x15800003, 0x82075ffb, - 0x8069ffa0, 0x806a0400, 0x00038207, 0x5ffb806a, - 0x0860806a, 0x0cc00003, 0x82075ffb, 0x806a1120, - 0x806a1580, 0x00038207, 0x5ffb8069, 0xffa0806a, - 0x04000003, 0x82075ffb, 0x806a0860, 0x806a0cc0, - 0x00038207, 0x5ffb806a, 0x1120806a, 0x15800003, - 0x82075ffb, 0x8069ffa0, 0x806a0400, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x08000000, 0x00000800, 0x04000400, - 0x1000f800, 0x0e00fa00, 0x0c00fc00, 0x1200f600, - 0x1068f738, 0x12c0f704, 0x1400f400, 0x0800f800, - 0x0400fc00, 0xfc000400, 0xfc000000, 0xf8000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000002, 0x00400004, 0x00075ffb, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00400000, - 0x02d602d6, 0x00000000, 0x00400006, 0x82075ffb, - 0x8069ffa0, 0x806a0400, 0x80398ee0, 0x806a79e0, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x803ea5e0, 0x000a0001, - 0x00000000, 0x00000000, 0x00010000, 0x00000000, - 0x806a19e0, 0x80398f20, 0x80398ee0, 0x806a79e0, - 0x806a02c0, 0x806a0720, 0x00000000, 0x5ffb0000, - 0x00010038, 0x80758e80, 0x0d000000, 0x0d604000, - 0x00000000, 0x00000000, 0x00000000, 0x58000000, - 0x03a80f40, 0x03e80000, 0x003d003d, 0x003d003d, - 0x00010020, 0x80754380, 0x0d002000, 0x0d600000, - 0x00000000, 0x00000000, 0x00000000, 0x3fff0000, - 0x00010020, 0x80755780, 0x0d000000, 0x0d602000, - 0x00000000, 0x00000000, 0x00000000, 0x3fff0000, - 0x00010038, 0x80756b80, 0x0d004000, 0x0d600000, - 0x00000000, 0x00000000, 0x00000000, 0x58000000, - 0x00010038, 0x80758e80, 0x0d000000, 0x0d604000, - 0x00000000, 0x00000000, 0x00000000, 0x58000000, - 0x00000000, 0x00000000, 0x00000000, 0x58000000, - 0x00501568, 0xffff0030, 0x00107f00, 0x08000100, - 0x0000002d, 0xabb80500, 0xffff0000, 0xff06f000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x82407fff, 0x7dbf843f, 0x00000000, 0x00000000, - 0xb23b7fff, 0x4dc4d808, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0c3966ad, 0x0d46ffdf, 0x0b396696, 0x0e5fffd8, + 0x0a446669, 0x0f83ffd0, 0x095a6626, 0x10b4ffc8, + 0x087d65cd, 0x11f0ffbf, 0x07ab655e, 0x1338ffb6, + 0x06e464d9, 0x148cffac, 0x0628643f, 0x15ebffa1, + 0x0577638f, 0x1756ff96, 0x04d162cb, 0x18cbff8a, + 0x043561f3, 0x1a4cff7e, 0x03a46106, 0x1bd7ff71, + 0x031c6007, 0x1d6cff64, 0x029f5ef5, 0x1f0bff56, + 0x022a5dd0, 0x20b3ff48, 0x01be5c9a, 0x2264ff3a, + 0x015b5b53, 0x241eff2c, 0x010159fc, 0x25e0ff1e, + 0x00ae5896, 0x27a9ff10, 0x00635720, 0x297aff02, + 0x001f559d, 0x2b50fef4, 0xffe2540d, 0x2d2cfee8, + 0xffac5270, 0x2f0dfedb, 0xff7c50c7, 0x30f3fed0, + 0xff534f14, 0x32dcfec6, 0xff2e4d57, 0x34c8febd, + 0xff0f4b91, 0x36b6feb6, 0xfef549c2, 0x38a5feb0, + 0xfedf47ed, 0x3a95feac, 0xfece4611, 0x3c85feab, + 0xfec04430, 0x3e74feac, 0xfeb6424a, 0x4060feaf, + 0xfeaf4060, 0x424afeb6, 0xfeac3e74, 0x4430fec0, + 0xfeab3c85, 0x4611fece, 0xfeac3a95, 0x47edfedf, + 0xfeb038a5, 0x49c2fef5, 0xfeb636b6, 0x4b91ff0f, + 0xfebd34c8, 0x4d57ff2e, 0xfec632dc, 0x4f14ff53, + 0xfed030f3, 0x50c7ff7c, 0xfedb2f0d, 0x5270ffac, + 0xfee82d2c, 0x540dffe2, 0xfef42b50, 0x559d001f, + 0xff02297a, 0x57200063, 0xff1027a9, 0x589600ae, + 0xff1e25e0, 0x59fc0101, 0xff2c241e, 0x5b53015b, + 0xff3a2264, 0x5c9a01be, 0xff4820b3, 0x5dd0022a, + 0xff561f0b, 0x5ef5029f, 0xff641d6c, 0x6007031c, + 0xff711bd7, 0x610603a4, 0xff7e1a4c, 0x61f30435, + 0xff8a18cb, 0x62cb04d1, 0xff961756, 0x638f0577, + 0xffa115eb, 0x643f0628, 0xffac148c, 0x64d906e4, + 0xffb61338, 0x655e07ab, 0xffbf11f0, 0x65cd087d, + 0xffc810b4, 0x6626095a, 0xffd00f83, 0x66690a44, + 0xffd80e5f, 0x66960b39, 0xffdf0d46, 0x66ad0c39, + 0x00000c8b, 0x18f82527, 0x30fb3c56, 0x471c5133, + 0x5a8262f1, 0x6a6d70e2, 0x76417a7c, 0x7d897f61, + 0x7fff7f61, 0x7d897a7c, 0x764170e2, 0x6a6d62f1, + 0x5a825133, 0x471c3c56, 0x30fb2527, 0x18f80c8b, + 0x0000f375, 0xe708dad9, 0xcf05c3aa, 0xb8e4aecd, + 0xa57e9d0f, 0x95938f1e, 0x89bf8584, 0x8277809f, + 0x8001809f, 0x82778584, 0x89bf8f1e, 0x95939d0f, + 0xa57eaecd, 0xb8e4c3aa, 0xcf05dad9, 0xe708f375, + 0x000007ff, 0x0fff17ff, 0x1fff27ff, 0x2fff37ff, + 0x3fff47ff, 0x4fff57ff, 0x5fff67ff, 0x6fff77ff, + 0x7fff7800, 0x70006800, 0x60005800, 0x50004800, + 0x40003800, 0x30002800, 0x20001800, 0x10000800, + 0x0000f801, 0xf001e801, 0xe001d801, 0xd001c801, + 0xc001b801, 0xb001a801, 0xa0019801, 0x90018801, + 0x80018800, 0x90009800, 0xa000a800, 0xb000b800, + 0xc000c800, 0xd000d800, 0xe000e800, 0xf000f800, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x682e469b, 0x25080375, 0xe1e2c04f, 0x9ebc7d29, + 0x5b963a03, 0x1870f6dd, 0xd54ab3b7, 0x92247091, + 0x4efe2d6b, 0x0bd8ea45, 0xc8b2a71f, 0x858c63f9, + 0x426620d3, 0xff40ddad, 0xbc1a9a87, 0x78f45761, + 0x35ce143b, 0xf2a8d115, 0xaf828def, 0x6c5c4ac9, + 0x293607a3, 0xe610c47d, 0xa2ea8157, 0x5fc43e31, + 0x1c9efb0b, 0xd978b7e5, 0x965274bf, 0x532c3199, + 0x1006ee73, 0xcce0ab4d, 0x89ba6827, 0x46942501, + 0x00000001, 0x00020003, 0x00040005, 0x00060007, + 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, + 0x00000001, 0x00020003, 0x00040005, 0x00060007, + 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, + 0x00000001, 0x00020003, 0x00040005, 0x00060007, + 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, + 0x00000001, 0x00020003, 0x00040005, 0x00060007, + 0x00080009, 0x000a000b, 0x000c000d, 0x000e000f, + 0x5a825b9c, 0x5cb35dc7, 0x5ed75fe3, 0x60eb61f0, + 0x62f163ee, 0x64e865dd, 0x66cf67bc, 0x68a6698b, + 0x6a6d6b4a, 0x6c236cf8, 0x6dc96e96, 0x6f5e7022, + 0x70e2719d, 0x72547307, 0x73b5745f, 0x750475a5, + 0x764176d8, 0x776b77fa, 0x78847909, 0x79897a05, + 0x7a7c7aee, 0x7b5c7bc5, 0x7c297c88, 0x7ce37d39, + 0x7d897dd5, 0x7e1d7e5f, 0x7e9c7ed5, 0x7f097f37, + 0x7f617f86, 0x7fa67fc1, 0x7fd87fe9, 0x7ff57ffd, + 0x00058100, 0x0040806a, 0x19e08039, 0x8f208039, + 0x8ee0806a, 0x79e00002, 0x8d00000a, 0x803ea5e0, + 0x00038207, 0x5ffb8069, 0xffa0806a, 0x04000003, + 0x82075ffb, 0x806a0860, 0x806a0cc0, 0x00038207, + 0x5ffb806a, 0x1120806a, 0x15800003, 0x82075ffb, + 0x8069ffa0, 0x806a0400, 0x00038207, 0x5ffb806a, + 0x0860806a, 0x0cc00003, 0x82075ffb, 0x806a1120, + 0x806a1580, 0x00038207, 0x5ffb8069, 0xffa0806a, + 0x04000003, 0x82075ffb, 0x806a0860, 0x806a0cc0, + 0x00038207, 0x5ffb806a, 0x1120806a, 0x15800003, + 0x82075ffb, 0x8069ffa0, 0x806a0400, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x08000000, 0x00000800, 0x04000400, + 0x1000f800, 0x0e00fa00, 0x0c00fc00, 0x1200f600, + 0x1068f738, 0x12c0f704, 0x1400f400, 0x0800f800, + 0x0400fc00, 0xfc000400, 0xfc000000, 0xf8000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000002, 0x00400004, 0x00075ffb, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00400000, + 0x02d602d6, 0x00000000, 0x00400006, 0x82075ffb, + 0x8069ffa0, 0x806a0400, 0x80398ee0, 0x806a79e0, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x803ea5e0, 0x000a0001, + 0x00000000, 0x00000000, 0x00010000, 0x00000000, + 0x806a19e0, 0x80398f20, 0x80398ee0, 0x806a79e0, + 0x806a02c0, 0x806a0720, 0x00000000, 0x5ffb0000, + 0x00010038, 0x80758e80, 0x0d000000, 0x0d604000, + 0x00000000, 0x00000000, 0x00000000, 0x58000000, + 0x03a80f40, 0x03e80000, 0x003d003d, 0x003d003d, + 0x00010020, 0x80754380, 0x0d002000, 0x0d600000, + 0x00000000, 0x00000000, 0x00000000, 0x3fff0000, + 0x00010020, 0x80755780, 0x0d000000, 0x0d602000, + 0x00000000, 0x00000000, 0x00000000, 0x3fff0000, + 0x00010038, 0x80756b80, 0x0d004000, 0x0d600000, + 0x00000000, 0x00000000, 0x00000000, 0x58000000, + 0x00010038, 0x80758e80, 0x0d000000, 0x0d604000, + 0x00000000, 0x00000000, 0x00000000, 0x58000000, + 0x00000000, 0x00000000, 0x00000000, 0x58000000, + 0x00501568, 0xffff0030, 0x00107f00, 0x08000100, + 0x0000002d, 0xabb80500, 0xffff0000, 0xff06f000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x82407fff, 0x7dbf843f, 0x00000000, 0x00000000, + 0xb23b7fff, 0x4dc4d808, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, }; diff --git a/Source/DSPTool/Src/DSPTool.cpp b/Source/DSPTool/Src/DSPTool.cpp index 78335d3026..f5dcb18694 100644 --- a/Source/DSPTool/Src/DSPTool.cpp +++ b/Source/DSPTool/Src/DSPTool.cpp @@ -174,7 +174,7 @@ void RunAsmTests() //.File::ReadFileToString(true, "C:/devkitPro/trunk/libogc/libasnd/dsp_mixer/dsp_mixer.s", &dsp_test); // This is CLOSE to working. Sorry about the local path btw. This is preliminary code. */ - + std::string dsp_test; if (File::ReadFileToString(true, "Testdata/dsp_test.s", dsp_test)) fail = fail || !SuperTrip(dsp_test.c_str()); @@ -213,7 +213,7 @@ int main(int argc, const char *argv[]) printf("-ps : Print results of DSPSpy register dump (disable SR output)\n"); printf("-pm : Print results of DSPSpy register dump (convert PROD values)\n"); printf("-psm : Print results of DSPSpy register dump (convert PROD values/disable SR output)\n"); - + return 0; } @@ -227,7 +227,7 @@ int main(int argc, const char *argv[]) std::string output_header_name; std::string output_name; - bool disassemble = false, compare = false, multiple = false, outputSize = false, + bool disassemble = false, compare = false, multiple = false, outputSize = false, force = false, print_results = false, print_results_prodhack = false, print_results_srhack = false; for (int i = 1; i < argc; i++) { @@ -260,7 +260,7 @@ int main(int argc, const char *argv[]) print_results_srhack = true; print_results_prodhack = true; } - else + else { if (!input_name.empty()) { @@ -325,17 +325,17 @@ int main(int argc, const char *argv[]) { if ((reg >= 0x0c) && (reg <= 0x0f)) continue; if (print_results_srhack && (reg == 0x13)) continue; - + if ((print_results_prodhack) && (reg >= 0x15) && (reg <= 0x17)) { switch (reg) { case 0x15: //DSP_REG_PRODM last_reg = reg_vector.at((step*32-32)+reg) + reg_vector.at((step*32-32)+reg+2); - current_reg = reg_vector.at(step*32+reg) + reg_vector.at(step*32+reg+2); + current_reg = reg_vector.at(step*32+reg) + reg_vector.at(step*32+reg+2); break; case 0x16: //DSP_REG_PRODH - htemp = ((reg_vector.at(step*32+reg-1) + reg_vector.at(step*32+reg+1))&~0xffff)>>16; + htemp = ((reg_vector.at(step*32+reg-1) + reg_vector.at(step*32+reg+1))&~0xffff)>>16; current_reg = (u8)(reg_vector.at(step*32+reg) + htemp); - htemp = ((reg_vector.at(step*32-32+reg-1) + reg_vector.at(step*32-32+reg+1))&~0xffff)>>16; + htemp = ((reg_vector.at(step*32-32+reg-1) + reg_vector.at(step*32-32+reg+1))&~0xffff)>>16; last_reg = (u8)(reg_vector.at(step*32-32+reg) + htemp); break; case 0x17: //DSP_REG_PRODM2 @@ -386,7 +386,7 @@ int main(int argc, const char *argv[]) else printf("%s", text.c_str()); } - else + else { if (input_name.empty()) { @@ -396,7 +396,7 @@ int main(int argc, const char *argv[]) std::string source; if (File::ReadFileToString(true, input_name.c_str(), source)) { - if(multiple) + if(multiple) { // When specifying a list of files we must compile a header // (we can't assemble multiple files to one binary) @@ -408,8 +408,8 @@ int main(int argc, const char *argv[]) size_t lastPos = 0, pos = 0; source.append("\n"); - - while((pos = source.find('\n', lastPos)) != std::string::npos) + + while((pos = source.find('\n', lastPos)) != std::string::npos) { std::string temp = source.substr(lastPos, pos - lastPos); if(!temp.empty()) @@ -419,26 +419,26 @@ int main(int argc, const char *argv[]) lines = (int)files.size(); - if(lines == 0) + if(lines == 0) { printf("ERROR: Must specify at least one file\n"); return 1; } - + codes = new std::vector[lines]; - for (int i = 0; i < lines; i++) + for (int i = 0; i < lines; i++) { if (!File::ReadFileToString(true, files[i].c_str(), currentSource)) { printf("ERROR reading %s, skipping...\n", files[i].c_str()); lines--; } - else + else { - if (!Assemble(currentSource.c_str(), codes[i], force)) + if (!Assemble(currentSource.c_str(), codes[i], force)) { - printf("Assemble: Assembly of %s failed due to errors\n", + printf("Assemble: Assembly of %s failed due to errors\n", files[i].c_str()); lines--; } @@ -447,7 +447,7 @@ int main(int argc, const char *argv[]) } } } - + CodesToHeader(codes, &files, lines, output_header_name.c_str(), header); File::WriteStringToFile(true, header, (output_header_name + ".h").c_str()); @@ -466,7 +466,7 @@ int main(int argc, const char *argv[]) if (outputSize) { printf("%s: %d\n", input_name.c_str(), (int)code.size()); } - + if (!output_name.empty()) { std::string binary_code; diff --git a/Source/TestSuite/ASM/source/Init.cpp b/Source/TestSuite/ASM/source/Init.cpp index cd2ab852b1..610e7b5bb1 100644 --- a/Source/TestSuite/ASM/source/Init.cpp +++ b/Source/TestSuite/ASM/source/Init.cpp @@ -38,29 +38,29 @@ void init_crap() { VIDEO_Init(); WPAD_Init(); PAD_Init(); - + // Obtain the preferred video mode from the system // This will correspond to the settings in the Wii menu rmode = VIDEO_GetPreferredMode(NULL); - + // Allocate memory for the display in the uncached region xfb = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); - + // Initialise the console, required for printf console_init(xfb,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ); - + // Set up the video registers with the chosen mode VIDEO_Configure(rmode); - + // Tell the video hardware where our display memory is VIDEO_SetNextFramebuffer(xfb); - + // Make the display visible VIDEO_SetBlack(FALSE); - + // Flush the video register changes to the hardware VIDEO_Flush(); - + // Wait for Video setup to complete VIDEO_WaitVSync(); if(rmode->viTVMode&VI_NON_INTERLACE) VIDEO_WaitVSync(); diff --git a/Source/TestSuite/ASM/source/asm_tables.cpp b/Source/TestSuite/ASM/source/asm_tables.cpp index 6f3c1accef..d775b138aa 100644 --- a/Source/TestSuite/ASM/source/asm_tables.cpp +++ b/Source/TestSuite/ASM/source/asm_tables.cpp @@ -59,22 +59,22 @@ void ShowModifies(u32 inst) void RunInstruction(u32 inst) { u32 inval1, inval2, inval3; - + u32 outval = 0; - + // CR0 u32 cr1 = 0, cr2 = 0; - + //CR1 u32 cr11 = 0, cr12 = 0; - + //XER u32 xer1 = 0, xer2 = 0; - + bool modCR0 = instructions[inst].Modifies & MOD_CR0; bool modCR1 = instructions[inst].Modifies & MOD_CR1; bool modXER = instructions[inst].Modifies & MOD_XER; - + if(instructions[inst].numInput != 3) { Print("Don't support Input not 3 yet~!\n"); @@ -92,7 +92,7 @@ void RunInstruction(u32 inst) f = fopen(temp, "wb"); if (!f) printf("unable to open output file\n"); - + printf("%s: InputNum: %d Modifies(flags): ", instructions[inst].name, instructions[inst].numInput); if(f) fprintf(f, "%s: InputNum: %d Modifies(flags): ", instructions[inst].name, instructions[inst].numInput); @@ -119,7 +119,7 @@ void RunInstruction(u32 inst) //Actually call instruction instructions[inst].Call(&outval, &inval1, &inval2, 0); - + // Get flags after if(modCR0) cr2 = GetCR0(); @@ -130,7 +130,7 @@ void RunInstruction(u32 inst) // Print out value printf(":o=%08x\n\t", outval); - + // show off flag changes if(modCR0) printf("CR0:(%08x ~ %08x)", cr1,cr2); @@ -138,8 +138,8 @@ void RunInstruction(u32 inst) printf("CR1:(%08x ~ %08x)", cr11,cr12); if(modXER) printf("XER:(%08x ~ %08x)", xer1, xer2); - - + + // same in the file if(f) { diff --git a/Source/TestSuite/ASM/source/asm_tables.h b/Source/TestSuite/ASM/source/asm_tables.h index 1f47a4c406..62dde85be1 100644 --- a/Source/TestSuite/ASM/source/asm_tables.h +++ b/Source/TestSuite/ASM/source/asm_tables.h @@ -32,7 +32,7 @@ struct inst inst_type type; void (*Call)(u32*, u32*, u32*, u32*); void (*CallFP)(float*, float*, float*, float*); - + }; static inst instructions[] = { diff --git a/Source/TestSuite/ASM/source/dolphintest_asm.cpp b/Source/TestSuite/ASM/source/dolphintest_asm.cpp index da3afdf73e..8bedaf0a69 100644 --- a/Source/TestSuite/ASM/source/dolphintest_asm.cpp +++ b/Source/TestSuite/ASM/source/dolphintest_asm.cpp @@ -31,13 +31,13 @@ int main(int argc, char **argv) { init_crap(); initialise_fat(); - + for (uint a = 0; a < sizeof(instructions) / sizeof(inst); ++a) { RunInstruction(a); } - + end(); - + return 0; } diff --git a/Source/TestSuite/AX/source/dolphintest_ax.cpp b/Source/TestSuite/AX/source/dolphintest_ax.cpp index 0b4b4152bb..b97e7e33e6 100644 --- a/Source/TestSuite/AX/source/dolphintest_ax.cpp +++ b/Source/TestSuite/AX/source/dolphintest_ax.cpp @@ -23,7 +23,7 @@ int main(int argc, char **argv) { while(1) { PAD_ScanPads(); VIDEO_ClearFrameBuffer(rmode, xfb, 0); - + VIDEO_WaitVSync(); } @@ -37,12 +37,12 @@ void * Initialise() { VIDEO_Init(); PAD_Init(); - + rmode = VIDEO_GetPreferredMode(NULL); framebuffer = MEM_K0_TO_K1(SYS_AllocateFramebuffer(rmode)); console_init(framebuffer,20,20,rmode->fbWidth,rmode->xfbHeight,rmode->fbWidth*VI_DISPLAY_PIX_SZ); - + VIDEO_Configure(rmode); VIDEO_SetNextFramebuffer(framebuffer); VIDEO_SetBlack(FALSE); diff --git a/Source/TestSuite/FPU/source/asm.h b/Source/TestSuite/FPU/source/asm.h index 2feed006f4..ed28f7895b 100644 --- a/Source/TestSuite/FPU/source/asm.h +++ b/Source/TestSuite/FPU/source/asm.h @@ -191,7 +191,7 @@ #define STATE_OFFSET 204 #define MODE_OFFSET 206 - + #define FPR0_OFFSET 208 #define FPR1_OFFSET 216 #define FPR2_OFFSET 224 @@ -267,13 +267,13 @@ #define EXCEPTION_FRAME_END 728 #define IBAT0U 528 -#define IBAT0L 529 -#define IBAT1U 530 -#define IBAT1L 531 -#define IBAT2U 532 -#define IBAT2L 533 -#define IBAT3U 534 -#define IBAT3L 535 +#define IBAT0L 529 +#define IBAT1U 530 +#define IBAT1L 531 +#define IBAT2U 532 +#define IBAT2L 533 +#define IBAT3U 534 +#define IBAT3L 535 #define IBAT4U 560 #define IBAT4L 561 #define IBAT5U 562 @@ -284,12 +284,12 @@ #define IBAT7L 567 #define DBAT0U 536 -#define DBAT0L 537 -#define DBAT1U 538 -#define DBAT1L 539 -#define DBAT2U 540 -#define DBAT2L 541 -#define DBAT3U 542 +#define DBAT0L 537 +#define DBAT1U 538 +#define DBAT1L 539 +#define DBAT2U 540 +#define DBAT2L 541 +#define DBAT3U 542 #define DBAT3L 543 #define DBAT4U 568 #define DBAT4L 569 @@ -302,7 +302,7 @@ #define HID0 1008 #define HID1 1009 -#define HID2 920 +#define HID2 920 #define HID4 1011 #define GQR0 912 diff --git a/Source/TestSuite/PAD/source/dolphintest_pad.cpp b/Source/TestSuite/PAD/source/dolphintest_pad.cpp index ef85a4c356..1643206b3b 100644 --- a/Source/TestSuite/PAD/source/dolphintest_pad.cpp +++ b/Source/TestSuite/PAD/source/dolphintest_pad.cpp @@ -58,7 +58,7 @@ int main() (pad[a].button & PAD_BUTTON_LEFT ? "Left " : "")<< (pad[a].button & PAD_BUTTON_RIGHT ? "Right " : "")<ir.angle<<" deg\n"; drawdot(screen_buffer, rmode, rmode->fbWidth, rmode->xfbHeight, wd->ir.x, wd->ir.y, COLOR_RED); - drawdot(screen_buffer, rmode, rmode->fbWidth, rmode->xfbHeight, wd->ir.x + 10*sinf(theta), wd->ir.y - 10*cosf(theta), COLOR_BLUE); + drawdot(screen_buffer, rmode, rmode->fbWidth, rmode->xfbHeight, wd->ir.x + 10*sinf(theta), wd->ir.y - 10*cosf(theta), COLOR_BLUE); } else { std::cout<<" No Cursor\n\n"; } diff --git a/Source/UnitTests/AudioJitTests.cpp b/Source/UnitTests/AudioJitTests.cpp index 7712f59fc3..f078e8541b 100644 --- a/Source/UnitTests/AudioJitTests.cpp +++ b/Source/UnitTests/AudioJitTests.cpp @@ -86,7 +86,7 @@ void sbset() tester.Report(); } -void nx_s() +void nx_s() { DSPJitTester tester(0x8000, 0x0020); tester.AddTestData(DSP_REG_AR0); @@ -96,7 +96,7 @@ void nx_s() tester.Report(); } -void nx_sn() +void nx_sn() { DSPJitTester tester(0x8000, 0x0024); tester.AddTestData(DSP_REG_AR0); @@ -107,7 +107,7 @@ void nx_sn() tester.Report(); } -void nx_l() +void nx_l() { DSPJitTester tester(0x8000, 0x0040); @@ -118,7 +118,7 @@ void nx_l() tester.Report(); } -void set16_l() +void set16_l() { DSPJitTester tester(0x8e00, 0x0070); @@ -131,7 +131,7 @@ void set16_l() tester.Report(); } -void nx_ln() +void nx_ln() { DSPJitTester tester(0x8000, 0x0044); tester.AddTestData(DSP_REG_AR0); @@ -142,7 +142,7 @@ void nx_ln() tester.Report(); } -void nx_ls() +void nx_ls() { DSPJitTester tester1(0x8000, 0x0080); tester1.AddTestData(DSP_REG_ACM0); @@ -159,7 +159,7 @@ void nx_ls() tester2.Report(); } -void nx_lsn() +void nx_lsn() { DSPJitTester tester1(0x8000, 0x0084); tester1.AddTestData(DSP_REG_ACM0); @@ -177,7 +177,7 @@ void nx_lsn() tester2.Report(); } -void nx_lsm() +void nx_lsm() { DSPJitTester tester1(0x8000, 0x0088); tester1.AddTestData(DSP_REG_ACM0); @@ -195,7 +195,7 @@ void nx_lsm() tester2.Report(); } -void nx_lsnm() +void nx_lsnm() { DSPJitTester tester1(0x8000, 0x008c); tester1.AddTestData(DSP_REG_ACM0); @@ -214,7 +214,7 @@ void nx_lsnm() tester2.Report(); } -void nx_sl() +void nx_sl() { DSPJitTester tester1(0x8000, 0x0082); tester1.AddTestData(DSP_REG_ACM0); @@ -231,7 +231,7 @@ void nx_sl() tester2.Report(); } -void nx_sln() +void nx_sln() { DSPJitTester tester1(0x8000, 0x0086); tester1.AddTestData(DSP_REG_ACM0); @@ -249,7 +249,7 @@ void nx_sln() tester2.Report(); } -void nx_slm() +void nx_slm() { DSPJitTester tester1(0x8000, 0x008a); tester1.AddTestData(DSP_REG_ACM0); @@ -267,7 +267,7 @@ void nx_slm() tester2.Report(); } -void nx_slnm() +void nx_slnm() { DSPJitTester tester1(0x8000, 0x008e); tester1.AddTestData(DSP_REG_ACM0); @@ -286,7 +286,7 @@ void nx_slnm() tester2.Report(); } -void nx_ld() +void nx_ld() { DSPJitTester tester1(0x8000, 0x00c0); tester1.AddTestData(DSP_REG_AXL0,0xdead); diff --git a/Source/UnitTests/DSPJitTester.cpp b/Source/UnitTests/DSPJitTester.cpp index 8980391c56..a0c37057c5 100644 --- a/Source/UnitTests/DSPJitTester.cpp +++ b/Source/UnitTests/DSPJitTester.cpp @@ -6,8 +6,8 @@ DSPJitTester::DSPJitTester(u16 opcode, u16 opcode_ext, bool verbose, bool only_f instruction = opcode | opcode_ext; opcode_template = GetOpTemplate(instruction); sprintf(instruction_name, "%s", opcode_template->name); - if (opcode_template->extended) - sprintf(&instruction_name[strlen(instruction_name)], "'%s", + if (opcode_template->extended) + sprintf(&instruction_name[strlen(instruction_name)], "'%s", extOpTable[instruction & (((instruction >> 12) == 0x3) ? 0x7F : 0xFF)]->name); } bool DSPJitTester::Test(SDSP dsp_settings) @@ -17,7 +17,7 @@ bool DSPJitTester::Test(SDSP dsp_settings) printf("Running %s: ", instruction_name); DumpRegs(dsp_settings); } - + last_input_dsp = dsp_settings; last_int_dsp = RunInterpreter(dsp_settings); last_jit_dsp = RunJit(dsp_settings); diff --git a/Source/UnitTests/DSPJitTester.h b/Source/UnitTests/DSPJitTester.h index ac40fa41c0..e507d6dca8 100644 --- a/Source/UnitTests/DSPJitTester.h +++ b/Source/UnitTests/DSPJitTester.h @@ -1,62 +1,62 @@ // How to use the DSPJitTester: -// +// // == Before running == // Make sure to call Initialize to set initial stuff required by int and jit: // DSPJitTester::Initialize(); -// +// // == Creation of a testcase == // Create a testcase for a normal operation: // DSPJitTester tester(0x0004); //taken from DSPTables.cpp, opcodes[] -// +// // Create a testcase for an extended operation: // DSPJitTester tester(0x8000, 0x0004); //NX from opcodes, DR from opcodes_ext -// +// // By default, no messages are written. // To log all operations, set verbose to true: // DSPJitTester tester(0x8000, 0x0004, true); -// +// // You can also choose to only print failing tests: // DSPJitTester tester(0x8000, 0x0004, verbosity_setting, true); -// verbose = true will give the same output as verbose, +// verbose = true will give the same output as verbose, // while verbose = false will only (really!) print failing tests. -// +// // == Setting up values == // You can set the tester up with values for each DSP register: // tester.AddTestData(DSP_REG_ACC0, 1); // tester.AddTestData(DSP_REG_ACC0, 2); // tester.AddTestData(DSP_REG_ACC0, 3); -// +// // You can also choose to have a few predefined values added for a register: // tester.AddTestData(DSP_REG_ACC0); //see the method body for the values added -// +// // == Running the tests == -// After setup, you can either run JIT against the interpreter +// After setup, you can either run JIT against the interpreter // using all predefined register values, pass your own set of // registers or run either of the two independently from each other. -// +// // int failed_tests = tester.TestAll(); //run jit against int, using values from AddTestData // int failed_tests = tester.TestAll(true); //override the value for only_failed to show failure -// +// // SDSP dsp = GetCustomSetOfRegisters(); // bool success = tester.Test(dsp); //run jit against int, using a custom set of register values -// +// // SDSP result = tester.RunInterpreter(dsp); //run int alone // SDSP result = tester.RunJit(dsp); //run jit alone -// +// // == Examining results == // When either verbose or only_failed is set to true, the tester will automatically report // failure to stdout, along with input registers and the differences in output registers. -// +// // tester.Report(); //display a small report afterwards -// +// // SDSP int = tester.GetLastInterpreterDSP(); //examine the DSP set left after running int // SDSP jit = tester.GetLastJitDSP(); //same for jit -// +// // int tests_run = tester.GetRunCount(); // int tests_failed = tester.GetFailCount(); // const char* tested_instruction = tester.GetInstructionName(); // printf("%s ran %d tests and failed %d times\n", tested_instruction, tests_run, tests_failed); -// +// // tester.DumpJittedCode(); //prints the code bytes produced by jit (examine with udcli/udis86 or similar) #ifndef __DSP_JIT_TESTER_